| 67 | } |
| 68 | |
| 69 | static void test_hwtimer(void) |
| 70 | { |
| 71 | rt_hwtimerval_t timerval; |
| 72 | rt_hwtimer_mode_t mode; |
| 73 | rt_size_t tsize; |
| 74 | rt_uint32_t freq = 25000000; /* Frequency options: 12.5M 25M 50M 100M */ |
| 75 | rt_err_t ret; |
| 76 | rt_ssize_t size; |
| 77 | int loop_count = 0; |
| 78 | |
| 79 | LOG_I("test_hwtimer start"); |
| 80 | |
| 81 | tmr_dev_0 = rt_device_find(DEVICE_NAME0); |
| 82 | uassert_not_null(tmr_dev_0); |
| 83 | tmr_dev_1 = rt_device_find(DEVICE_NAME1); |
| 84 | uassert_not_null(tmr_dev_1); |
| 85 | |
| 86 | ret = rt_device_open(tmr_dev_0, RT_DEVICE_OFLAG_RDWR); |
| 87 | uassert_int_equal(ret, RT_EOK); |
| 88 | ret = rt_device_open(tmr_dev_1, RT_DEVICE_OFLAG_RDWR); |
| 89 | uassert_int_equal(ret, RT_EOK); |
| 90 | |
| 91 | ret = rt_device_control(tmr_dev_0, HWTIMER_CTRL_FREQ_SET, &freq); |
| 92 | uassert_int_equal(ret, RT_EOK); |
| 93 | |
| 94 | ret = rt_device_set_rx_indicate(tmr_dev_0, tmr_timeout_cb); |
| 95 | uassert_int_equal(ret, RT_EOK); |
| 96 | ret = rt_device_set_rx_indicate(tmr_dev_1, tmr_timeout_cb); |
| 97 | uassert_int_equal(ret, RT_EOK); |
| 98 | |
| 99 | timerval.sec = TIMEOUT_SEC_0; |
| 100 | timerval.usec = 0; |
| 101 | tsize = sizeof(timerval); |
| 102 | mode = HWTIMER_MODE_ONESHOT; |
| 103 | ret = rt_device_control(tmr_dev_0, HWTIMER_CTRL_MODE_SET, &mode); |
| 104 | uassert_int_equal(ret, RT_EOK); |
| 105 | size = rt_device_write(tmr_dev_0, 0, &timerval, tsize); |
| 106 | uassert_int_equal(size, tsize); |
| 107 | LOG_I("timer0 start: [%d:%d]\n", timerval.sec, timerval.usec); |
| 108 | |
| 109 | timerval.sec = TIMEOUT_SEC_1; |
| 110 | timerval.usec = 0; |
| 111 | tsize = sizeof(timerval); |
| 112 | mode = HWTIMER_MODE_ONESHOT; |
| 113 | ret = rt_device_control(tmr_dev_1, HWTIMER_CTRL_MODE_SET, &mode); |
| 114 | uassert_int_equal(ret, RT_EOK); |
| 115 | size = rt_device_write(tmr_dev_1, 0, &timerval, tsize); |
| 116 | uassert_int_equal(size, tsize); |
| 117 | LOG_I("timer1 start: [%d:%d]\n", timerval.sec, timerval.usec); |
| 118 | |
| 119 | while (loop_count++ < MAX_TIMEOUT_SEC + 1) |
| 120 | { |
| 121 | size = rt_device_read(tmr_dev_0, 0, &timerval, sizeof(timerval)); |
| 122 | uassert_int_equal(size, sizeof(timerval)); |
| 123 | LOG_I("timer0: [%d:%d]\n", timerval.sec, timerval.usec); |
| 124 | |
| 125 | size = rt_device_read(tmr_dev_1, 0, &timerval, sizeof(timerval)); |
| 126 | uassert_int_equal(size, sizeof(timerval)); |
nothing calls this directly
no test coverage detected