/***************************************************************************** Prototype : Ppp_RcvConfigInfoInd Description : 为AT模块"PPP模块接收网侧指示的配置信息"提供对应的API函数。 当AT向GGSN认证成功后,调用此函数向PPP发指示。 Input : usPppId---要发指示的PPP链路所在的PPP ID pPppIndConfigInfo---从GGSN发来的该PPP链路的IP地址等信息 Output : --- Return Value : ---VOS_UINT32 Calls : --- Called By : --- History : --- 1.Date : 2005-11-18 Author : --- Modification: Created function *****************************************************************************/ VOS_UINT32 Ppp_RcvConfigInfoInd ( PPP_ID usPppId, AT_PPP_IND_CONFIG_INFO_STRU *pstAtPppIndConfigInfo ) { VOS_UINT8 ucRabId; VOS_UINT32 ulResult; if(VOS_OK != PppIsIdValid(usPppId)) { PPP_MNTN_LOG1(PS_PID_APP_PPP, 0, PS_PRINT_WARNING, "PPP, Ppp_RcvConfigInfoInd, WARNING, Invalid PPP Id %d", usPppId); return VOS_ERR; } /* 通过usPppId,寻找到usRabId */ if ( !PPP_PPPID_TO_RAB(usPppId, &ucRabId) ) { PPP_MNTN_LOG2(PS_PID_APP_PPP, 0, PS_PRINT_NORMAL, "PPP, Ppp_RcvConfigInfoInd, WARNING, Can not get PPP Id %d, RabId %d", usPppId, ucRabId); return VOS_ERR; } /* 这个时候PDP已经激活,注册上行数据接收接口。另外当前不支持PPP类型拨号。 */ ulResult= ADS_DL_RegDlDataCallback(ucRabId, (RCV_DL_DATA_FUNC)PPP_PushPacketEvent); if ( VOS_OK != ulResult ) { PPP_MNTN_LOG1(PS_PID_APP_PPP, 0, PS_PRINT_WARNING, "PPP, Ppp_RcvConfigInfoInd, WARNING, Register DL CB failed! RabId %d", ucRabId); return VOS_ERR; } /* 保存PCO信息 */ PPP_SavePcoInfo(usPppId, pstAtPppIndConfigInfo); Ppp_RcvConfigInfoIndMntnInfo(usPppId, pstAtPppIndConfigInfo); PPP_RcvAtCtrlOperEvent(usPppId, PPP_AT_CTRL_CONFIG_INFO_IND); /*返回正确*/ return VOS_OK; }
/***************************************************************************** 函 数 名 : PPP_SendPulledData 功能描述 : 上行发送数据给协议栈 输入参数 : ucPppId --- PPP ID pstMem --- TTF_MEM形式的数据 输出参数 : 返 回 值 : PS_SUCC 成功;PS_FAIL 失败 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2011-03-09 作 者 : l00164359 修改内容 : Created *****************************************************************************/ VOS_UINT32 PPP_SendPulledData(VOS_UINT16 usPppId, PPP_ZC_STRU *pstImmZc) { VOS_UINT8 ucRabId = PPP_INVALID_RABID; VOS_UINT32 ulResult; /*Add by y45445*/ #ifdef WTTF_PS_FUSION_PC_ST ucRabId = 5; #else /* 通过usPppId,寻找到usRabId */ if ( !PPP_PPPID_TO_RAB(usPppId, &ucRabId) ) { g_PppDataQCtrl.stStat.ulUplinkDropCnt++; PPP_MemFree(pstImmZc); PPP_MNTN_LOG2(PS_PID_APP_PPP, 0, PS_PRINT_NORMAL, "PPP, PPP_PushPacketEvent, WARNING, Can not get PPP Id %d, RabId %d", usPppId, ucRabId); return PS_FAIL; } #endif /*Add by y45445*/ /* 数据发送给ADS,如果失败则释放内存 */ ulResult = ADS_UL_SendPacket(pstImmZc, ucRabId); if ( VOS_OK != ulResult ) { g_PppDataQCtrl.stStat.ulUplinkDropCnt++; PPP_MemFree(pstImmZc); return PS_FAIL; } g_PppDataQCtrl.stStat.ulUplinkSndDataCnt++; return PS_SUCC; }
/***************************************************************************** Prototype : Ppp_RegDlDataCallback Description : 为AT模块提供注册下行发送数据的API Input : usPppId---要发指示的PPP链路所在的PPP ID Output : --- Return Value : ---VOS_UINT32 Calls : --- Called By : --- History : --- 1.Date : 2013-06-04 Author : --- Modification: Created function *****************************************************************************/ VOS_UINT32 Ppp_RegDlDataCallback(PPP_ID usPppId) { VOS_UINT8 ucRabId; VOS_UINT32 ulResult; if(VOS_OK != PppIsIdValid(usPppId)) { PPP_MNTN_LOG1(PS_PID_APP_PPP, 0, PS_PRINT_WARNING, "PPP, Ppp_RegDlDataCallback, WARNING, Invalid PPP Id %d", usPppId); return VOS_ERR; } /* 通过usPppId,寻找到usRabId */ if (!PPP_PPPID_TO_RAB(usPppId, &ucRabId)) { PPP_MNTN_LOG2(PS_PID_APP_PPP, 0, PS_PRINT_NORMAL, "PPP, Ppp_RegDlDataCallback, WARNING, Can not get PPP Id %d, RabId %d", usPppId, ucRabId); return VOS_ERR; } /* 这个时候PDP已经激活,注册上行数据接收接口 */ ulResult= ADS_DL_RegDlDataCallback(ucRabId, (RCV_DL_DATA_FUNC)PPP_PushRawDataEvent); if ( VOS_OK != ulResult ) { PPP_MNTN_LOG1(PS_PID_APP_PPP, 0, PS_PRINT_WARNING, "PPP, Ppp_RegDlDataCallback, WARNING, Register DL CB failed! RabId %d", ucRabId); return VOS_ERR; } return VOS_OK; }