summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test-app.c63
1 files changed, 39 insertions, 24 deletions
diff --git a/test-app.c b/test-app.c
index 2484f8d..cf006f8 100644
--- a/test-app.c
+++ b/test-app.c
@@ -140,26 +140,40 @@ static int es_mhu_test(void)
{
int status;
int message;
- int epts[2];
+ int epts_tx[2];
+ int epts_rx[2];
const int value = 0xABCDEF;
- struct rpmsg_endpoint_info es0mhu0_eptinfo = {"es0mhu0", 0XFFFFFFFF,
- 0xFFFFFFFF};
- struct rpmsg_endpoint_info es0mhu1_eptinfo = {"es0mhu1", 0XFFFFFFFF,
- 0xFFFFFFFF};
+ struct rpmsg_endpoint_info es0mhu0_tx_eptinfo = {"es0mhu0_tx",
+ 0XFFFFFFFF, 0xFFFFFFFF};
+ struct rpmsg_endpoint_info es0mhu1_tx_eptinfo = {"es0mhu1_tx",
+ 0XFFFFFFFF, 0xFFFFFFFF};
+ struct rpmsg_endpoint_info es0mhu0_rx_eptinfo = {"es0mhu0_rx",
+ 0XFFFFFFFF, 0xFFFFFFFF};
+ struct rpmsg_endpoint_info es0mhu1_rx_eptinfo = {"es0mhu1_rx",
+ 0XFFFFFFFF, 0xFFFFFFFF};
TRY_OPEN(fd, "/dev/rpmsg_ctrl0", O_RDWR);
/* Create endpoint interfaces for each MHU */
/* /dev/rpmsg0 is created */
- TRY_IOCTL(status, fd, RPMSG_CREATE_EPT_IOCTL, &es0mhu0_eptinfo);
+ TRY_IOCTL(status, fd, RPMSG_CREATE_EPT_IOCTL, &es0mhu0_tx_eptinfo);
/* /dev/rpmsg1 is created */
- TRY_IOCTL(status, fd, RPMSG_CREATE_EPT_IOCTL, &es0mhu1_eptinfo);
+ TRY_IOCTL(status, fd, RPMSG_CREATE_EPT_IOCTL, &es0mhu1_tx_eptinfo);
+ /* /dev/rpmsg2 is created */
+ TRY_IOCTL(status, fd, RPMSG_CREATE_EPT_IOCTL, &es0mhu0_rx_eptinfo);
+ /* /dev/rpmsg3 is created */
+ TRY_IOCTL(status, fd, RPMSG_CREATE_EPT_IOCTL, &es0mhu1_rx_eptinfo);
/* create endpoints for each mhu */
- TRY_OPEN(fd_es0mhu0_ept, "/dev/rpmsg0", O_RDWR);
- TRY_OPEN(fd_es0mhu1_ept, "/dev/rpmsg1", O_RDWR);
- epts[0] = fd_es0mhu0_ept;
- epts[1] = fd_es0mhu1_ept;
+ TRY_OPEN(fd_es0mhu0_tx_ept, "/dev/rpmsg0", O_RDWR);
+ TRY_OPEN(fd_es0mhu1_tx_ept, "/dev/rpmsg1", O_RDWR);
+ TRY_OPEN(fd_es0mhu0_rx_ept, "/dev/rpmsg2", O_RDWR);
+ TRY_OPEN(fd_es0mhu1_rx_ept, "/dev/rpmsg3", O_RDWR);
+
+ epts_tx[0] = fd_es0mhu0_tx_ept;
+ epts_tx[1] = fd_es0mhu1_tx_ept;
+ epts_rx[0] = fd_es0mhu0_rx_ept;
+ epts_rx[1] = fd_es0mhu1_rx_ept;
/* Bring external system out of reset */
es_release_cpuwait_test();
@@ -172,12 +186,13 @@ static int es_mhu_test(void)
/* External system test */
for (int i = 0; i < 2; i++) {
- int ept = epts[i];
- char *name;
+ int ept_tx = epts_tx[i];
+ int ept_rx = epts_rx[i];
+
/* ========== ES < = > HOST TESTS ========== */
/* Make ES echo the value back to host with incremented value */
message = ENCODE(ES_INC_RETURN, value);
- write(ept, &message, sizeof(message));
+ write(ept_tx, &message, sizeof(message));
/*
* External system cannot execute the test command within an
* interrupt handler. Since no command buffering has been
@@ -186,21 +201,21 @@ static int es_mhu_test(void)
*/
sleep(1);
/* Read the data transmitted by the previous command */
- read(ept, &message, sizeof(message));
+ read(ept_rx, &message, sizeof(message));
printf("Received %x from %s\n", message,
- ept == fd_es0mhu0_ept ? "es0mhu0" : "es0mhu1");
- /* ================== ES < = > SE ================== */
- /* Make ES send a message to the SE with incremented value */
- message = ENCODE(ES_INC_SEND_TO_SE, value);
- write(ept, &message, sizeof(message));
+ ept_tx == fd_es0mhu0_tx_ept ? "es0mhu0" : "es0mhu1");
sleep(1);
}
/* destroy endpoints */
- TRY_IOCTL(status, fd_es0mhu0_ept, RPMSG_DESTROY_EPT_IOCTL);
- TRY_IOCTL(status, fd_es0mhu1_ept, RPMSG_DESTROY_EPT_IOCTL);
- TRY_CLOSE(fd_es0mhu0_ept);
- TRY_CLOSE(fd_es0mhu1_ept);
+ TRY_IOCTL(status, fd_es0mhu0_tx_ept, RPMSG_DESTROY_EPT_IOCTL);
+ TRY_IOCTL(status, fd_es0mhu1_tx_ept, RPMSG_DESTROY_EPT_IOCTL);
+ TRY_IOCTL(status, fd_es0mhu0_rx_ept, RPMSG_DESTROY_EPT_IOCTL);
+ TRY_IOCTL(status, fd_es0mhu1_rx_ept, RPMSG_DESTROY_EPT_IOCTL);
+ TRY_CLOSE(fd_es0mhu0_tx_ept);
+ TRY_CLOSE(fd_es0mhu1_tx_ept);
+ TRY_CLOSE(fd_es0mhu0_rx_ept);
+ TRY_CLOSE(fd_es0mhu1_rx_ept);
TRY_CLOSE(fd);
return 0;
}