VOS_UINT32 dms_UdiRead(DMS_PHY_BEAR_ENUM enCOM,VOS_UINT8 * ucRedBuf, VOS_UINT32 ulToReadSize, VOS_UINT32 * pulRealySize) { VOS_UINT32 ret = ERR_MSP_SUCCESS; VOS_INT32 slReadlen = 0; if (UDI_INVALID_HANDLE != g_stDmsMainInfo.stPhyProperty[enCOM].slPortHandle) { DMS_DEBUG_SDM_FUN(EN_SDM_DMS_UDI_READ_START, (VOS_UINT32)slReadlen, (VOS_UINT32)ulToReadSize, (VOS_UINT32)ucRedBuf); slReadlen = udi_read(g_stDmsMainInfo.stPhyProperty[enCOM].slPortHandle,ucRedBuf,ulToReadSize); DMS_DEBUG_SDM_FUN(EN_SDM_DMS_UDI_READ_END, (VOS_UINT32)slReadlen, (VOS_UINT32)ulToReadSize, (VOS_UINT32)ucRedBuf); /*串口设备失败的返回值并非都是-1*/ if (slReadlen < 0 ) { * pulRealySize = 0; ret = ERR_MSP_FAILURE; } else { * pulRealySize = (VOS_UINT32)slReadlen; } } else { ret = ERR_MSP_FAILURE; } return ret; }
VOS_VOID dms_UsbDisableEvtProc(VOS_VOID) { VOS_UINT32 ulRet; g_usbPlugFlag = 0; DMS_DEBUG_SDM_FUN(EN_SDM_DMS_DISABLE,0, 0, 0); /* nv值为1表示有at sever,非1表示无at sever,无at sever关闭pcui和ctrl口 */ if (TRUE == g_stDmsMainInfo.bPortOpenFlg) { /*关闭AT PCUI通道*/ ulRet = dmsVcomAtPcuiClose(); if(ERR_MSP_SUCCESS!=ulRet) { DMS_DEBUG_SDM_FUN(EN_SDM_DMS_DISABLE_ERR,0, 0, 3); } /*关闭AT CTRL通道*/ ulRet = dmsVcomCtrlClose(); if(ERR_MSP_SUCCESS!=ulRet) { DMS_DEBUG_SDM_FUN(EN_SDM_DMS_DISABLE_ERR,0, 0, 5); } } /*关闭NDIS TRCL通道*/ ulRet = dms_NcmClose(); if(ERR_MSP_SUCCESS!=ulRet) { DMS_DEBUG_SDM_FUN(EN_SDM_DMS_DISABLE_ERR,0, 0, 4); } return ; }
VOS_UINT32 dms_NcmSendData(VOS_UINT8 *pData, VOS_UINT32 ulLen) { VOS_INT32 ret = ERR_MSP_SUCCESS; NCM_AT_RSP_S stATResponse = {0}; DMS_PHY_BEAR_PROPERTY_STRU *pstComCfg =NULL; DMS_PHY_BEAR_PROPERTY_STRU* aenPhyBear = dmsgetPhyBearProperty(); /*检查NDIS通道状态*/ if(aenPhyBear[EN_DMS_BEARER_USB_NCM].ucChanStat == ACM_EVT_DEV_SUSPEND) { return ERR_MSP_FAILURE; } if((pData==NULL)||(ulLen==0)||(ulLen > 2048)) { return ERR_MSP_INVALID_PARAMETER; } pstComCfg = dmsgetPhyBearProperty(); stATResponse.pu8AtAnswer = pData; stATResponse.u32Length = ulLen; if(UDI_INVALID_HANDLE ==pstComCfg[EN_DMS_BEARER_USB_NCM].slPortHandle) { return ERR_MSP_FAILURE; } DMS_DEBUG_SDM_FUN(EN_SDM_DMS_NCM_SEND_TO_DRV, (VOS_UINT32)pData, ulLen, 0); ret=udi_ioctl(pstComCfg[EN_DMS_BEARER_USB_NCM].slPortHandle, NCM_IOCTL_AT_RESPONSE, &stATResponse); if(ret !=ERR_MSP_SUCCESS) { return ERR_MSP_FAILURE; } DMS_DEBUG_SDM_FUN(EN_SDM_DMS_NCM_SEND_TO_DRV_SUCC, 0, 0, 0); return ERR_MSP_SUCCESS; }
VOS_VOID dms_UsbEnableEvtProc(VOS_VOID) { VOS_UINT32 ulRet; NVE_INFO_S stAtServerNv; VOS_INT32 lReadNvRet; VOS_MemSet(&stAtServerNv, 0, sizeof(NVE_INFO_S)); VOS_MemCpy(stAtServerNv.nv_name, "ATSERV", sizeof("ATSERV")); stAtServerNv.nv_number = NVE_AT_SERVER_INDEX; stAtServerNv.nv_operation = NVE_READ_OPERATE; stAtServerNv.valid_size = 1; g_usbPlugFlag = 1; DMS_DEBUG_SDM_FUN(EN_SDM_DMS_INIT,0, 0, 0); /* NVE只读取一次,读取后不再读取 */ if (FALSE == g_stDmsMainInfo.bPortCfgFlg) { lReadNvRet = DRV_NVE_ACCESS(&stAtServerNv); g_dms_debug_atserv_nv_info.lOperatRet = lReadNvRet; g_dms_debug_atserv_nv_info.ulNvValue = stAtServerNv.nv_data[0]; g_stDmsMainInfo.bPortCfgFlg = TRUE; /* nv值为1表示有at sever,非1表示无at sever,无at sever打开pcui和ctrl口 */ if(1 != stAtServerNv.nv_data[0] || ERR_MSP_SUCCESS != lReadNvRet) { g_stDmsMainInfo.ulPortCfgValue = DMS_TEST_MODE; } else { g_stDmsMainInfo.ulPortCfgValue = DMS_NORMAL_MODE; } } if (DMS_TEST_MODE == g_stDmsMainInfo.ulPortCfgValue) { g_stDmsMainInfo.bPortOpenFlg = TRUE; /*打开 AT PCUI 通道*/ ulRet = dmsVcomAtPcuiOpen(); if(ERR_MSP_SUCCESS!=ulRet) { DMS_DEBUG_SDM_FUN(EN_SDM_DMS_INIT_ERR,0, 0, 3); } /*打开 AT CTRL 通道*/ ulRet = dmsVcomCtrolOpen(); if(ERR_MSP_SUCCESS!=ulRet) { DMS_DEBUG_SDM_FUN(EN_SDM_DMS_INIT_ERR,0, 0, 5); } } /*打开 NDIS CTRL 通道*/ ulRet = dms_NcmCfg(); if(ERR_MSP_SUCCESS!=ulRet) { DMS_DEBUG_SDM_FUN(EN_SDM_DMS_INIT_ERR,0, 0, 4); } g_ulNdisCfgFlag = 1; return ; }