48 lines
1.9 KiB
C
48 lines
1.9 KiB
C
|
|
#include "os_test.h"
|
||
|
|
|
||
|
|
static vuint test_flag = 0;
|
||
|
|
|
||
|
|
static void _os_test_queue_t3(void *arg)
|
||
|
|
{
|
||
|
|
uint64_t dst_64 = 0;
|
||
|
|
test_flag = test_flag << 4 | 1;
|
||
|
|
SYS_ASSERT_FALSE(os_queue_recv(&queue_handle[0], &dst_64, OS_WAIT_FOREVER) != OS_OK, "");
|
||
|
|
SYS_ASSERT_FALSE(dst_64 != 0x1234567890abcdef, "");
|
||
|
|
test_flag = test_flag << 4 | 2;
|
||
|
|
}
|
||
|
|
|
||
|
|
void os_test_queue(void)
|
||
|
|
{
|
||
|
|
SYS_LOG_INF("-------------------------------");
|
||
|
|
static os_thread_t t2;
|
||
|
|
uint64_t src_64 = 0x1234567890abcdef;
|
||
|
|
uint64_t dst_64 = 0;
|
||
|
|
int systime_start;
|
||
|
|
int systime_end;
|
||
|
|
os_queue_create(&queue_handle[0], 1, sizeof(src_64));
|
||
|
|
|
||
|
|
SYS_LOG_INF("测试发送和接收");
|
||
|
|
test_flag = 0;
|
||
|
|
os_test_create_thread(&t2, _os_test_queue_t3, "t3", OS_PRIORITY_HIGHEST);
|
||
|
|
SYS_ASSERT_FALSE(test_flag != 0x1, "test_flag = 0x%x", test_flag);
|
||
|
|
SYS_ASSERT_FALSE(os_queue_send(&queue_handle[0], &src_64, 100) != OS_OK, "");
|
||
|
|
SYS_ASSERT_FALSE(test_flag != 0x12, "test_flag = 0x%x", test_flag);
|
||
|
|
|
||
|
|
SYS_LOG_INF("测试发送和发送超时");
|
||
|
|
systime_start = os_get_sys_ticks();
|
||
|
|
SYS_ASSERT_FALSE(os_queue_send(&queue_handle[0], &src_64, 100) != OS_OK, "");
|
||
|
|
SYS_ASSERT_FALSE(os_queue_send(&queue_handle[0], &src_64, 100) == OS_OK, "");
|
||
|
|
systime_end = os_get_sys_ticks();
|
||
|
|
SYS_ASSERT_FALSE(systime_end - systime_start < 100 || systime_end - systime_start > 120, "systime_end - systime_start = %d", systime_end - systime_start);
|
||
|
|
|
||
|
|
SYS_LOG_INF("测试接收和接收超时");
|
||
|
|
systime_start = os_get_sys_ticks();
|
||
|
|
SYS_ASSERT_FALSE(os_queue_recv(&queue_handle[0], &dst_64, 100) != OS_OK, "");
|
||
|
|
SYS_ASSERT_FALSE(dst_64 != src_64, "");
|
||
|
|
SYS_ASSERT_FALSE(os_queue_recv(&queue_handle[0], &dst_64, 100) == OS_OK, "");
|
||
|
|
systime_end = os_get_sys_ticks();
|
||
|
|
SYS_ASSERT_FALSE(systime_end - systime_start < 100 || systime_end - systime_start > 120, "systime_end - systime_start = %d", systime_end - systime_start);
|
||
|
|
|
||
|
|
os_queue_delete(&queue_handle[0]);
|
||
|
|
}
|