int LibWrapper::getSensors(const NVM_UID deviceUid, struct sensor *pSensors, const NVM_UINT16 count) const { LogEnterExit(__FUNCTION__, __FILE__, __LINE__); return nvm_get_sensors(deviceUid, pSensors, count); }
/* * Check for device sensor changes */ void monitor::EventMonitor::monitorDimmSensors(const std::string &uidStr, const struct device_discovery &discovery, struct db_dimm_state &storedState, bool &storedStateChanged, bool firstState) { LogEnterExit logging(__FUNCTION__, __FILE__, __LINE__); struct sensor sensors[NVM_MAX_DEVICE_SENSORS]; memset(sensors, 0, sizeof(sensors)); int rc = nvm_get_sensors(discovery.uid, sensors, NVM_MAX_DEVICE_SENSORS); if (rc != NVM_SUCCESS) { COMMON_LOG_ERROR_F("nvm_get_sensors for dimm %s failed with error %d\n", uidStr.c_str(), rc); } else { // first pass, just store current values if (firstState) { storedState.mediaerrors_corrected = sensors[SENSOR_MEDIAERRORS_CORRECTED].reading; storedState.mediaerrors_erasurecoded = sensors[SENSOR_MEDIAERRORS_ERASURECODED].reading; storedState.mediaerrors_uncorrectable = sensors[SENSOR_MEDIAERRORS_UNCORRECTABLE].reading; storedState.wearlevel_state = sensors[SENSOR_WEARLEVEL].current_state; storedState.mediatemperature_state = sensors[SENSOR_MEDIA_TEMPERATURE].current_state; storedState.controllertemperature_state = sensors[SENSOR_CONTROLLER_TEMPERATURE].current_state; storedState.spare_capacity_state = sensors[SENSOR_SPARECAPACITY].current_state; } // check for changes else { // monitor media temperature monitorDimmMediaTemperature(uidStr, discovery, storedState, storedStateChanged, sensors[SENSOR_MEDIA_TEMPERATURE]); // monitor controller temperature monitorDimmControllerTemperature(uidStr, discovery, storedState, storedStateChanged, sensors[SENSOR_CONTROLLER_TEMPERATURE]); // monitor spare capacity monitorDimmSpare(uidStr, discovery, storedState, storedStateChanged, sensors[SENSOR_SPARECAPACITY]); // monitor wear level monitorDimmWearLevel(uidStr, discovery, storedState, storedStateChanged, sensors[SENSOR_WEARLEVEL]); // monitor errors - uncorrectable monitorDimmErrors(uidStr, discovery, storedState.mediaerrors_uncorrectable, sensors[SENSOR_MEDIAERRORS_UNCORRECTABLE].reading, UNCORRECTABLE, storedStateChanged); // monitor errors - corrected monitorDimmErrors(uidStr, discovery, storedState.mediaerrors_corrected, sensors[SENSOR_MEDIAERRORS_CORRECTED].reading, CORRECTED, storedStateChanged); // monitor errors - erasure coded monitorDimmErrors(uidStr, discovery, storedState.mediaerrors_erasurecoded, sensors[SENSOR_MEDIAERRORS_ERASURECODED].reading, ERASURE_CODED, storedStateChanged); } } }