#include #include #include #include #include #include #include <../src/drv/crtm.c> // dirty stuff to test static functions. #include #include static bool check = false; static char test_destination_char[17] = "f4e732aacb7911fa"; static uint8_t crtm_correct_frame[]{CRTM_STATUS_FRAME_TYPE, 0x80, 4,2,1,0,0,0,0x07,0x01,0x09,0xe4,0x88,0x01,0xba,0xaa,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff}; TEST(drv_crtm, crtm_frame_conversion_correct){ di_drv_xbee_frame test_xbee_frame; di_drv_crtm_data test_crtm_frame; di_drv_xbee_frame_init(&test_xbee_frame); di_drv_crtm_frame_init(&test_crtm_frame); /* * fill the test xbee frame with data: */ test_xbee_frame.size = 12+ (CRTM_NR_ADC_CHANNELS * 2); test_xbee_frame.type = DI_DRV_XBEE_FT_RECEIVE_PACKET; test_xbee_frame.id = 15; strncpy(test_xbee_frame.src_addr, test_destination_char, 17); for(int i = 0; i < 25; i++) { test_xbee_frame.data[i] = crtm_correct_frame[i]; } check = di_drv_crtm_frame_converter(&test_xbee_frame, &test_crtm_frame); EXPECT_EQ(true,check); EXPECT_EQ(1,test_crtm_frame.patch_version); EXPECT_EQ(0x0402,test_crtm_frame.mcu_version); EXPECT_EQ(true,test_crtm_frame.rail_detect); //printf("\n--------------\n Temp 1: %x \n Temp 2: %x \n Bat 1: %x \n------------------\n",test_crtm_frame.temp1,test_crtm_frame.temp2,test_crtm_frame.bat1); EXPECT_EQ(MCUTYPE_CRTM3000_SENSOR,test_crtm_frame.mcu_type); } TEST(drv_crtm, crtm_frame_conversion_incorrect){ di_drv_xbee_frame test_xbee_frame; di_drv_crtm_data test_crtm_frame; di_drv_xbee_frame_init(&test_xbee_frame); di_drv_crtm_frame_init(&test_crtm_frame); /* * Incorrect datasize: */ test_xbee_frame.size = 8+(CRTM_NR_ADC_CHANNELS * 2); test_xbee_frame.type = DI_DRV_XBEE_FT_RECEIVE_PACKET; test_xbee_frame.data[0] = CRTM_STATUS_FRAME_TYPE; test_xbee_frame.id = 15; strncpy(test_xbee_frame.src_addr, test_destination_char, 17); check = di_drv_crtm_frame_converter(&test_xbee_frame, &test_crtm_frame); EXPECT_EQ(false,check); test_xbee_frame.size = 17+(CRTM_NR_ADC_CHANNELS * 2); test_xbee_frame.type = DI_DRV_XBEE_FT_RECEIVE_PACKET; test_xbee_frame.data[0] = CRTM_STATUS_FRAME_TYPE; test_xbee_frame.id = 15; strncpy(test_xbee_frame.src_addr, test_destination_char, 17); check = di_drv_crtm_frame_converter(&test_xbee_frame, &test_crtm_frame); EXPECT_EQ(false,check); /* * Incorrect frametype: */ test_xbee_frame.size = 12+(CRTM_NR_ADC_CHANNELS * 2); test_xbee_frame.type = DI_DRV_XBEE_FT_REMOTE_COMMAND_RESPONSE; test_xbee_frame.data[0] = CRTM_STATUS_FRAME_TYPE; test_xbee_frame.id = 15; strncpy(test_xbee_frame.src_addr, test_destination_char, 17); check = di_drv_crtm_frame_converter(&test_xbee_frame, &test_crtm_frame); EXPECT_EQ(false,check); test_xbee_frame.size = 12+(CRTM_NR_ADC_CHANNELS * 2); test_xbee_frame.type = DI_DRV_XBEE_FT_RECEIVE_PACKET; test_xbee_frame.data[0] = 0x19; test_xbee_frame.id = 15; strncpy(test_xbee_frame.src_addr, test_destination_char, 17); check = di_drv_crtm_frame_converter(&test_xbee_frame, &test_crtm_frame); EXPECT_EQ(false,check); } TEST(drv_crtm, crtm_frame_init){ di_drv_crtm_data test_crtm_frame; di_drv_crtm_frame_init(&test_crtm_frame); EXPECT_EQ(0,test_crtm_frame.mcu_version); EXPECT_EQ(0,test_crtm_frame.patch_version); EXPECT_EQ(0,test_crtm_frame.mcu_type); EXPECT_EQ(false,test_crtm_frame.rail_detect); } TEST(drv_crtm, crtm_bat_states){ di_drv_crtm_data test_crtm_frame; di_drv_crtm_frame_init(&test_crtm_frame); test_crtm_frame.bat1 = 0.98f; di_drv_crtm_bat_state(&test_crtm_frame); EXPECT_EQ(0,test_crtm_frame.bat1_status); test_crtm_frame.bat1 = 2.50f; di_drv_crtm_bat_state(&test_crtm_frame); EXPECT_EQ(1,test_crtm_frame.bat1_status); test_crtm_frame.bat1 = 2.86f; di_drv_crtm_bat_state(&test_crtm_frame); EXPECT_EQ(3,test_crtm_frame.bat1_status); test_crtm_frame.bat1 = 3.54f; di_drv_crtm_bat_state(&test_crtm_frame); EXPECT_EQ(5,test_crtm_frame.bat1_status); } //------------------------------------------------------ TEST(drv_di_rpc_crtm, crtm_address_convert){ di_drv_crtm_data test_crtm_frame; di_drv_crtm_frame_init(&test_crtm_frame); char rpc_sn[33]; strncpy(test_crtm_frame.sn, test_destination_char, 17); EXPECT_EQ(DNOK,di_drv_xbee_mac_to_device_uid(test_crtm_frame.sn, rpc_sn)); //printf("\nsn: %s\n",rpc_sn); ASSERT_EQ('1',rpc_sn[1]); ASSERT_EQ('1',rpc_sn[3]); ASSERT_EQ('a',rpc_sn[31]); ASSERT_EQ('f',rpc_sn[16]); }