/*
 * DFM_DRV.h
 *
 *  Created on: 2021年8月24日
 *      Author: happy
 */

#ifndef SRC_MSCP_DFM_DFM_DRV_H_
#define SRC_MSCP_DFM_DFM_DRV_H_
#include "CM_Types.h"
#define LEDON  (1u)
#define LEDOFF (0u)
void DFM_drv_Init(void);

CM_UINT8 getBoardID(void);

void DFM_ledRun(void);

void DFM_ledError(void);
/**
* @brief 看门狗指示灯
*
*/
void DFM_ledMonitor(CM_UINT8 light);

void DFM_ledMS(CM_UINT8 light);

void DFM_ethernetState(void);

void DFM_voltageState(void);

CM_FLOAT64 DFM_Get_Tmp112(void);

CM_FLOAT64 DFM_Get_Tmp117(void);

void DFM_saftyOff(void);
/**
* @brief 读取板卡id
* @return 板卡id
*
*/
CM_UINT8 DFM_getBoardID(void);

/*- 十路输入 */
CM_INT32 DFM_input(CM_UINT8 channel);
/*- 八路输出 */
CM_INT32 DFM_output(CM_UINT8 channel, CM_UINT8 level);
/*- 切系按钮 */
CM_INT32 DFM_switchButton(void);

/*-通道电流电压读取*/
CM_INT32 DFM_Read_ina3321(INOUT CM_INT32* channel_1_shunt, INOUT CM_FLOAT32* channel_1_bus, INOUT CM_INT32* channel_2_shunt, INOUT CM_FLOAT32* channel_2_bus, INOUT CM_INT32* channel_3_shunt, INOUT CM_FLOAT32* channel_3_bus);

/*- 将信息写入到eeprom中 */
CM_INT32 DFM_Write_eeprom(IN CM_INT32 board, IN CM_UINT8 wBuf[], IN CM_UINT32 len);

/*- 从eeprom中读取信息 */
CM_INT32 DFM_Read_eeprom(IN CM_INT32 board, OUT CM_UINT8 rBuf[], IN CM_UINT32 len);
/*- 读取cpu温度 */
CM_INT32 DFM_Read_cputemp(void);
/*- 驱动周期发送log */
void DFM_Drv_CycLog(void);
/**
* @brief 检测输入通道的状态
* @param outPutBuf 接收IO输入的buf指针
* @param len 指针缓冲区长度
* @return 返回输出通道状态 取值范围：成功0，失败-1
*/
CM_INT32 DFM_GetIO_InPut(CM_UINT8 *outPutBuf,CM_UINT8 len);
/**
* @brief 检测输出通道的状态
* @param level 前4通道的高低电平 取值范围：0~0xff
* @return 返回输出通道状态 取值范围：成功0，失败-1
*/
CM_INT32 DFM_SetIO_OutPut(CM_UINT8 level);
/*
 * 读取系统版本号
 */
ENUM_CM_RETURN DFM_GetQNX_Verion(CM_UINT8 *buf);

/*
 * 用来检测fec0 fec1 up/down状态
 */
void DFM_Network_Check(void);
#endif /* SRC_MSCP_DFM_DFM_DRV_H_ */
