VOS_VOID AT_InitPortBuffCfg(VOS_VOID) { AT_PORT_BUFF_CFG_STRU *pstUsedClientIdTab = VOS_NULL_PTR; pstUsedClientIdTab = AT_GetPortBuffCfgInfo(); PS_MEM_SET(pstUsedClientIdTab, 0xFF, sizeof(AT_PORT_BUFF_CFG_STRU)); pstUsedClientIdTab->ucNum = 0; }
VOS_VOID AT_AddUsedClientId2Tab(VOS_UINT16 usClientId) { AT_PORT_BUFF_CFG_STRU *pstPortBuffCfg = VOS_NULL_PTR; VOS_UINT8 ucIndex; if (usClientId >= AT_MAX_CLIENT_NUM) { return; } pstPortBuffCfg = AT_GetPortBuffCfgInfo(); /* 排除内部通道 */ if ( (usClientId >= AT_MIN_APP_CLIENT_ID) && (usClientId <= AT_MAX_APP_CLIENT_ID)) { return; } #if (VOS_WIN32 == VOS_OS_VER) if (AT_CLIENT_ID_SOCK == usClientId) { return; } #endif if (pstPortBuffCfg->ucNum >= AT_MAX_CLIENT_NUM) { pstPortBuffCfg->ucNum = AT_MAX_CLIENT_NUM -1; } /* 循环查找是否已经记录过 */ for (ucIndex = 0; ucIndex < pstPortBuffCfg->ucNum; ucIndex++) { if (usClientId == pstPortBuffCfg->ulUsedClientID[ucIndex]) { return; } } /* 如果没有记录过,测记录到最后 */ if (ucIndex == pstPortBuffCfg->ucNum) { pstPortBuffCfg->ulUsedClientID[ucIndex] = (VOS_UINT32)usClientId; pstPortBuffCfg->ucNum++; } }
VOS_VOID AT_RmUsedClientIdFromTab(VOS_UINT16 usClientId) { AT_PORT_BUFF_CFG_STRU *pstPortBuffCfg = VOS_NULL_PTR; VOS_UINT32 ulIndex; pstPortBuffCfg = AT_GetPortBuffCfgInfo(); if (pstPortBuffCfg->ucNum > AT_MAX_CLIENT_NUM) { pstPortBuffCfg->ucNum = AT_MAX_CLIENT_NUM; } /* 循环查找是否已经记录过 */ for (ulIndex = 0; ulIndex < pstPortBuffCfg->ucNum; ulIndex++) { if (usClientId == pstPortBuffCfg->ulUsedClientID[ulIndex]) { break; } } /* 如果没有记录过则直接退出 */ if (ulIndex == pstPortBuffCfg->ucNum) { return; } /* 如果找到就删除对应的client */ if (ulIndex == pstPortBuffCfg->ucNum - 1) { pstPortBuffCfg->ucNum--; pstPortBuffCfg->ulUsedClientID[ulIndex] = VOS_NULL_DWORD; } else { pstPortBuffCfg->ulUsedClientID[ulIndex] = pstPortBuffCfg->ulUsedClientID[pstPortBuffCfg->ucNum - 1]; pstPortBuffCfg->ulUsedClientID[pstPortBuffCfg->ucNum - 1] = VOS_NULL_DWORD; pstPortBuffCfg->ucNum--; } }
VOS_VOID AT_ShowUsedClient(VOS_VOID) { AT_PORT_BUFF_CFG_STRU *pstPortCfg; VOS_UINT32 ulIndex; VOS_UINT8 i; VOS_CHAR acStateStr[][20] = {"READY", "PEND"}; VOS_CHAR acModeStr[][20] = {"CMD", "DATA", "ONLINE_CMD"}; pstPortCfg = AT_GetPortBuffCfgInfo(); vos_printf("\r\n The All Used Client State: \r\n"); for (i = 0; i < pstPortCfg->ucNum; i++) { ulIndex = pstPortCfg->ulUsedClientID[i]; vos_printf("Client[%d] State: %s Mode: %s\r\n", ulIndex, acStateStr[g_stParseContext[ulIndex].ucClientStatus], acModeStr[gastAtClientTab[ulIndex].Mode]); } return; }