Esempio n. 1
0
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);
}
Esempio n. 2
0
/*
 * 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);
		}
	}
}