OpenBIC
OpenSource Bridge-IC
pdr.h
Go to the documentation of this file.
1#ifndef PDR_H
2#define PDR_H
3
4#include <stdbool.h>
5#include <stdint.h>
6#include <sys/byteorder.h>
7#include "plat_def.h"
8#include "libutil.h"
9
10#define TIMESTAMP104_SIZE 13 //A binary datetime type formatted as a series of 13 bytes
11#define MAX_LANGUAGE_TAG_LEN 3 //name language tag: "en"
12
13#ifndef NUMERIC_PDR_SIZE
14#define NUMERIC_PDR_SIZE 108
15#endif
16
17#ifndef MAX_AUX_SENSOR_NAME_LEN
18#define MAX_AUX_SENSOR_NAME_LEN 40
19#endif
20
21typedef float real32_t;
22
23int pdr_init(void);
24
29};
30
36};
37
62};
63
64typedef struct __attribute__((packed)) {
65 uint32_t record_handle;
66 uint8_t PDR_header_version;
67 uint8_t PDR_type;
68 uint16_t record_change_number;
69 uint16_t data_length;
71
72typedef struct __attribute__((packed)) {
73 /*** PDR common header***/
74 PDR_common_header pdr_common_header;
75
76 /***numeric sensor format***/
77 uint16_t PLDM_terminus_handle;
78 uint16_t sensor_id;
79 uint16_t entity_type;
80 uint16_t entity_instance_number;
81 uint16_t container_id;
82 uint8_t sensor_init;
83 uint8_t sensor_auxiliary_names_pdr;
84 uint8_t base_unit;
85 int8_t unit_modifier;
86 uint8_t rate_unit;
87 uint8_t base_oem_unit_handle;
88 uint8_t aux_unit;
89 int8_t aux_unit_modifier;
90 uint8_t auxrate_unit;
91 uint8_t rel;
92 uint8_t aux_oem_unit_handle;
93 uint8_t is_linear;
94 uint8_t sensor_data_size;
95 real32_t resolution;
97 uint16_t accuracy;
98 uint8_t plus_tolerance;
99 uint8_t minus_tolerance;
100 uint32_t hysteresis;
101 uint8_t supported_thresholds;
102 uint8_t threshold_and_hysteresis_volatility;
103 real32_t state_transition_interval;
104 real32_t update_interval;
105 uint32_t max_readable;
106 uint32_t min_readable;
107 uint8_t range_field_format;
108 uint8_t range_field_support;
109 uint32_t nominal_value;
110 uint32_t normal_max;
111 uint32_t normal_min;
112 int32_t warning_high;
113 int32_t warning_low;
114 int32_t critical_high;
115 int32_t critical_low;
116 int32_t fatal_high;
117 int32_t fatal_low;
119
120typedef struct __attribute__((packed)) {
121 PDR_common_header pdr_common_header;
122 uint16_t terminus_handle;
123 uint16_t sensor_id;
124 uint8_t sensor_count;
125 uint8_t nameStringCount;
126 char nameLanguageTag[MAX_LANGUAGE_TAG_LEN];
129
130typedef struct __attribute__((packed)) {
131 PDR_common_header pdr_common_header;
132 uint16_t entity_type;
133 uint16_t entity_instance_number;
134 uint16_t container_id;
135 uint8_t shared_name_count;
136 uint8_t nameStringCount;
137 char nameLanguageTag[MAX_LANGUAGE_TAG_LEN];
138 char16_t entityName[];
140
141typedef struct __attribute__((packed)) {
142 uint8_t repository_state;
145 uint32_t record_count;
146 uint32_t repository_size;
147 uint32_t largest_record_size;
150
152uint32_t get_record_count();
153uint32_t plat_get_pdr_size(uint8_t pdr_type);
157int pldm_get_sensor_name_via_sensor_id(uint16_t sensor_id, char *sensor_name, size_t max_length);
163int change_pdr_table_critical_high_with_sensor_id(uint32_t sensorID, float critical_high);
164int change_pdr_table_critical_low_with_sensor_id(uint32_t sensorID, float critical_low);
165int get_pdr_table_critical_high_and_low_with_sensor_id(uint32_t sensorID, float *critical_high,
166 float *critical_low);
167int check_supported_threshold_with_sensor_id(uint32_t sensorID);
168
169#endif
uint_least16_t char16_t
Definition: libutil.h:86
PDR_numeric_sensor * numeric_sensor_table
Definition: pdr.c:16
PDR_entity_auxiliary_names * get_entity_auxiliary_names_table()
Definition: pdr.c:314
uint16_t plat_get_pdr_entity_aux_names_size()
Definition: pdr.c:301
uint16_t plat_get_disabled_sensor_count()
Definition: pdr.c:307
#define MAX_AUX_SENSOR_NAME_LEN
Definition: pdr.h:18
float real32_t
Definition: pdr.h:21
int change_pdr_table_critical_low_with_sensor_id(uint32_t sensorID, float critical_low)
Definition: pdr.c:336
int pldm_get_sensor_name_via_sensor_id(uint16_t sensor_id, char *sensor_name, size_t max_length)
Definition: pdr.c:174
int get_pdr_table_via_record_handle(uint8_t *record_data, uint32_t record_handle)
Definition: pdr.c:222
#define MAX_LANGUAGE_TAG_LEN
Definition: pdr.h:11
int get_pdr_table_critical_high_and_low_with_sensor_id(uint32_t sensorID, float *critical_high, float *critical_low)
Definition: pdr.c:353
pdr_repository_state
Definition: pdr.h:25
@ PDR_STATE_FAILED
Definition: pdr.h:28
@ PDR_STATE_AVAILABLE
Definition: pdr.h:26
@ PDR_STATE_UPDATE_IN_PROGRESS
Definition: pdr.h:27
PDR_common_header
Definition: pdr.h:70
void plat_init_entity_aux_names_pdr_table()
Definition: pdr.c:290
pldm_pdr_types
Definition: pdr.h:38
@ PLDM_OEM_ENTITY_ID_PDR
Definition: pdr.h:55
@ PLDM_EFFECTER_OEM_SEMANTIC_PDR
Definition: pdr.h:52
@ PLDM_PDR_ENTITY_ASSOCIATION
Definition: pdr.h:53
@ PLDM_NUMERIC_SENSOR_PDR
Definition: pdr.h:40
@ PLDM_PDR_FRU_RECORD_SET
Definition: pdr.h:58
@ PLDM_STATE_EFFECTER_INITIALIZATION_PDR
Definition: pdr.h:50
@ PLDM_OEM_PDR
Definition: pdr.h:61
@ PLDM_STATE_SENSOR_INITIALIZATION_PDR
Definition: pdr.h:43
@ PLDM_COMPACT_NUMERIC_SENSOR_PDR
Definition: pdr.h:59
@ PLDM_EFFECTER_AUXILIARY_NAMES_PDR
Definition: pdr.h:51
@ PLDM_STATE_EFFECTER_PDR
Definition: pdr.h:49
@ PLDM_STATE_SENSOR_PDR
Definition: pdr.h:42
@ PLDM_EVENT_LOG_PDR
Definition: pdr.h:57
@ PLDM_NUMERIC_EFFECTER_INITIALIZATION_PDR
Definition: pdr.h:48
@ PLDM_OEM_UNIT_PDR
Definition: pdr.h:45
@ PLDM_NUMERIC_EFFECTER_PDR
Definition: pdr.h:47
@ PLDM_OEM_STATE_SET_PDR
Definition: pdr.h:46
@ PLDM_OEM_DEVICE_PDR
Definition: pdr.h:60
@ PLDM_INTERRUPT_ASSOCIATION_PDR
Definition: pdr.h:56
@ PLDM_NUMERIC_SENSOR_INITIALIZATION_PDR
Definition: pdr.h:41
@ PLDM_SENSOR_AUXILIARY_NAMES_PDR
Definition: pdr.h:44
@ PLDM_ENTITY_AUXILIARY_NAMES_PDR
Definition: pdr.h:54
@ PLDM_TERMINUS_LOCATOR_PDR
Definition: pdr.h:39
uint32_t plat_get_pdr_size(uint8_t pdr_type)
Definition: pdr.c:272
void plat_load_entity_aux_names_pdr_table(PDR_entity_auxiliary_names *entity_aux_name_table)
Definition: pdr.c:295
PDR_numeric_sensor
Definition: pdr.h:118
uint32_t get_record_count()
Definition: pdr.c:267
void plat_load_numeric_sensor_pdr_table(PDR_numeric_sensor *numeric_sensor_table)
Definition: pdr.c:278
PDR_INFO
Definition: pdr.h:149
#define TIMESTAMP104_SIZE
Definition: pdr.h:10
PDR_INFO * get_pdr_info()
Definition: pdr.c:128
PDR_sensor_auxiliary_names
Definition: pdr.h:128
PDR_entity_auxiliary_names
Definition: pdr.h:139
int pdr_init(void)
Definition: pdr.c:20
int check_supported_threshold_with_sensor_id(uint32_t sensorID)
Definition: pdr.c:372
void plat_load_aux_sensor_names_pdr_table(PDR_sensor_auxiliary_names *aux_sensor_name_table)
Definition: pdr.c:284
int change_pdr_table_critical_high_with_sensor_id(uint32_t sensorID, float critical_high)
Definition: pdr.c:319
PDR_SENSOR_INIT_STATE
Definition: pdr.h:31
@ PDR_SENSOR_ENABLE
Definition: pdr.h:34
@ PDR_SENSOR_NO_INIT
Definition: pdr.h:32
@ PDR_SENSOR_USEINIT_PDR
Definition: pdr.h:33
@ PDR_SENSOR_DISABLE
Definition: pdr.h:35
uint32_t offset
Definition: pldm_firmware_update.h:0
uint8_t data_transfer_handle_timeout
Definition: pldm_monitor.h:7
uint8_t repository_state
Definition: pldm_monitor.h:1
uint8_t record_data[NUMERIC_PDR_SIZE]
Definition: pldm_monitor.h:5
uint16_t record_change_number
Definition: pldm_monitor.h:4
uint16_t sensor_id
Definition: pldm_monitor.h:0
uint32_t record_count
Definition: pldm_monitor.h:4
uint8_t oem_update_time[TIMESTAMP104_SIZE]
Definition: pldm_monitor.h:3
uint32_t largest_record_size
Definition: pldm_monitor.h:6
uint8_t update_time[TIMESTAMP104_SIZE]
Definition: pldm_monitor.h:2
uint32_t record_handle
Definition: pldm_monitor.h:0
uint8_t sensor_data_size
Definition: pldm_monitor.h:1
uint32_t repository_size
Definition: pldm_monitor.h:5
uint32_t data_length
Definition: pldm_oem.h:1
bool sensor_init(void)
Definition: sensor.c:1367
Definition: pldm_smbios.h:61