// 网管中心模块
// 杭州秒寻科技有限公司
// 周涛
// 2023-10-12
#ifndef NMC_H
#define NMC_H

#include "sysdef.h"

#define NMC_FRAME_MAX_LEN (UDP_FRAME_MAX_LEN + 128) // 串口接收缓存，比AP层最大长度多128字节

// NMC 网管中心从串口接收字符结构
typedef struct
{
    uint32 dwDataLen;                    // 接收字符数
    uint8 abyReserved[5];                // 保留，4字节对齐考虑
    uint8 abyDataBuf[NMC_FRAME_MAX_LEN]; // 转义前最大帧长度
    uint8 byTransparentFlag;             // 0:尚未进入透传模式，1：已经进入透传模式
} NMC_RECEIVE_BUFFER_T;

// 外部接口
uint8 nmc_init(void);
void nmc_process_func(void *pvPara);

// 内部接口
void nmc_oam_frame(NMC_RECEIVE_BUFFER_T *pstNmcReceiveBuffer);
void nmc_at_start_info(NMC_RECEIVE_BUFFER_T *pstNmcReceiveBuffer, uint8 *pbyAtReadyFlag);
void nmc_at_resp_ok(NMC_RECEIVE_BUFFER_T *pstNmcReceiveBuffer, uint8 *pbyFrameFlag);
void nmc_at_resp_error(NMC_RECEIVE_BUFFER_T *pstNmcReceiveBuffer, uint8 *pbyFrameHeadFlag, uint8 *pbyFrameTailFlag);
void nmc_at_resp_transparent(NMC_RECEIVE_BUFFER_T *pstNmcReceiveBuffer, uint8 byFrameFlag);
void nmc_at_resp_event(NMC_RECEIVE_BUFFER_T *pstNmcReceiveBuffer, uint8 *pbyFrameHeadFlag, uint8 *pbyFrameTailFlag);
void nmc_reset_transparent_mode();
void nmc_parse_backward(uint8 *pbyData, uint16 wTail, uint16 wLen);

void nmc_send_data_to_wifi(uint8 *pbyData, uint16 wLen);
#endif
