#include #include #include #include #include #include #include #include #include static void sensor_get_fru_supermicro(MchData mchData, Sensor sens) { /* Supermicro does not use FRU device locator records, so no means to read a FRU ID * Associate all Supermicro sensors with single FRU, arbitrarily choose...0? */ sens->fruId = sens->fruIndex = 0; } static void assign_fru_lkup_supermicro(MchData mchData) { /* Supermicro does not use FRU device locator records, so no means to read a FRU ID * Associate all Supermicro sensors with single FRU, arbitrarily choose...0? * Set FRU address to BMC * Force FRU count to be 1 */ mchData->mchSys->fruLkup[0] = 0; mchData->mchSys->fruCount = 1; mchData->mchSys->fru[0].sdr.addr = IPMI_MSG_ADDR_BMC; } MchCbRec drvMchSupermicroCb = { assign_site_info: 0, assign_fru_lkup: assign_fru_lkup_supermicro, fru_data_suppl: 0, sensor_get_fru: sensor_get_fru_supermicro, get_chassis_status: mchMsgGetChassisStatus }; static void drvMchSupermicroRegistrar(void) { registryAdd( (void*)mchCbRegistryId, "drvMchSupermicroCb", &drvMchSupermicroCb ); } epicsExportRegistrar(drvMchSupermicroRegistrar);