📄 xms_confdemo_sub.cpp
字号:
sprintf ( MsgStr, "XMS_acsSetESR() FAIL! ret = %d", r );
AddMsg ( MsgStr );
return false;
}
else
{
sprintf ( MsgStr, "XMS_acsSetESR() OK!" );
AddMsg ( MsgStr );
}
InitAllDeviceRes ();
XMS_acsGetDeviceList ( g_acsHandle, NULL );
return true;
}
void ExitSystem()
{
RetCode_t r;
int i;
// close all device
for ( i = 0; i < g_iTotalModule; i ++ )
{
CloseAllDevice_Dsp ( MapTable_Module[i] );
}
r = XMS_acsCloseStream ( g_acsHandle, NULL );
FreeAllDeviceRes ();
// save to "XMS_ConDemo.INI"
FetchFromText();
WriteToConfig();
}
// -----------------------------------------------------------------------
// next functions are about Open & Close
// -----------------------------------------------------------------------
void OpenTrunkDevice ( TRUNK_STRUCT *pOneTrunk )
{
RetCode_t r;
if ( pOneTrunk->State == TRK_WAITOPEN ) // 还没有Open
{
r = XMS_ctsOpenDevice ( g_acsHandle, &pOneTrunk->deviceID, NULL );
if ( r < 0 )
{
AddMsg ( "XMS_ctsOpenDevice Fail in OpenTrunkDevice()!" );
}
}
}
void OpenVoiceDevice ( VOICE_STRUCT *pOneVoice )
{
RetCode_t r;
if ( pOneVoice->State == VOC_WAITOPEN ) // 还没有Open
{
r = XMS_ctsOpenDevice ( g_acsHandle, &pOneVoice->deviceID, NULL );
if ( r < 0 )
{
AddMsg ( "XMS_ctsOpenDevice Fail in OpenVoiceDevice()!" );
}
}
}
void OpenPcmDevice ( PCM_STRUCT *pOnePcm )
{
RetCode_t r;
if ( pOnePcm->bOpenFlag == false ) // 还没有Open
{
r = XMS_ctsOpenDevice ( g_acsHandle, &pOnePcm->deviceID, NULL );
if ( r < 0 )
{
AddMsg ( "XMS_ctsOpenDevice Fail in OpenPcmDevice()!" );
}
}
}
void OpenConfDevice ( CONF_STRUCT *pOneConf )
{
RetCode_t r;
if ( pOneConf->State == CONF_WAITOPEN ) // 还没有Open
{
r = XMS_ctsOpenDevice ( g_acsHandle, &pOneConf->deviceID, NULL );
if ( r < 0 )
{
AddMsg ( "XMS_ctsOpenDevice Fail in OpenConfDevice()!" );
}
}
}
void OpenBoardDevice ( DJ_S8 s8DspModID )
{
RetCode_t r;
if ( AllDeviceRes[s8DspModID].bOpenFlag == false ) // 还没有Open
{
r = XMS_ctsOpenDevice ( g_acsHandle, &AllDeviceRes[s8DspModID].deviceID, NULL );
if ( r < 0 )
{
AddMsg ( "XMS_ctsOpenDevice Fail in OpenBoardDevice()!" );
}
}
}
void OpenAllDevice_Dsp ( DJ_S8 s8DspModID )
{
int i;
AllDeviceRes[s8DspModID].bErrFlag = false;
DrawCount_ErrFlag (s8DspModID);
AllDeviceRes[s8DspModID].RemoveState = DSP_REMOVE_STATE_NONE;
DrawCount_RemoveState (s8DspModID);
// Open Board
OpenBoardDevice ( s8DspModID );
// pTrunk
for ( i = 0; i < AllDeviceRes[s8DspModID].lTrunkNum; i++ )
{
OpenTrunkDevice ( &AllDeviceRes[s8DspModID].pTrunk[i] );
}
// pVoice
for ( i = 0; i < AllDeviceRes[s8DspModID].lVocNum; i++ )
{
OpenVoiceDevice ( &AllDeviceRes[s8DspModID].pVoice[i] );
}
// pPcm
for ( i = 0; i < AllDeviceRes[s8DspModID].lPcmNum; i++ )
{
OpenPcmDevice ( &AllDeviceRes[s8DspModID].pPcm[i] );
}
// pConf
for ( i = 0; i < AllDeviceRes[s8DspModID].lConfNum; i++ )
{
OpenConfDevice ( &AllDeviceRes[s8DspModID].pConf[i] );
}
}
void ReOpen_AllDevice (void)
{
int i;
for ( i = 0; i < g_iTotalModule; i ++ )
{
OpenAllDevice_Dsp ( MapTable_Module[i] );
}
}
// --------------------------------------------------------------------------------
void OpenDeviceOK ( DeviceID_t *pDevice )
{
TRUNK_STRUCT *pOneTrunk;
if ( pDevice->m_s16DeviceMain == XMS_DEVMAIN_BOARD )
{
AllDeviceRes[pDevice->m_s8ModuleID].deviceID.m_CallID = pDevice->m_CallID; // this line is very important, must before all operation
AllDeviceRes[pDevice->m_s8ModuleID].bOpenFlag = true;
}
if ( pDevice->m_s16DeviceMain == XMS_DEVMAIN_INTERFACE_CH )
{
pOneTrunk = &M_OneTrunk(*pDevice);
pOneTrunk->deviceID.m_CallID = pDevice->m_CallID; // this line is very important, must before all operation
// init this Device: Trunk
InitTrunkChannel ( pOneTrunk );
XMS_ctsResetDevice ( g_acsHandle, pDevice, NULL );
XMS_ctsGetDevState ( g_acsHandle, pDevice, NULL );
// modify the count
g_iTotalTrunkOpened ++;
AllDeviceRes[pDevice->m_s8ModuleID].lTrunkOpened ++;
DrawCount_Trunk ( pDevice->m_s8ModuleID );
}
if ( pDevice->m_s16DeviceMain == XMS_DEVMAIN_VOICE )
{
M_OneVoice(*pDevice).deviceID.m_CallID = pDevice->m_CallID; // this is very important
// init this Device: Voice
Change_Voc_State ( &M_OneVoice(*pDevice), VOC_FREE);
XMS_ctsResetDevice ( g_acsHandle, pDevice, NULL );
XMS_ctsGetDevState ( g_acsHandle, pDevice, NULL );
// modify the count
g_iTotalVoiceOpened ++;
g_iTotalVoiceFree ++;
AllDeviceRes[pDevice->m_s8ModuleID].lVocOpened ++;
AllDeviceRes[pDevice->m_s8ModuleID].lVocFreeNum ++;
DrawCount_Voc ( pDevice->m_s8ModuleID );
}
if ( pDevice->m_s16DeviceMain == XMS_DEVMAIN_DIGITAL_PORT )
{
M_OnePcm(*pDevice).deviceID.m_CallID = pDevice->m_CallID; // this is very important
M_OnePcm(*pDevice).bOpenFlag = true;
// init the Device: Pcm
XMS_ctsResetDevice ( g_acsHandle, pDevice, NULL );
XMS_ctsGetDevState ( g_acsHandle, pDevice, NULL );
DrawPcm_TypeAndAlarm ( &M_OnePcm(*pDevice) );
// moidfy the count
g_iTotalPcmOpened ++;
AllDeviceRes[pDevice->m_s8ModuleID].lPcmOpened ++;
DrawCount_Pcm ( pDevice->m_s8ModuleID );
}
if ( pDevice->m_s16DeviceMain == XMS_DEVMAIN_CONFERENCE )
{
M_OneConf(*pDevice).deviceID.m_CallID = pDevice->m_CallID; // this is very important
// init the Device: Conf
XMS_ctsResetDevice ( g_acsHandle, pDevice, NULL );
XMS_ctsGetDevState ( g_acsHandle, pDevice, NULL );
XMS_ctsClearConf ( g_acsHandle, pDevice, NULL );
InitConfChannel ( &M_OneConf(*pDevice) );
// modify the Count
g_iTotalConfOpened ++;
g_iTotalConfFree ++;
AllDeviceRes[pDevice->m_s8ModuleID].lConfOpened ++;
AllDeviceRes[pDevice->m_s8ModuleID].lConfFreeNum ++;
DrawCount_Conf ( pDevice->m_s8ModuleID );
}
}
// --------------------------------------------------------------------------------
void CloseDeviceOK ( DeviceID_t *pDevice )
{
TRUNK_STRUCT *pOneTrunk;
AllDeviceRes[pDevice->m_s8ModuleID].bErrFlag = true;
DrawCount_ErrFlag (pDevice->m_s8ModuleID);
if ( pDevice->m_s16DeviceMain == XMS_DEVMAIN_BOARD )
{
AllDeviceRes[pDevice->m_s8ModuleID].bOpenFlag = false;
}
if ( pDevice->m_s16DeviceMain == XMS_DEVMAIN_INTERFACE_CH )
{
pOneTrunk = &M_OneTrunk(*pDevice);
Change_State ( pOneTrunk, TRK_WAITOPEN );
// modify the count
g_iTotalTrunkOpened --;
AllDeviceRes[pDevice->m_s8ModuleID].lTrunkOpened --;
DrawCount_Trunk ( pDevice->m_s8ModuleID );
}
if ( pDevice->m_s16DeviceMain == XMS_DEVMAIN_VOICE )
{
// init this Device: Voice
Change_Voc_State ( &M_OneVoice(*pDevice), VOC_WAITOPEN);
// modify the count
g_iTotalVoiceOpened --;
g_iTotalVoiceFree --;
AllDeviceRes[pDevice->m_s8ModuleID].lVocOpened --;
AllDeviceRes[pDevice->m_s8ModuleID].lVocFreeNum --;
DrawCount_Voc ( pDevice->m_s8ModuleID );
}
if ( pDevice->m_s16DeviceMain == XMS_DEVMAIN_DIGITAL_PORT )
{
M_OnePcm(*pDevice).bOpenFlag = false;
// moidfy the count
g_iTotalPcmOpened --;
AllDeviceRes[pDevice->m_s8ModuleID].lPcmOpened --;
DrawCount_Pcm ( pDevice->m_s8ModuleID );
}
if ( pDevice->m_s16DeviceMain == XMS_DEVMAIN_CONFERENCE )
{
M_OneConf(*pDevice).State = CONF_WAITOPEN;
// modify the Count
g_iTotalConfOpened --;
g_iTotalConfFree --;
AllDeviceRes[pDevice->m_s8ModuleID].lConfOpened --;
AllDeviceRes[pDevice->m_s8ModuleID].lConfFreeNum --;
DrawCount_Conf ( pDevice->m_s8ModuleID );
}
}
// --------------------------------------------------------------------------------
void CloseTrunkDevice ( TRUNK_STRUCT *pOneTrunk )
{
RetCode_t r;
pOneTrunk->State= TRK_WAITOPEN;
r = XMS_ctsCloseDevice ( g_acsHandle, &pOneTrunk->deviceID, NULL );
if ( r < 0 )
{
AddMsg ( "XMS_ctsCloseDevice Fail in CloseTrunkDevice()!" );
}
}
void CloseVoiceDevice ( VOICE_STRUCT *pOneVoice )
{
RetCode_t r;
r = XMS_ctsCloseDevice ( g_acsHandle, &pOneVoice->deviceID, NULL );
if ( r < 0 )
{
AddMsg ( "XMS_ctsCloseDevice Fail in CloseVoiceDevice()!" );
}
}
void ClosePcmDevice ( PCM_STRUCT *pOnePcm )
{
RetCode_t r;
r = XMS_ctsCloseDevice ( g_acsHandle, &pOnePcm->deviceID, NULL );
if ( r < 0 )
{
AddMsg ( "XMS_ctsCloseDevice Fail in ClosePcmDevice()!" );
}
}
void CloseConfDevice ( CONF_STRUCT *pOneConf )
{
RetCode_t r;
r = XMS_ctsCloseDevice ( g_acsHandle, &pOneConf->deviceID, NULL );
if ( r < 0 )
{
AddMsg ( "XMS_ctsCloseDevice Fail in CloseConfDevice()!" );
}
}
void CloseBoardDevice ( DeviceID_t *pBoardDevID )
{
RetCode_t r;
r = XMS_ctsCloseDevice ( g_acsHandle, pBoardDevID, NULL );
if ( r < 0 )
{
AddMsg ( "XMS_ctsCloseDevice Fail in CloseBoardDevice()!" );
}
}
void CloseAllDevice_Dsp ( DJ_S8 s8DspModID )
{
int i;
// close Board
CloseBoardDevice ( &AllDeviceRes[s8DspModID].deviceID );
// pTrunk
for ( i = 0; i < AllDeviceRes[s8DspModID].lTrunkNum; i++ )
{
CloseTrunkDevice ( &AllDeviceRes[s8DspModID].pTrunk[i] );
}
// pVoice
for ( i = 0; i < AllDeviceRes[s8DspModID].lVocNum; i++ )
{
CloseVoiceDevice ( &AllDeviceRes[s8DspModID].pVoice[i] );
}
// pPcm
for ( i = 0; i < AllDeviceRes[s8DspModID].lPcmNum; i++ )
{
ClosePcmDevice ( &AllDeviceRes[s8DspModID].pPcm[i] );
}
// pConf
for ( i = 0; i < AllDeviceRes[s8DspModID].lConfNum; i++ )
{
CloseConfDevice ( &AllDeviceRes[s8DspModID].pConf[i] );
}
}
// -----------------------------------------------------------------------
// next functions are about Real Work
// -----------------------------------------------------------------------
void HandleDevState ( Acs_Evt_t *pAcsEvt )
{
Acs_GeneralProc_Data *pGeneralData = NULL;
pGeneralData = (Acs_GeneralProc_Data *)FetchEventData(pAcsEvt);
if ( pAcsEvt->m_DeviceID.m_s16DeviceMain == XMS_DEVMAIN_INTERFACE_CH )
{
M_OneTrunk(pAcsEvt->m_DeviceID).iLineState = pGeneralData->m_s32DeviceState;
DrawMain_LineState( &M_OneTrunk(pAcsEvt->m_DeviceID) );
}
if ( pAcsEvt->m_DeviceID.m_s16DeviceMain == XMS_DEVMAIN_DIGITAL_PORT )
{
M_OnePcm(pAcsEvt->m_DeviceID).u8E1Type = (pGeneralData->m_s32DeviceState >> 16) & 0xFF;
M_OnePcm(pAcsEvt->m_DeviceID).s32AlarmVal = (pGeneralData->m_s32DeviceState & 0xFFFF);
DrawPcm_TypeAndAlarm ( &M_OnePcm(pAcsEvt->m_DeviceID) );
}
if ( pAcsEvt->m_DeviceID.m_s16DeviceMain == XMS_DEVMAIN_CONFERENCE )
{
}
}
// -------------------------------------------------------------------------------------------------
void CheckRemoveReady ( DJ_S8 s8DspModID )
{
int i;
// check device : INTERFACE_CH
for ( i = 0; i < AllDeviceRes[s8DspModID].lTrunkNum; i ++ )
{
if ( (AllDeviceRes[s8DspModID].pTrunk[i].State != TRK_WAITOPEN)
&& (AllDeviceRes[s8DspModID].pTrunk[i].State != TRK_WAIT_REMOVE) )
{
return;
}
}
// check device : VOICE
for ( i = 0; i < AllDeviceRes[s8DspModID].lVocNum; i ++ )
{
if ( (AllDeviceRes[s8DspModID].pVoice[i].State != VOC_WAITOPEN)
&& (AllDeviceRes[s8DspModID].pVoice[i].State != VOC_WAIT_REMOVE) )
{
return;
}
}
// check device : CONF
for ( i = 0; i < AllDeviceRes[s8DspModID].lConfNum; i ++ )
{
if ( (AllDeviceRes[s8DspModID].pConf[i].State != CONF_WAITOPEN)
&& (AllDeviceRes[s8DspModID].pConf[i].State != CONF_WAIT_REMOVE) )
{
return;
}
}
// all device in this DSP is ready for remove
AllDeviceRes[s8DspModID].RemoveState = DSP_REMOVE_STATE_READY;
DrawCount_RemoveState ( s8DspModID );
}
void Remove_OneDsp(void)
{
POSITION pos;
int index, i;
DJ_S8 s8DspModID;
pos = pdlg->m_ListCount.GetFirstSelectedItemPosition();
index = pdlg->m_ListCount.GetNextSelectedItem ( pos);
if ( ( index <= 0 ) || ( index > g_iTotalModule ) )
{
AfxMessageBox ( "Please select a valid DSP module in the upper list!" );
return;
}
s8DspModID = MapTable_Module[index-1]; // -1 是因为第1行是total
AllDeviceRes[s8DspModID].RemoveState = DSP_REMOVE_STATE_START;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -