//***************************************************************************** //Name : EVT_Handler //Author : None //Description : Event handle for XMS system //Input : esrParam - parameter //Output : None //Return : 1 - Success // 0 - Failure //***************************************************************************** DJ_Void EVT_Handler(DJ_U32 esrParam) { Acs_Dev_List_Head_t* pAcsDevList = NULL; Acs_Evt_t* pAcsEvt = NULL; pAcsEvt = (Acs_Evt_t *)esrParam; switch(pAcsEvt->m_s32EventType) { case XMS_EVT_QUERY_DEVICE: if (!g_StartWorkFlag) { pAcsDevList = (Acs_Dev_List_Head_t *)FetchEventData(pAcsEvt); switch (pAcsDevList->m_s32DeviceMain) { case XMS_DEVMAIN_INTERFACE_CH: AddDeviceRes(pAcsDevList); break; } } break; case XMS_EVT_QUERY_DEVICE_END: if (!g_StartWorkFlag) { pdlg->m_BtnStart.EnableWindow(); InitDevice(); } break; case XMS_EVT_OPEN_DEVICE: Ack_OpenDevice(pAcsEvt); break; case XMS_EVT_SIGMON: if (g_StartWorkFlag) { Ack_SigMon(pAcsEvt); } break; default: break; } return; }
// ------------------------------------------------------- DJ_Void EvtHandler(DJ_U32 esrParam) { Acs_Evt_t * pAcsEvt = NULL; Acs_Dev_List_Head_t * pAcsDevList = NULL; Acs_GeneralProc_Data* pGeneral=NULL; char TmpStr[256]; char * pStr = NULL; pAcsEvt = (Acs_Evt_t *) esrParam; DispEventInfo ( pAcsEvt ); switch ( pAcsEvt->m_s32EventType ) { case XMS_EVT_OPEN_STREAM: printf(""); break; case XMS_EVT_QUERY_DEVICE: if ( !bStartWorkFlag ) { pAcsDevList = ( Acs_Dev_List_Head_t *) ( (DJ_S8 *)pAcsEvt + sizeof(Acs_Evt_t) ); //Add or modify device resource to pool when receive the device's event of the state changing AddDeviceRes ( pAcsDevList ); } break; case XMS_EVT_QUERY_DEVICE_END: //get device list completely if ( !bStartWorkFlag ) { pGeneral = (Acs_GeneralProc_Data*)FetchEventData(pAcsEvt); sprintf ( TmpStr, "Start work. DeviceNum = %d\n", TotalDevRes ); AddMsg ( MSG_TYPE_OTHER, TmpStr ); InitDeviceInfo(); bStartWorkFlag = true; } break; case XMS_EVT_OPEN_DEVICE: OpenDeviceOK ( &pAcsEvt->m_DeviceID ); break; case XMS_EVT_CLOSE_DEVICE: CloseDeviceOK ( &pAcsEvt->m_DeviceID ); pStr = GetString_DeviceAll(&pAcsEvt->m_DeviceID); sprintf(TmpStr,"Close devcie evt: %s",pStr); AfxMessageBox(TmpStr,NULL,MB_OK); break; case XMS_EVT_PLAYCSPREQ: { DJ_S32 r = 0; char MsgStr[100]={0}; CSPPlayDataInfo_t playCSP={0}; Acs_CSPDataReq_Data * pCspReq = NULL; if(g_cspPlay == 0) { break; } pCspReq = (Acs_CSPDataReq_Data *)FetchEventData(pAcsEvt); if(g_cspFp == NULL) { g_cspFp = fopen(g_szCSPFile,"rb"); } if(feof(g_cspFp)) { fseek(g_cspFp,SEEK_SET,0); TRACE("Seek to Set\n"); } playCSP.m_u16DataLen = pCspReq->m_u16ReqCspDataLen; playCSP.m_u8DataType = XMS_CSPPLAY_DATA_VOC; playCSP.m_u8TaskID = (DJ_U8)(GetTickCount() % 128); long rr = fread(g_szDataBuf,sizeof(char),playCSP.m_u16DataLen,g_cspFp); TRACE("ReqDataLen = %d,sentData=%d\n",pCspReq->m_u16ReqCspDataLen,rr); r = XMS_ctsSendCSPData(g_acsHandle, &DevOpened[iOpenedIndex1].DevID, &playCSP,g_szDataBuf,NULL); if ( r < 0 ) { sprintf ( MsgStr, "X(%d) XMS_ctsPlayCSP() FAIL! (%s)", r, GetString_DeviceAll (&DevOpened[iOpenedIndex1].DevID) ); AddMsg ( MSG_TYPE_FUNCTION, MsgStr); } else { sprintf ( MsgStr, "XMS_ctsPlayCSP() OK! (%s)", GetString_DeviceAll (&DevOpened[iOpenedIndex1].DevID)); AddMsg ( MSG_TYPE_FUNCTION, MsgStr ); } } break; case XMS_EVT_CONTROLPLAY: g_cspPlay = 0; break; case XMS_EVT_RECORDCSP: { Acs_MediaCSPProc_Data * pCSPData = NULL; pCSPData = (Acs_MediaCSPProc_Data *)FetchEventData(pAcsEvt); fwrite(pCSPData->m_u8StreamData,sizeof(char),pCSPData->m_u16DataLen,g_cspFp); } break; default: break; } }
bool InitSystem(void) { RetCode_t r; char MsgStr[160]; pdlg = (CXMSApi_TestDlg *)theApp.m_pMainWnd; // Read From "Config.TXT" ReadFromConfig(); // Init Combo Box InitComboBox(); // Init m_ListMsg InitListMsg(); // Init Conifg's text box InitTextBox(); // init variable used by XMSApi_Test_Func.cpp InitVar_Func(); #ifdef DEBUG_IN_HOME_NOTEBOOK // ----- for-test----- typedef struct { Acs_Dev_List_Head_t head; DeviceID_t dev[32]; } My_Struct; My_Struct mmm; mmm.head.m_s32DeviceNum = 4; mmm.dev[0].m_s16DeviceMain = XMS_DEVMAIN_VOICE; mmm.dev[0].m_s8ModuleID = 1; mmm.dev[0].m_s16ChannelID = 1; mmm.dev[1].m_s16DeviceMain = XMS_DEVMAIN_VOICE; mmm.dev[1].m_s8ModuleID = 1; mmm.dev[1].m_s16ChannelID = 2; mmm.dev[2].m_s16DeviceMain = XMS_DEVMAIN_INTERFACE_CH; mmm.dev[2].m_s16DeviceSub = XMS_DEVSUB_E1_SS7_ISUP; mmm.dev[2].m_s8ModuleID = 1; mmm.dev[2].m_s16ChannelID = 8; mmm.dev[3].m_s16DeviceMain = XMS_DEVMAIN_INTERFACE_CH; mmm.dev[3].m_s16DeviceSub = XMS_DEVSUB_E1_SS7_ISUP; mmm.dev[3].m_s8ModuleID = 1; mmm.dev[3].m_s16ChannelID = 9; void AddDeviceRes ( Acs_Dev_List_Head_t *pAcsDevList ); AddDeviceRes ( &mmm.head ); InitDeviceInfo(); bStartWorkFlag = true; return true; // ----- end of for-test ----- #endif // now open ACS Server /*Invoke the acsOpenStream routine to create a connect to server*/ r = XMS_acsOpenStream ( &g_acsHandle, &cfg_ServerID, g_u8UnitID, // App Unit ID 32, // sendQSize, in K Bytes 32, // recvQSize, in K Bytes //cfg_s32DebugOn, // Debug On/Off 1, NULL); if ( r < 0 ) { sprintf ( MsgStr, "X(%d) XMS_acsOpenStream(IP Addr : %s, port : %d) FAIL.", r, cfg_ServerID.m_s8ServerIp, cfg_ServerID.m_u32ServerPort ); MessageBox(NULL, MsgStr, "Init System", MB_OK ) ; AddMsg ( MSG_TYPE_FUNCTION, MsgStr ); } else { sprintf ( MsgStr, "XMS_acsOpenStream(%s,%d) OK!", cfg_ServerID.m_s8ServerIp, cfg_ServerID.m_u32ServerPort ); AddMsg ( MSG_TYPE_FUNCTION, MsgStr ); } r = XMS_acsSetESR ( g_acsHandle, (EsrFunc)EvtHandler, 0, 1 ); if ( r < 0 ) { sprintf ( MsgStr, "X(%d) XMS_acsSetESR() FAIL!", r ); AddMsg ( MSG_TYPE_FUNCTION, MsgStr ); return false; } else { sprintf ( MsgStr, "XMS_acsSetESR() OK!" ); AddMsg ( MSG_TYPE_FUNCTION, MsgStr ); } XMS_acsGetDeviceList ( g_acsHandle, NULL ); bStartWorkFlag = false; return true; }
DJ_Void EvtHandler(DJ_U32 esrParam) { Acs_Evt_t *pAcsEvt; Acs_Dev_List_Head_t *pAcsDevList; ACS_Digital_PortState_Data *pDigitState = NULL; Acs_UniFailure_Data *pUniFailData = NULL; WINDOW *win; int height, width; win = stdscr; pAcsEvt= (Acs_Evt_t *)esrParam; if (ldebug_flag) { /*print event*/ } switch(pAcsEvt->m_s32EventType) { case XMS_EVT_QUERY_DEVICE: pAcsDevList = (Acs_Dev_List_Head_t *)FetchEventData(pAcsEvt); AddDeviceRes(pAcsDevList); break; case XMS_EVT_QUERY_ONE_DSP_END: { /*open all device*/ OpenAllDevice_Dsp(pAcsEvt->m_DeviceID.m_s8ModuleID); } break; case XMS_EVT_QUERY_REMOVE_ONE_DSP_END: { /*delete Dsp from device table*/ remove(g_pPcmFirst, pAcsEvt->m_DeviceID.m_s8ModuleID); remove(g_pLinkFirst, pAcsEvt->m_DeviceID.m_s8ModuleID); } break; case XMS_EVT_QUERY_DEVICE_END: break; case XMS_EVT_OPEN_DEVICE: OpenDeviceOK(&pAcsEvt->m_DeviceID); break; case XMS_EVT_CLOSE_DEVICE: // CloseDeviceOK(&pAcsEvt->m_DeviceID); break; case XMS_EVT_DEVICESTATE: HandleDevState(pAcsEvt); break; case XMS_EVT_UNIFAILURE: if (ldebug_flag) { pUniFailData = (Acs_UniFailure_Data *)FetchEventData(pAcsEvt); if (pUniFailData->m_s32AcsEvtState=-1) { if (pUniFailData->m_s32AcsEvtErrCode == ACSERR_LINKBROKEN) { getyx(win, height, width); mvprintw(height, 0,"flow connection has been disconnected\n"); } else if (pUniFailData->m_s32AcsEvtErrCode == ACSERR_GETRESFAIL) { getyx(win, height, width); mvprintw(height, 0, "OpenDevic get device error,deviceType(%d,%d) ch(%d,%d)\n", pAcsEvt->m_DeviceID.m_s16DeviceMain, pAcsEvt->m_DeviceID.m_s16DeviceSub, pAcsEvt->m_DeviceID.m_s8ModuleID, pAcsEvt->m_DeviceID.m_s16ChannelID); } else if (pUniFailData->m_s32AcsEvtErrCode == ACSERR_DEVICEERR) { getyx(win, height, width); mvprintw(height, 0, "api transfer device error\n"); } } break; case XMS_EVT_CLASS_UNIFAILURE: if (ldebug_flag) { pUniFailData = (Acs_UniFailure_Data *)FetchEventData(pAcsEvt); if (pUniFailData->m_s32AcsEvtState == -1) { if(pUniFailData->m_s32AcsEvtErrCode == ACSERR_FAILSEND) { getyx(win, height, width); mvprintw(height, 0, "send command to function module error\n"); } } } } break; case XMS_EVT_E1STATE: pDigitState = (ACS_Digital_PortState_Data *)FetchEventData(pAcsEvt); saveDigitState(pAcsEvt, *pDigitState); if (ldebug_flag) { // showDebugPCMState(pAcsEvt, *pDigitState); } break; case XMS_EVT_SS7SendRawFrame: if (ldebug_flag) { printstr(NULL, "recv send raw evt\n"); } break; case XMS_EVT_SS7RawFrame: //if (ldebug_flag) { Acs_SS7RawFrame_Data *raw_data = NULL; raw_data = (Acs_SS7RawFrame_Data *)FetchEventData(pAcsEvt); } break; default: break; } }
DJ_Void EvtHandler(DJ_U32 esrParam) { Acs_Evt_t * pAcsEvt = NULL; Acs_Dev_List_Head_t * pAcsDevList = NULL; pAcsEvt = (Acs_Evt_t *) esrParam; DispEventInfo ( pAcsEvt ); switch ( pAcsEvt->m_s32EventType ) { case XMS_EVT_QUERY_DEVICE: if ( IsSysMod(pAcsEvt->m_DeviceID.m_s8ModuleID) ) { pAcsDevList = ( Acs_Dev_List_Head_t *) FetchEventData(pAcsEvt); //收到设备变化的事件,增加/调整 该设备资源 AddDeviceRes ( pAcsDevList ); } break; case XMS_EVT_QUERY_ONE_DSP_END: if ( IsSysMod(pAcsEvt->m_DeviceID.m_s8ModuleID) ) { AllDeviceRes[pAcsEvt->m_DeviceID.m_s8ModuleID].lFlag = 1; // 该DSP可以用了 OpenAllDevice_Dsp ( pAcsEvt->m_DeviceID.m_s8ModuleID ); RefreshMapTable ( ); ReDrawAll (); } break; case XMS_EVT_QUERY_DEVICE_END: // 获取设备列表结束 break; case XMS_EVT_OPEN_DEVICE: OpenDeviceOK ( &pAcsEvt->m_DeviceID ); break; case XMS_EVT_DEVICESTATE: HandleDevState ( pAcsEvt ); break; case XMS_EVT_UNIFAILURE: // must handle this event in your real System break; default: if ( pAcsEvt->m_DeviceID.m_s16DeviceMain == XMS_DEVMAIN_INTERFACE_CH ) { TrunkWork ( &M_OneTrunk(pAcsEvt->m_DeviceID), pAcsEvt ); } else if ( pAcsEvt->m_DeviceID.m_s16DeviceMain == XMS_DEVMAIN_VOICE ) { DeviceID_t *pDevID; pDevID = &M_OneVoice(pAcsEvt->m_DeviceID).UsedDevID; if ( pDevID->m_s16DeviceMain == XMS_DEVMAIN_INTERFACE_CH ) { TrunkWork ( &M_OneTrunk(*pDevID), pAcsEvt ); } } break; } }