123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638 |
- #ifndef LIB_OEM_IPMB_H
- #define LIB_OEM_IPMB_H
- #include "Types.h"
- #include "Debug.h"
- //#include "OSPort.h"
- #include "PendTask.h"
- #include "PEF.h"
- #include "SensorAPI.h"
- #include "featuredef.h"
- #include "BMCInfo.h"
- #include "IPMIConf.h"
- #include "AMIDevice.h"
- #include "ChassisCtrl.h"
- #include "NVRAccess.h"
- #include "Platform.h"
- #include "GUID.h"
- #include "SDR.h"
- #include "SEL.h"
- #include "FRU.h"
- #include "Sensor.h"
- #ifndef BOOL
- #define BOOL unsigned char
- #define BOOL_FALSE 0x00
- #define BOOL_TRUE 0x01
- #endif
- #ifndef UCHAR
- #define UCHAR unsigned char
- #endif
- #ifndef USHORT
- #define USHORT unsigned char
- #endif
- #ifndef IN
- #define IN
- #endif
- #ifndef OUT
- #define OUT
- #endif
- #ifndef INOUT
- #define INOUT
- #endif
- #ifndef PACKED
- #define PACKED __attribute__((packed))
- #endif
- #ifndef ERROR_CODE
- #define ERROR_SUCCESS 0x0
- #define ERROR_FAILED 0xFF
- #define ERROR_NOSUPPORT 0x1
- #endif
- #define BIT0_OEM 0x01
- #define BIT1_OEM 0x02
- #define BIT2_OEM 0x04
- #define BIT3_OEM 0x08
- #define NO_SUPPORT 0x0
- #define CPU_SUPPORT BIT0_OEM
- #define SWITC1g_SUPPORT BIT1_OEM
- #define SWITC10g_SUPPORT BIT2_OEM
- #define PW_SUPPORT BIT3_OEM
- #define XX_MAX_BOARD_NUM (MAX_BOARD_NUM_PLUS - 1)
- #define OEM_IPMB_I2C_BUSNUM 2
- #define OEM_IPMB_DEVICE "/dev/i2c2"
- #define OEM_IPMB_SECOND_DEVICE "/dev/i2c3"
- #define OEM_IPMB_PWRCTL_FIFO "/var/i2c_task_pwr_ctl_fifo"
- #define OEM_IPMB_SENSOR_DIR "/var/OEMIPMB/"
- #define OEM_IPMB_SENSOR_FILENAME_SIZE 32
- #define OEM_IPMB_SENSOR_FILE(file,type) (snprintf(file,OEM_IPMB_SENSOR_FILENAME_SIZE,"%s%d",OEM_IPMB_SENSOR_DIR,type))
- #define OEM_IPMB_MASTER_ADDR 0x0B
- #define OEM_IPMB_SENSOR_NAME_SIZE 255
- #define OEM_IPMB_MSG_START 0xA6
- #define OEM_IPMB_MSG_END 0x6A
- #define OEM_IPMB_MSG_MAXSIZE 255
- #define OEM_IPMB_DBG_BUFSIZE 512
- #define BOARD_ALIVE 0x1
- typedef enum en_BOARD_TYPE
- {
- en_BD_UNKNOWN = 0,
- en_BD_CPU_BOARD = 1,
- en_BD_1GSW_BOARD,
- en_BD_10GSW_BOARD,
- en_BD_PWR_BOARD,
- }EN_BOARD_TYPE;
- typedef enum en_OEM_IPMB_CMDTYPE
- {
- en_OEMIPMB_GET_ALIVE = 0x1,
- en_OEMIPMB_GET_CPU_SENSORDATA,
- en_OEMIPMB_GET_SW_SENSORDATA,
- en_OEMIPMB_GET_PW_SENSORDATA,
- en_OEMIPMB_SET_POWERON,
- en_OEMIPMB_SET_POWEROFF,
- en_OEMIPMB_SET_POWERESET,
- en_OEMIPMB_SET_DESTORY,
- MAX_OEM_IPMB_CMDNUM,
- }EN_OEM_IPMB_CMDTYPE;
- // 枚举 定义命令所支持的单板类型 计算mask
- typedef enum en_I2C_SEND_CMD_SUPPORT
- {
- en_OEMIPMB_GET_ALIVE_SUPPORT = CPU_SUPPORT | SWITC1g_SUPPORT | SWITC10g_SUPPORT | PW_SUPPORT,
- en_OEMIPMB_GET_CPU_SENSORDATA_SUPPORT = CPU_SUPPORT,
- en_OEMIPMB_GET_SW_SENSORDATA_SUPPORT = SWITC1g_SUPPORT | SWITC10g_SUPPORT ,
- en_OEMIPMB_GET_PW_SENSORDATA_SUPPORT = PW_SUPPORT,
- en_OEMIPMB_SET_POWERON_SUPPORT = CPU_SUPPORT | SWITC1g_SUPPORT | SWITC10g_SUPPORT ,
- en_OEMIPMB_SET_POWEROFF_SUPPORT = CPU_SUPPORT | SWITC1g_SUPPORT | SWITC10g_SUPPORT ,
- en_OEMIPMB_SET_POWERESET_SUPPORT = CPU_SUPPORT | SWITC1g_SUPPORT | SWITC10g_SUPPORT,
- en_OEMIPMB_SET_DESTORY_SUPPORT = CPU_SUPPORT ,
- }EN_I2C_SEND_CMD_SUPPORT;
- //BOARD SLOT ID
- /*
- JA[2:0],RA[3:0],GA[4:0]#,GAP# = 0000000111101
- JA[2:0],RA[3:0],GA[4:0]#,GAP# = 0000000111011
- JA[2:0],RA[3:0],GA[4:0]#,GAP# = 0000000111000
- JA[2:0],RA[3:0],GA[4:0]#,GAP# = 0000000110111
- JA[2:0],RA[3:0],GA[4:0]#,GAP# = 0000000110100
- JA[2:0],RA[3:0],GA[4:0]#,GAP# = 0000000110010
- JA[2:0],RA[3:0],GA[4:0]#,GAP# = 0000000110001
- JA[2:0],RA[3:0],GA[4:0]#,GAP# = 0000000101111
- JA[2:0],RA[3:0],GA[4:0]#,GAP# = 0000000101100
- JA[2:0],RA[3:0],GA[4:0]#,GAP# = 0000000101010
- JA[2:0],RA[3:0],GA[4:0]#,GAP# = 0000000101001
- JA[2:0],RA[3:0],GA[4:0]#,GAP# = 0000000100110
- JA[2:0],RA[3:0],GA[4:0]#,GAP# = 0000000100101
- JA[2:0],RA[3:0],GA[4:0]#,GAP# = 0000000100011
- JA[2:0],RA[3:0],GA[4:0]#,GAP# = 0000000100000
- JA[2:0],RA[3:0],GA[4:0]#,GAP# = 0000000011111
- */
- //GA equal to i2c addr
- typedef enum en_BOARD_SLOT_GA_TYPE
- {
- en_PW_BOARD_1 = 0x3d,
- en_10GSW_BOARD_1 =0x3b,
- en_10GSW_BOARD_2 = 0x38 ,
- en_STR_BOARD_1 =0x0,
- en_STR_BOARD_2 =0x0,
- en_STR_BOARD_3 =0x0,
- en_STR_BOARD_4 =0x0,
- en_STRMON_BOARD_1 =0x0,
- en_1GSW_BOARD_1 = 0x2c,
- en_CPU_BOARD_1 = 0x2a,
- en_CPU_BOARD_2 = 0x29,
- en_CPU_BOARD_3 =0x26,
- en_CPU_BOARD_4 = 0x25,
- en_EXT_BOARD_1 =0x0,
- en_EXT_BOARD_2 =0x0,
- en_PW_BOARD_2 = 0x1f,
- MAX_BOARD_NUM_PLUS=17,
- }EN_BOARD_SLOT_GA_TYPE;
- /*
- #define MAX_CARD_NUM (int)14
- const UCHAR g_ucGA_def[] =
- {
- 0x3e, //s1, pwr
- 0x3d, //s2, pwr
- 0x1c, //s3
- 0x3b, //s4
- 0x1a, //s5
- 0x19, //s6
- 0x38, //s7
- 0x37, //s8 10g switcher
- 0x16, //s9 1g switcher
- 0x15, //s10
- 0x34, //s11
- 0x13, //s12
- 0x32, //s13
- 0x31 //s14
- };
- */
- //结构体 将单板槽位GA和类型对应起来
- typedef struct st_SLOTNUM_CORRESPOND_BOARDTYPE
- {
- int num;
- EN_BOARD_SLOT_GA_TYPE enSlotGA;
- EN_BOARD_TYPE enBoardtype;
- EN_I2C_SEND_CMD_SUPPORT enBoardSupport;
- }ST_SLOTNUM_CORRESPOND_BOARDTYPE;
- /* public msg structs */
- /*
- typedef struct st_OEM_IPMB_MSG_HEAD
- {
- UCHAR msg_start;
- UCHAR msg_source;
- UCHAR msg_target;
- UCHAR msg_cmd;
- UCHAR msg_errcode;
- }PACKED ST_OEM_IPMB_MSG_HEAD;
- */
- #define MAX_IPMI_PKG_SIZE 23 ///the maximum size command is GetStorageStatus(0xF2)
- #define MAX_RES_DATA_SIZE 16
- #define MAX_REQ_DATA_SIZE 1
- ///ipmi command list
- typedef enum {
- GetBaseInfo = 0xF0, ///to all module, scan and get module base status information
- GetCPUStatus = 0xF1, ///to cpu module, get CPU module working status.
- GetStorageStatus = 0xF2, ///to storage module, get storage module storing status.
- GetCANStatus = 0xF3, ///to BUS module, get CAN port communicating status in BUS module.
- GetFlexRayStatus = 0xF4, ///to BUS module, get FlexRay port communicating status in BUS module.
- SetRapidIOStatus = 0xF5, ///to all module, set RapidIO port status.
- GetRapidIOStatus = 0xF6, ///to switch module, get RapidIO port status.
- GetNetStatus = 0xF7, ///to switch module, get internet port status in switch module.
- Poweron12V1 = 0xF8, ///to all module, turn on 12V1 power, except power module.
- Poweroff12V1 = 0xF9, ///to all module, turn off 12V1 power, except power module.
- GetTemperatue = 0xFA, ///to all module, get temperature of module.
- GetVoltage12V1 = 0xFB, ///to all module, get 12V1 voltage of module.
- GetCurrent12V1 = 0xFC, ///to all module, get 12V1 current of module.
- GetVoltage28V = 0xFD, ///to power module, turn on 12V2 power.
- GetCurrent28V = 0xFE, ///to power module, turn off 12V2 power.
- GetVoltage12V2 = 0xFF ///to power module, get 12V2 voltage of module.
- } COMMAND_T;
- typedef enum{
- IPMI_SUCCESS = 0x00,
- IPMI_FAIL = 0xFF
- } IPMI_STATUS_T;
- ///ipmi request struct
- typedef struct{
- uint8_t rsAddr;
- uint8_t netFn; ///even
- uint8_t checksum1;
- uint8_t rqAddr;
- uint8_t rqSeq;
- COMMAND_T cmd;
- uint8_t data[MAX_REQ_DATA_SIZE];
- uint8_t checksum2;
- }IPMI_REQUEST_T;
- ///ipmi response struct
- typedef struct{
- uint8_t rqAddr;
- uint8_t netFn; ///odd
- uint8_t checksum1;
- uint8_t rsAddr;
- uint8_t rqSeq;
- COMMAND_T cmd;
- IPMI_STATUS_T completion_code;
- uint8_t data[MAX_RES_DATA_SIZE]; ///response data
- uint8_t checksum2;
- }IPMI_RESPONSE_T;
- typedef struct st_OEM_IPMB_MSG_HEAD
- {
- UCHAR rsAddr;
- UCHAR netFn;
- UCHAR checksum1;
- UCHAR rqAddr;
- UCHAR rqSeq ;
- UCHAR cmd;
- UCHAR checksum2;
- }PACKED ST_OEM_IPMB_MSG_HEAD;
- typedef struct st_OEM_IPMB_MSG_TAIL
- {
- UCHAR msg_chk;
- UCHAR msg_end;
- }PACKED ST_OEM_IPMB_MSG_TAIL;
- #define OEM_IPMB_REQ_DATASIZE 16
- typedef struct st_OEM_IPMB_REQ
- {
- ST_OEM_IPMB_MSG_HEAD req_head;
- ST_OEM_IPMB_MSG_TAIL req_tail;
- }PACKED ST_OEM_IPMB_REQ;
- /* end public msg structs */
- typedef enum en_OEM_IPMB_CMDAUOTOORMAN
- {
- en_OEM_IPMB_CMD_AUOTO = 0x0,
- en_OEM_IPMB_CMD_MAN,
- }EN_OEM_IPMB_CMDAUOTOORMAN;
- typedef struct st_OEM_IPMB_CMDHANDLER
- {
- EN_OEM_IPMB_CMDTYPE enCmdType;
- EN_OEM_IPMB_CMDAUOTOORMAN enAutoorman;
- EN_I2C_SEND_CMD_SUPPORT enBoardTypeMask;
- UCHAR msgsize;
- UCHAR (*RequestParg) (char *i2cdev, UCHAR slaveaddr, UCHAR cmdtype);
- UCHAR (*ResponseParg) (char *i2cdev, UCHAR ResponseMsgLen, ST_OEM_IPMB_REQ stReq);
- }PACKED ST_OEM_IPMB_CMDHANDLER;
- /* start define functions */
- #define SIZE_ST(x) (sizeof(x))
- #define SIZE_STAR(ar,st) (sizeof(ar)/sizeof(st))
- #define OEM_IPMB_REQUEST_FUNCTION_START(func) \
- UCHAR func (char *i2cdev, UCHAR slaveaddr, UCHAR cmdtype) \
- { \
- UCHAR iRet = ERROR_SUCCESS; \
- #define OEM_IPMB_REQUEST_FUNCTION_END \
- return iRet; \
- } \
- #define OEM_IPMB_REQUEST_FUNCTION_DEC(func) UCHAR func (char *i2cdev, UCHAR slaveaddr, UCHAR cmdtype);
- #define OEM_IPMB_RESPONSE_FUNCTION_START(func,stname) \
- UCHAR func(char *i2cdev, UCHAR ResponseMsgLen, ST_OEM_IPMB_REQ stReq) \
- { \
- stname stRes; \
- memset(&stRes, 0, sizeof(stRes)); \
- UCHAR iRet = ERROR_SUCCESS; \
- if(ResponseMsgLen != sizeof(stRes)) \
- { \
- return ERROR_FAILED; \
- } \
- stRes.msg_head.rsAddr = stReq.req_head.rqAddr; \
- stRes.msg_head.netFn = stReq.req_head.netFn; \
- stRes.msg_head.checksum1 = (0- (stRes.msg_head.rsAddr+stReq.req_head.netFn)) & 0xff; \
- stRes.msg_head.rqAddr = i2c_get_host_address(OEM_IPMB_DEVICE); \
- stRes.msg_head.rqSeq = stReq.req_head.rqSeq; \
- stRes.msg_head.cmd = stReq.req_head.cmd; \
- stRes.msg_head.checksum2 = (0-(stRes.msg_head.rqSeq+stReq.req_head.cmd)) & 0xff; \
- /* start main logic */
- #define OEM_IPMB_RESPONSE_FUNCTION_END \
- /* end main logic */ \
- stRes.msg_tail.msg_chk = 0; \
- stRes.msg_tail.msg_end = OEM_IPMB_MSG_END; \
- return iRet; \
- } \
- #define OEM_IPMB_RESPONSE_FUNCTION_DEC(func) UCHAR func(char *i2cdev, UCHAR ResponseMsgLen, ST_OEM_IPMB_REQ stReq);
- /* end define functions */
- /* if need, add those */
- /* response msg struct, judged by cmdtype */
- /* response for alive */
- typedef struct st_OEM_IPMB_MSG_ALIVE
- {
- ST_OEM_IPMB_MSG_HEAD msg_head;
- UCHAR alive;
- UCHAR GA;
- ST_OEM_IPMB_MSG_TAIL msg_tail;
- }PACKED ST_OEM_IPMB_MSG_ALIVE;
- /* end */
- //cpu board sensor
- typedef struct en_OEMSERIAL_CPUBD_BMCI2C_SENSORDATA_FORMAT
- {
- // UCHAR oem_i2c_start[2]; //2 BYTE
- UCHAR board_type; //1 BYTE
- UCHAR chassis_id; //1 BYTE
- UCHAR slot_id; //1 BYTE
- UCHAR Manufacture[10]; //10BYTE
- UCHAR serial_id; //1BYTE
- UCHAR proc_date[2]; //2BYTE
- UCHAR hw_version[3]; //3 BYTE
- UCHAR bios_version[3]; //3 BYTE
- UCHAR sys_version[3]; //3 BYTE
- UCHAR cpu_occupy[2]; //2BYTE
- UCHAR ram[4]; //4 byte
- UCHAR flash[4]; //4 byte
- UCHAR net1; //1 byte
- UCHAR net2; //1 byte
- UCHAR net3; //1 byte
- UCHAR net4; //1 byte
- UCHAR status; //1 byte
-
- INT16U oem_sensor_data[12]; //24 byte
- // UCHAR oem_i2c_end[2]; //2 byte
- }PACKED EN_OEMSERIAL_CPUBD_BMCI2C_SENSORDATA_FORMAT;
- typedef struct st_OEM_IPMB_CPU_MSG_SENSOR
- {
- ST_OEM_IPMB_MSG_HEAD msg_head;
- EN_OEMSERIAL_CPUBD_BMCI2C_SENSORDATA_FORMAT msg_sensor;
- ST_OEM_IPMB_MSG_TAIL msg_tail;
- }PACKED ST_OEM_IPMB_CPU_MSG_SENSOR;
- //switch board sensor
- typedef struct en_OEMSERIAL_SWBD_BMCI2C_SENSORDATA_FORMAT
- {
- // UCHAR oem_i2c_start[2]; //2 BYTE
- UCHAR board_type; //1 BYTE
- UCHAR chassis_id; //1 BYTE
- UCHAR slot_id; //1 BYTE
- UCHAR Manufacture[10]; //10BYTE
- UCHAR serial_id; //1BYTE
- UCHAR proc_date[2]; //2BYTE
- UCHAR hw_version[3]; //3 BYTE
- UCHAR bios_version[3]; //3 BYTE
- UCHAR sys_version[3]; //3 BYTE
- UCHAR cpu_occupy[2]; //2BYTE
- UCHAR ram[4]; //4 byte
- UCHAR flash[4]; //4 byte
- UCHAR net[51]; //1 byte
- UCHAR status; //1 byte
-
- INT16U oem_sensor_data[4]; //8 byte
- // UCHAR oem_i2c_end[2]; //2 byte
- }PACKED EN_OEMSERIAL_SWBD_BMCI2C_SENSORDATA_FORMAT;
- typedef struct st_OEM_IPMB_SW_MSG_SENSOR
- {
- ST_OEM_IPMB_MSG_HEAD msg_head;
- EN_OEMSERIAL_SWBD_BMCI2C_SENSORDATA_FORMAT msg_sensor;
- ST_OEM_IPMB_MSG_TAIL msg_tail;
- }PACKED ST_OEM_IPMB_SW_MSG_SENSOR;
- //power board sensor
- typedef struct st_OEM_IPMB_PW_MSG_SENSOR
- {
- // ST_OEM_IPMB_MSG_HEAD msg_head;
- UCHAR board_type; //1 BYTE
- UCHAR chassis_id; //1 BYTE
- UCHAR slot_id; //1 BYTE
- UCHAR Manufacture[10]; //10BYTE
- UCHAR serial_id; //1BYTE
- UCHAR proc_date[2]; //2BYTE
- UCHAR hw_version[3]; //3 BYTE
- UCHAR status; //1 byte
- INT16U oem_sensor_data[8];
- // ST_OEM_IPMB_MSG_TAIL msg_tail;
- }PACKED ST_OEM_IPMB_PW_MSG_SENSOR;
- /* respoonse for set power on or off */
- typedef struct st_OEM_IPMB_MSG_POWERCTL
- {
- ST_OEM_IPMB_MSG_HEAD msg_head;
- UCHAR result;
- ST_OEM_IPMB_MSG_TAIL msg_tail;
- }PACKED ST_OEM_IPMB_MSG_POWERCTL;
- /* end */
- /* end response msg struct */
- /* funtions */
- extern UCHAR OEM_GET_SENSOR(SensorInfo_T *pSensor, UCHAR sensornum);
- extern UCHAR OEM_GET_SENSOR_COUNT(void);
- void *COLLECT_TASK(void *pArg);
- void *OEMIPMB_TASK(void *pArg);
- void *OEMIPMB_HANDLER(void *pArg);
- void OEMIPMB_START(int BMCInst);
- void *OEMIPMB_ETH_TASK(void *pArg);
- extern void OEM_SLEEP(int seconds);
- extern void OEM_MSLEEP(int msec);
- extern UCHAR OEMIPMB_SET_ADDR(char *i2cdev, UCHAR u7addr);
- extern UCHAR OEMIPMB_SET_HOSTADDR(void);
- extern void PRINT_DATA(UCHAR *acData, UCHAR uclen);
- extern UCHAR OEMIPMB_INIT(void);
- extern void OEMDEBUG(UCHAR flag, char *fmt,...);
- extern UCHAR OEM_IPMB_REQUEST_SEND(IN char *i2cdev, IN UCHAR slaveaddr, IN UCHAR cmdtype, INOUT UCHAR *stRes, IN UCHAR stResLen);
- extern UCHAR OEM_IPMB_REQUEST_SENDCMD_TOSLAVE(char *i2cdev, UCHAR slaveaddr, UCHAR cmdtype);
- extern void OEM_WRITE_FILE(UCHAR *acData, UCHAR uclen ,UCHAR slaveaddr);
- extern UCHAR OEM_READ_FILE(char *name, char *buf ,int *length,int num);
- /* add response function dec */
- extern OEM_IPMB_RESPONSE_FUNCTION_DEC(ResGetAlive);
- extern OEM_IPMB_RESPONSE_FUNCTION_DEC(ResGetCpuSensor);
- extern OEM_IPMB_RESPONSE_FUNCTION_DEC(ResPowerOn);
- extern OEM_IPMB_RESPONSE_FUNCTION_DEC(ResPowerOff);
- extern OEM_IPMB_RESPONSE_FUNCTION_DEC(ResPowerReset);
- extern OEM_IPMB_RESPONSE_FUNCTION_DEC(ResDestory);
- /* add request function dec */
- extern OEM_IPMB_REQUEST_FUNCTION_DEC(ReqGetAlive);
- extern OEM_IPMB_REQUEST_FUNCTION_DEC(ReqGetCpuSensor);
- extern OEM_IPMB_REQUEST_FUNCTION_DEC(ReqPowerOn);
- extern OEM_IPMB_REQUEST_FUNCTION_DEC(ReqPowerOff);
- extern OEM_IPMB_REQUEST_FUNCTION_DEC(ReqPowerReset);
- extern OEM_IPMB_REQUEST_FUNCTION_DEC(ReqDestory);
- /* global */
- extern ST_OEM_IPMB_CMDHANDLER gst_OEM_IPMB_CMD[MAX_OEM_IPMB_CMDNUM];
- extern int My_Bd_Solt;
- extern UCHAR Board_Alive_status[MAX_BOARD_NUM_PLUS-1];
- /* debug */
- #define OEMDEBUG_TRUE 1
- #define OEMDEBUG_FALSE 0
- #define OEMDEBUG_FMT "[OEMIPMB] [%s %d]:"
- #define OEM_IPMB_DEBUG(n, fmt, args...) OEMDEBUG(n, fmt, ##args)
- #define IPMBINFO(fmt, args...) OEM_IPMB_DEBUG(OEMDEBUG_TRUE, OEMDEBUG_FMT fmt, __FUNCTION__, __LINE__, ##args)
- #define IPMBDEBG(fmt, args...) OEM_IPMB_DEBUG(OEMDEBUG_FALSE, OEMDEBUG_FMT fmt, __FUNCTION__, __LINE__, ##args)
- /* those are added by cj for ft_cpu and bmc data*/
- #define SERIAL_START_1 0xa6
- #define SERIAL_START_2 0x6a
- #define SERIAL_END_1 0x6a
- #define SERIAL_END_2 0xa6
- #define OEM_SERIAL_PWRCTL_FIFO "/var/oem_pwr_ctl_fifo"
- //logic command
- typedef enum en_OEMSERIAL_CMD_TYPE
- {
- en_OEMSERIAL_UNKNOW = 0x0,
- en_OEMSERIAL_PWOFF,
- en_OEMSERIAL_RESET,
- en_OEMSERIAL_SENSOR,
- en_OEMSERIAL_PWON,
- en_OEMSERIAL_DESTORY,
- }EN_OEMSERIAL_CMD_TYPE;
- //raw command,just for command polling,because we only have one fifo to read
- typedef enum raw_OEMSERIAL_CMD_TYPE
- {
- raw_OEMSERIAL_SENSOR = 0x0,
- raw_OEMSERIAL_PWCTL,
- raw_OEMSERIAL_MAX,
- }RAW_OEMSERIAL_CMD_TYPE;
- typedef struct st_UART_CMD
- {
- EN_OEMSERIAL_CMD_TYPE cmdtype;
- UCHAR (*parg)(int fd, char *rx_buff);
- }ST_UART_CMD;
- //bmc to cpu command
- typedef struct en_OEMSERIAL_BTC_CMD_FORMAT
- {
- UCHAR oem_btc_serial_start[2];
- UCHAR oem_btc_serial_cmd;
- UCHAR oem_btc_serial_end[2];
- UCHAR oem_btc_serial_checksum;
- }PACKED EN_OEMSERIAL_BTC_CMD_FORMAT;
- //cpu to bmc command
- typedef struct en_OEMSERIAL_CTB_DATA_FORMAT
- {
- UCHAR oem_ctb_serial_start[2];
- UCHAR oem_ctb_serial_resdata;
- UCHAR oem_ctb_serial_end[2];
- UCHAR oem_ctb_serial_checksum;
- }PACKED EN_OEMSERIAL_CTB_CMD_FORMAT;
- //cpu to bmc sensor
- typedef struct en_OEMSERIAL_CTB_SENSORDATA_FORMAT
- {
- UCHAR oem_ctb_serial_start[2]; //2 BYTE
- UCHAR board_type; //1 BYTE
- UCHAR chassis_id; //1 BYTE
- UCHAR slot_id; //1 BYTE
- UCHAR Manufacture[10]; //10BYTE
- UCHAR serial_id; //1BYTE
- UCHAR proc_date[2]; //2BYTE
- UCHAR hw_version[3]; //3 BYTE
- UCHAR bios_version[3]; //3 BYTE
- UCHAR sys_version[3]; //3 BYTE
- UCHAR cpu_occupy[2]; //2BYTE
- UCHAR ram[4]; //4 byte
- UCHAR flash[4]; //4 byte
- UCHAR net1; //1 byte
- UCHAR net2; //1 byte
- UCHAR net3; //1 byte
- UCHAR net4; //1 byte
- UCHAR status; //1 byte
- UCHAR oem_ctb_serial_end[2]; //2 byte
- UCHAR oem_ctb_serial_checksum; //1 byte
- }PACKED EN_OEMSERIAL_CTB_SENSORDATA_FORMAT;
- #define max_slot_num (int)14
- typedef enum CardType_e_{
- unknow_type = 0,
- pwr_type ,
- ft_cpu,
- switch_1g,
- switch_10g,
- e5_cpu
- }CardType_e;
- typedef struct {
- CardType_e eCardType;
- UCHAR ucCardSlot;
- UCHAR ucI2cAddr;
- UCHAR ucSensorData[128];
- }PACKED SENSOR_ST;
- UCHAR UartSoftPwrControl(int fd, char *rx_buff);
- UCHAR UartGetSensor(int fd, char *rx_buff);
- void PRINT_SENSOR_DATA(char *acData);
- extern EN_OEMSERIAL_CTB_SENSORDATA_FORMAT cpu_global_serial_data;
- extern INT16U cpu_global_sensor_data[12];
- extern int OEM_SLOT_GET(void);
- extern void OEM_msg_collect(EN_OEMSERIAL_CPUBD_BMCI2C_SENSORDATA_FORMAT *cpu_sensor_data);
- extern void PRINT_CPUBD_LOG(char *acData);
- //global cpu data
- EN_OEMSERIAL_CPUBD_BMCI2C_SENSORDATA_FORMAT cpu_sensor_data;
- extern const ST_SLOTNUM_CORRESPOND_BOARDTYPE g_slotnum_correspond_boardtype[MAX_BOARD_NUM_PLUS-1];
- extern UCHAR res_powerctl_from_web(char cmd);
- /* those are added by cj for bmc i2c data*/
- //#define bmc_log
- #endif
|