src.dualinventive.com/dinet/libdi-php/libdi/tests/drv_hl854x_read_timeout.cpp

49 lines
1.1 KiB
C++

#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <gtest/gtest.h>
#include <di/drv/hl854x.h>
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);
}