#include #include #include #include #include static struct di_drv_xbee_ctx ctx; static bool check = false; DI_BUFFER_DECL(read_buffer, 1024); static uint64_t test_destination = 0xf4e732aacb7911fa; static di_drv_xbee_frame test_frame; size_t test_drv_xbee_write_cb(uint8_t *buf, size_t nbyte) { return di_buffer_write_data(&read_buffer, buf, nbyte); } void test_xbee_reset(void) { di_drv_xbee_init(&ctx); di_drv_xbee_set_write_cb(&ctx, test_drv_xbee_write_cb); di_drv_xbee_frame_init(&test_frame); check = false; di_buffer_reset(&read_buffer); if(di_buffer_size_inuse(&ctx.buf)) di_buffer_flush(&ctx.buf); } //------------------------premade local functions------------------------------ TEST(drv_xbee_premade_local_at_commands, xbee_set_baudrate) { test_xbee_reset(); /* * set baudrate to 19200: */ di_buffer_reset(&read_buffer); di_drv_xbee_set_baudrate(&ctx, DI_DRV_XBEE_BAUDRATE_19K2); di_buffer_write_u8(&ctx.buf,read_buffer_data[0]); di_buffer_write_u8(&ctx.buf,read_buffer_data[1]); di_buffer_write_u8(&ctx.buf,read_buffer_data[2]); di_buffer_write_u8(&ctx.buf,read_buffer_data[3]); di_buffer_write_u8(&ctx.buf,read_buffer_data[4]); di_buffer_write_u8(&ctx.buf,read_buffer_data[5]); di_buffer_write_u8(&ctx.buf,read_buffer_data[6]); di_buffer_write_u8(&ctx.buf,read_buffer_data[7]); di_buffer_write_u8(&ctx.buf,read_buffer_data[8]); EXPECT_EQ(DNOK,di_drv_xbee_checksum_verify(&ctx.buf)); di_buffer_reset(&ctx.buf); di_buffer_write_u8(&ctx.buf,read_buffer_data[9]); di_buffer_write_u8(&ctx.buf,read_buffer_data[10]); di_buffer_write_u8(&ctx.buf,read_buffer_data[11]); di_buffer_write_u8(&ctx.buf,read_buffer_data[12]); di_buffer_write_u8(&ctx.buf,read_buffer_data[13]); di_buffer_write_u8(&ctx.buf,read_buffer_data[14]); di_buffer_write_u8(&ctx.buf,read_buffer_data[15]); di_buffer_write_u8(&ctx.buf,read_buffer_data[16]); EXPECT_EQ(DNOK,di_drv_xbee_checksum_verify(&ctx.buf)); EXPECT_EQ(0,read_buffer_data[1]); EXPECT_EQ(5,read_buffer_data[2]); EXPECT_EQ(8,read_buffer_data[3]); EXPECT_EQ('B',read_buffer_data[5]); EXPECT_EQ('D',read_buffer_data[6]); EXPECT_EQ(DI_DRV_XBEE_BAUDRATE_19K2,read_buffer_data[7]); // read_buffer_data[8] checksum // 9 sof // 10, 11 size // 12 frametype // 13 frame id EXPECT_EQ('A', read_buffer_data[14]); EXPECT_EQ('C', read_buffer_data[15]); /* * set baudrate to 230400: */ di_buffer_reset(&read_buffer); di_drv_xbee_set_baudrate(&ctx, DI_DRV_XBEE_BAUDRATE_230K4); EXPECT_EQ(DI_DRV_XBEE_BAUDRATE_230K4,read_buffer_data[7]); EXPECT_EQ('A', read_buffer_data[14]); EXPECT_EQ('C', read_buffer_data[15]); } TEST(drv_xbee_premade_remote_at_commands, xbee_set_baudrate) { test_xbee_reset(); /* * set baudrate to 19200: */ check = di_drv_xbee_remote_set_baudrate(&ctx, test_destination ,DI_DRV_XBEE_BAUDRATE_19K2); EXPECT_EQ(0, check); EXPECT_EQ(0x17,read_buffer_data[3]); EXPECT_EQ(1,read_buffer_data[4]); /* * Destination: */ EXPECT_EQ(0xf4,read_buffer_data[5]); EXPECT_EQ(0xe7,read_buffer_data[6]); EXPECT_EQ(0x32,read_buffer_data[7]); EXPECT_EQ(0xaa,read_buffer_data[8]); EXPECT_EQ(0xcb,read_buffer_data[9]); EXPECT_EQ(0x79,read_buffer_data[10]); EXPECT_EQ(0x11,read_buffer_data[11]); EXPECT_EQ(0xfa,read_buffer_data[12]); EXPECT_EQ(0xff,read_buffer_data[13]); EXPECT_EQ(0xfe,read_buffer_data[14]); EXPECT_EQ('B',read_buffer_data[16]); EXPECT_EQ('D',read_buffer_data[17]); EXPECT_EQ(DI_DRV_XBEE_BAUDRATE_19K2,read_buffer_data[18]); test_xbee_reset(); /* * set baudrate to 230400: */ di_drv_xbee_remote_set_baudrate(&ctx, test_destination, DI_DRV_XBEE_BAUDRATE_230K4); EXPECT_EQ(DI_DRV_XBEE_BAUDRATE_230K4,read_buffer_data[18]); } TEST(drv_xbee_premade_local_at_commands, xbee_set_sleep_settings) { test_xbee_reset(); EXPECT_EQ(DNOK, di_drv_xbee_set_sleep_settings(&ctx,0xfffefd,0xfffefd,DI_DRV_XBEE_SLEEP_MODE_SYNCHONOUS_CYCLIC_SLEEP,DI_DRV_XBEE_SLEEP_OPTIONS_SLEEP_COORDINATOR)); //sleep mode: EXPECT_EQ(8,read_buffer_data[3]); EXPECT_EQ('S',read_buffer_data[5]); EXPECT_EQ('M',read_buffer_data[6]); EXPECT_EQ(8,read_buffer_data[7]); //chk // 9 sof // 10, 11 size // 12 frametype // 13 frame id EXPECT_EQ('S', read_buffer_data[14]); EXPECT_EQ('O', read_buffer_data[15]); EXPECT_EQ(1, read_buffer_data[16]); // 17 chk // 18 sof // 19 size // 20 size // 21 frametype // 22 frame id EXPECT_EQ('S', read_buffer_data[23]); EXPECT_EQ('P', read_buffer_data[24]); EXPECT_EQ(255, read_buffer_data[25]); EXPECT_EQ(254, read_buffer_data[26]); EXPECT_EQ(253, read_buffer_data[27]); // 28 chk // 29 sof // 30 size // 31 size // 32 frametype // 33 frame id EXPECT_EQ('S', read_buffer_data[34]); EXPECT_EQ('T', read_buffer_data[35]); EXPECT_EQ(255, read_buffer_data[36]); EXPECT_EQ(254, read_buffer_data[37]); EXPECT_EQ(253, read_buffer_data[38]); // 39 chk // 40 sof // 41 size // 42 size // 43 frametype // 44 frame id EXPECT_EQ('A', read_buffer_data[45]); EXPECT_EQ('C', read_buffer_data[46]); } TEST(drv_xbee_premade_local_at_commands, xbee_set_incorrect_sleep_settings) { test_xbee_reset(); EXPECT_EQ(DNE_RANGE, di_drv_xbee_set_sleep_settings(&ctx,0x40fffefd,0x5afffefd,DI_DRV_XBEE_SLEEP_MODE_SYNCHONOUS_CYCLIC_SLEEP,DI_DRV_XBEE_SLEEP_OPTIONS_SLEEP_COORDINATOR)); }