| |
| #include <stdint.h> |
| #include <stdio.h> |
| #include <string.h> |
| |
| unsigned char g_sensortype[][2] = { |
| {0xC3, 0x01}, {0x07, 0x02}, {0x0F, 0x05}, {0x0c, 0x1F}, {0xFF, 0xff}}; |
| |
| uint8_t find_type_for_sensor_number(uint8_t sensor_number) |
| { |
| int i = 0; |
| uint8_t rc; |
| |
| while (g_sensortype[i][0] != 0xff) |
| { |
| if (g_sensortype[i][1] == sensor_number) |
| { |
| break; |
| } |
| else |
| { |
| i++; |
| } |
| } |
| |
| rc = g_sensortype[i][0]; |
| |
| if (rc == 0xFF) |
| { |
| rc = 0; |
| } |
| return rc; |
| } |
| |
| char g_results_method[64]; |
| char g_results_value[64]; |
| |
| int set_sensor_dbus_state_s(unsigned char number, const char* member, |
| const char* value) |
| { |
| strcpy(g_results_method, member); |
| strcpy(g_results_value, value); |
| |
| return 0; |
| } |
| |
| int set_sensor_dbus_state_y(unsigned char number, const char* member, |
| uint8_t value) |
| { |
| char val[2]; |
| |
| snprintf(val, 2, "%d", value); |
| |
| strcpy(g_results_method, member); |
| strcpy(g_results_value, val); |
| |
| return 0; |
| } |
| |
| extern int updateSensorRecordFromSSRAESC(const void* record); |
| |
| // DIMM Present |
| uint8_t testrec_sensor1[] = {0x1F, 0xa9, 0x00, 0x40, 0x00, |
| 0x00, 0x00, 0x00, 0x00, 0x00}; |
| |
| // DIMM Not present |
| uint8_t testrec_sensor2[] = {0x1F, 0xa9, 0x00, 0x00, 0x00, |
| 0x40, 0x00, 0x00, 0x00, 0x00}; |
| |
| // DIMM Not present |
| uint8_t testrec_procfailed[] = {0x02, 0xa9, 0x00, 0x00, 0x00, |
| 0x00, 0x01, 0x00, 0x00, 0x00}; |
| |
| // Virtual Sensor 5, setting a Value of 0h |
| uint8_t testrec_bootprogress[] = {0x05, 0xa9, 0x00, 0x04, 0x00, |
| 0x00, 0x00, 0x00, 0x0E, 0x00}; |
| |
| // Virtual Sensor setting a boot count |
| uint8_t testrec_bootcount[] = {0x01, 0x09, 0x00, 0x03, 0x00, |
| 0x00, 0x00, 0x00, 0x00, 0x00}; |
| |
| // Invalid sensor number |
| uint8_t testrec_invalidnumber[] = {0x35, 0xa9, 0x00, 0x04, 0x00, |
| 0x00, 0x00, 0x00, 0x03, 0x00}; |
| |
| int check_results(int rc, const char* method, const char* value) |
| { |
| if (strcmp(g_results_method, method)) |
| { |
| log<level::ERR>("Method Failed", entry("EXPECT=%s", method), |
| entry("GOT=%s", g_results_method)); |
| return -1; |
| } |
| if (strcmp(g_results_value, value)) |
| { |
| log<level::ERR>("Value failed", entry("EXPECT=%s", value), |
| entry("GOT=%s", g_results_method)); |
| return -2; |
| } |
| |
| return 0; |
| } |
| |
| void testprep(void) |
| { |
| memset(g_results_method, 0, sizeof(g_results_method)); |
| memset(g_results_value, 0, sizeof(g_results_value)); |
| } |
| |
| int main() |
| { |
| testprep(); |
| check_results(updateSensorRecordFromSSRAESC(testrec_bootprogress), |
| "setValue", "FW Progress, Docking station attachment"); |
| testprep(); |
| check_results(updateSensorRecordFromSSRAESC(testrec_sensor1), "setPresent", |
| "True"); |
| testprep(); |
| check_results(updateSensorRecordFromSSRAESC(testrec_sensor2), "setPresent", |
| "False"); |
| testprep(); |
| check_results(updateSensorRecordFromSSRAESC(testrec_procfailed), "setFault", |
| "False"); |
| testprep(); |
| check_results(updateSensorRecordFromSSRAESC(testrec_bootcount), "setValue", |
| "3"); |
| testprep(); |
| check_results(updateSensorRecordFromSSRAESC(testrec_invalidnumber), "", ""); |
| |
| return 0; |
| } |