// MCP-B模块
// 杭州秒寻科技有限公司
// 周涛
// 2024-5-9

#include "includes.h"

// MCP-B上行请求处理单元
// pbyData:数据
// bySource:数据来源
// wLen:数据长度
// 返回值,0:失败，1：成功
uint8 ps_up_mcpb_req(uint8 *pbyData, uint8 bySource, uint16 wLen)
{
    uint8 byFlag = 0;
    PS_HEAD_T *pstHead = (PS_HEAD_T *)pbyData;

    // 解析MCP-B层命令标识
    switch (pstHead->stMcpHead.byComd)
    {
    case MCP_B_CONTROL: // MCP-B控制命令
        byFlag = wmm_upgrade_control_cmd(pbyData);
        break;
    case MCP_B_FILE_TRANSFER: // MCP-B文件传输命令
        byFlag = wmm_upgrade_file_transfer_cmd(pbyData);
        break;
    default: // 命令类型错
        byFlag = 0;
        break;
    }

    // 组织返回数据
    pstHead->stVpHead.byVpFlag = (uint8)VP_RESP;      // 修改VP层交付标识：响应成功
    pstHead->stMcpHead.byResp = (uint8)MCP_RESP_SUCC; // 修改MCP层应答标识：响应成功
    if (!byFlag)
    {
        pstHead->stMcpHead.byResp = (uint8)MCP_RESP_ERR; // 修改MCP层应答标识：响应失败
    }

    // 向网管发送数据
    byFlag = ps_down_ap_out(pbyData, bySource, wLen);
    if (byFlag)
    {
        return 0;
    }

    return 1;
}
