/*****************************************************************************
Copyright: 2013-2018, ZhiWan Tech. Co., Ltd.
File name:ps.c
Description: 网管协议栈
Author: 周涛
Version: 0.0.01
Date: 2022-4-13
History:
*****************************************************************************/
#include "includes.h"

// 模块初始化
void ps_init()
{
    ps_ap_init();
    return;
}

/******************************************************************************
接口编号	:
接口名称	:uint8 ps_receive_data_from_outsite(uint8 *pbyData, uint8 bySource, uint16 wLen)
接口描述	:从接协议栈外部接收数据，如果数据合法，则上行协议栈AP层处理
输入参数	:pbyData:  从接口适配层接收的数据，bySource:  数据来源, wLen:  数据长度
输出参数	:无
全局变量	:无
返回值     	:0:标识成功, 非0:标识失败
依赖关系	:被调用
作者    	:周涛
创建时间	:2022-04-13
修改记录	:
*******************************************************************************/
uint8 ps_receive_data_from_outsite(uint8 *pbyData, uint8 bySource, uint16 wLen)
{
    uint8 byFlag = 0;

    // 数据合法性检查
    if (NULL == pbyData || UDP_FRAME_MIN_LEN > wLen || UDP_FRAME_MAX_LEN < wLen)
    {
        return 1;
    }

    // 数据来源检查
    if (PS_SOURCE_CENTER == bySource || PS_SOURCE_GUI == bySource)
    {
        /*AP层上行输入处理接口*/
        byFlag = ps_up_ap_in(pbyData, bySource, wLen);
        if (byFlag)
        {
            return 1;
        }
    }
    else
    {
        return 1;
    }

    return 0;
}

/******************************************************************************
接口编号	:
接口名称	:uint8 ps_receive_data_from_insite(uint8 *pbyData, uint16 wLen, uint8 byMode)
接口描述	:从接协议栈内部接收数据，如果数据合法，则根据消息来源发送到不同的模块
输入参数	:pbyData:  从接口适配层接收的数据, wLen:  数据长度,byMode:  数据来源
输出参数	:无
全局变量	:无
返回值     	:0:标识成功, 非0:标识失败
依赖关系	:被调用
作者    	:周涛
创建时间	:2022-04-13
修改记录	:
*******************************************************************************/
uint8 ps_receive_data_from_insite(uint8 *pbyData, uint8 bySource, uint16 wLen)
{
    if (NULL == pbyData || UDP_FRAME_MIN_LEN > wLen || UDP_FRAME_MAX_LEN < wLen)
    {
        return 1; /*参数不合法*/
    }

    switch (bySource)
    {
    case PS_SOURCE_CENTER:                    // 网管中心
        nmc_send_data_to_wifi(pbyData, wLen); // 调用网管中心任务模块的接口
        break;
    case PS_SOURCE_GUI:                      // 本地网管
        gui_send_data_to_gui(pbyData, wLen); // 调用本地网管任务模块的接口
        break;
    case PS_SOURCE_ALARM:                     // 本地告警
        nmc_send_data_to_wifi(pbyData, wLen); // 调用网管中心任务模块的接口
        break;
    default:
        break;
    }

    return 0;
}
