📄 xms_confdemo_sub.cpp
字号:
#include "stdafx.h"
#include "XMS_ConfDemo.h"
#include "XMS_ConfDemoDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#include "DJAcsDataDef.h"
#include "DJAcsAPIDef.h"
#include "DJAcsDevState.h"
#include "XMS_ConfDemo_Sub.H"
#include "XMS_ConfDemo_Event.H"
#include "XMS_ConfDemo_String.H"
// Special code for CAS(SS1)
#include "..\CAS_Common_Code\CAS_Common_Cfg.h"
CmdParamData_CAS_t g_Param_CAS;
// end of code for CAS(SS1)
// -----------------------------------------------------------------------
// variable declaration
extern CXMS_ConfDemoApp theApp;
CXMS_ConfDemoDlg *pdlg;
// var about XMS_ConfDemo.INI
char cfg_IniName[MAX_FILE_NAME_LEN] = "";
char cfg_IniShortName[] = "\\XMS_ConfDemo.INI";
ServerID_t cfg_ServerID;
char cfg_VocPath[128];
int cfg_iDispChnl = 32; // always disp 32 channel
int cfg_iPartWork;
int cfg_iPartWorkModuleID;
int cfg_s32DebugOn;
// var about work
ACSHandle_t g_acsHandle = -1;
DJ_U8 g_u8UnitID = 4;
// var in XMS_ConfDemo_Event.CPP
extern TYPE_XMS_DSP_DEVICE_RES_CONFDEMO AllDeviceRes[MAX_DSP_MODULE_NUMBER_OF_XMS];
extern int g_iTotalPcm;
extern int g_iTotalPcmOpened;
extern TYPE_CHANNEL_MAP_TABLE MapTable_Pcm[MAX_PCM_NUM_IN_THIS_DEMO];
extern int g_iTotalTrunk;
extern int g_iTotalTrunkOpened;
extern TYPE_CHANNEL_MAP_TABLE MapTable_Trunk[MAX_TRUNK_NUM_IN_THIS_DEMO];
extern int g_iTotalVoice;
extern int g_iTotalVoiceOpened;
extern int g_iTotalVoiceFree;
extern TYPE_CHANNEL_MAP_TABLE MapTable_Voice[MAX_TRUNK_NUM_IN_THIS_DEMO];
extern int g_iTotalModule;
extern DJ_S8 MapTable_Module[MAX_DSP_MODULE_NUMBER_OF_XMS];
extern int g_iTotalConf;
extern int g_iTotalConfOpened;
extern int g_iTotalConfFree;
extern TYPE_CHANNEL_MAP_TABLE MapTable_Conf[MAX_TRUNK_NUM_IN_THIS_DEMO];
// -----------------------------------------------------------------------
// local function decalration
// -----------------------------------------------------------------------
// next functions are about Config
// -----------------------------------------------------------------------
void WriteToConfig(void);
void ReadFromConfig(void);
void InitTextBox(void);
void FetchFromText();
// -----------------------------------------------------------------------
void InitListMain(void);
void InitListPcm(void);
void InitListMsg(void);
void InitListConf(void);
void InitListCount(void);
void OccupyOneConf ( CONF_STRUCT *pOneConf );
int FreeOneConf ( DeviceID_t *pFreeConfDeviceID );
void Do_LeaveConf ( TRUNK_STRUCT *pOneTrunk );
// -----------------------------------------------------------------------
// next functions are about Config
// -----------------------------------------------------------------------
void ReadFromConfig(void)
{
GetCurrentDirectory ( MAX_FILE_NAME_LEN-32, cfg_IniName );
strcat ( cfg_IniName, cfg_IniShortName );
GetPrivateProfileString ( "ConfigInfo", "IpAddr", "192.168.0.8", cfg_ServerID.m_s8ServerIp, sizeof(cfg_ServerID.m_s8ServerIp), cfg_IniName);
cfg_ServerID.m_u32ServerPort = GetPrivateProfileInt ( "ConfigInfo", "Port", 9001, cfg_IniName);
GetPrivateProfileString("ConfigInfo","UserName","",cfg_ServerID.m_s8UserName,sizeof(cfg_ServerID.m_s8UserName),cfg_IniName);
GetPrivateProfileString("ConfigInfo","PassWord","",cfg_ServerID.m_s8UserPwd,sizeof(cfg_ServerID.m_s8UserPwd),cfg_IniName);
GetPrivateProfileString ( "ConfigInfo", "VocPath", "..\\VOC\\", cfg_VocPath, sizeof(cfg_VocPath), cfg_IniName);
cfg_iPartWork = GetPrivateProfileInt ( "ConfigInfo", "PartWork", 0, cfg_IniName);
cfg_iPartWorkModuleID = GetPrivateProfileInt ( "ConfigInfo", "PartWorkModuleID", 0, cfg_IniName);
cfg_s32DebugOn = GetPrivateProfileInt ( "ConfigInfo", "DebugOn", 0, cfg_IniName);
}
void WriteToConfig(void)
{
char TmpStr[256];
WritePrivateProfileString ( "ConfigInfo", "IpAddr", cfg_ServerID.m_s8ServerIp, cfg_IniName);
sprintf ( TmpStr, "%d", cfg_ServerID.m_u32ServerPort);
WritePrivateProfileString ( "ConfigInfo", "Port", TmpStr, cfg_IniName);
WritePrivateProfileString ( "ConfigInfo", "VocPath", cfg_VocPath, cfg_IniName);
sprintf ( TmpStr, "%d", cfg_iPartWork);
WritePrivateProfileString ( "ConfigInfo", "PartWork", TmpStr, cfg_IniName);
sprintf ( TmpStr, "%d", cfg_iPartWorkModuleID);
WritePrivateProfileString ( "ConfigInfo", "PartWorkModuleID", TmpStr, cfg_IniName);
sprintf ( TmpStr, "%d", cfg_s32DebugOn);
WritePrivateProfileString ( "ConfigInfo", "DebugOn", TmpStr, cfg_IniName);
}
void InitTextBox(void)
{
char TmpStr[256];
pdlg->GetDlgItem ( IDC_EDIT_IPADDR )->SetWindowText ( cfg_ServerID.m_s8ServerIp );
sprintf ( TmpStr, "%d", cfg_ServerID.m_u32ServerPort );
pdlg->GetDlgItem ( IDC_EDIT_IPPORT )->SetWindowText ( TmpStr );
pdlg->GetDlgItem ( IDC_EDIT_VOCPATH )->SetWindowText ( cfg_VocPath );
if ( cfg_iPartWork == 0 )
((CButton *)pdlg->GetDlgItem (IDC_CHECK_PartWork))->SetCheck ( 0 ) ;
else
((CButton *)pdlg->GetDlgItem (IDC_CHECK_PartWork))->SetCheck ( 1 ) ;
sprintf ( TmpStr, "%d", cfg_iPartWorkModuleID );
pdlg->GetDlgItem ( IDC_EDIT_ModuleID )->SetWindowText ( TmpStr );
if ( cfg_s32DebugOn == 0 )
((CButton *)pdlg->GetDlgItem (IDC_CHECK_DEBUG))->SetCheck ( 0 ) ;
else
((CButton *)pdlg->GetDlgItem (IDC_CHECK_DEBUG))->SetCheck ( 1 ) ;
}
void FetchFromText(void)
{
char TmpStr[256];
pdlg->GetDlgItem ( IDC_EDIT_IPADDR )->GetWindowText ( cfg_ServerID.m_s8ServerIp, 30 );
pdlg->GetDlgItem ( IDC_EDIT_IPPORT )->GetWindowText ( TmpStr, 30 );
sscanf ( TmpStr, "%d", &cfg_ServerID.m_u32ServerPort);
pdlg->GetDlgItem ( IDC_EDIT_VOCPATH )->GetWindowText ( cfg_VocPath, 128 );
if ( ((CButton *)pdlg->GetDlgItem (IDC_CHECK_PartWork))->GetCheck ( ) )
cfg_iPartWork = 1;
else
cfg_iPartWork = 0;
pdlg->GetDlgItem ( IDC_EDIT_ModuleID )->GetWindowText ( TmpStr, 30 );
sscanf ( TmpStr, "%d", &cfg_iPartWorkModuleID);
if ( ((CButton *)pdlg->GetDlgItem (IDC_CHECK_DEBUG))->GetCheck ( ) )
cfg_s32DebugOn = 1;
else
cfg_s32DebugOn = 0;
}
// -----------------------------------------------------------------------
// next functions are about Display
// -----------------------------------------------------------------------
void InitListMsg(void)
{
int i = pdlg->m_ListMsg.GetHorizontalExtent ( );
pdlg->m_ListMsg.SetHorizontalExtent ( i + 1000 );
}
void AddMsg ( char *str)
{
static int iTotal_ListMsg = 0;
char TmpStr[256];
sprintf ( TmpStr, "%3d: ", iTotal_ListMsg+1 );
strcat ( TmpStr, str );
pdlg->m_ListMsg.AddString ( TmpStr );
// pdlg->m_ListMsg.SetCurSel ( iTotal_ListMsg);
iTotal_ListMsg ++;
}
// -------------------------------------------------------------------------------------------------
void InitListMain(void)
{
LV_COLUMN lvc;
DWORD dwExStyle;
dwExStyle = LVS_EX_FULLROWSELECT | /*LVS_EX_GRIDLINES | LVS_EX_SUBITEMIMAGES |*/
LVS_EX_HEADERDRAGDROP;// | LVS_EX_TRACKSELECT;
pdlg->m_ListMain.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LPARAM(dwExStyle));
lvc.mask = LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvc.iSubItem = 0;
lvc.pszText = "ID" ;
lvc.cx = 30;
pdlg->m_ListMain.InsertColumn ( 0, &lvc );
lvc.iSubItem = 1;
lvc.pszText = "Mod,Ch" ;
lvc.cx = 50;
pdlg->m_ListMain.InsertColumn ( 1, &lvc );
lvc.iSubItem = 2;
lvc.pszText = "Type" ;
lvc.cx = 60;
pdlg->m_ListMain.InsertColumn ( 2, &lvc );
lvc.iSubItem = 3;
lvc.pszText = "LineState" ;
lvc.cx = 70;
pdlg->m_ListMain.InsertColumn ( 3, &lvc );
lvc.iSubItem = 4;
lvc.pszText = "State" ;
lvc.cx = 70;
pdlg->m_ListMain.InsertColumn ( 4, &lvc );
lvc.iSubItem = 5;
lvc.pszText = "Called" ;
lvc.cx = 60;
pdlg->m_ListMain.InsertColumn ( 5, &lvc );
lvc.iSubItem = 6;
lvc.pszText = "Calling" ;
lvc.cx = 60;
pdlg->m_ListMain.InsertColumn ( 6, &lvc );
lvc.iSubItem = 7;
lvc.pszText = "DTMF" ;
lvc.cx = 40;
pdlg->m_ListMain.InsertColumn ( 7, &lvc );
lvc.iSubItem = 8;
lvc.pszText = "VocInfo" ;
lvc.cx = 55;
pdlg->m_ListMain.InsertColumn ( 8, &lvc );
lvc.iSubItem = 9;
lvc.pszText = "ConfInfo" ;
lvc.cx = 60;
pdlg->m_ListMain.InsertColumn ( 9, &lvc );
}
int CalDispRow ( int iSeqID )
{
int iRet;
if ( cfg_iDispChnl == 30 )
{
if ( (iSeqID % 16) == 0 )
return -1;
iRet = (iSeqID / 32) * 30 + (iSeqID % 32);
iRet --;
if ( (iSeqID % 32) > 16 )
iRet --;
return iRet;
}
if ( cfg_iDispChnl == 31 )
{
if ( (iSeqID % 32) == 0 )
return -1;
iRet = (iSeqID / 32) * 31 + (iSeqID % 32);
iRet --;
return iRet;
}
return iSeqID;
}
void DrawMain_LineState( TRUNK_STRUCT *pOneTrunk )
{
char StateStr[100];
int iDispRow;
iDispRow = CalDispRow(pOneTrunk->iSeqID);
if ( iDispRow < 0 ) return;
//
GetString_LineState ( StateStr, pOneTrunk->iLineState );
pdlg->m_ListMain.SetItemText ( iDispRow, 3, StateStr );
}
void DrawMain_State( TRUNK_STRUCT *pOneTrunk )
{
char StateStr[100];
int iDispRow;
iDispRow = CalDispRow(pOneTrunk->iSeqID);
if ( iDispRow < 0 ) return;
//
switch( pOneTrunk->State )
{
case TRK_WAITOPEN:
strcpy(StateStr,"Wait Open");
break;
case TRK_FREE:
strcpy(StateStr,"空闲");
break ;
case TRK_SELECT:
strcpy(StateStr,"选择功能");
break;
case TRK_CONF_INPUTGROUP:
strcpy(StateStr,"输入组号");
break;
break;
case TRK_CONF_CONFING:
strcpy(StateStr,"会议中");
break;
case TRK_CONF_KARAOK:
strcpy(StateStr,"卡拉OK");
break;
case TRK_CONF_PLAYBACK:
strcpy(StateStr,"回放");
break;
case TRK_CONF_ERROR:
strcpy(StateStr,"会议错误");
break;
case TRK_WAIT_ANSWERCALL:
strcpy(StateStr,"等摘机完成");
break;
case TRK_WAIT_LINKOK:
strcpy(StateStr,"等Link完成");
break;
case TRK_WAIT_REMOVE:
strcpy(StateStr,"DSP删除");
break;
default:
strcpy(StateStr,"other");
break;
}
pdlg->m_ListMain.SetItemText ( iDispRow, 4, StateStr );
}
void DrawMain_CallInfo( TRUNK_STRUCT *pOneTrunk )
{
char StateStr[100];
int iDispRow;
iDispRow = CalDispRow(pOneTrunk->iSeqID);
if ( iDispRow < 0 ) return;
strcpy ( StateStr, pOneTrunk->CalleeCode );
pdlg->m_ListMain.SetItemText ( iDispRow, 5, StateStr );
strcpy ( StateStr, pOneTrunk->CallerCode );
pdlg->m_ListMain.SetItemText ( iDispRow, 6, StateStr );
}
void DrawMain_DTMF( TRUNK_STRUCT *pOneTrunk )
{
char StateStr[100];
int iDispRow;
iDispRow = CalDispRow(pOneTrunk->iSeqID);
if ( iDispRow < 0 ) return;
strcpy(StateStr,pOneTrunk->DtmfBuf);
pdlg->m_ListMain.SetItemText ( iDispRow, 7, StateStr );
}
void DrawMain_VocInfo( TRUNK_STRUCT *pOneTrunk )
{
char StateStr[100];
int iDispRow;
DeviceID_t *pDev;
iDispRow = CalDispRow(pOneTrunk->iSeqID);
if ( iDispRow < 0 ) return;
if ( pOneTrunk->VocDevID.m_s16DeviceMain != 0 )
{
pDev = &pOneTrunk->VocDevID;
sprintf ( StateStr, "%d,%d", pDev->m_s8ModuleID, pDev->m_s16ChannelID );
}
else
strcpy(StateStr, "");
pdlg->m_ListMain.SetItemText ( iDispRow, 8, StateStr );
}
void DrawMain_ConfInfo( TRUNK_STRUCT *pOneTrunk )
{
char StateStr[100];
int iDispRow;
DeviceID_t *pDev;
iDispRow = CalDispRow(pOneTrunk->iSeqID);
if ( iDispRow < 0 ) return;
if ( pOneTrunk->ConfDevID.m_s16DeviceMain != 0 )
{
pDev = &pOneTrunk->ConfDevID;
sprintf ( StateStr, "%d,%d", pDev->m_s8ModuleID, pDev->m_s16ChannelID );
}
else
strcpy(StateStr, "");
pdlg->m_ListMain.SetItemText ( iDispRow, 9, StateStr );
}
// -------------------------------------------------------------------------------------------------
void InitListPcm(void)
{
LV_COLUMN lvc;
DWORD dwExStyle;
dwExStyle = LVS_EX_FULLROWSELECT | /*LVS_EX_GRIDLINES | LVS_EX_SUBITEMIMAGES |*/
LVS_EX_HEADERDRAGDROP;// | LVS_EX_TRACKSELECT;
pdlg->m_ListPcm.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LPARAM(dwExStyle));
lvc.mask = LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvc.iSubItem = 0;
lvc.pszText = "PcmID" ;
lvc.cx = 60;
pdlg->m_ListPcm.InsertColumn ( 0, &lvc );
lvc.iSubItem = 1;
lvc.pszText = "Type" ;
lvc.cx = 80;
pdlg->m_ListPcm.InsertColumn ( 1, &lvc );
lvc.iSubItem = 2;
lvc.pszText = "Alarm Value" ;
lvc.cx = 80;
pdlg->m_ListPcm.InsertColumn ( 2, &lvc );
lvc.iSubItem = 3;
lvc.pszText = "Sig Detect" ;
lvc.cx = 80;
pdlg->m_ListPcm.InsertColumn ( 3, &lvc );
lvc.iSubItem = 4;
lvc.pszText = "Frame Sync" ;
lvc.cx = 80;
pdlg->m_ListPcm.InsertColumn ( 4, &lvc );
lvc.iSubItem = 5;
lvc.pszText = "Remote Alarm" ;
lvc.cx = 85;
pdlg->m_ListPcm.InsertColumn ( 5, &lvc );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -