openMMC
Open Source Modular MMC for AMCs
Loading...
Searching...
No Matches
sdr.c File Reference
#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"
#include "sdr.h"
#include "sensors.h"
#include "ipmi.h"
#include "fpga_spi.h"
Include dependency graph for sdr.c:

Macros

#define vTaskHotSwap_Handle   NULL
 

Functions

uint8_t compare_val (uint8_t val1, uint8_t val2, uint8_t comp, uint8_t sign)
 
size_t sdr_get_size_by_type (SDR_TYPE type)
 
size_t sdr_get_size_by_entry (sensor_t *entry)
 
void sensor_init (void)
 
void sdr_init (void)
 
sensor_tsdr_insert_entry (SDR_TYPE type, void *sdr, TaskHandle_t *monitor_task, uint8_t diag_id, uint8_t chipid)
 
sensor_tsdr_add_settings (uint8_t chipid, void *settings)
 
sensor_tfind_sensor_by_sdr (void *sdr)
 
sensor_tfind_sensor_by_id (uint8_t id)
 
void sdr_remove_entry (sensor_t *entry)
 
void sdr_pop (void)
 
void sensor_enable (sensor_t *sensor)
 
void sensor_disable (sensor_t *sensor)
 
 IPMI_HANDLER (ipmi_se_get_sdr_info, NETFN_SE, IPMI_GET_DEVICE_SDR_INFO_CMD, ipmi_msg *req, ipmi_msg *rsp)
 
 IPMI_HANDLER (ipmi_se_set_event_receiver, NETFN_SE, IPMI_SET_EVENT_RECEIVER_CMD, ipmi_msg *req, ipmi_msg *rsp)
 
 IPMI_HANDLER (ipmi_se_get_event_receiver, NETFN_SE, IPMI_GET_EVENT_RECEIVER_CMD, ipmi_msg *req, ipmi_msg *rsp)
 Handler for "Get Event Receiver" command, as on IPMIv2 1.1 section 29.1.
 
 IPMI_HANDLER (ipmi_se_get_sdr, NETFN_SE, IPMI_GET_DEVICE_SDR_CMD, ipmi_msg *req, ipmi_msg *rsp)
 
 IPMI_HANDLER (ipmi_se_reserve_device_sdr, NETFN_SE, IPMI_RESERVE_DEVICE_SDR_REPOSITORY_CMD, ipmi_msg *req, ipmi_msg *rsp)
 
 IPMI_HANDLER (ipmi_se_get_sensor_reading, NETFN_SE, IPMI_GET_SENSOR_READING_CMD, ipmi_msg *req, ipmi_msg *rsp)
 
 IPMI_HANDLER (ipmi_se_get_sensor_threshold, NETFN_SE, IPMI_GET_SENSOR_THRESHOLD_CMD, ipmi_msg *req, ipmi_msg *rsp)
 
void sensor_state_check (sensor_t *sensor)
 
void check_sensor_event (sensor_t *sensor)
 

Variables

volatile uint8_t sdr_count = 0
 
sensor_tsdr_head = NULL
 
sensor_tsdr_tail = NULL
 
uint8_t event_receiver_addr = 0x20
 Handler for "Set Event Receiver" command, as on IPMIv2 1.1 section 29.1.
 
uint8_t event_receiver_lun = 0x00
 
const SDR_type_12h_t SDR0
 
const SDR_type_12h_t SDR_RTM_DEV_LOCATOR
 

Macro Definition Documentation

◆ vTaskHotSwap_Handle

#define vTaskHotSwap_Handle   NULL

Function Documentation

◆ check_sensor_event()

void check_sensor_event ( sensor_t * sensor)

Should be rewritten to be compliant with RTM management !!

Compare threshold with the upper thresholds

Upper non-critical threshold going-high

Upper critical threshold going-high

Upper non-recoverable threshold going-high

Lower non-critical threshold going-high

Lower critical threshold going-high

Lower non-recoverable threshold going-high

◆ compare_val()

uint8_t compare_val ( uint8_t val1,
uint8_t val2,
uint8_t comp,
uint8_t sign )

◆ find_sensor_by_id()

sensor_t * find_sensor_by_id ( uint8_t id)

◆ find_sensor_by_sdr()

sensor_t * find_sensor_by_sdr ( void * sdr)

◆ IPMI_HANDLER() [1/7]

IPMI_HANDLER ( ipmi_se_get_event_receiver ,
NETFN_SE ,
IPMI_GET_EVENT_RECEIVER_CMD ,
ipmi_msg * req,
ipmi_msg * rsp )

Handler for "Get Event Receiver" command, as on IPMIv2 1.1 section 29.1.

Returns the previously set event receiver address and LUN

Parameters
[in]reqIncoming request to be handled and answered.
[out]rspMessage with data, data length and completion code.
Returns
void

◆ IPMI_HANDLER() [2/7]

IPMI_HANDLER ( ipmi_se_get_sdr ,
NETFN_SE ,
IPMI_GET_DEVICE_SDR_CMD ,
ipmi_msg * req,
ipmi_msg * rsp )

◆ IPMI_HANDLER() [3/7]

