| /* |
| // Copyright (c) 2017 2018 Intel Corporation |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| */ |
| |
| #pragma once |
| #include <dbus-sdr/sdrutils.hpp> |
| |
| #include <cstdint> |
| |
| #pragma pack(push, 1) |
| |
| struct SensorThresholdResp |
| { |
| uint8_t readable; |
| uint8_t lowernc; |
| uint8_t lowercritical; |
| uint8_t lowernonrecoverable; |
| uint8_t uppernc; |
| uint8_t uppercritical; |
| uint8_t uppernonrecoverable; |
| }; |
| |
| #pragma pack(pop) |
| |
| enum class IPMIThresholdRespBits |
| { |
| lowerNonCritical, |
| lowerCritical, |
| lowerNonRecoverable, |
| upperNonCritical, |
| upperCritical, |
| upperNonRecoverable |
| }; |
| |
| enum class IPMISensorReadingByte2 : uint8_t |
| { |
| eventMessagesEnable = (1 << 7), |
| sensorScanningEnable = (1 << 6), |
| readingStateUnavailable = (1 << 5), |
| }; |
| |
| enum class IPMISensorReadingByte3 : uint8_t |
| { |
| upperNonRecoverable = (1 << 5), |
| upperCritical = (1 << 4), |
| upperNonCritical = (1 << 3), |
| lowerNonRecoverable = (1 << 2), |
| lowerCritical = (1 << 1), |
| lowerNonCritical = (1 << 0), |
| }; |
| |
| enum class IPMISensorEventEnableByte2 : uint8_t |
| { |
| eventMessagesEnable = (1 << 7), |
| sensorScanningEnable = (1 << 6), |
| }; |
| |
| enum class IPMISensorEventEnableThresholds : uint8_t |
| { |
| nonRecoverableThreshold = (1 << 6), |
| criticalThreshold = (1 << 5), |
| nonCriticalThreshold = (1 << 4), |
| upperNonRecoverableGoingHigh = (1 << 3), |
| upperNonRecoverableGoingLow = (1 << 2), |
| upperCriticalGoingHigh = (1 << 1), |
| upperCriticalGoingLow = (1 << 0), |
| upperNonCriticalGoingHigh = (1 << 7), |
| upperNonCriticalGoingLow = (1 << 6), |
| lowerNonRecoverableGoingHigh = (1 << 5), |
| lowerNonRecoverableGoingLow = (1 << 4), |
| lowerCriticalGoingHigh = (1 << 3), |
| lowerCriticalGoingLow = (1 << 2), |
| lowerNonCriticalGoingHigh = (1 << 1), |
| lowerNonCriticalGoingLow = (1 << 0), |
| }; |
| |
| enum class IPMIGetSensorEventEnableThresholds : uint8_t |
| { |
| lowerNonCriticalGoingLow = 0, |
| lowerNonCriticalGoingHigh = 1, |
| lowerCriticalGoingLow = 2, |
| lowerCriticalGoingHigh = 3, |
| lowerNonRecoverableGoingLow = 4, |
| lowerNonRecoverableGoingHigh = 5, |
| upperNonCriticalGoingLow = 6, |
| upperNonCriticalGoingHigh = 7, |
| upperCriticalGoingLow = 8, |
| upperCriticalGoingHigh = 9, |
| upperNonRecoverableGoingLow = 10, |
| upperNonRecoverableGoingHigh = 11, |
| }; |
| |
| namespace ipmi |
| { |
| |
| uint16_t getNumberOfSensors(); |
| |
| SensorSubTree& getSensorTree(); |
| |
| ipmi_ret_t getSensorConnection(ipmi::Context::ptr ctx, uint8_t sensnum, |
| std::string& connection, std::string& path, |
| std::vector<std::string>* interfaces = nullptr); |
| |
| struct IPMIThresholds |
| { |
| std::optional<uint8_t> warningLow; |
| std::optional<uint8_t> warningHigh; |
| std::optional<uint8_t> criticalLow; |
| std::optional<uint8_t> criticalHigh; |
| }; |
| |
| namespace sensor |
| { |
| /** |
| * @brief Retrieve the number of sensors that are not included in the list of |
| * sensors published via D-Bus |
| * |
| * @param[in]: ctx: the pointer to the D-Bus context |
| * @return: The number of additional sensors separate from those published |
| * dynamically on D-Bus |
| */ |
| size_t getOtherSensorsCount(ipmi::Context::ptr ctx); |
| |
| /** |
| * @brief Retrieve the record data for the sensors not published via D-Bus |
| * |
| * @param[in]: ctx: the pointer to the D-Bus context |
| * @param[in]: recordID: the integer index for the sensor to retrieve |
| * @param[out]: SDR data for the indexed sensor |
| * @return: 0: success |
| * negative number: error condition |
| */ |
| int getOtherSensorsDataRecord(ipmi::Context::ptr ctx, uint16_t recordID, |
| std::vector<uint8_t>& recordData); |
| } // namespace sensor |
| |
| namespace dcmi |
| { |
| |
| struct sensorInfo |
| { |
| std::string objectPath; |
| uint8_t type; |
| uint16_t recordId; |
| uint8_t entityId; |
| uint8_t entityInstance; |
| }; |
| |
| } // namespace dcmi |
| |
| } // namespace ipmi |