

/******************************************************************************
** 文件名:  DeploymentExtern.h
** 描 述: 部署功能处理
		1、退出运营命令处理
*******************************************************************************/
#ifndef DEPLOYMENT_EXTERN_H_
#define DEPLOYMENT_EXTERN_H_

#include "CommonTypes.h"


#ifdef __cplusplus
extern "C" {
#endif

#define EXIT_OP_STATUS  0x55u   /* 退出运营状态 */
#define STAY_OP_STATUS 0xaau     /* 处于运营状态 */

#define DEVICE_TYPE_AIM 0xF800U
#define DEVTYPE_AIM     		(0xF8u)  /*AIM数据恒比码 待确认*/ 

typedef void (*p_DPrintf)(const char* lpszFormat, ...);

/**
 * @brief 退出运营模块初始化
 * @param[in] UINT16 cycleTime 当前子系统运行周期
 * @param[in] const p_DPrintf pfun 打印接口
 * @param[out]
 * @return 
 * @note 
 */
extern void Deploy_Init(UINT16 cycleTime, const p_DPrintf pfun);

/**
 * @brief 输入解包处理
 * @param[in] const UINT8* dataBuf,输入报文起始地址
 * @param[in] UINT16 dataLength,输入报文长度
 * @param[in] UINT8 srcType,类型
 * @param[in] UINT8 srcId,ID
 * @param[out] 无
 * @return 0,解析失败
           1，解析成功
 * @note 报文信息为去除协议和协议适配层头
 */
extern UINT8 Deploy_ParseAIMInputInfo(const UINT8* dataBuf, UINT16 dataLength, UINT8 srcType,UINT8 srcId);


/**
 * @brief 退出运营处理
 * @param[in] 无
 * @param[out] 无
 * @return 无
 * @note 无
 */
extern void Deploy_ExitOperationHandle(void);

/**
 * @brief 输出组包处理
 * @param[in] UINT16 maxLen,输出报文存储空间
 * @param[out] UINT8* dataBuf,输出报文起始地址
 * @return 0 处理失败；非0 成功
 * @note 
 */
extern UINT16 Deploy_PackToAIMInfo(UINT8* dataBuf,UINT16 maxLen);


/**
 * @brief 拷贝跟随数据
 * @param[out] UINT8 *pDataBuff 跟随数据的存储地址指针
 * @param[in] UINT32 curIndex 跟随数据的索引地址
 * @return 跟随数据的长度
 * @note 无
 */
extern UINT32 Deploy_GetTransferData(OUT UINT8 *pDataBuff,UINT32 curIndex);

/**
 * @brief 设置跟随数据
 * @param[in] const UINT8 *pDatabuff 跟随数据的存储地址指针
 * @param[in] UINT32 curIndex 跟随数据的索引地址
 * @return 截取数据索引
 * @note 
 */
extern UINT32 Deploy_SetTransferData(IN const UINT8 *pDatabuff,UINT32 curIndex);


 /**
  * @brief 获取退出运营状态
  * @param[in] 无
  * @param[out] 无
  * @return EXIT_OP_STATUS 退出运营；STAY_OP_STATUS 处于运营
  * @note 
  */
extern UINT8 Deploy_GetExitOperateStatus(void);


#ifdef __cplusplus
}
#endif
#endif