/* * drv_frame.cpp * * Created on: Apr 6, 2017 * Author: svlies */ #include #include #include #include #include #include <../src/drv/xbee/frame.c> //dirty stuff for static function testing. static di_buffer buf; static di_drv_xbee_frame frame; static uint8_t data[DI_DRV_XBEE_DEFAULT_FRAME_MAX_FRAME_SIZE]; TEST(drv_xbee_frame_init, verify_correct) { di_drv_xbee_frame_init(&frame); EXPECT_EQ(DI_DRV_XBEE_FT_CMD_STATUS_OK,frame.cmd_status); EXPECT_EQ(DI_DRV_XBEE_FT_REMOTE_COMMAND_RESPONSE,frame.type); EXPECT_EQ(0,frame.size); EXPECT_EQ(0,frame.id); } TEST(drv_xbee_frame_AT_cmd, verify_correct_test_1) { di_buffer_flush(&buf); di_drv_xbee_frame_init(&frame); di_buffer_init(&buf, data, DI_DRV_XBEE_DEFAULT_FRAME_MAX_FRAME_SIZE); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,DI_DRV_XBEE_FT_AT_COMMAND_RESPONSE); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,(uint8_t)'T'); di_buffer_write_u8(&buf,(uint8_t)'A'); di_drv_xbee_get_at_command(&buf,&frame); EXPECT_EQ('T',frame.cmd[0]); EXPECT_EQ('A',frame.cmd[1]); } TEST(drv_xbee_frame_AT_cmd, verify_correct_test_2) { di_drv_xbee_frame_init(&frame); di_buffer_flush(&buf); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,DI_DRV_XBEE_FT_REMOTE_COMMAND_RESPONSE); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,(uint8_t)'T'); di_buffer_write_u8(&buf,(uint8_t)'A'); di_drv_xbee_get_at_command(&buf,&frame); EXPECT_EQ('T',frame.cmd[0]); EXPECT_EQ('A',frame.cmd[1]); } TEST(drv_xbee_frame_address, verify_correct_test_1) { di_drv_xbee_frame_init(&frame); di_buffer_flush(&buf); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,DI_DRV_XBEE_FT_RECEIVE_PACKET); di_buffer_write_u8(&buf,0x88); di_buffer_write_u8(&buf,0x99); di_buffer_write_u8(&buf,0xaa); di_buffer_write_u8(&buf,0xbb); di_buffer_write_u8(&buf,0xcc); di_buffer_write_u8(&buf,0xdd); di_buffer_write_u8(&buf,0xee); di_buffer_write_u8(&buf,0xff); di_drv_xbee_get_address(&buf,&frame); //printf("\n-----------------\n %s \n", frame.src_addr); EXPECT_EQ('8',frame.src_addr[0]); EXPECT_EQ('9',frame.src_addr[2]); EXPECT_EQ('a',frame.src_addr[4]); EXPECT_EQ('b',frame.src_addr[6]); EXPECT_EQ('c',frame.src_addr[8]); EXPECT_EQ('d',frame.src_addr[10]); EXPECT_EQ('e',frame.src_addr[12]); EXPECT_EQ('f',frame.src_addr[14]); } TEST(drv_xbee_frame_address, verify_correct_test_2) { di_drv_xbee_frame_init(&frame); di_buffer_flush(&buf); di_buffer_write_u8(&buf,0x7e); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x13); di_buffer_write_u8(&buf,DI_DRV_XBEE_FT_REMOTE_COMMAND_RESPONSE); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x13); di_buffer_write_u8(&buf,0xa2); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x40); di_buffer_write_u8(&buf,0x52); di_buffer_write_u8(&buf,0x2b); di_buffer_write_u8(&buf,0xaa); di_drv_xbee_get_address(&buf,&frame); //printf("\n-----------------\n %s \n", frame.src_addr); EXPECT_EQ('0',frame.src_addr[0]); EXPECT_EQ('1',frame.src_addr[2]); EXPECT_EQ('a',frame.src_addr[4]); EXPECT_EQ('0',frame.src_addr[6]); EXPECT_EQ('4',frame.src_addr[8]); EXPECT_EQ('5',frame.src_addr[10]); EXPECT_EQ('2',frame.src_addr[12]); EXPECT_EQ('a',frame.src_addr[14]); } TEST(drv_xbee_frame_address, verify_incorrect_test_1) { di_drv_xbee_frame_init(&frame); di_buffer_flush(&buf); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,DI_DRV_XBEE_FT_MODEM_STATUS); di_buffer_write_u8(&buf,0x88); di_buffer_write_u8(&buf,0x99); di_buffer_write_u8(&buf,0xaa); di_buffer_write_u8(&buf,0xbb); di_buffer_write_u8(&buf,0xcc); di_buffer_write_u8(&buf,0xdd); di_buffer_write_u8(&buf,0xee); di_buffer_write_u8(&buf,0xff); di_drv_xbee_get_address(&buf,&frame); //printf("\n-----------------\n %s \n", frame.src_addr); EXPECT_EQ(0,frame.src_addr[0]); } TEST(drv_xbee_frame_deserialize, verify_correct_test_1) { di_drv_xbee_frame_init(&frame); di_buffer_flush(&buf); di_buffer_write_u8(&buf,0x7e); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x12); di_buffer_write_u8(&buf,DI_DRV_XBEE_FT_RECEIVE_PACKET); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x13); di_buffer_write_u8(&buf,0xa2); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x40); di_buffer_write_u8(&buf,0x52); di_buffer_write_u8(&buf,0x2b); di_buffer_write_u8(&buf,0xaa); di_buffer_write_u8(&buf,0xff); di_buffer_write_u8(&buf,0xfe); di_buffer_write_u8(&buf,0x01); di_buffer_write_u8(&buf,0x52); di_buffer_write_u8(&buf,0x78); di_buffer_write_u8(&buf,0x44); di_buffer_write_u8(&buf,0x61); di_buffer_write_u8(&buf,0x74); di_buffer_write_u8(&buf,0x61); di_buffer_write_u8(&buf,0x11); di_drv_xbee_frame_deserialize(&buf,&frame); //printf("\n-----------------\n %s \n", frame.src_addr); EXPECT_EQ(DI_DRV_XBEE_FT_RECEIVE_PACKET,frame.type); EXPECT_EQ('a',frame.src_addr[4]); EXPECT_EQ(6,frame.size); EXPECT_EQ(0x52,frame.data[0]); EXPECT_EQ(0x78,frame.data[1]); EXPECT_EQ(0x44,frame.data[2]); EXPECT_EQ(0x61,frame.data[3]); EXPECT_EQ(0x74,frame.data[4]); EXPECT_EQ(0x61,frame.data[5]); } TEST(drv_xbee_frame_deserialize, verify_correct_test_2) { di_drv_xbee_frame_init(&frame); di_buffer_flush(&buf); di_buffer_write_u8(&buf,0x7e); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x13); di_buffer_write_u8(&buf,DI_DRV_XBEE_FT_REMOTE_COMMAND_RESPONSE); di_buffer_write_u8(&buf,0x55); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x13); di_buffer_write_u8(&buf,0xa2); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x40); di_buffer_write_u8(&buf,0x52); di_buffer_write_u8(&buf,0x2b); di_buffer_write_u8(&buf,0xaa); di_buffer_write_u8(&buf,0xff); di_buffer_write_u8(&buf,0xfe); di_buffer_write_u8(&buf,0x53); di_buffer_write_u8(&buf,0x4C); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x40); di_buffer_write_u8(&buf,0x52); di_buffer_write_u8(&buf,0x2b); di_buffer_write_u8(&buf,0xaa); di_buffer_write_u8(&buf,0xf4); di_drv_xbee_frame_deserialize(&buf, &frame); EXPECT_EQ('a',frame.src_addr[4]); EXPECT_EQ('S',frame.cmd[0]); EXPECT_EQ('L',frame.cmd[1]); EXPECT_EQ(0x55,frame.id); EXPECT_EQ(4, frame.size); EXPECT_EQ(0x40,frame.data[0]); EXPECT_EQ(0x52,frame.data[1]); EXPECT_EQ(0x2b,frame.data[2]); EXPECT_EQ(0xaa,frame.data[3]); } TEST(drv_xbee_frame_deserialize, verify_correct_test_3) { di_drv_xbee_frame_init(&frame); di_buffer_flush(&buf); di_buffer_write_u8(&buf,0x7e); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x05); di_buffer_write_u8(&buf,DI_DRV_XBEE_FT_AT_COMMAND_RESPONSE); di_buffer_write_u8(&buf,0x01); di_buffer_write_u8(&buf,0x42); di_buffer_write_u8(&buf,0x44); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0xf0); di_drv_xbee_frame_deserialize(&buf,&frame); EXPECT_EQ(DI_DRV_XBEE_FT_AT_COMMAND_RESPONSE,frame.type); EXPECT_EQ('B',frame.cmd[0]); EXPECT_EQ('D',frame.cmd[1]); } TEST(drv_xbee_frame_deserialize, verify_correct_test_4) { di_drv_xbee_frame_init(&frame); di_buffer_flush(&buf); di_buffer_write_u8(&buf,0x7e); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x02); di_buffer_write_u8(&buf,DI_DRV_XBEE_FT_MODEM_STATUS); di_buffer_write_u8(&buf,0x0b); di_buffer_write_u8(&buf,0x75); di_drv_xbee_frame_deserialize(&buf,&frame); EXPECT_EQ(DI_DRV_XBEE_FT_MODEM_STATUS,frame.type); EXPECT_EQ(DI_DRV_XBEE_FT_CMD_STATUS_NETWORK_WOKE_UP,frame.cmd_status); } TEST(drv_xbee_frame_deserialize, verify_correct_test_5) { di_drv_xbee_frame_init(&frame); di_buffer_flush(&buf); di_buffer_write_u8(&buf,0x7e); di_buffer_write_u8(&buf,0x00); di_buffer_write_u8(&buf,0x02); di_buffer_write_u8(&buf,DI_DRV_XBEE_FT_NODE_IDENTIFICATION_INDICATOR); di_buffer_write_u8(&buf,0x0b); di_buffer_write_u8(&buf,0x75); di_drv_xbee_frame_deserialize(&buf,&frame); EXPECT_EQ(DI_DRV_XBEE_FT_NODE_IDENTIFICATION_INDICATOR,frame.type); }