#include #include #include #include #include static struct di_drv_hl854x_ctx ctx; static uint32_t test_read_timeout = 10; size_t test_drv_hl854x_read_timeout_cb(void *buf, size_t nbyte) { (void)buf; (void)nbyte; usleep((unsigned int)test_read_timeout * 1000U); return 0; } void test_hl854x_reset(void) { di_drv_hl854x_init(&ctx); di_drv_hl854x_set_read(&ctx, test_drv_hl854x_read_timeout_cb); } /** * Test setting the read and command timeout */ TEST(drv_hl854x, set_timeout) { di_drv_hl854x_set_read_timeout_ms(&ctx, 1337); di_drv_hl854x_set_cmd_timeout_ms(&ctx, 777); EXPECT_EQ(1337U, ctx.timeout.read); EXPECT_EQ(777U, ctx.timeout.cmd); } /** * Execute a modem request revision and check if the timeout is exceeded */ TEST(drv_hl854x, read_timeout) { test_hl854x_reset(); di_drv_hl854x_set_read_timeout_ms(&ctx, test_read_timeout); di_drv_hl854x_set_cmd_timeout_ms(&ctx, test_read_timeout * 10); di_drv_hl854x_req_modem_revision(&ctx); EXPECT_EQ(HL854X_ERROR_REPLY_TIMEOUT, ctx.error); EXPECT_EQ(HL854X_REPLY_TIMEOUT, ctx.reply); }