IPMI_HANDLER ( ipmi_se_get_sdr_info ,
NETFN_SE ,
IPMI_GET_DEVICE_SDR_INFO_CMD ,
ipmi_msg * req,
ipmi_msg * rsp )

◆ IPMI_HANDLER() [4/7]

IPMI_HANDLER ( ipmi_se_get_sensor_reading ,
NETFN_SE ,
IPMI_GET_SENSOR_READING_CMD ,
ipmi_msg * req,
ipmi_msg * rsp )

◆ IPMI_HANDLER() [5/7]

IPMI_HANDLER ( ipmi_se_get_sensor_threshold ,
NETFN_SE ,
IPMI_GET_SENSOR_THRESHOLD_CMD ,
ipmi_msg * req,
ipmi_msg * rsp )

◆ IPMI_HANDLER() [6/7]

IPMI_HANDLER ( ipmi_se_reserve_device_sdr ,
NETFN_SE ,
IPMI_RESERVE_DEVICE_SDR_REPOSITORY_CMD ,
ipmi_msg * req,
ipmi_msg * rsp )

◆ IPMI_HANDLER() [7/7]

IPMI_HANDLER ( ipmi_se_set_event_receiver ,
NETFN_SE ,
IPMI_SET_EVENT_RECEIVER_CMD ,
ipmi_msg * req,
ipmi_msg * rsp )

◆ sdr_add_settings()

sensor_t * sdr_add_settings ( uint8_t chipid,
void * settings )

◆ sdr_get_size_by_entry()

size_t sdr_get_size_by_entry ( sensor_t * entry)

◆ sdr_get_size_by_type()

size_t sdr_get_size_by_type ( SDR_TYPE type)

◆ sdr_init()

void sdr_init ( void )

◆ sdr_insert_entry()

sensor_t * sdr_insert_entry ( SDR_TYPE type,
void * sdr,
TaskHandle_t * monitor_task,
uint8_t diag_id,
uint8_t chipid )

◆ sdr_pop()

void sdr_pop ( void )

◆ sdr_remove_entry()

void sdr_remove_entry ( sensor_t * entry)

◆ sensor_disable()

void sensor_disable ( sensor_t * sensor)

◆ sensor_enable()

void sensor_enable ( sensor_t * sensor)

◆ sensor_init()

void sensor_init ( void )

◆ sensor_state_check()

void sensor_state_check ( sensor_t * sensor)

Variable Documentation

◆ event_receiver_addr

uint8_t event_receiver_addr = 0x20

Handler for "Set Event Receiver" command, as on IPMIv2 1.1 section 29.1.

Set (or reset) the address to which IPMI events will be sent. Also, disable sending events if command 0xFF is received.

Parameters
[in]reqIncoming request to be handled and answered.
[out]rspMessage with data, data length and completion code.

◆ event_receiver_lun

uint8_t event_receiver_lun = 0x00

◆ SDR0

const SDR_type_12h_t SDR0
Initial value:
= {
.hdr.recID_LSB = 0x00,
.hdr.recID_MSB = 0x00,
.hdr.SDRversion = 0x51,
.hdr.rectype = TYPE_12,
.hdr.reclength = sizeof(SDR_type_12h_t) - sizeof(SDR_entry_hdr_t),
.slaveaddr = 0x00,
.chnum = 0x00,
.power_notification_global_init = 0x04,
.device_cap = 0x3b,
.reserved[0] = 0x00,
.reserved[1] = 0x00,
.reserved[2] = 0x00,
.entityID = 0xC1,
.entityinstance = 0x00,
.OEM = 0x00,
.IDtypelen = 0xc0 | STR_SIZE(STR(TARGET_BOARD_NAME)),
.IDstring = STR(TARGET_BOARD_NAME)
}
@ TYPE_12
Definition sdr.h:79
Definition sdr.h:82
Definition sdr.h:167
#define STR(x)
Stringify a macro.
Definition utils.h:35
#define STR_SIZE(x)
Gets length of a macro string.
Definition utils.h:45

◆ sdr_count

volatile uint8_t sdr_count = 0

◆ sdr_head

sensor_t* sdr_head = NULL

◆ SDR_RTM_DEV_LOCATOR

const SDR_type_12h_t SDR_RTM_DEV_LOCATOR
Initial value:
= {
.hdr.recID_LSB = 0x00,
.hdr.recID_MSB = 0x00,
.hdr.SDRversion = 0x51,
.hdr.rectype = TYPE_12,
.hdr.reclength = sizeof(SDR_type_12h_t) - sizeof(SDR_entry_hdr_t),
.slaveaddr = 0x00,
.chnum = 0x00,
.power_notification_global_init = 0x04,
.device_cap = 0x3b,
.reserved[0] = 0x00,
.reserved[1] = 0x00,
.reserved[2] = 0x00,
.entityID = 0xC0,
.entityinstance = 0x00,
.OEM = 0x00,
.IDtypelen = 0xc0 | (STR_SIZE(STR(TARGET_BOARD_NAME)) +4),
.IDstring = STR(TARGET_BOARD_NAME)"-RTM"
}

◆ sdr_tail

sensor_t* sdr_tail = NULL