Sensor.h 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. /*****************************************************************
  2. *****************************************************************
  3. *** **
  4. *** (C)Copyright 2005-2006, American Megatrends Inc. **
  5. *** **
  6. *** All Rights Reserved. **
  7. *** **
  8. *** 6145-F, Northbelt Parkway, Norcross, **
  9. *** **
  10. *** Georgia - 30071, USA. Phone-(770)-246-8600. **
  11. *** **
  12. *****************************************************************
  13. *****************************************************************
  14. ******************************************************************
  15. *
  16. * sensor.h
  17. * Sensor functions.
  18. *
  19. * Author: Govind Kothandapani <govindk@ami.com>
  20. *
  21. ******************************************************************/
  22. #ifndef SENSOR_H
  23. #define SENSOR_H
  24. #include "Types.h"
  25. #include "IPMI_Sensor.h"
  26. #include "SDRRecord.h"
  27. //#include "SensorMonitor.h"
  28. /**
  29. * @brief Sensor Types
  30. */
  31. #define PROCESSOR 0x07
  32. #define POWER_SUPPLY 0x08
  33. #define MEMORY 0x0c
  34. #define ENTITY_PRESENCE 0x25
  35. #define BATTERY 0x29
  36. /**
  37. * @brief Sensor presence bit
  38. */
  39. #define PROCESSOR_PRESENCE_DETECTED 0x07
  40. #define POWER_SUPPLY_PRESENCE_DETECTED 0x00
  41. #define POWER_SUPPLY_OUT_OF_RANGE_PRESENT 0x05
  42. #define MEMORY_PRESENCE_DETECTED 0x06
  43. #define ENTITY_PRESENCE_ENTITY_PRESENT 0x00
  44. #define BATTERY_PRESENCE_DETECTED 0x02
  45. /**
  46. * @brief Event type codes
  47. */
  48. #define GENERIC_EVENT_TYPE_DEV_PRESENCE 0x08
  49. #define GENERIC_EVENT_TYPE_DEV_AVAILABLE 0x09
  50. #define EVENT_TYPE_SENSOR_SPECIFIC 0x6f
  51. #define EVENT_AND_SCANNING_ENABLE (BIT7|BIT6)
  52. #define READING_UNAVAILABLE (BIT5)
  53. /**
  54. * @brief Sensor Reading for Device
  55. */
  56. #define DEVICE_PRESENT 0x01
  57. #define DEVICE_ENABLED 0x01
  58. /*** External Definitions ***/
  59. #define THRESHOLD_SENSOR_CLASS 0x01
  60. #define GET_SETTABLE_SENSOR_BIT(FLAGS) (FLAGS & 0x80)
  61. #define GET_EVENT_DATA_OP(OP) ( ((OP) >> 6))
  62. #define GET_ASSERT_EVT_OP(OP) ( ((OP) >> 4) & 0x03)
  63. #define GET_DEASSERT_EVT_OP(OP) ( ((OP) >> 2) & 0x03)
  64. #define GET_SETSENSOR_OP(OP) ( (OP) & 0x03)
  65. #define CLEAR_ASSERT_BITS 0x3
  66. #define SET_ASSERT_BITS 0x2
  67. #define WRITE_ASSERT_BITS 0x1
  68. #define CLEAR_DEASSERT_BITS 0x3
  69. #define SET_DEASSERT_BITS 0x2
  70. #define WRITE_DEASSERT_BITS 0x1
  71. #define WRITE_NO_EVTDATA1 0x02
  72. #define WRITE_EVTDATA1 0x01
  73. #define USE_SM_EVTDATA 0x00
  74. #define DCMI_INLET_TEMP_ENTITY_ID 0x40
  75. #define DCMI_CPU_TEMP_ENTITY_ID 0x41
  76. #define DCMI_BASEBOARD_TEMP_ENTITY_ID 0x42
  77. #define IPMI_INLET_TEMP_ENTITY_ID 0x37
  78. #define IPMI_CPU_TEMP_ENTITY_ID 0x03
  79. #define IPMI_BASEBOARD_TEMP_ENTITY_ID 0x07
  80. // Assertion bits for discrete sensor
  81. #define STATE_0_ASSERTED 0x01
  82. #define STATE_1_ASSERTED 0x02
  83. #define STATE_2_ASSERTED 0x04
  84. #define STATE_3_ASSERTED 0x08
  85. #define STATE_4_ASSERTED 0x10
  86. #define STATE_5_ASSERTED 0x20
  87. #define STATE_6_ASSERTED 0x40
  88. #define STATE_7_ASSERTED 0x80
  89. #define STATE_8_ASSERTED 0x01
  90. #define STATE_9_ASSERTED 0x02
  91. #define STATE_10_ASSERTED 0x04
  92. #define STATE_11_ASSERTED 0x08
  93. #define STATE_12_ASSERTED 0x10
  94. #define STATE_13_ASSERTED 0x20
  95. #define STATE_14_ASSERTED 0x40
  96. // FRU State events
  97. #define FRU_NOT_INSTALLED 0x00
  98. #define FRU_INACTIVE 0x01
  99. #define FRU_ACTIVATION_REQUESTED 0x02
  100. #define FRU_ACTIVATION_IN_PROGRESS 0x03
  101. #define FRU_ACTIVE 0x04
  102. #define FRU_DEACTIVATION_REQUESTED 0x05
  103. #define FRU_DEACTIVATION_IN_PROGRESS 0x06
  104. #define FRU_COMMUNICATION_LOST 0x07
  105. // ACPI state events
  106. #define ACPI_S0_WORKING 0x00
  107. #define ACPI_S1_SLEEPING 0x01
  108. #define ACPI_S2_SLEEPING 0x02
  109. #define ACPI_S3_SLEEPING 0x03
  110. #define ACPI_S4_SUSPTODISK 0x04
  111. #define ACPI_S5_SOFTOFF 0x05
  112. #define ACPI_G3_MECHANICAL 0x07
  113. #define ACPI_G1_SLEEPING 0x09
  114. #define ACPI_S5_OVERRIDE 0x0A
  115. #define ACPI_LEGACY_ON 0x0B
  116. #define ACPI_LEGACY_OFF 0x0C
  117. /**
  118. * @brief Initialize Sensor information.
  119. * @return 0 if success, -1 if error
  120. **/
  121. extern int InitSensor (int BMCInst);
  122. /**
  123. * @brief Initialize the scanning bit of each sensor
  124. * @return 0 if success, -1 if error
  125. */
  126. extern int InitSensorScanningBit (int BMCInst);
  127. /**
  128. * @brief Get sensor's SDR record.
  129. * @param SensorNum - Sensor number.
  130. * @return the sensor's SDR record.
  131. **/
  132. extern _FAR_ SDRRecHdr_T* SR_GetSensorSDR (INT8U SensorNum,int BMCInst);
  133. extern int GetRecordIdsforDCMISensor (INT8U EntityID,INT8U SensorType,INT8U EntityInstance,
  134. INT8U StartingEntityInstance, INT16U* pBuf, INT8U* pTotalValidInstances,int BMCInst);
  135. extern int GetDCMITempReading(INT8U EntityID, INT8U SensorType,INT8U EntityInstance,
  136. INT8U StartingEntityInstance, INT8U* pBuf, INT8U* pTotalValidInstances,int BMCInst);
  137. /**
  138. * @defgroup sdc Sensor Device Commands
  139. * @ingroup senevt
  140. * IPMI Sensor Device interface command handlers. These commands are
  141. * used for configuring hysterisis and thresholds and reading
  142. * sensor values.
  143. * @{
  144. **/
  145. extern int GetDevSDRInfo (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  146. extern int GetDevSDR (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  147. extern int ReserveDevSDRRepository (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  148. extern int SetSensorType (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  149. extern int GetSensorType (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  150. extern int ReArmSensor (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  151. extern int GetSensorEventStatus (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  152. extern int SetSensorHysterisis (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  153. extern int GetSensorHysterisis (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  154. extern int SetSensorThresholds (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  155. extern int GetSensorThresholds (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  156. extern int GetSensorReadingFactors (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  157. extern int SetSensorEventEnable (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  158. extern int GetSensorEventEnable (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  159. extern int GetSensorReading (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  160. extern int SetSensorReading (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst);
  161. int CompareValues(BOOL isSigned, INT8U val1, INT8U val2);
  162. /** @} */
  163. /**
  164. * @brief Get Sensor Hysterisis.
  165. * @param SensorNum - Sensor number.
  166. * @param Res - Response data.
  167. * @return 0 if success, -1 if error.
  168. **/
  169. extern int SR_GetSensorHysterisis (INT8U SensorNum, _NEAR_ GetSensorHysterisisRes_T* Res);
  170. /**
  171. * @brief Get Sensor Threshold.
  172. * @param SensorNum - Sensor number.
  173. * @param Res - Response data.
  174. * @return 0 if success, -1 if error.
  175. **/
  176. extern int SR_GetSensorThreshold (INT8U SensorNum, _NEAR_ GetSensorThresholdRes_T* Res);
  177. /**
  178. * @brief Get Sensor Event Enables.
  179. * @param SensorNum - Sensor number.
  180. * @param Res - Response data.
  181. * @return 0 if success, -1 if error.
  182. **/
  183. //extern int SR_GetSensorEventEnable (INT8U SensorNum, _NEAR_ GetSensorEventEnableRes_T* Res);
  184. /**
  185. * @brief Get Sensor Reading.
  186. * @param SensorNum - Sensor number.
  187. * @return the Sensor reading.
  188. **/
  189. extern INT16U SM_GetSensorReading (INT8U SensorNum, INT16U *pSensorReading);
  190. /**
  191. * @brief SR_LoadSDRDefaults.
  192. * @param sr - SDR Record , pSensorInfo - Sensor information.
  193. * @return none.
  194. **/
  195. extern void SR_LoadSDRDefaults (SDRRecHdr_T* sr, SensorInfo_T* pSensorInfo,int BMCInst);
  196. /**
  197. * @brief SR_FindSDR.
  198. * @param SensorNum - Finds SDR for this sensor number.
  199. * @return none.
  200. **/
  201. extern SDRRecHdr_T* SR_FindSDR (INT8U SensorNum, INT8U SensorOwnerLUN, int BMCInst);
  202. #endif /* SENSOR_H */