1. // TestView.cpp : implementation of the CTestView class
2. //
3.
4. #include "stdafx.h"
5. #include "Test.h"
6.
7. #include "TestDoc.h"
8. #include "TestView.h"
9.
10. #include "Fsk.h"
11. #include "BusChInfo.h"
12. #include "ConInfo.h"
13. #include "SetChkTonePara.h"
14. #include "PcmCompatible.h"
15. #include "SS1base.h"
16. #include "Ss7.h"
17. #include "TsToChList.h"
18. #include "CallTest.h"
19. #include "direct.h"
20. #include <errno.h>
21. //#include "../shp_a3/shpa3api.h"
22. #include "ver34.h"
23. #include "ver353.h"
24. #include "ver404.h"
25. #include "time.h"
26. #define _TESTDATA
27. #include "TestData.h"
28. #include "OverallEnergyLevelDlg.h"
29. #include "40ExDlg.h"
30. #include "SetWaitDtmf.h"
31. #include "Ver444x.h"
32. #include "BoardInfo.h"
33. #include "DlgMultiCall.h" // added by hunnad for 多路呼叫, 2007.10.15
34.
35. #include "Dlgver456x.h"
36. #include "DlgIsupAdv.h"
37. #include "ShvDlg.h"
38. #ifdef _DEBUG
39. #define new DEBUG_NEW
40. #undef THIS_FILE
41. static char THIS_FILE[] = __FILE__;
42. #endif
43.
44. enum{
45. CHKPLAY_PLAYING,
46. CHKPLAY_NORMAL_END,
47. CHKPLAY_DTMF_END,
48. CHKPLAY_BURGEIN,
49. CHKPLAY_REMOTEHANGUP_END, //added by xxb for 恒生,01.09,2002 +++++
50. CHKPLAY_APPLICATION_END, //added by xxb for 恒生,01.09,2002 +++++
51. CHKPLAY_PAUSED,//added by xxb,2002.8.2
52. CHKPLAY_LINKFROM_END,//Added by xxb, for 因下总线而中止,2003.04.17
53. CHKPLAY_NETDISCONNECT,//Added by yxh, for 网络文件放音改进, 2003.09.30
54. };
55.
56. enum
57. {
58. CHKRECORD_RECORDING, //0: recording
59. CHKRECORD_APPLICATION_END, //1: application end
60. CHKRECORD_DTMF_END, //2: record operation is stopped by DTMF key
61. CHKRECORD_REMOTEHANGUP_END,//3: recor operation is stopped by remote hangup
62. CHECKRECORD_TIMEUP_END, //4: end of record for time up.
63. CHECKRECORD_FILE_PAUSED, //5: file record is paused.
64. CHECKRECORD_FILE_WRITE_ERROR,//6:file write error
65. };
66.
67. extern int nIsSsmStartCtiOK;
68.
69. BOOL bEnableOpToneAnalyze[MAX_CH];
70. BOOL bEnableOpRingDetect[MAX_CH];
71. BOOL bEnableOpBlockRemoteCh[MAX_CH];
72. BOOL bEnableOpEchoCanceller[MAX_CH];
73. BOOL bEnableOpADC[MAX_CH];
74.
75. BOOL bTimerOpen = TRUE;
76.
77. HANDLE hFile;
78.
79. /
80. // CTestView
81.
82. IMPLEMENT_DYNCREATE(CTestView, CFormView)
83.
84. BEGIN_MESSAGE_MAP(CTestView, CFormView)
85. //{{AFX_MSG_MAP(CTestView)
86. ON_CBN_SELCHANGE(IDC_COMBO_SELCURCH, OnSelchangeComboSelcurch)
87. ON_NOTIFY(NM_CLICK, IDC_CHLIST, OnClickChlist)
88. ON_WM_TIMER()
89. ON_WM_DESTROY()
90. ON_COMMAND(ID_OPEN_SHCONFIG, OnOpenShconfig)
91. ON_COMMAND(ID_OPEN_SHCTICONFIG, OnOpenShcticonfig)
92. ON_COMMAND(ID_VER34, OnVer34)
93. ON_COMMAND(ID_ONTIMEFLAG, Ontimeflag)
94. ON_UPDATE_COMMAND_UI(ID_ONTIMEFLAG, OnUpdateOntimeflag)
95. ON_COMMAND(ID_VER353, OnVer353)
96. ON_COMMAND(ID_OVERALL_ENERGY_LEVEL, OnOverallEnergyLevel)
97. ON_COMMAND(ID_40EX_OPEN_BUS, On40exOpenBus)
98. ON_COMMAND(ID_SSMSETWAITDTMFEX, OnSsmsetwaitdtmfex)
99. ON_COMMAND(ID_BUTTON_SPY, OnButtonSpy)
100. ON_COMMAND(ID_VER404, OnVer404)
101. ON_COMMAND(ID_VER444x, OnVer444x)
102. ON_COMMAND(ID_BOARDINFO, OnBoardinfo)
103. ON_NOTIFY(TCN_SELCHANGE, IDC_TAB_VIEW, OnSelchangeTabView)
104. ON_BN_CLICKED(IDC_SELECT_ALLCH, OnSelectAllch)
105. ON_COMMAND(IDC_BUTTON_SS7, OnButtonSs7)
106. ON_COMMAND(IDC_BUTTON_fsk, OnBUTTONfsk)
107. ON_COMMAND(IDC_BUTTON_BUS, OnButtonBus)
108. ON_COMMAND(IDC_BUTTON_CONF, OnButtonConf)
109. ON_COMMAND(IDC_BUTTON_SetChkTonePara, OnBUTTONSetChkTonePara)
110. ON_COMMAND(IDC_BUTTON_PcmFunc, OnBUTTONPcmFunc)
111. ON_COMMAND(IDC_BUTTON_SS1Base, OnBUTTONSS1Base)
112. ON_COMMAND(ID_VER458x, OnVER458x)
113. ON_COMMAND(ID_VER4605, OnVer4605)
114. ON_COMMAND(IDC_VER_4720_SHV, OnVer4720Shv)
115. ON_COMMAND(ID_MULTICALL, OnMulticall)
116. ON_COMMAND(ID_HANGUPALL, OnHangupall)
117. ON_COMMAND(ID_PICKUPALL, OnPickupall)
118. //}}AFX_MSG_MAP
119. // Standard printing commands
120. ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint)
121. ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
122. ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
123. END_MESSAGE_MAP()
124.
125. /
126. // CTestView construction/destruction
127.
128. CTestView::CTestView()
129. : CFormView(CTestView::IDD)
130. {
131. //{{AFX_DATA_INIT(CTestView)
132. m_SelectAllCh = FALSE;
133. //}}AFX_DATA_INIT
134. // TODO: add construction code here
135.
136. }
137.
138. CTestView::~CTestView()
139. {
140. }
141.
142. void CTestView::DoDataExchange(CDataExchange* pDX)
143. {
144. CFormView::DoDataExchange(pDX);
145. //{{AFX_DATA_MAP(CTestView)
146. DDX_Control(pDX, IDC_TAB_VIEW, m_TabCtrl);
147. DDX_Control(pDX, IDC_COMBO_SELCURCH, m_SelCurCh);
148. DDX_Control(pDX, IDC_CHLIST, m_ChList);
149. DDX_Check(pDX, IDC_SELECT_ALLCH, m_SelectAllCh);
150. //}}AFX_DATA_MAP
151. }
152.
153. BOOL CTestView::PreCreateWindow(CREATESTRUCT& cs)
154. {
155. // TODO: Modify the Window class or styles here by modifying
156. // the CREATESTRUCT cs
157.
158. return CFormView::PreCreateWindow(cs);
159. }
160. enum{
161. ITEM_Ch,
162. ITEM_ChHwType,
163. ITEM_ChState,
164. ITEM_RingCount,
165. ITEM_SendRingCount,//added by LCL for RingCounter, 2005.09.19
166. ITEM_RxDTMF,
167. ITEM_ToneAnalyzeResult,
168. ITEM_2ndToneAnalyzeResult, //ADDED BY yxd 2003.3.20
169. ITEM_Burgein,
170. ITEM_DetectNoSound,
171. ITEM_PlayTime,
172. ITEM_PlayTimeEx,
173. ITEM_PlayPercentage,
174. ITEM_ChkPlay,
175. ITEM_GetPlayType,
176. ITEM_RecTime,
177. ITEM_ChkRec,
178. ITEM_OverallEnergy,
179. ITEM_AdaptiveFilter,
180. ITEM_AdaptiveFilterStudy,
181. ITEM_ECRatio,
182. ITEM_LCD,
183. ITEM_DKEY, //added by yxh for GetDKeyStr, 2005.09.02
184. ITEM_CallerId,
185. ITEM_CallerIdEx,
186. ITEM_Vad,
187. ITEM_PeakFreq,
188. ITEM_RxCAS,
189. ITEM_TxCAS,
190. ITEM_RxR2,
191. ITEM_TxR2,
192. ITEM_PendReason,
193. ITEM_ChStateKeepTime,
194. ITEM_PhoneNumber,
195. ITEM_Ploar,
196. ITEM_BlockRemote,
197. ITEM_CallTest,
198. ITEM_CallInTest,
199. ITEM_CodecType
200. };
201.
202. void CTestView::OnInitialUpdate()
203. {
204. CFormView::OnInitialUpdate();
205. GetParentFrame()->RecalcLayout();
206. ResizeParentToFit();
207. /*
208. char szPathName[MAX_PATH];
209. memset(szPathName, 0, MAX_PATH);
210. GetCurrentDirectory(MAX_PATH, szPathName);
211. strcat(szPathName, "\TestRecFiles");
212. if(_mkdir(szPathName)==-1 && errno!=EEXIST) //创建文件夹,创建失败而且失败原因不是文件夹已经存在
213. {
214. MessageBox("创建存放录音文件的文件夹失败", "警告", MB_OK|MB_ICONSTOP);
215. return;
216. }
217. */
218. if(SsmGetMaxUsableBoard() != SsmGetMaxCfgBoard())
219. {
220. bIsInitError = TRUE;
221. char t[1000];
222. SsmGetLastErrMsg(szErrMsg);
223. // wsprintf(t,"警告: 板卡总数=%d, 初始化成功板卡数=%d!n 错误信息="%s"",//masked by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.11
224. wsprintf(t,BoxMsg_Fmt_InitBoard,//added by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.11
225. SsmGetMaxCfgBoard(),
226. SsmGetMaxUsableBoard(),
227. szErrMsg);
228. if(AfxMessageBox(t, MB_OK, 0) == IDOK)
229. bIsInitError = FALSE;
230. }
231.
232. nMaxCh = SsmGetMaxCh();
233.
234. TC_ITEM * m_pTCItem;
235. m_pTCItem = new TC_ITEM;
236. m_pTCItem->mask = TCIF_TEXT;
237. m_pTCItem->pszText = "基本函数";
238. m_TabCtrl.InsertItem(0, m_pTCItem);
239. m_pTCItem->pszText = "放音函数";
240. m_TabCtrl.InsertItem(1, m_pTCItem);
241. m_pTCItem->pszText = "录音函数";
242. m_TabCtrl.InsertItem(2, m_pTCItem);
243. m_pTCItem->pszText = "事件驱动";
244. m_TabCtrl.InsertItem(3, m_pTCItem);
245. m_pTCItem->pszText = "IP函数";
246. m_TabCtrl.InsertItem(4, m_pTCItem);
247. m_pTCItem->pszText = "其它函数";
248. m_TabCtrl.InsertItem(5, m_pTCItem);
249.
250. delete m_pTCItem; //added by xxh for memory leak output, 2006.12.06
251. CRect rcBaseFram;
252. GetDlgItem(IDC_TAB_VIEW)->GetWindowRect(&rcBaseFram);
253. m_dlgBase.Create(IDD_VIEW_BASE, this);
254. m_dlgPlay.Create(IDD_VIEW_PLAY, this);
255. m_dlgRec.Create(IDD_VIEW_REC, this);
256. m_dlgEvent.Create(IDD_VIEW_EVENT, this);
257. m_dlgIP.Create(IDD_VIEW_IP, this);
258. m_dlgOther.Create(IDD_VIEW_OTHER, this);
259. hwndView[VIEW_BASE] = m_dlgBase.GetSafeHwnd();
260. hwndView[VIEW_PLAY] = m_dlgPlay.GetSafeHwnd();
261. hwndView[VIEW_REC] = m_dlgRec.GetSafeHwnd();
262. hwndView[VIEW_EVENT] = m_dlgEvent.GetSafeHwnd();
263. hwndView[VIEW_IP] = m_dlgIP.GetSafeHwnd();
264. hwndView[VIEW_OTHER] = m_dlgOther.GetSafeHwnd();
265. ScreenToClient(&rcBaseFram);
266. ::MoveWindow(hwndView[VIEW_BASE], rcBaseFram.left + 1, rcBaseFram.top + 20, rcBaseFram.Width() - 2, rcBaseFram.Height() - 21, 0);
267. ::MoveWindow(hwndView[VIEW_PLAY], rcBaseFram.left + 1, rcBaseFram.top + 20, rcBaseFram.Width() - 2, rcBaseFram.Height() - 21, 0);
268. ::MoveWindow(hwndView[VIEW_REC], rcBaseFram.left + 1, rcBaseFram.top + 20, rcBaseFram.Width() - 2, rcBaseFram.Height() - 21, 0);
269. ::MoveWindow(hwndView[VIEW_EVENT], rcBaseFram.left + 1, rcBaseFram.top + 20, rcBaseFram.Width() - 2, rcBaseFram.Height() - 21, 0);
270. ::MoveWindow(hwndView[VIEW_IP], rcBaseFram.left + 1, rcBaseFram.top + 20, rcBaseFram.Width() - 2, rcBaseFram.Height() - 21, 0);
271. ::MoveWindow(hwndView[VIEW_OTHER], rcBaseFram.left + 1, rcBaseFram.top + 20, rcBaseFram.Width() - 2, rcBaseFram.Height() - 21, 0);
272. ::ShowWindow(hwndView[VIEW_BASE], SW_SHOW);
273.
274. InitChList(TRUE);
275.
276. char szTmp[MAX_CH];
277.
278. for(int ch=0; ch<nMaxCh; ch++)
279. {
280. m_SelCurCh.InsertString(ch, _itoa(ch,szTmp,10));
281. }
282. m_SelCurCh.SetCurSel(0);
283.
284. InitChVariable();
285. OnSelchangeComboSelcurch();
286.
287. InitCallTest();
288.
289. SetDlgItemInt(IDC_EDIT_SelectAllChStart, 0,TRUE);
290. SetDlgItemInt(IDC_EDIT_SelectAllChEnd, nMaxCh-1,TRUE);
291.
292. uTimerId = SetTimer(1,200,NULL);
293. if(uTimerId == 0)
294. {
295. char t[200];
296. bIsInitError = TRUE;
297. // wsprintf(t,"错误:启动主定时器失败,请退出一些应用程序后,重新启动Testn");//masked by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.11
298. wsprintf(t,BoxMsg_TimerFail);//added by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.11
299. if(AfxMessageBox(t, MB_OK, 0) == IDOK)
300. bIsInitError = FALSE;
301. PostQuitMessage(0);
302. return ;
303. }
304. nISDNItemCnt = 0;
305.
306. char cNewStat[100];
307.
308. for(ch=0; ch<nMaxCh; ch++)
309. {
310. wsprintf(cNewStat,"%dms",SsmGetChStateKeepTime(ch));
311. m_ChList.SetItemText( ch, ITEM_ChStateKeepTime, cNewStat );
312. }
313.
314. //+++START+++ added by yxh for SpyTest, 2003.08.22
315. pDlg = new CSpyDialog;
316. pDlg->Create(IDD_DIALOG_SPY, this);
317. //+++END+++ added by yxh for SpyTest, 2003.08.22
318.
319. //++++start++++ added by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.9
320. InitLang();
321. //+++++end+++++ added by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.9
322. }
323.
324. /
325. // CTestView printing
326.
327. BOOL CTestView::OnPreparePrinting(CPrintInfo* pInfo)
328. {
329. // default preparation
330. return DoPreparePrinting(pInfo);
331. }
332.
333. void CTestView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
334. {
335. // TODO: add extra initialization before printing
336. }
337.
338. void CTestView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
339. {
340. // TODO: add cleanup after printing
341. }
342.
343. void CTestView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
344. {
345. // TODO: add customized printing code here
346. }
347.
348. /
349. // CTestView diagnostics
350.
351. #ifdef _DEBUG
352. void CTestView::AssertValid() const
353. {
354. CFormView::AssertValid();
355. }
356.
357. void CTestView::Dump(CDumpContext& dc) const
358. {
359. CFormView::Dump(dc);
360. }
361.
362. CTestDoc* CTestView::GetDocument() // non-debug version is inline
363. {
364. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTestDoc)));
365. return (CTestDoc*)m_pDocument;
366. }
367. #endif //_DEBUG
368.
369. /
370. // CTestView message handlers
371.
372.
373. void CTestView::InitChVariable()
374. {
375. int ch;
376. // char szTmp[60];
377.
378. // strcpy(szTmp,"\..\..\testvoc");
379. GetCurrentDirectory(MAX_PATH,szCurPath);
380. // strcat(szCurPath,szTmp);
381.
382. for(ch=0; ch<nMaxCh; ch++) bEnableOpToneAnalyze[ch] = (SsmQueryOpToneAnalyze(ch)==1) ? TRUE : FALSE;
383. for(ch=0; ch<nMaxCh; ch++) bEnableOpBlockRemoteCh[ch] = (SsmQueryOpBlockRemoteCh(ch)==1) ? TRUE : FALSE;
384. for(ch=0; ch<nMaxCh; ch++) bEnableOpRingDetect[ch] = (SsmQueryOpRingDetect(ch)==1) ? TRUE : FALSE;
385. for(ch=0; ch<nMaxCh; ch++) bEnableOpEchoCanceller[ch] = (SsmQueryOpEchoCanceller(ch)==1) ? TRUE : FALSE;
386. for(ch=0; ch<nMaxCh; ch++) bEnableOpADC[ch] = (SsmQueryOpADC(ch)==1) ? TRUE : FALSE;
387.
388. SetDlgItemInt(IDC_EDIT_LocalFlashTime, 500, TRUE);
389. }
390.
391. //#define MAXITEM 35 //masked by yxh for GetDKeyStr, 2005.09.02
392. //#define MAXITEM 36 //added by yxh for GetDKeyStr, 2005.09.02//masked by LCL for RingCounter, 2005.09.19
393. //#define MAXITEM 37 added by LCL for RingCounter, 2005.09.19
394. //#define MAXITEM 38 added by cy for GetPLayType, 2006.07.10
395. #define MAXITEM 39 added by hunnad for GetPLayType, 2007.10.18
396.
397. enum{
398. ITEM_PcmNo,
399. ITEM_TIME,
400. ITEM_L2Status,
401. ITEM_L2D_L3Atom,
402. ITEM_L3Start,
403. ITEM_L3_L2DAtom,
404. ITEM_RefInd,
405. };
406.
407. #define MAXISDNITEM 7
408.
409. void CTestView::UpdateChList()
410. {
411. for(int ch=0; ch<nMaxCh; ch++)
412. {
413. char cNewStat[250];
414. int nDirection;
415. switch(SsmGetChType(ch))
416. {
417. //++++start++++ masked by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.9
418. /* case 14: wsprintf(cNewStat, "变声"); break;
419. case 9: wsprintf(cNewStat,"软传真"); break;
420. case 10: wsprintf(cNewStat,"磁石"); break;
421. case 0: wsprintf(cNewStat,"模拟"); break;
422. case 1: wsprintf(cNewStat,"内线"); break;
423. case 2: wsprintf(cNewStat,"坐席"); break;
424. case 3: wsprintf(cNewStat,"录音"); break;
425. case 4:
426. if(SsmGetAutoCallDirection(ch,&nDirection) == 0)
427. {
428. if (nDirection==3)
429. wsprintf(cNewStat,"SS1Spy");
430. else
431. wsprintf(cNewStat,"SS1");
432. }
433. else if(nDirection==0) wsprintf(cNewStat,"SS1i");
434. else if(nDirection==1) wsprintf(cNewStat,"SS1o");
435. else wsprintf(cNewStat,"SS1io");
436. break;
437. case 5: wsprintf(cNewStat,"传真"); break;
438. case 6:
439. if(SsmGetAutoCallDirection(ch,&nDirection) == 0)
440. {
441. if (nDirection==3)
442. wsprintf(cNewStat,"SS7Spy");
443. else
444. wsprintf(cNewStat,"SS7");
445. }
446. else if(nDirection==0) wsprintf(cNewStat,"TUPi");
447. else if(nDirection==1) wsprintf(cNewStat,"TUPo");
448. else if(nDirection==2) wsprintf(cNewStat,"TUPio");
449. else wsprintf(cNewStat,"TUP-x");
450. break;
451. case 7: //ISDN User ch
452. if(SsmGetAutoCallDirection(ch,&nDirection) == 0)
453. {
454. if (nDirection==3)
455. wsprintf(cNewStat,"ISDNSpy");
456. else
457. wsprintf(cNewStat,"ISDN");
458. }
459. else if(nDirection==0) wsprintf(cNewStat,"ISDNi");
460. else if(nDirection==1) wsprintf(cNewStat,"ISDNo");
461. else if(nDirection==2) wsprintf(cNewStat,"ISDNio");
462. else wsprintf(cNewStat,"ISDN");
463. break;
464. case 8: //Isdn Net ch
465. if(SsmGetAutoCallDirection(ch,&nDirection) == 0)
466. {
467. if (nDirection==3)
468. wsprintf(cNewStat,"ISDNNetSpy");
469. else
470. wsprintf(cNewStat,"ISDNNet");
471. }
472. else if(nDirection==0) wsprintf(cNewStat,"ISDNNeti");
473. else if(nDirection==1) wsprintf(cNewStat,"ISDNNeto");
474. else if(nDirection==2) wsprintf(cNewStat,"ISDNNetio");
475. else wsprintf(cNewStat,"ISDNNet");
476. break;
477.
478. case 11: wsprintf(cNewStat,"ISUPio");break;
479.
480. //+++START+++ added by yxh for 2B+D, 2005.01.26
481. case 12: wsprintf(cNewStat, "DTR"); break;
482. //+++ END +++ added by yxh for 2B+D, 2005.01.26
483. default:
484. wsprintf(cNewStat,"-1"); break;
485. break;
486. }
487. */
488. //+++++end+++++ masked by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.9
489. //++++start++++ added by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.9
490. case 14: LoadString(g_hInstance, IDS_CHTYPE_14, cNewStat, sizeof(cNewStat)); break;
491. case 9: LoadString(g_hInstance, IDS_CHTYPE_9, cNewStat, sizeof(cNewStat)); break;
492. case 10: LoadString(g_hInstance, IDS_CHTYPE_10, cNewStat, sizeof(cNewStat)); break;
493. case 0: LoadString(g_hInstance, IDS_CHTYPE_0, cNewStat, sizeof(cNewStat)); break;
494. case 1: LoadString(g_hInstance, IDS_CHTYPE_1, cNewStat, sizeof(cNewStat)); break;
495. case 2: LoadString(g_hInstance, IDS_CHTYPE_2, cNewStat, sizeof(cNewStat)); break;
496. case 3: LoadString(g_hInstance, IDS_CHTYPE_3, cNewStat, sizeof(cNewStat)); break;
497. case 4:
498. if(SsmGetAutoCallDirection(ch,&nDirection) == 0)
499. {
500. if (nDirection==3)
501. wsprintf(cNewStat,"SS1Spy");
502. else
503. wsprintf(cNewStat,"SS1");
504. }
505. else if(nDirection==0) wsprintf(cNewStat,"SS1i");
506. else if(nDirection==1) wsprintf(cNewStat,"SS1o");
507. else wsprintf(cNewStat,"SS1io");
508. break;
509. case 5: LoadString(g_hInstance, IDS_CHTYPE_5, cNewStat, sizeof(cNewStat)); break;
510. case 6:
511. if(SsmGetAutoCallDirection(ch,&nDirection) == 0)
512. {
513. if (nDirection==3)
514. wsprintf(cNewStat,"SS7Spy");
515. else
516. wsprintf(cNewStat,"SS7");
517. }
518. else if(nDirection==0) wsprintf(cNewStat,"TUPi");
519. else if(nDirection==1) wsprintf(cNewStat,"TUPo");
520. else if(nDirection==2) wsprintf(cNewStat,"TUPio");
521. else wsprintf(cNewStat,"TUP-x");
522. break;
523. case 7: //ISDN User ch
524. if(SsmGetAutoCallDirection(ch,&nDirection) == 0)
525. {
526. if (nDirection==3)
527. wsprintf(cNewStat,"ISDNSpy");
528. else
529. wsprintf(cNewStat,"ISDN");
530. }
531. else if(nDirection==0) wsprintf(cNewStat,"ISDNi");
532. else if(nDirection==1) wsprintf(cNewStat,"ISDNo");
533. else if(nDirection==2) wsprintf(cNewStat,"ISDNio");
534. else wsprintf(cNewStat,"ISDN");
535. break;
536. case 8: //Isdn Net ch
537. if(SsmGetAutoCallDirection(ch,&nDirection) == 0)
538. {
539. if (nDirection==3)
540. wsprintf(cNewStat,"ISDNNetSpy");
541. else
542. wsprintf(cNewStat,"ISDNNet");
543. }
544. else if(nDirection==0) wsprintf(cNewStat,"ISDNNeti");
545. else if(nDirection==1) wsprintf(cNewStat,"ISDNNeto");
546. else if(nDirection==2) wsprintf(cNewStat,"ISDNNetio");
547. else wsprintf(cNewStat,"ISDNNet");
548. break;
549.
550. case 11: wsprintf(cNewStat,"ISUPio");break;
551.
552. //+++START+++ added by yxh for 2B+D, 2005.01.26
553. case 12: wsprintf(cNewStat, "DTR"); break;
554. //+++ END +++ added by yxh for 2B+D, 2005.01.26
555.
556. //+++START+++ added by wza for voip, 2006.12.27
557. case 15: wsprintf(cNewStat, "H323"); break;
558. case 16: wsprintf(cNewStat, "SIP"); break;
559. //+++ END +++ added by wza for voip, 2005.12.27
560.
561. default:
562. wsprintf(cNewStat,"-1"); break;
563. break;
564. }
565. //+++++end+++++ added by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.9
566. m_ChList.SetItemText( ch, ITEM_ChHwType, cNewStat);
567. }
568. }
569.
570. void CTestView::InitChList(BOOL bFistTime)
571. {
572. LV_COLUMN lvc[MAXITEM];
573. LIST_PARA MainList[MAXITEM] =
574. {
575. {24 ,"Ch",},
576. {60 ,"类型"},
577. {60 ,"状态"},
578. {45 ,"RCnt"},
579. {80 ,"CheckSendRCnt"}, //added by LCL for RingCounter, 2005.09.19
580. {100 ,"DTMF接收缓冲区"},
581. {42 ,"TnChk"},
582. {42 ,"2ndTnChk"},//ADDED BY yxd 2003.3.20
583. {24 ,"BI"},
584. {40 ,"Snd"},
585. {45 ,"PTime"},
586. {45 ,"PTimeEx"}, //Added By cqb For SHCTI030902 Test
587. {30 ,"P%"},
588. {55 ,"ChkPlay"},
589. {55,"GetPlayType"},
590. {55 ,"RecTime"},
591. {55 ,"ChkRec"},
592. {70 ,"OvrEnrg"},
593. {30 ,"AF"},
594. {30 ,"AFS"},
595. {30 ,"ECR"},
596. {80, "LCD"},
597. {80, "DKEY"}, //added by yxh for GetDKeyStr, 2005.09.02
598. {80 ,"CallerId"},
599. {80 ,"CallerIdEx"},
600. {30 ,"Vad"},
601. {50 ,"Fpeak"},
602. {45 ,"RxCAS"},
603. {45 ,"TxCAS"},
604. {45 ,"RxR2"},
605. {45 ,"TxR2"},
606. {160,"挂起原因"},
607. {60 ,"状态时间"},
608. {80 ,"被叫号码"},
609. {60 ,"极性反转"},
610. {120 ,"闭塞对端"},
611. {150 ,"呼出统计:收号/接续/总数/接续错/收号错"},
612. {150 ,"呼入统计:收号/接续/总数"} ,
613. {150, "IP编码格式"}
614. };
615.
616. m_ChList.SetBkColor(RGB(0,0,0));
617. m_ChList.SetTextColor(RGB(0,255,0));
618. m_ChList.SetTextBkColor(RGB(0,0,0));
619.
620. DWORD dwExtendedStyle = m_ChList.GetExtendedStyle();
621. dwExtendedStyle |= LVS_EX_FULLROWSELECT;
622. m_ChList.SetExtendedStyle(dwExtendedStyle);
623.
624. for(WORD i=0; i<MAXITEM; i++ )
625. {
626. lvc[i].mask = LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM | LVCF_FMT;
627. lvc[i].iSubItem = i;
628. lvc[i].pszText = MainList[i].szText;
629. lvc[i].cx = MainList[i].ColumnWidth;
630. if(i==0||i==17) lvc[i].fmt = LVCFMT_LEFT;
631. else lvc[i].fmt = LVCFMT_RIGHT;
632. if(bFistTime)
633. m_ChList.InsertColumn(i,&lvc[i]);
634. }
635.
636. m_ChList.DeleteAllItems();
637.
638. char dig[4];
639.
640. for(i=0; i<nMaxCh; i++)
641. m_ChList.InsertItem(i,_itoa(i,dig,10));
642.
643.
644. for(int ch=0; ch<nMaxCh; ch++)
645. {
646.
647. UpdateChList();
648.
649. nOldChState[ch] = -100;
650. nOldRingCount[ch] = -100;
651. nOldRingFlag[ch] = -100;
652. nSendRingRst[ch] = -100; //added by LCL for RingCounter, 2005.09.19
653. nSendRingCnt[ch] = -100; //added by LCL for RingCounter, 2005.09.19
654. nToneAnalyzeResult[ch] = -100;
655. n2ndToneAnalyzeResult[ch] = -100;//ADDED BY yxd 2003.3.20
656. nOldChkPlay[ch] = -100;
657. nOldGetPlayType[ch] = -100;
658. nOldChkRec[ch] = -100;
659. nOldSsmDetectBargeIn[ch] = -100;
660. lOldPlayedTime[ch] = -100L;
661. lOldPlayedTimeEx[ch] = -100L;
662. lOldRecTime[ch] = -100l;
663. lOldOverallEnergy[ch] = -100l;
664. nPlayedPct[ch] = -100;
665. nOldCallerIdEx[ch] = -100;
666. nOldEchoCancellerState[ch] = -100;
667. nOldEchoCancellerStudyState[ch] = -100;
668. nOldEchoCancellerRatio[ch] = -100;
669. nOldCallerI[ch] = -100;
670. nOldRxPhoNumLen[ch] = -100;
671. nOldLineVoltage[ch] = -100;
672. nOldPeakFrq[ch] = -100;
673. nOldGetCAS[ch] = -100;
674. nOldSendingCAS[ch] = -100;
675. nOldGetR2[ch] = -100;
676. nOldSendingR2[ch] = -100;
677. nOldGetSendingR2[ch] = -100;
678. nOldSendingR2Mode[ch] = -100;
679. nOldPhoNumStr[ch] = -100;
680. nOldPloarRvrsCount[ch] = -100;
681. nOldBlockRemoteStatus[ch] = -100;
682. //add by JK shi for 支持SetKB功能, begin
683. nOldPendReason[ch] = -100;
684. //add by JK shi for 支持SetKB功能, end
685. }
686. }
687.
688. void CTestView::OnDestroy()
689. {
690. CFormView::OnDestroy();
691.
692. // TODO: Add your message handler code here
693. if(nIsSsmStartCtiOK == 0)
694. {
695. SsmCloseCti();
696. }
697. KillTimer( uTimerId );
698. //+++START+++ added by yxh for SpyTest, 2003.08.22
699. if(pDlg != NULL)
700. {
701. delete pDlg;
702. }
703. //+++END+++ added by yxh for SpyTest, 2003.08.22
704. }
705.
706. long lOldTime[MAX_CH];
707. DWORD dwEnergyTable[MAX_CH];
708.
709. void CTestView::OnTimer(UINT nIDEvent)
710. {
711. // TODO: Add your message handler code here and/or call default
712. char cNewStat[600],cOldStat[600],szRxCallerId[300];
713. //add by JK shi for 支持SetKB功能, begin
714. int nNewPendReason, nShowUpdate ;
715. //add by JK shi for 支持SetKB功能, end
716.
717. int nResult, nNewChState, nRingFlag, nRet ;
718. long lResult;
719. //static long lOldTime[MAX_CH];
720.
721. if(!bTimerOpen)
722. return ;
723.
724. int nEnergy;
725. // if((lResult=SsmGetOverallEnergyAllCh(0, 30, dwEnergyTable)) != -1)
726. for(int k=0; k<nMaxCh; k++)
727. {
728. nEnergy=SsmGetOverallEnergy(k);
729. if(nEnergy>=0)
730. {
731. _itoa(nEnergy,cNewStat,10);
732. m_ChList.SetItemText( k, ITEM_OverallEnergy, cNewStat );
733. }
734. }
735.
736. for(int ch=0; ch<nMaxCh; ch++)
737. {
738. if((nNewChState=SsmGetChState(ch)) != nOldChState[ch])
739. {
740. //++++start++++ masked by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.9
741. /* switch(nNewChState)
742. {
743. case -1: wsprintf(cNewStat,"-1"); break;
744. case S_CALL_STANDBY: wsprintf(cNewStat,"空闲"); break;
745. case S_CALL_PICKUPED: wsprintf(cNewStat,"摘机"); break;
746. case S_CALL_RINGING: wsprintf(cNewStat,"振铃"); break;
747. case S_CALL_TALKING: wsprintf(cNewStat,"通话"); break;
748.
749. case S_CALL_ANALOG_WAITDIALTONE: wsprintf(cNewStat,"WtDT"); break;
750. case S_CALL_ANALOG_TXPHONUM: wsprintf(cNewStat,"Dl.."); break;
751. case S_CALL_ANALOG_WAITDIALRESULT: wsprintf(cNewStat,"WtDl"); break;
752.
753. case S_CALL_PENDING: wsprintf(cNewStat,"挂起"); break;
754. case S_CALL_OFFLINE: wsprintf(cNewStat,"断线"); break;
755. case S_CALL_WAIT_REMOTE_PICKUP: wsprintf(cNewStat,"回铃"); break;
756. case S_CALL_UNAVAILABLE: wsprintf(cNewStat,"不可用"); break;
757. case S_CALL_LOCKED: wsprintf(cNewStat,"呼出保留"); break;
758.
759. case S_CALL_LocalBlock: wsprintf(cNewStat,"本地闭塞"); break;
760. case S_CALL_RemoteBlock: wsprintf(cNewStat,"对端闭塞"); break;
761.
762. case S_CALL_Ss1InWaitPhoNum : wsprintf(cNewStat,"接收被叫"); break;
763. case S_CALL_Ss1InWaitFwdStop : wsprintf(cNewStat,"等待前向"); break;
764. case S_CALL_Ss1InWaitCallerID: wsprintf(cNewStat,"接收主叫"); break;
765. case S_CALL_Ss1InWaitKD : wsprintf(cNewStat,"接收KD"); break;
766. case S_CALL_Ss1InWaitKDStop : wsprintf(cNewStat,"等KD停发"); break;
767. case S_CALL_SS1_SAYIDLE : wsprintf(cNewStat,"发送示闲"); break;
768. case S_CALL_SS1WaitIdleCAS : wsprintf(cNewStat,"等待示闲"); break;
769. case S_CALL_SS1PhoNumHoldup : wsprintf(cNewStat,"S_CALL_SS1PhoNumHoldup"); break;
770. case S_CALL_Ss1InWaitStopSendA3p: wsprintf(cNewStat,"S_CALL_Ss1InWaitStopSendA3p"); break;
771.
772. case S_CALL_Ss1OutWaitBwdAck : wsprintf(cNewStat,"等待后向占用证实信令”"); break;
773. case S_CALL_Ss1OutTxPhoNum : wsprintf(cNewStat,"发送被叫"); break;
774. case S_CALL_Ss1OutWaitAppendPhoNum: wsprintf(cNewStat,"号码不足"); break;
775. case S_CALL_Ss1OutTxCallerID : wsprintf(cNewStat,"发送主叫"); break;
776. case S_CALL_Ss1OutWaitKB : wsprintf(cNewStat,"等待KB"); break;
777.
778. case S_FAX_ROUND : wsprintf(cNewStat,"状态转移过程中"); break;
779. case S_FAX_PhaseA : wsprintf(cNewStat,"呼叫建立"); break;
780. case S_FAX_PhaseB : wsprintf(cNewStat,"报文前处理"); break;
781. case S_FAX_SendDCS : wsprintf(cNewStat,"发送DCS信号"); break;
782. case S_FAX_Train : wsprintf(cNewStat,"传输训练"); break;
783. case S_FAX_PhaseC : wsprintf(cNewStat,"报文传输"); break;
784. case S_FAX_PhaseD : wsprintf(cNewStat,"报文后处理"); break;
785. case S_FAX_NextPage: wsprintf(cNewStat,"传输下页"); break;
786. case S_FAX_AllSent : wsprintf(cNewStat,"传输结束"); break;
787. case S_FAX_PhaseE : wsprintf(cNewStat,"呼叫释放"); break;
788. case S_FAX_Reset : wsprintf(cNewStat,"复位猫"); break;
789. case S_FAX_Init : wsprintf(cNewStat,"初始化猫"); break;
790. case S_FAX_RcvDCS : wsprintf(cNewStat,"接收DCS"); break;
791. case S_FAX_SendFTT : wsprintf(cNewStat,"发送训练失败信号FTT"); break;
792. case S_FAX_SendCFR : wsprintf(cNewStat,"发送证实信号CFR"); break;
793.
794. case S_TUP_WaitPcmReset: wsprintf(cNewStat,"电路复原"); break;
795. case S_TUP_WaitSAM: wsprintf(cNewStat,"等待SAM"); break;
796. case S_TUP_WaitGSM: wsprintf(cNewStat,"等待GSM"); break;
797. case S_TUP_WaitCLF: wsprintf(cNewStat,"等待CLF"); break;
798. case S_TUP_WaitPrefix: wsprintf(cNewStat,"接收局号"); break;
799. case S_TUP_WaitDialAnswer: wsprintf(cNewStat,"等待应答"); break;
800. case S_TUP_WaitRLG: wsprintf(cNewStat,"等待RLG"); break;
801.
802. case S_ISDN_OUT_WAIT_NET_RESPONSE: wsprintf(cNewStat, "等待网络响应"); break;
803. case S_ISDN_OUT_PLS_APPEND_NO: wsprintf(cNewStat, "等待追加号码"); break;
804. case S_ISDN_IN_CHK_CALL_IN: wsprintf(cNewStat, "检测到呼入"); break;
805. case S_ISDN_IN_RCVING_NO: wsprintf(cNewStat,"正在接收号码"); break;
806. case S_ISDN_IN_WAIT_TALK: wsprintf(cNewStat, "准备进入通话"); break;
807. case S_ISDN_OUT_WAIT_ALERT: wsprintf(cNewStat, "等待提醒信号"); break;
808. case S_ISDN_CALL_BEGIN: wsprintf(cNewStat, "呼叫起始"); break;
809. case S_ISDN_WAIT_HUANGUP: wsprintf(cNewStat, "等待释放"); break;
810.
811. case S_CALL_SENDRING: wsprintf(cNewStat, "发送振铃"); break;
812.
813. case S_ISUP_WaitSAM: wsprintf(cNewStat, "等待SAM"); break;
814. case S_ISUP_WaitRLC: wsprintf(cNewStat, "等待RLC"); break;
815. case S_ISUP_WaitReset: wsprintf(cNewStat, "电路复原"); break;
816. case S_ISUP_LocallyBlocked: wsprintf(cNewStat, "本地阻断"); break;
817. case S_ISUP_RemotelyBlocked: wsprintf(cNewStat, "远端阻断"); break;
818. case S_ISUP_WaitDialAnswer: wsprintf(cNewStat, "等待ACM"); break;
819. case S_ISUP_WaitINF: wsprintf(cNewStat, "等待INF"); break;
820. case S_DTRC_ACTIVE: wsprintf(cNewStat, "Active"); break;
821.
822. default: wsprintf(cNewStat,"S=%d",nNewChState); break;
823. }*/
824. //+++++end+++++ masked by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.9
825. //++++start++++ added by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.9
826. switch(nNewChState)
827. {
828. case -1: wsprintf(cNewStat,"-1"); break;
829. case S_CALL_STANDBY: LoadString(g_hInstance, IDS_S_CALL_STANDBY, cNewStat, sizeof(cNewStat)); break;
830. case S_CALL_PICKUPED: LoadString(g_hInstance, IDS_S_CALL_PICKUPED, cNewStat, sizeof(cNewStat)); break;
831. case S_CALL_RINGING: LoadString(g_hInstance, IDS_S_CALL_RINGING, cNewStat, sizeof(cNewStat)); break;
832. case S_CALL_TALKING: LoadString(g_hInstance, IDS_S_CALL_TALKING, cNewStat, sizeof(cNewStat)); break;
833.
834. case S_CALL_ANALOG_WAITDIALTONE: wsprintf(cNewStat,"WtDT"); break;
835. case S_CALL_ANALOG_TXPHONUM: wsprintf(cNewStat,"Dl.."); break;
836. case S_CALL_ANALOG_WAITDIALRESULT: wsprintf(cNewStat,"WtDl"); break;
837.
838. case S_CALL_PENDING: LoadString(g_hInstance, IDS_S_CALL_PENDING, cNewStat, sizeof(cNewStat)); break;
839. case S_CALL_OFFLINE: LoadString(g_hInstance, IDS_S_CALL_OFFLINE, cNewStat, sizeof(cNewStat)); break;
840. case S_CALL_WAIT_REMOTE_PICKUP: LoadString(g_hInstance, IDS_S_CALL_WAIT_REMOTE_PICKUP, cNewStat, sizeof(cNewStat)); break;
841. case S_CALL_UNAVAILABLE: LoadString(g_hInstance, IDS_S_CALL_UNAVAILABLE, cNewStat, sizeof(cNewStat)); break;
842. case S_CALL_LOCKED: LoadString(g_hInstance, IDS_S_CALL_LOCKED, cNewStat, sizeof(cNewStat)); break;
843.
844. case S_CALL_LocalBlock: LoadString(g_hInstance, IDS_S_CALL_LocalBlock, cNewStat, sizeof(cNewStat)); break;
845. case S_CALL_RemoteBlock: LoadString(g_hInstance, IDS_S_CALL_RemoteBlock, cNewStat, sizeof(cNewStat)); break;
846.
847. case S_CALL_Ss1InWaitPhoNum : LoadString(g_hInstance, IDS_S_CALL_Ss1InWaitPhoNum, cNewStat, sizeof(cNewStat)); break;
848. case S_CALL_Ss1InWaitFwdStop : LoadString(g_hInstance, IDS_S_CALL_Ss1InWaitFwdStop, cNewStat, sizeof(cNewStat)); break;
849. case S_CALL_Ss1InWaitCallerID: LoadString(g_hInstance, IDS_S_CALL_Ss1InWaitCallerID, cNewStat, sizeof(cNewStat)); break;
850. case S_CALL_Ss1InWaitKD : LoadString(g_hInstance, IDS_S_CALL_Ss1InWaitKD, cNewStat, sizeof(cNewStat)); break;
851. case S_CALL_Ss1InWaitKDStop : LoadString(g_hInstance, IDS_S_CALL_Ss1InWaitKDStop, cNewStat, sizeof(cNewStat)); break;
852. case S_CALL_SS1_SAYIDLE : LoadString(g_hInstance, IDS_S_CALL_SS1_SAYIDLE, cNewStat, sizeof(cNewStat)); break;
853. case S_CALL_SS1WaitIdleCAS : LoadString(g_hInstance, IDS_S_CALL_SS1WaitIdleCAS, cNewStat, sizeof(cNewStat)); break;
854. case S_CALL_SS1PhoNumHoldup : LoadString(g_hInstance, IDS_S_CALL_SS1PhoNumHoldup, cNewStat, sizeof(cNewStat)); break;
855. case S_CALL_Ss1InWaitStopSendA3p: LoadString(g_hInstance, IDS_S_CALL_Ss1InWaitStopSendA3p, cNewStat, sizeof(cNewStat)); break;
856.
857. case S_CALL_Ss1OutWaitBwdAck : LoadString(g_hInstance, IDS_S_CALL_Ss1OutWaitBwdAck, cNewStat, sizeof(cNewStat)); break;
858. case S_CALL_Ss1OutTxPhoNum : LoadString(g_hInstance, IDS_S_CALL_Ss1OutTxPhoNum, cNewStat, sizeof(cNewStat)); break;
859. case S_CALL_Ss1OutWaitAppendPhoNum: LoadString(g_hInstance, IDS_S_CALL_Ss1OutWaitAppendPhoNum, cNewStat, sizeof(cNewStat)); break;
860. case S_CALL_Ss1OutTxCallerID : LoadString(g_hInstance, IDS_S_CALL_Ss1OutTxCallerID, cNewStat, sizeof(cNewStat)); break;
861. case S_CALL_Ss1OutWaitKB : LoadString(g_hInstance, IDS_S_CALL_Ss1OutWaitKB, cNewStat, sizeof(cNewStat)); break;
862.
863. case S_FAX_ROUND : LoadString(g_hInstance, IDS_S_FAX_ROUND, cNewStat, sizeof(cNewStat)); break;
864. case S_FAX_PhaseA : LoadString(g_hInstance, IDS_S_FAX_PhaseA, cNewStat, sizeof(cNewStat)); break;
865. case S_FAX_PhaseB : LoadString(g_hInstance, IDS_S_FAX_PhaseB, cNewStat, sizeof(cNewStat)); break;
866. case S_FAX_SendDCS : LoadString(g_hInstance, IDS_S_FAX_SendDCS, cNewStat, sizeof(cNewStat)); break;
867. case S_FAX_Train : LoadString(g_hInstance, IDS_S_FAX_Train, cNewStat, sizeof(cNewStat)); break;
868. case S_FAX_PhaseC : LoadString(g_hInstance, IDS_S_FAX_PhaseC, cNewStat, sizeof(cNewStat)); break;
869. case S_FAX_PhaseD : LoadString(g_hInstance, IDS_S_FAX_PhaseD, cNewStat, sizeof(cNewStat)); break;
870. case S_FAX_NextPage: LoadString(g_hInstance, IDS_S_FAX_NextPage, cNewStat, sizeof(cNewStat)); break;
871. case S_FAX_AllSent : LoadString(g_hInstance, IDS_S_FAX_AllSent, cNewStat, sizeof(cNewStat)); break;
872. case S_FAX_PhaseE : LoadString(g_hInstance, IDS_S_FAX_PhaseE, cNewStat, sizeof(cNewStat)); break;
873. case S_FAX_Reset : LoadString(g_hInstance, IDS_S_FAX_Reset, cNewStat, sizeof(cNewStat)); break;
874. case S_FAX_Init : LoadString(g_hInstance, IDS_S_FAX_Init, cNewStat, sizeof(cNewStat)); break;
875. case S_FAX_RcvDCS : LoadString(g_hInstance, IDS_S_FAX_RcvDCS, cNewStat, sizeof(cNewStat)); break;
876. case S_FAX_SendFTT : LoadString(g_hInstance, IDS_S_FAX_SendFTT, cNewStat, sizeof(cNewStat)); break;
877. case S_FAX_SendCFR : LoadString(g_hInstance, IDS_S_FAX_SendCFR, cNewStat, sizeof(cNewStat)); break;
878.
879. case S_TUP_WaitPcmReset: LoadString(g_hInstance, IDS_S_TUP_WaitPcmReset, cNewStat, sizeof(cNewStat)); break;
880. case S_TUP_WaitSAM: LoadString(g_hInstance, IDS_S_TUP_WaitSAM, cNewStat, sizeof(cNewStat)); break;
881. case S_TUP_WaitGSM: LoadString(g_hInstance, IDS_S_TUP_WaitGSM, cNewStat, sizeof(cNewStat)); break;
882. case S_TUP_WaitCLF: LoadString(g_hInstance, IDS_S_TUP_WaitCLF, cNewStat, sizeof(cNewStat)); break;
883. case S_TUP_WaitPrefix: LoadString(g_hInstance, IDS_S_TUP_WaitPrefix, cNewStat, sizeof(cNewStat)); break;
884. case S_TUP_WaitDialAnswer: LoadString(g_hInstance, IDS_S_TUP_WaitDialAnswer, cNewStat, sizeof(cNewStat)); break;
885. case S_TUP_WaitRLG: LoadString(g_hInstance, IDS_S_TUP_WaitRLG, cNewStat, sizeof(cNewStat)); break;
886.
887. case S_ISDN_OUT_WAIT_NET_RESPONSE: LoadString(g_hInstance, IDS_S_ISDN_OUT_WAIT_NET_RESPONSE, cNewStat, sizeof(cNewStat)); break;
888. case S_ISDN_OUT_PLS_APPEND_NO: LoadString(g_hInstance, IDS_S_ISDN_OUT_PLS_APPEND_NO, cNewStat, sizeof(cNewStat)); break;
889. case S_ISDN_IN_CHK_CALL_IN: LoadString(g_hInstance, IDS_S_ISDN_IN_CHK_CALL_IN, cNewStat, sizeof(cNewStat)); break;
890. case S_ISDN_IN_RCVING_NO: LoadString(g_hInstance, IDS_S_ISDN_IN_RCVING_NO, cNewStat, sizeof(cNewStat)); break;
891. case S_ISDN_IN_WAIT_TALK: LoadString(g_hInstance, IDS_S_ISDN_IN_WAIT_TALK, cNewStat, sizeof(cNewStat)); break;
892. case S_ISDN_OUT_WAIT_ALERT: LoadString(g_hInstance, IDS_S_ISDN_OUT_WAIT_ALERT, cNewStat, sizeof(cNewStat)); break;
893. case S_ISDN_CALL_BEGIN: LoadString(g_hInstance, IDS_S_ISDN_CALL_BEGIN, cNewStat, sizeof(cNewStat)); break;
894. case S_ISDN_WAIT_HUANGUP: LoadString(g_hInstance, IDS_S_ISDN_WAIT_HUANGUP, cNewStat, sizeof(cNewStat)); break;
895.
896. case S_CALL_SENDRING: LoadString(g_hInstance, IDS_S_CALL_SENDRING, cNewStat, sizeof(cNewStat)); break;
897.
898. case S_ISUP_WaitSAM: LoadString(g_hInstance, IDS_S_ISUP_WaitSAM, cNewStat, sizeof(cNewStat)); break;
899. case S_ISUP_WaitRLC: LoadString(g_hInstance, IDS_S_ISUP_WaitRLC, cNewStat, sizeof(cNewStat)); break;
900. case S_ISUP_WaitReset: LoadString(g_hInstance, IDS_S_ISUP_WaitReset, cNewStat, sizeof(cNewStat)); break;
901. case S_ISUP_LocallyBlocked: LoadString(g_hInstance, IDS_S_ISUP_LocallyBlocked, cNewStat, sizeof(cNewStat)); break;
902. case S_ISUP_RemotelyBlocked: LoadString(g_hInstance, IDS_S_ISUP_RemotelyBlocked, cNewStat, sizeof(cNewStat)); break;
903. case S_ISUP_WaitDialAnswer: LoadString(g_hInstance, IDS_S_ISUP_WaitDialAnswer, cNewStat, sizeof(cNewStat)); break;
904. case S_ISUP_WaitINF: LoadString(g_hInstance, IDS_S_ISUP_WaitINF, cNewStat, sizeof(cNewStat)); break;
905. case S_DTRC_ACTIVE: LoadString(g_hInstance, IDS_S_DTRC_ACTIVE, cNewStat, sizeof(cNewStat)); break;
906.
907. case S_CALL_VOIP_DIALING: LoadString(g_hInstance, IDS_S_VOIP_DIALING, cNewStat, sizeof(cNewStat)); break;
908. case S_CALL_VOIP_WAIT_CONNECTED: LoadString(g_hInstance, IDS_S_VOIP_WAIT_CONNECTED, cNewStat, sizeof(cNewStat)); break;
909. case S_CALL_VOIP_CHANNEL_UNUSABLE: LoadString(g_hInstance, IDS_S_VOIP_CHANNEL_UNUSABLE, cNewStat, sizeof(cNewStat)); break;
910.
911. default: wsprintf(cNewStat,"S=%d",nNewChState); break;
912. }
913. //+++++end+++++ added by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.9
914. m_ChList.SetItemText( ch, ITEM_ChState, cNewStat );
915. }
916.
917. if(bEnableOpRingDetect[ch])
918. {
919. nResult = SsmGetRingCount(ch);
920. nRingFlag = SsmGetRingFlag(ch);
921. if(nResult!=nOldRingCount[ch] || nRingFlag!=nOldRingFlag[ch])
922. {
923. wsprintf(cNewStat,"%d:%d",nRingFlag,nResult);
924. m_ChList.SetItemText( ch, ITEM_RingCount, cNewStat );
925. nOldRingCount[ch] = nResult;
926. nOldRingFlag[ch] = nRingFlag;
927. }
928. }
929.
930. //+++START+++ added by LCL for RingCounter, 2005.09.19
931. int nSendRCnt = 0;
932. nResult = SsmCheckSendRing(ch, &nSendRCnt);
933. if(nSendRingRst[ch] != nResult || nSendRingCnt[ch] != nSendRCnt)
934. {
935. wsprintf(cNewStat, "%d:%d", nSendRCnt, nResult);
936. m_ChList.SetItemText(ch, ITEM_SendRingCount, cNewStat);
937. nSendRingCnt[ch] = nSendRCnt;
938. nSendRingRst[ch] = nResult;
939. }
940. //+++ END +++ added by LCL for RingCounter, 2005.09.19
941.
942. nResult = SsmGetDtmfStr(ch,cNewStat);
943. if(nResult == -1) wsprintf(cNewStat,"-1");
944. else if (nResult == 0) wsprintf(cNewStat,"");
945. nResult = m_ChList.GetItemText( ch, ITEM_RxDTMF, cOldStat, 255 );
946. if(nResult==0)
947. cOldStat[0]='';
948. if ( strcmp(cNewStat,cOldStat) != 0 )
949. m_ChList.SetItemText( ch, ITEM_RxDTMF, cNewStat );
950.
951.
952. if(bEnableOpToneAnalyze[ch])
953. {
954. if((nResult=SsmGetToneAnalyzeResult(ch)) != nToneAnalyzeResult[ch])
955. {
956. nToneAnalyzeResult[ch] = nResult;
957. switch(nResult)
958. {
959. case -1: wsprintf(cNewStat,"-1"); break;
960. case 0: wsprintf(cNewStat,"?"); break;
961. case 1: wsprintf(cNewStat,"DlTn"); break;
962. case 2: wsprintf(cNewStat,"BsTn"); break;
963. case 3: wsprintf(cNewStat,"EcTn"); break;
964. case 4: wsprintf(cNewStat,"ENoVc"); break;
965. case 5: wsprintf(cNewStat,"NoVoc"); break;
966. case 6: wsprintf(cNewStat,"Voc"); break;
967. case 7: wsprintf(cNewStat,"VcF1"); break;
968. case 8: wsprintf(cNewStat,"VcF2"); break;
969. case 9: wsprintf(cNewStat,"AptTn"); break;//added by zyq for 060901-bug-测试组-修改Test的一些bug, 2006.09.05
970. }
971. m_ChList.SetItemText( ch, ITEM_ToneAnalyzeResult, cNewStat );
972. }
973.
974. //++start++ ADDED BY yxd 2003.3.20
975. if((nResult=SsmGet2ndToneAnalyzeResult(ch)) != n2ndToneAnalyzeResult[ch])
976. {
977. n2ndToneAnalyzeResult[ch] = nResult;
978. switch(nResult)
979. {
980. case -1: wsprintf(cNewStat,"-1"); break;
981. case 0: wsprintf(cNewStat,"?"); break;
982. case 1: wsprintf(cNewStat,"DlTn"); break;
983. case 2: wsprintf(cNewStat,"BsTn"); break;
984. case 3: wsprintf(cNewStat,"EcTn"); break;
985. //+++START+++ added by zyq for 060901-bug-测试组-修改Test的一些bug, 2006.09.05
986. case 4: wsprintf(cNewStat,"ENoVc"); break;
987. case 5: wsprintf(cNewStat,"NoVoc"); break;
988. case 6: wsprintf(cNewStat,"Voc"); break;
989. case 7: wsprintf(cNewStat,"VcF1"); break;
990. case 8: wsprintf(cNewStat,"VcF2"); break;
991. case 9: wsprintf(cNewStat,"AptTn"); break;
992. //+++ END +++ added by zyq for 060901-bug-测试组-修改Test的一些bug, 2006.09.05
993.
994. }
995. m_ChList.SetItemText( ch, ITEM_2ndToneAnalyzeResult, cNewStat );
996. }
997. //++end++
998.
999. /*
1000. if((lResult=SsmGetOverallEnergy(ch)) != lOldOverallEnergy[ch])
1001. {
1002. lOldOverallEnergy[ch] = lResult;
1003. _itoa(lResult,cNewStat,10);
1004. m_ChList.SetItemText( ch, ITEM_OverallEnergy, cNewStat );
1005. }
1006. */
1007.
1008. if((nResult=SsmGetPeakFrq(ch)) != nOldPeakFrq[ch])
1009. {
1010. nOldPeakFrq[ch] = nResult;
1011. if(nResult==-1) wsprintf(cNewStat,"-1");
1012. else wsprintf(cNewStat,"%dHz",nResult);
1013. m_ChList.SetItemText( ch, ITEM_PeakFreq, cNewStat );
1014. }
1015. }
1016.
1017.
1018.
1019. //int WINAPI SsmDetectBargeIn(int ch)
1020. if((nResult=SsmDetectBargeIn(ch)) != nOldSsmDetectBargeIn[ch])
1021. {
1022. nOldSsmDetectBargeIn[ch] = nResult;
1023. wsprintf(cNewStat,"%d",nResult);
1024. m_ChList.SetItemText( ch, ITEM_Burgein, cNewStat );
1025. }
1026.
1027. //++++start++++ masked by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.9
1028. /* switch(SsmDetectNoSound(ch))
1029. {
1030. case -1: wsprintf(cNewStat,"-1"); break;
1031. case 0: wsprintf(cNewStat,"0:%d",SsmGetNoSoundTime(ch)/1000); break;
1032. case 1: wsprintf(cNewStat,"无声",SsmGetNoSoundTime(ch)/1000); break;
1033. }
1034. */
1035. //+++++end+++++ masked by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.9
1036. //++++start++++ added by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.9
1037. switch(SsmDetectNoSound(ch))
1038. {
1039. case -1: wsprintf(cNewStat,"-1"); break;
1040. case 0: wsprintf(cNewStat,"0:%d",SsmGetNoSoundTime(ch)/1000); break;
1041. case 1: LoadString(g_hInstance, IDS_DetectSnd_NoSnd, cNewStat, sizeof(cNewStat)); break;
1042. }
1043. //+++++end+++++ added by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.9
1044. if(strcmp(cNewStat,szOldNoSoundState[ch]) != 0 )
1045. {
1046. strcpy(szOldNoSoundState[ch],cNewStat);
1047. m_ChList.SetItemText( ch, ITEM_DetectNoSound, cNewStat );
1048. }
1049.
1050.
1051. if((lResult=SsmGetPlayedTime(ch)) != lOldPlayedTime[ch])
1052. {
1053. lOldPlayedTime[ch] = lResult;
1054. _itoa(lResult,cNewStat,10);
1055. m_ChList.SetItemText( ch, ITEM_PlayTime, cNewStat );
1056. }
1057.
1058. //++++START++++ added by cqb for SHCTI030902 Test
1059. if((lResult=SsmGetPlayedTimeEx(ch)) != lOldPlayedTimeEx[ch])
1060. {
1061. lOldPlayedTimeEx[ch] = lResult;
1062. _itoa(lResult,cNewStat,10);
1063. m_ChList.SetItemText( ch, ITEM_PlayTimeEx, cNewStat );
1064. }
1065. //++++END++++
1066.
1067. if((nResult=SsmGetPlayedPercentage(ch)) != nPlayedPct[ch])
1068. {
1069. nPlayedPct[ch] = nResult;
1070. _itoa(nResult,cNewStat,10);
1071. m_ChList.SetItemText( ch, ITEM_PlayPercentage, cNewStat );
1072. }
1073.
1074. if((nResult=SsmCheckPlay(ch)) != nOldChkPlay[ch])
1075. {
1076. nOldChkPlay[ch] = nResult;
1077. switch(nResult)
1078. {
1079. case -1: wsprintf(cNewStat,"-1"); break;
1080. case CHKPLAY_PLAYING: wsprintf(cNewStat,"Playing"); break;
1081. case CHKPLAY_NORMAL_END:wsprintf(cNewStat,"NmlEnd"); break;
1082. case CHKPLAY_DTMF_END: wsprintf(cNewStat,"DtmfEnd"); break;
1083. case CHKPLAY_BURGEIN: wsprintf(cNewStat,"BIEnd"); break;
1084. case CHKPLAY_REMOTEHANGUP_END:wsprintf(cNewStat,"REMOTE HANGUP"); break;
1085. case CHKPLAY_APPLICATION_END:wsprintf(cNewStat,"APP_STOPPLAY"); break;
1086. case CHKPLAY_PAUSED: wsprintf(cNewStat,"APP_PAUSED"); break;
1087. case CHKPLAY_LINKFROM_END: wsprintf(cNewStat,"LINKFORM_END"); break;
1088. case CHKPLAY_NETDISCONNECT: wsprintf(cNewStat,"NET_DISCONNECT"); break;//Added by yxh, for 网络文件放音改进, 2003.09.30
1089. }
1090. m_ChList.SetItemText( ch, ITEM_ChkPlay, cNewStat );
1091. }
1092.
1093. if((nResult=SsmGetPlayType(ch))!= nOldGetPlayType[ch])
1094. {
1095. nOldGetPlayType[ch] = nResult;
1096. switch(nResult)
1097. {
1098. case -1: wsprintf(cNewStat,"-1"); break;
1099. case 0: wsprintf(cNewStat,"PLAY_NULL"); break;
1100. case 1:wsprintf(cNewStat,"PLAY_FILE"); break;
1101. case 2: wsprintf(cNewStat,"PLAY_FILE_PAUSED"); break;
1102. case 3: wsprintf(cNewStat,"PLAY_FILELIST"); break;
1103. case 4:wsprintf(cNewStat,"PLAY_INDEXLIST"); break;
1104. case 5:wsprintf(cNewStat,"PLAY_MEM"); break;
1105. case 6: wsprintf(cNewStat,"PLAY_MEMLIST"); break;
1106. case 7: wsprintf(cNewStat,"PLAY_FSK"); break;
1107. case 8: wsprintf(cNewStat,"PLAY_MONITOR"); break;
1108. case 9:wsprintf(cNewStat,"PLAY_MEMBLOCK");break;
1109.
1110. }
1111. m_ChList.SetItemText(ch,ITEM_GetPlayType,cNewStat);
1112. }
1113.
1114.
1115.
1116.
1117.
1118. if((lResult=SsmGetRecTime(ch)) != lOldRecTime[ch])
1119. {
1120. lOldRecTime[ch] = lResult;
1121. _itoa(lResult,cNewStat,10);
1122. m_ChList.SetItemText( ch, ITEM_RecTime, cNewStat );
1123. }
1124.
1125. if((nResult=SsmCheckRecord(ch)) != nOldChkRec[ch])
1126. {
1127. nOldChkRec[ch] = nResult;
1128. switch(nResult)
1129. {
1130. case -1:
1131. wsprintf(cNewStat,"-1"); break;
1132. case CHKRECORD_RECORDING: //0: recording
1133. wsprintf(cNewStat,"recording"); break;
1134. case CHKRECORD_APPLICATION_END: //1: application end
1135. wsprintf(cNewStat,"AppEnd"); break;
1136. case CHKRECORD_DTMF_END: //2: record operation is stopped by DTMF key
1137. wsprintf(cNewStat,"DtmfEnd"); break;
1138. case CHKRECORD_REMOTEHANGUP_END://3: recor operation is stopped by remote hangup
1139. wsprintf(cNewStat,"REMOTE HANGUP"); break;
1140. case CHECKRECORD_TIMEUP_END: //4: end of record for time up.
1141. wsprintf(cNewStat,"TIMEUP_END"); break;
1142. case CHECKRECORD_FILE_PAUSED: //5: file record is paused.
1143. wsprintf(cNewStat,"FILE_PAUSED"); break;
1144. case CHECKRECORD_FILE_WRITE_ERROR:
1145. wsprintf(cNewStat,"FILE_WRITE_ERROR");
1146.
1147. }
1148. m_ChList.SetItemText( ch, ITEM_ChkRec, cNewStat );
1149. }
1150.
1151. if(bEnableOpEchoCanceller[ch])
1152. {
1153. if((nResult=SsmGetEchoCancellerState(ch)) != nOldEchoCancellerState[ch])
1154. {
1155. nOldEchoCancellerState[ch] = nResult;
1156. _itoa(nResult,cNewStat,10);
1157. m_ChList.SetItemText( ch, ITEM_AdaptiveFilter, cNewStat );
1158. }
1159.
1160. if((nResult=SsmGetEchoCancellerStudyState(ch)) != nOldEchoCancellerStudyState[ch])
1161. {
1162. nOldEchoCancellerStudyState[ch] = nResult;
1163. _itoa(nResult,cNewStat,10);
1164. m_ChList.SetItemText( ch, ITEM_AdaptiveFilterStudy, cNewStat );
1165. }
1166.
1167. if((nResult=SsmGetEchoCancellerRatio(ch)) != nOldEchoCancellerRatio[ch])
1168. {
1169. nOldEchoCancellerRatio[ch] = nResult;
1170. _itoa(nResult,cNewStat,10);
1171. m_ChList.SetItemText( ch, ITEM_ECRatio, cNewStat );
1172. }
1173. }
1174.
1175. nResult = DTRGetLCDStr(ch, cNewStat);
1176. if(nResult == -1) wsprintf(cNewStat, "-1");
1177. else if(nResult == 0) wsprintf(cNewStat, "");
1178. nResult = m_ChList.GetItemText(ch, ITEM_LCD, cOldStat, 300);
1179. if(nResult == 0)
1180. cOldStat[0] = '';
1181. if (strcmp(cNewStat,cOldStat) != 0)
1182. m_ChList.SetItemText(ch, ITEM_LCD, cNewStat);
1183.
1184. //+++START+++ added by yxh for GetDKeyStr, 2005.09.02
1185. nResult = DTRGetDKeyStr(ch, cNewStat);
1186. if(nResult == -1) wsprintf(cNewStat, "-1");
1187. else if(nResult == 0) wsprintf(cNewStat, "");
1188. nResult = m_ChList.GetItemText(ch, ITEM_DKEY, cOldStat, 300);
1189. if(nResult == 0)
1190. cOldStat[0] = '';
1191. if (strcmp(cNewStat,cOldStat) != 0)
1192. m_ChList.SetItemText(ch, ITEM_DKEY, cNewStat);
1193. //+++ END +++ added by yxh for GetDKeyStr, 2005.09.02
1194.
1195. nResult = SsmGetCallerId(ch,cNewStat);
1196. if(nResult == -1) wsprintf(cNewStat, "-1");
1197. else if(nResult == 0) wsprintf(cNewStat, "");
1198. nResult = m_ChList.GetItemText( ch, ITEM_CallerId, cOldStat, 300 );
1199. if(nResult == 0)
1200. cOldStat[0] = '';
1201. if ( strcmp(cNewStat,cOldStat) != 0 )
1202. m_ChList.SetItemText( ch, ITEM_CallerId, cNewStat );
1203.
1204. //if((nResult=SsmGetCallerId(ch,cNewStat)) != nOldCallerI[ch]
1205. // || nResult != 0)
1206. //{
1207. // nResult=SsmGetCallerId(ch,cNewStat);
1208. // nOldCallerI[ch] = nResult;
1209. // if(nResult == -1) wsprintf(cNewStat,"-1");
1210. // else if(nResult == 0) wsprintf(cNewStat,"");
1211. // m_ChList.SetItemText( ch, ITEM_CallerId, cNewStat );
1212. //}
1213.
1214. nResult = SsmGetCallerIdEx(ch,szRxCallerId);
1215. if(nResult == -1) wsprintf(szRxCallerId, "");
1216. else if(nResult == 0) wsprintf(szRxCallerId, "");
1217. nRet = m_ChList.GetItemText( ch, ITEM_CallerIdEx, cOldStat, 300 );
1218. if(nRet==0)
1219. cOldStat[0]='';
1220. if ( strcmp(szRxCallerId,cOldStat) != 0 )
1221. {
1222. wsprintf(cNewStat,"");
1223. for(int k=0; k<nResult; k++) wsprintf(cNewStat,"%s%02x ",cNewStat,(UCHAR)szRxCallerId[k]);
1224. m_ChList.SetItemText( ch, ITEM_CallerIdEx, cNewStat );
1225. }
1226.
1227.
1228. // if((nResult=SsmGetCallerIdEx(ch,szRxCallerId)) != nOldCallerIdEx[ch]
1229. // || nResult != 0)
1230. // {
1231. // nResult=SsmGetCallerIdEx(ch,szRxCallerId);
1232. // nOldCallerIdEx[ch] = nResult;
1233. // if(nResult == -1) wsprintf(cNewStat,"-1");
1234. // else if(nResult == 0) wsprintf(cNewStat,"");
1235. // else
1236. // {
1237. // wsprintf(cNewStat,"");
1238. // for(int k=0; k<nResult; k++) wsprintf(cNewStat,"%s%x",cNewStat,szRxCallerId[k]);
1239. // }
1240. // m_ChList.SetItemText( ch, ITEM_CallerIdEx, cNewStat );
1241. // }
1242.
1243. if(bEnableOpADC[ch])
1244. {
1245. if((nResult=SsmGetLineVoltage(ch)) != nOldLineVoltage[ch])
1246. {
1247. nOldLineVoltage[ch] = nResult;
1248. _itoa(nResult,cNewStat,10);
1249. m_ChList.SetItemText( ch, ITEM_Vad, cNewStat );
1250. }
1251. }
1252.
1253. if((nResult=SsmGetCAS(ch)) != nOldGetCAS[ch])
1254. {
1255. nOldGetCAS[ch] = nResult;
1256. if(nResult == -1) wsprintf(cNewStat,"-1",nResult);
1257. else wsprintf(cNewStat,"0x%x",nResult);
1258. m_ChList.SetItemText( ch, ITEM_RxCAS, cNewStat );
1259. }
1260.
1261. if((nResult=SsmGetSendingCAS(ch)) != nOldSendingCAS[ch])
1262. {
1263. nOldSendingCAS[ch] = nResult;
1264. if(nResult == -1) wsprintf(cNewStat,"-1",nResult);
1265. else wsprintf(cNewStat,"0x%x",nResult);
1266. m_ChList.SetItemText( ch, ITEM_TxCAS, cNewStat );
1267. }
1268.
1269. if((nResult=SsmGetR2(ch)) != nOldGetR2[ch])
1270. {
1271. nOldGetR2[ch] = nResult;
1272. wsprintf(cNewStat,"%d",nResult);
1273. m_ChList.SetItemText( ch, ITEM_RxR2, cNewStat );
1274. }
1275.
1276. int nMode;
1277. BYTE btRxR2;
1278. nResult = SsmGetSendingR2(ch,&nMode,&btRxR2);
1279. if(nResult != nOldGetSendingR2[ch])
1280. {
1281. nOldGetSendingR2[ch] = nResult;
1282. if(nResult == -1) m_ChList.SetItemText( ch, 23, "-1");
1283. else if(nOldSendingR2Mode[ch]!=nMode || nOldSendingR2[ch]!=btRxR2)
1284. {
1285. nOldSendingR2Mode[ch] = nMode;
1286. nOldSendingR2[ch] = btRxR2;
1287. if(nMode==0) wsprintf(cNewStat,"B:%d",btRxR2);
1288. else wsprintf(cNewStat,"F:%d",btRxR2);
1289. m_ChList.SetItemText( ch, ITEM_TxR2, cNewStat );
1290. }
1291. }
1292.
1293. //add by JK shi for 支持SetKB功能, begin
1294. nShowUpdate=0;
1295.
1296. if (nNewChState==S_CALL_PENDING)
1297. {
1298. if(nOldChState[ch]!=S_CALL_PENDING)
1299. nShowUpdate=1;
1300. else
1301. {
1302. nNewPendReason=SsmGetPendingReason(ch);
1303. if (nOldPendReason[ch]!=nNewPendReason)
1304. nShowUpdate=1;
1305. }
1306. }
1307. //add by JK shi for 支持SetKB功能, end
1308.
1309. //if(nOldChState[ch]!=S_CALL_PENDING && nNewChState==S_CALL_PENDING)
1310. if (nShowUpdate)
1311. {
1312. //++++start++++ masked by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.9
1313. /* switch(nResult=SsmGetPendingReason(ch))
1314. {
1315. case -1: wsprintf(cNewStat,"-1"); break;
1316. case ANALOGOUT_NO_DIALTONE: wsprintf(cNewStat,"模拟:没有拨号音"); break;
1317. case ANALOGOUT_BUSYTONE: wsprintf(cNewStat,"模拟:忙音"); break;
1318. case ANALOGOUT_ECHO_NOVOICE: wsprintf(cNewStat,"模拟:回铃后无声"); break;
1319. case ANALOGOUT_NOANSWER: wsprintf(cNewStat,"模拟:没有应答"); break;
1320. case ANALOGOUT_TALKING_REMOTE_HANGUPED: wsprintf(cNewStat,"模拟:远端挂机"); break;
1321. case ANALOGOUT_NOVOICE: wsprintf(cNewStat,"模拟:拨号后线路无声"); break;
1322.
1323. case PEND_WaitBckStpMsg: wsprintf(cNewStat,"等待APP设置后向建立消息"); break;
1324.
1325. case SS1IN_BWD_KB5: wsprintf(cNewStat,"SS1IN收到KB5"); break;
1326. case PEND_RemoteHangupOnTalking: wsprintf(cNewStat,"呼入:通话时主叫先挂机"); break;
1327.
1328. case PEND_SsxUnusable: wsprintf(cNewStat,"通话时信令不可用"); break;
1329. case PEND_CircuitReset: wsprintf(cNewStat,"电路复原"); break;
1330.
1331. case PEND_CalleeHangupOnTalking: wsprintf(cNewStat,"呼出:被叫先挂机"); break;
1332.
1333. case SS1OUT_NOANSWER: wsprintf(cNewStat,"No1: 无人接听"); break;
1334. case SS1OUT_NOBWDACK: wsprintf(cNewStat,"No1: 没有应答信号"); break;
1335. case SS1OUT_DIALING_BWD_HANGUP: wsprintf(cNewStat,"No1: 检测到被叫拆线"); break;
1336. case SS1OUT_BWD_A5: wsprintf(cNewStat,"No1: 收到后向A5"); break;
1337. case SS1OUT_BWD_KB5: wsprintf(cNewStat,"No1: 收到后向KB5"); break;
1338. case SS1OUT_BWD_KB2: wsprintf(cNewStat,"No1: 收到后向KB2"); break;
1339. case SS1OUT_BWD_KB3: wsprintf(cNewStat,"No1: 收到后向KB3"); break;
1340. case SS1OUT_BWD_A4: wsprintf(cNewStat,"No1: 收到后向A4"); break;
1341. case SS1OUT_BWD_KB4: wsprintf(cNewStat,"No1: 收到后向KB4"); break;
1342. case SS1OUT_TIMEOUT_BWD_A: wsprintf(cNewStat,"No1: 等待后向A超时"); break;
1343. case SS1OUT_TIMEOUT_BWD_A_STOP: wsprintf(cNewStat,"No1: 等待后向A停发超时"); break;
1344. case SS1OUT_TIMEOUT_BWD_KB: wsprintf(cNewStat,"No1: 等待KB超时"); break;
1345. case SS1OUT_TIMEOUT_BWD_KB_STOP: wsprintf(cNewStat,"No1: 等待KB停发超时"); break;
1346. case SS1OUT_TIMEOUT_CALLERID_BWD_A1: wsprintf(cNewStat,"No1: 发主叫等待A1超时"); break;
1347. case SS1OUT_TIMEOUT_CALLERID_BWD_A1_STOP: wsprintf(cNewStat,"No1: 发主叫等待A1停发超时"); break;
1348. case SS1OUT_UNDEFINED_CALLERID_BWD_A: wsprintf(cNewStat,"No1: 发主叫收到未定义后向A"); break;
1349. case SS1OUT_UNDEFINED_BWD_A: wsprintf(cNewStat,"No1: 收到未定义后向A"); break;
1350. case SS1OUT_UNDEFINED_BWD_KB: wsprintf(cNewStat,"No1: 收到未定义KB"); break;
1351. case ISDN_CALLOVER: wsprintf(cNewStat,"ISDN:呼叫正常结束,对方先挂机"); break;
1352. case ISDN_WAIT_RELEASE: wsprintf(cNewStat,"ISDN:等待释放" ); break;
1353. case ISDN_HANGING: wsprintf(cNewStat,"ISDN:正在拆线" ); break;
1354. case ISDN_RELEASING : wsprintf(cNewStat,"ISDN:正在释放" ); break;
1355. case ISDN_UNALLOCATED_NUMBER: wsprintf(cNewStat,"ISDN:未分配的号码"); break;
1356. case ISDN_NETWORK_BUSY: wsprintf(cNewStat,"ISDN:网络忙"); break;
1357. case ISDN_CIRCUIT_NOT_AVAILABLE: wsprintf(cNewStat, "ISDN:指定的电路不可用"); break;
1358. case ISDN_NO_ANSWER: wsprintf(cNewStat, "ISDN:无应答"); break;
1359. case ISDN_CALL_REJ: wsprintf(cNewStat, "ISDN:呼叫拒绝"); break;
1360.
1361. case PEND_AutoDialFailed:
1362. switch(SsmGetAutoDialFailureReason(ch))
1363. {
1364. case ATDL_NULL: wsprintf(cNewStat,""); break;
1365. case ATDL_Cancel: wsprintf(cNewStat,"拨号失败:取消"); break;
1366. case ATDL_WaitDialAnsTimeout: wsprintf(cNewStat,"拨号失败:等候应答超时"); break;
1367. case ATDL_WaitRemotePickupTimeout: wsprintf(cNewStat,"拨号失败:等候被叫摘机超时"); break;
1368.
1369. case ATDL_Mtp3Unusable: wsprintf(cNewStat,"拨号失败:MTP3不可用"); break;
1370. case ATDL_RcvSSB: wsprintf(cNewStat,"拨号失败:收到SSB"); break;
1371. case ATDL_RcvSLB: wsprintf(cNewStat,"拨号失败:收到SLB"); break;
1372. case ATDL_RcvSTB: wsprintf(cNewStat,"拨号失败:收到STB"); break;
1373. case ATDL_RcvUNN: wsprintf(cNewStat,"拨号失败:收到UNN"); break;
1374. case ATDL_RcvSEC: wsprintf(cNewStat,"拨号失败:收到SEC"); break;
1375. case ATDL_RcvCGC: wsprintf(cNewStat,"拨号失败:收到CGC"); break;
1376. case ATDL_RcvNNC: wsprintf(cNewStat,"拨号失败:收到NNC"); break;
1377. case ATDL_RcvCFL: wsprintf(cNewStat,"拨号失败:收到CFL"); break;
1378. case ATDL_RcvLOS: wsprintf(cNewStat,"拨号失败:收到LOS"); break;
1379. case ATDL_RcvSST: wsprintf(cNewStat,"拨号失败:收到SST"); break;
1380. case ATDL_RcvACB: wsprintf(cNewStat,"拨号失败:收到ACB"); break;
1381. case ATDL_RcvDPN: wsprintf(cNewStat,"拨号失败:收到DPN"); break;
1382. case ATDL_RcvEUM: wsprintf(cNewStat,"拨号失败:收到EUM"); break;
1383. case ATDL_RcvADI: wsprintf(cNewStat,"拨号失败:收到ADI"); break;
1384. case ATDL_RcvBLO: wsprintf(cNewStat,"拨号失败:收到BLO"); break;
1385. case ATDL_DoubleOccupy: wsprintf(cNewStat,"拨号失败:检出同抢"); break;
1386. case ATDL_CircuitReset: wsprintf(cNewStat,"拨号失败:电路复原"); break;
1387. case ATDL_BlockedByRemote: wsprintf(cNewStat,"拨号失败:对端闭塞"); break;
1388.
1389. case ATDL_SS1WaitOccupyAckTimeout: wsprintf(cNewStat,"拨号失败:等待占用应答超时"); break;
1390. case ATDL_SS1RcvCAS_HANGUP: wsprintf(cNewStat,"拨号失败:收到后向拆线信号"); break;
1391. case ATDL_SS1RcvA4: wsprintf(cNewStat,"拨号失败:收到A4信号"); break;
1392. case ATDL_SS1RcvA5: wsprintf(cNewStat,"拨号失败:收到A5信号"); break;
1393. case ATDL_SS1RcvUndefinedAx: wsprintf(cNewStat,"拨号失败:收到未定义后向A"); break;
1394. case ATDL_SS1RcvUndefinedAxOnTxCallerId: wsprintf(cNewStat,"拨号失败:送主叫收到未定义A"); break;
1395. case ATDL_SS1WaitAxTimeout: wsprintf(cNewStat,"拨号失败:等候后向A超时"); break;
1396. case ATDL_SS1WaitAxStopTimeout: wsprintf(cNewStat,"拨号失败:等候后向A组停发超时"); break;
1397. case ATDL_SS1WaitAxTimeoutOnTxCallerId: wsprintf(cNewStat,"拨号失败:送主叫等候后向A超时"); break;
1398. case ATDL_SS1WaitAxStopTimeoutOnTxCallerId: wsprintf(cNewStat,"拨号失败:送主叫等候后向A停发超时"); break;
1399. case ATDL_SS1RcvKB2: wsprintf(cNewStat,"拨号失败:收到KB2信号"); break;
1400. case ATDL_SS1RcvKB3: wsprintf(cNewStat,"拨号失败:收到KB3信号"); break;
1401. case ATDL_SS1RcvKB4: wsprintf(cNewStat,"拨号失败:收到KB4信号"); break;
1402. case ATDL_SS1RcvKB5: wsprintf(cNewStat,"拨号失败:收到KB5信号"); break;
1403. case ATDL_SS1RcvUndefinedKB: wsprintf(cNewStat,"拨号失败:收到未定义KB信号"); break;
1404. case ATDL_SS1WaitKBTimeout: wsprintf(cNewStat,"拨号失败:接收后向KB信号超时"); break;
1405. case ATDL_SS1WaitKBStopTimeout: wsprintf(cNewStat,"拨号失败:等候被叫停发KB超时"); break;
1406. case ATDL_ISDNNETISBUS : wsprintf(cNewStat,"拨号失败:网络忙" ); break;
1407.
1408. default :
1409. wsprintf(cNewStat,"拨号失败: ???");
1410. break;
1411. }
1412. break;
1413.
1414. default:
1415. wsprintf(cNewStat,"%d",nResult); break;
1416. break;
1417. }
1418. */
1419. //+++++end+++++ masked by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.9
1420. //++++start++++ added by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.9
1421. switch(nResult=SsmGetPendingReason(ch))
1422. {
1423. case -1: wsprintf(cNewStat,"-1"); break;
1424. case ANALOGOUT_NO_DIALTONE: LoadString(g_hInstance, IDS_ANALOGOUT_NO_DIALTONE, cNewStat, sizeof(cNewStat)); break;
1425. case ANALOGOUT_BUSYTONE: LoadString(g_hInstance, IDS_ANALOGOUT_BUSYTONE, cNewStat, sizeof(cNewStat)); break;
1426. case ANALOGOUT_ECHO_NOVOICE: LoadString(g_hInstance, IDS_ANALOGOUT_ECHO_NOVOICE, cNewStat, sizeof(cNewStat)); break;
1427. case ANALOGOUT_NOANSWER: LoadString(g_hInstance, IDS_ANALOGOUT_NOANSWER, cNewStat, sizeof(cNewStat)); break;
1428. case ANALOGOUT_TALKING_REMOTE_HANGUPED: LoadString(g_hInstance, IDS_ANALOGOUT_TALKING_REMOTE_HANGUPED, cNewStat, sizeof(cNewStat)); break;
1429. case ANALOGOUT_NOVOICE: LoadString(g_hInstance, IDS_ANALOGOUT_NOVOICE, cNewStat, sizeof(cNewStat)); break;
1430.
1431. case PEND_WaitBckStpMsg: LoadString(g_hInstance, IDS_PEND_WaitBckStpMsg, cNewStat, sizeof(cNewStat)); break;
1432.
1433. case SS1IN_BWD_KB5: LoadString(g_hInstance, IDS_SS1IN_BWD_KB5, cNewStat, sizeof(cNewStat)); break;
1434. case PEND_RemoteHangupOnTalking: LoadString(g_hInstance, IDS_PEND_RemoteHangupOnTalking, cNewStat, sizeof(cNewStat)); break;
1435.
1436. case PEND_SsxUnusable: LoadString(g_hInstance, IDS_PEND_SsxUnusable, cNewStat, sizeof(cNewStat)); break;
1437. case PEND_CircuitReset: LoadString(g_hInstance, IDS_PEND_CircuitReset, cNewStat, sizeof(cNewStat)); break;
1438.
1439. case PEND_CalleeHangupOnTalking: LoadString(g_hInstance, IDS_PEND_CalleeHangupOnTalking, cNewStat, sizeof(cNewStat)); break;
1440.
1441. case SS1OUT_NOANSWER: LoadString(g_hInstance, IDS_SS1OUT_NOANSWER, cNewStat, sizeof(cNewStat)); break;
1442. case SS1OUT_NOBWDACK: LoadString(g_hInstance, IDS_SS1OUT_NOBWDACK, cNewStat, sizeof(cNewStat)); break;
1443. case SS1OUT_DIALING_BWD_HANGUP: LoadString(g_hInstance, IDS_SS1OUT_DIALING_BWD_HANGUP, cNewStat, sizeof(cNewStat)); break;
1444. case SS1OUT_BWD_A5: LoadString(g_hInstance, IDS_SS1OUT_BWD_A5, cNewStat, sizeof(cNewStat)); break;
1445. case SS1OUT_BWD_KB5: LoadString(g_hInstance, IDS_SS1OUT_BWD_KB5, cNewStat, sizeof(cNewStat)); break;
1446. case SS1OUT_BWD_KB2: LoadString(g_hInstance, IDS_SS1OUT_BWD_KB2, cNewStat, sizeof(cNewStat)); break;
1447. case SS1OUT_BWD_KB3: LoadString(g_hInstance, IDS_SS1OUT_BWD_KB3, cNewStat, sizeof(cNewStat)); break;
1448. case SS1OUT_BWD_A4: LoadString(g_hInstance, IDS_SS1OUT_BWD_A4, cNewStat, sizeof(cNewStat)); break;
1449. case SS1OUT_BWD_KB4: LoadString(g_hInstance, IDS_SS1OUT_BWD_KB4, cNewStat, sizeof(cNewStat)); break;
1450. case SS1OUT_TIMEOUT_BWD_A: LoadString(g_hInstance, IDS_SS1OUT_TIMEOUT_BWD_A, cNewStat, sizeof(cNewStat)); break;
1451. case SS1OUT_TIMEOUT_BWD_A_STOP: LoadString(g_hInstance, IDS_SS1OUT_TIMEOUT_BWD_A_STOP, cNewStat, sizeof(cNewStat)); break;
1452. case SS1OUT_TIMEOUT_BWD_KB: LoadString(g_hInstance, IDS_SS1OUT_TIMEOUT_BWD_KB, cNewStat, sizeof(cNewStat)); break;
1453. case SS1OUT_TIMEOUT_BWD_KB_STOP: LoadString(g_hInstance, IDS_SS1OUT_TIMEOUT_BWD_KB_STOP, cNewStat, sizeof(cNewStat)); break;
1454. case SS1OUT_TIMEOUT_CALLERID_BWD_A1: LoadString(g_hInstance, IDS_SS1OUT_TIMEOUT_CALLERID_BWD_A1, cNewStat, sizeof(cNewStat)); break;
1455. case SS1OUT_TIMEOUT_CALLERID_BWD_A1_STOP: LoadString(g_hInstance, IDS_SS1OUT_TIMEOUT_CALLERID_BWD_A1_STOP, cNewStat, sizeof(cNewStat)); break;
1456. case SS1OUT_UNDEFINED_CALLERID_BWD_A: LoadString(g_hInstance, IDS_SS1OUT_UNDEFINED_CALLERID_BWD_A, cNewStat, sizeof(cNewStat)); break;
1457. case SS1OUT_UNDEFINED_BWD_A: LoadString(g_hInstance, IDS_SS1OUT_UNDEFINED_BWD_A, cNewStat, sizeof(cNewStat)); break;
1458. case SS1OUT_UNDEFINED_BWD_KB: LoadString(g_hInstance, IDS_SS1OUT_UNDEFINED_BWD_KB, cNewStat, sizeof(cNewStat)); break;
1459. case ISDN_CALLOVER: LoadString(g_hInstance, IDS_ISDN_CALLOVER, cNewStat, sizeof(cNewStat)); break;
1460. case ISDN_WAIT_RELEASE: LoadString(g_hInstance, IDS_ISDN_WAIT_RELEASE, cNewStat, sizeof(cNewStat)); break;
1461. case ISDN_HANGING: LoadString(g_hInstance, IDS_ISDN_HANGING, cNewStat, sizeof(cNewStat)); break;
1462. case ISDN_RELEASING : LoadString(g_hInstance, IDS_ISDN_RELEASING, cNewStat, sizeof(cNewStat)); break;
1463. case ISDN_UNALLOCATED_NUMBER: LoadString(g_hInstance, IDS_ISDN_UNALLOCATED_NUMBER, cNewStat, sizeof(cNewStat)); break;
1464. case ISDN_NETWORK_BUSY: LoadString(g_hInstance, IDS_ISDN_NETWORK_BUSY, cNewStat, sizeof(cNewStat)); break;
1465. case ISDN_CIRCUIT_NOT_AVAILABLE: LoadString(g_hInstance, IDS_ISDN_CIRCUIT_NOT_AVAILABLE, cNewStat, sizeof(cNewStat)); break;
1466. case ISDN_NO_ANSWER: LoadString(g_hInstance, IDS_ISDN_NO_ANSWER, cNewStat, sizeof(cNewStat)); break;
1467. case ISDN_CALL_REJ: LoadString(g_hInstance, IDS_ISDN_CALL_REJ, cNewStat, sizeof(cNewStat)); break;
1468.
1469. case PEND_AutoDialFailed:
1470. switch(SsmGetAutoDialFailureReason(ch))
1471. {
1472. case ATDL_NULL: LoadString(g_hInstance, IDS_ATDL_NULL, cNewStat, sizeof(cNewStat)); break;
1473. case ATDL_Cancel: LoadString(g_hInstance, IDS_ATDL_Cancel, cNewStat, sizeof(cNewStat)); break;
1474. case ATDL_WaitDialAnsTimeout: LoadString(g_hInstance, IDS_ATDL_WaitDialAnsTimeout, cNewStat, sizeof(cNewStat)); break;
1475. case ATDL_WaitRemotePickupTimeout: LoadString(g_hInstance, IDS_ATDL_WaitRemotePickupTimeout, cNewStat, sizeof(cNewStat)); break;
1476.
1477. case ATDL_Mtp3Unusable: LoadString(g_hInstance, IDS_ATDL_Mtp3Unusable, cNewStat, sizeof(cNewStat)); break;
1478. case ATDL_RcvSSB: LoadString(g_hInstance, IDS_ATDL_RcvSSB, cNewStat, sizeof(cNewStat)); break;
1479. case ATDL_RcvSLB: LoadString(g_hInstance, IDS_ATDL_RcvSLB, cNewStat, sizeof(cNewStat)); break;
1480. case ATDL_RcvSTB: LoadString(g_hInstance, IDS_ATDL_RcvSTB, cNewStat, sizeof(cNewStat)); break;
1481. case ATDL_RcvUNN: LoadString(g_hInstance, IDS_ATDL_RcvUNN, cNewStat, sizeof(cNewStat)); break;
1482. case ATDL_RcvSEC: LoadString(g_hInstance, IDS_ATDL_RcvSEC, cNewStat, sizeof(cNewStat)); break;
1483. case ATDL_RcvCGC: LoadString(g_hInstance, IDS_ATDL_RcvCGC, cNewStat, sizeof(cNewStat)); break;
1484. case ATDL_RcvNNC: LoadString(g_hInstance, IDS_ATDL_RcvNNC, cNewStat, sizeof(cNewStat)); break;
1485. case ATDL_RcvCFL: LoadString(g_hInstance, IDS_ATDL_RcvCFL, cNewStat, sizeof(cNewStat)); break;
1486. case ATDL_RcvLOS: LoadString(g_hInstance, IDS_ATDL_RcvLOS, cNewStat, sizeof(cNewStat)); break;
1487. case ATDL_RcvSST: LoadString(g_hInstance, IDS_ATDL_RcvSST, cNewStat, sizeof(cNewStat)); break;
1488. case ATDL_RcvACB: LoadString(g_hInstance, IDS_ATDL_RcvACB, cNewStat, sizeof(cNewStat)); break;
1489. case ATDL_RcvDPN: LoadString(g_hInstance, IDS_ATDL_RcvDPN, cNewStat, sizeof(cNewStat)); break;
1490. case ATDL_RcvEUM: LoadString(g_hInstance, IDS_ATDL_RcvEUM, cNewStat, sizeof(cNewStat)); break;
1491. case ATDL_RcvADI: LoadString(g_hInstance, IDS_ATDL_RcvADI, cNewStat, sizeof(cNewStat)); break;
1492. case ATDL_RcvBLO: LoadString(g_hInstance, IDS_ATDL_RcvBLO, cNewStat, sizeof(cNewStat)); break;
1493. case ATDL_DoubleOccupy: LoadString(g_hInstance, IDS_ATDL_DoubleOccupy, cNewStat, sizeof(cNewStat)); break;
1494. case ATDL_CircuitReset: LoadString(g_hInstance, IDS_ATDL_CircuitReset, cNewStat, sizeof(cNewStat)); break;
1495. case ATDL_BlockedByRemote: LoadString(g_hInstance, IDS_ATDL_BlockedByRemote, cNewStat, sizeof(cNewStat)); break;
1496.
1497. case ATDL_SS1WaitOccupyAckTimeout: LoadString(g_hInstance, IDS_ATDL_SS1WaitOccupyAckTimeout, cNewStat, sizeof(cNewStat)); break;
1498. case ATDL_SS1RcvCAS_HANGUP: LoadString(g_hInstance, IDS_ATDL_SS1RcvCAS_HANGUP, cNewStat, sizeof(cNewStat)); break;
1499. case ATDL_SS1RcvA4: LoadString(g_hInstance, IDS_ATDL_SS1RcvA4, cNewStat, sizeof(cNewStat)); break;
1500. case ATDL_SS1RcvA5: LoadString(g_hInstance, IDS_ATDL_SS1RcvA5, cNewStat, sizeof(cNewStat)); break;
1501. case ATDL_SS1RcvUndefinedAx: LoadString(g_hInstance, IDS_ATDL_SS1RcvUndefinedAx, cNewStat, sizeof(cNewStat)); break;
1502. case ATDL_SS1RcvUndefinedAxOnTxCallerId: LoadString(g_hInstance, IDS_ATDL_SS1RcvUndefinedAxOnTxCallerId, cNewStat, sizeof(cNewStat)); break;
1503. case ATDL_SS1WaitAxTimeout: LoadString(g_hInstance, IDS_ATDL_SS1WaitAxTimeout, cNewStat, sizeof(cNewStat)); break;
1504. case ATDL_SS1WaitAxStopTimeout: LoadString(g_hInstance, IDS_ATDL_SS1WaitAxStopTimeout, cNewStat, sizeof(cNewStat)); break;
1505. case ATDL_SS1WaitAxTimeoutOnTxCallerId: LoadString(g_hInstance, IDS_ATDL_SS1WaitAxTimeoutOnTxCallerId, cNewStat, sizeof(cNewStat)); break;
1506. case ATDL_SS1WaitAxStopTimeoutOnTxCallerId: LoadString(g_hInstance, IDS_ATDL_SS1WaitAxStopTimeoutOnTxCallerId, cNewStat, sizeof(cNewStat)); break;
1507. case ATDL_SS1RcvKB2: LoadString(g_hInstance, IDS_ATDL_SS1RcvKB2, cNewStat, sizeof(cNewStat)); break;
1508. case ATDL_SS1RcvKB3: LoadString(g_hInstance, IDS_ATDL_SS1RcvKB3, cNewStat, sizeof(cNewStat)); break;
1509. case ATDL_SS1RcvKB4: LoadString(g_hInstance, IDS_ATDL_SS1RcvKB4, cNewStat, sizeof(cNewStat)); break;
1510. case ATDL_SS1RcvKB5: LoadString(g_hInstance, IDS_ATDL_SS1RcvKB5, cNewStat, sizeof(cNewStat)); break;
1511. case ATDL_SS1RcvUndefinedKB: LoadString(g_hInstance, IDS_ATDL_SS1RcvUndefinedKB, cNewStat, sizeof(cNewStat)); break;
1512. case ATDL_SS1WaitKBTimeout: LoadString(g_hInstance, IDS_ATDL_SS1WaitKBTimeout, cNewStat, sizeof(cNewStat)); break;
1513. case ATDL_SS1WaitKBStopTimeout: LoadString(g_hInstance, IDS_ATDL_SS1WaitKBStopTimeout, cNewStat, sizeof(cNewStat)); break;
1514. case ATDL_ISDNNETISBUS : LoadString(g_hInstance, IDS_ATDL_ISDNNETISBUS, cNewStat, sizeof(cNewStat)); break;
1515.
1516. case ATDL_IPInvalidPhonum: LoadString(g_hInstance, IDS_ATDL_IPInvalidPhonum, cNewStat, sizeof(cNewStat)); break;
1517. case ATDL_IPRemoteBusy: LoadString(g_hInstance, IDS_ATDL_IPRemoteBusy, cNewStat, sizeof(cNewStat)); break;
1518. case ATDL_IPBeenRefused: LoadString(g_hInstance, IDS_ATDL_IPBeenRefused, cNewStat, sizeof(cNewStat)); break;
1519. case ATDL_IPDnsFail : LoadString(g_hInstance, IDS_ATDL_IPDnsFail, cNewStat, sizeof(cNewStat)); break;
1520. case ATDL_IPCodecUnSupport : LoadString(g_hInstance, IDS_ATDL_IPCodecUnSupport, cNewStat, sizeof(cNewStat)); break;
1521. case ATDL_IPOutOfResources : LoadString(g_hInstance, IDS_ATDL_IPOutOfResources, cNewStat, sizeof(cNewStat)); break;
1522. case ATDL_IPLocalNetworkErr : LoadString(g_hInstance, IDS_ATDL_IPLocalNetworkErr, cNewStat, sizeof(cNewStat)); break;
1523. case ATDL_IPRemoteNetworkErr : LoadString(g_hInstance, IDS_ATDL_IPRemoteNetworkErr, cNewStat, sizeof(cNewStat)); break;
1524.
1525. default :
1526. LoadString(g_hInstance, IDS_ATDL_DEFAULT, cNewStat, sizeof(cNewStat));
1527. break;
1528. }
1529. break;
1530.
1531. default:
1532. wsprintf(cNewStat,"%d",nResult); break;
1533. break;
1534. }
1535. //+++++end+++++ added by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.9
1536. m_ChList.SetItemText( ch, ITEM_PendReason, cNewStat );
1537. }
1538. else if((nOldChState[ch]==S_CALL_PENDING && nNewChState!=S_CALL_PENDING) ||
1539. (nOldChState[ch]==S_CALL_RemoteBlock && nNewChState!=S_CALL_RemoteBlock) ||
1540. (nOldChState[ch]==S_CALL_LocalBlock&&nNewChState!=S_CALL_LocalBlock) )
1541. {
1542. m_ChList.SetItemText( ch, ITEM_PendReason, "" );
1543. }
1544.
1545.
1546. //long WINAPI SsmGetChStateKeepTime(int ch)
1547.
1548. lResult = SsmGetChStateKeepTime(ch);
1549. if(lResult != lOldTime[ch])
1550. {
1551. lOldTime[ch] = lResult ;
1552. wsprintf(cNewStat,"%dms",lResult);
1553. m_ChList.SetItemText( ch, ITEM_ChStateKeepTime, cNewStat );
1554. }
1555.
1556.
1557. // wsprintf(cNewStat,"%dms",SsmGetChStateKeepTime(ch));
1558. // m_ChList.SetItemText( ch, ITEM_ChStateKeepTime, cNewStat );
1559.
1560.
1561. nResult = SsmGetPhoNumStr(ch,cNewStat);
1562. if(nResult == -1) wsprintf(cNewStat, "-1");
1563. else if(nResult == 0) wsprintf(cNewStat, "");
1564. nResult = m_ChList.GetItemText( ch, ITEM_PhoneNumber, cOldStat, 255 );
1565. if(nResult==0)
1566. cOldStat[0]='';
1567. if ( strcmp(cNewStat,cOldStat) != 0 )
1568. m_ChList.SetItemText( ch, ITEM_PhoneNumber, cNewStat );
1569.
1570.
1571. //int WINAPI SsmGetPolarRvrsCount(int ch)
1572. //if(SsmQueryOpPolarRvrs(CurCh) == 1) nResult = SsmGetPolarRvrsCount(CurCh);//masked by sh for the error of PolarRvrs, 2007-10-26
1573. if(SsmQueryOpPolarRvrs(ch) == 1) nResult = SsmGetPolarRvrsCount(ch); //added by sh for the error of PolarRvrs, 2007-10-26
1574. else nResult = -1;
1575. if(nResult != nOldPloarRvrsCount[ch])
1576. {
1577. nOldPloarRvrsCount[ch] = nResult;
1578. m_ChList.SetItemText( ch, ITEM_Ploar, _itoa(nResult,cNewStat,10) );
1579. }
1580.
1581. if(bEnableOpBlockRemoteCh[ch])
1582. {
1583. if((nResult=SsmGetRemoteChBlockStatus(ch)) != nOldBlockRemoteStatus[ch])
1584. {
1585. nOldBlockRemoteStatus[ch] = nResult;
1586. //++++start++++ masked by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.9
1587. /* switch(nResult)
1588. {
1589. case -1 : wsprintf(cNewStat,"不支持"); break;
1590. case BLOCKREMOTE_Unblocked : wsprintf(cNewStat,""); break;
1591. case BLOCKREMOTE_Blocked : wsprintf(cNewStat,"闭塞"); break;
1592. case BLOCKREMOTE_WaitBlockAck : wsprintf(cNewStat,"等待闭塞证实"); break;
1593. case BLOCKREMOTE_WaitUnblockAck : wsprintf(cNewStat,"等待解除闭塞证实"); break;
1594. }
1595. */ //+++++end+++++ masked by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.9
1596. //++++start++++ added by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.9
1597. switch(nResult)
1598. {
1599. case -1 : LoadString(g_hInstance, IDS_BLOCKREMOTE_INVALID, cNewStat, sizeof(cNewStat)); break;
1600. case BLOCKREMOTE_Unblocked : LoadString(g_hInstance, IDS_BLOCKREMOTE_Unblocked, cNewStat, sizeof(cNewStat)); break;
1601. case BLOCKREMOTE_Blocked : LoadString(g_hInstance, IDS_BLOCKREMOTE_Blocked, cNewStat, sizeof(cNewStat)); break;
1602. case BLOCKREMOTE_WaitBlockAck : LoadString(g_hInstance, IDS_BLOCKREMOTE_WaitBlockAck, cNewStat, sizeof(cNewStat)); break;
1603. case BLOCKREMOTE_WaitUnblockAck : LoadString(g_hInstance, IDS_BLOCKREMOTE_WaitUnblockAck, cNewStat, sizeof(cNewStat)); break;
1604. }
1605. //+++++end+++++ added by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.9
1606. m_ChList.SetItemText( ch, ITEM_BlockRemote, cNewStat );
1607. }
1608. }
1609.
1610. if(CallTest[ch].bEnIn) CallinTestHandler(ch, nNewChState);
1611. if(CallTest[ch].bEnOut) CalloutTestHandler(ch, nNewChState);
1612.
1613. nOldChState[ch] = nNewChState;
1614. //add by JK shi for 支持SetKB功能, begin
1615. nOldPendReason[ch] = nNewPendReason;
1616. //add by JK shi for 支持SetKB功能, end
1617.
1618. if(SsmGetChType(ch) == 15 || SsmGetChType(ch) == 16)
1619. {
1620. char szUsingCodecType[50] = {''};
1621.
1622. memset(szUsingCodecType, 0, sizeof(szUsingCodecType));
1623.
1624. int nResult = SsmIpGetSessionCodecType(ch);
1625.
1626. switch(nResult)
1627. {
1628. case 6:
1629. wsprintf(szUsingCodecType, "G.711 aLaw");
1630. break;
1631.
1632. case 7:
1633. wsprintf(szUsingCodecType, "G.711 muLaw");
1634. break;
1635.
1636. case 131:
1637. wsprintf(szUsingCodecType, "G.729");
1638. break;
1639. }
1640.
1641. m_ChList.SetItemText(ch, ITEM_CodecType, szUsingCodecType);
1642. }
1643. else
1644. m_ChList.SetItemText(ch, ITEM_CodecType, "-1");
1645. }
1646.
1647. if(bEnSearchIdleCh) SearchIdleChCallout();
1648.
1649. CFormView::OnTimer(nIDEvent);
1650. }
1651.
1652. void CTestView::OnSelchangeComboSelcurch()
1653. {
1654. CurCh = m_SelCurCh.GetCurSel();
1655.
1656. m_ChList.EnsureVisible(CurCh, FALSE);
1657.
1658. m_dlgBase.OnSelchangeCurCh(CurCh);
1659. m_dlgPlay.OnSelchangeCurCh(CurCh);
1660. m_dlgRec.OnSelchangeCurCh(CurCh);
1661. m_dlgEvent.OnSelchangeCurCh(CurCh);
1662. m_dlgOther.OnSelchangeCurCh(CurCh);
1663. m_dlgIP.OnSelchangeCurCh(CurCh);
1664.
1665. SetDlgItemInt(IDC_EDIT_LocalFlashTime, 500, TRUE);
1666. UpdateData(FALSE);
1667. }
1668.
1669. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1670. //@@@@@@@@@@@@@@@@@@@@@@@@@@ RxDTMF OPERATION @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1671. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1672.
1673.
1674. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1675. //@@@@@@@@@@@@@@@@@@@@@@@@ TXDTMF OPERATION @@@@@@@@@@@@@@@@@@@@@@@@@@@@
1676. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1677.
1678.
1679.
1680.
1681.
1682. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1683. //@@@@@@@@@@@@@@@@@@@ SEND TONE OPERATION @@@@@@@@@@@@@@@@@@@@@@@@@@
1684. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1685.
1686.
1687. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1688. //@@@@@@@@@@@@@@@@@@@ INTER-CH OPERATION @@@@@@@@@@@@@@@@@@@@@@@@@@@
1689. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1690.
1691.
1692. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1693. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ PLAY OPERATION @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1694. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1695.
1696.
1697. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1698. //@@@@@@@@@@@@@@@@@@@@@@@@@@ RECORD OPERATION @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1699. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1700.
1701.
1702.
1703. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1704. //@@@@@@@@@@@@@@@@@@@ SET TONE-CHECK PARAMETERS @@@@@@@@@@@@@@@@@@@@@
1705. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1706.
1707.
1708. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1709. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@ CONFERENCE OPERATION @@@@@@@@@@@@@@@@@@@@@@@@@@@@
1710. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1711. LPBYTE pszMemDot=NULL, pszBuf[100];
1712. DWORD dwMemSize=4096L;
1713.
1714.
1715.
1716.
1717. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1718. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@ echo-killer OPERATION @@@@@@@@@@@@@@@@@@@@@@@@@@@@
1719. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1720.
1721.
1722.
1723.
1724.
1725. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1726. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@ echo-killer OPERATION @@@@@@@@@@@@@@@@@@@@@@@@@@@@
1727. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1728.
1729.
1730. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1731. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CALL TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1732. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1733.
1734. void CTestView::InitCallTest()
1735. {
1736. PCALLTEST p;
1737.
1738. for(int ch=0; ch<nMaxCh; ch++)
1739. {
1740. p = &CallTest[ch];
1741.
1742. p->bEnIn = FALSE;
1743. p->bEnInRxDtmf = FALSE;
1744. p->bEnInTxDtmf = FALSE;
1745. p->nInTotTest = 0;
1746. p->nInCallOK = 0;
1747. p->nInRxDtmfOk = 0;
1748.
1749. p->bEnOut = FALSE;
1750. p->bEnOutRxDtmf = FALSE;
1751. p->bEnOutTxDtmf = FALSE;
1752. p->nOutTotTest = 0;
1753. p->nOutCallOK = 0;
1754. p->nOutRxDtmfOK = 0;
1755.
1756. p->nStep = CALLTEST_IDLE;
1757. p->dwTimeOut = 0L;
1758. p->bEnRec = FALSE;
1759. }
1760. bEnSearchIdleCh = FALSE;
1761. bEnCallOutRxDtmf = FALSE;
1762. bEnCallOutTxDtmf = FALSE;
1763. nCallInterval = 1;
1764. }
1765.
1766. void CTestView::CallinTestHandler(int ch, int nChState)
1767. {
1768.
1769. char szBuf[100],szPhoNum[100];
1770. PCALLTEST p = &CallTest[ch];
1771. int nRet;
1772. time_t ltime;
1773.
1774. switch(p->nStep)
1775. {
1776. case CALLTEST_IDLE:
1777. if(nChState == S_CALL_RINGING)
1778. {
1779. SsmPickup(ch);
1780. SsmGetCallerId(ch,szBuf);
1781. SsmGetPhoNumStr(ch,szPhoNum);
1782. if(strcmp(szBuf,CALLERID)==0 && strcmp(szPhoNum,PHONE_NUMBER)==0) p->nInCallOK++;
1783. p->nInTotTest++;
1784. p->dwTimeOut = 0l;
1785.
1786. if(p->bInIsSaveOldRecFile)
1787. {
1788. time(<ime);
1789. wsprintf(p->szRecFile,"Rectime#ldch%d.wav", ltime, ch);
1790. }
1791. else
1792. wsprintf(p->szRecFile, "RecCh%d.wav", ch);
1793.
1794. if(p->bEnRec)
1795. {
1796. if( SsmChkRecToFile( ch )==1) //recording now
1797. SsmStopRecToFile(ch);
1798.
1799. nRet = SsmRecToFile(ch, p->szRecFile , 6, 0, -1, 0, 0);
1800. if(nRet)
1801. myShowErrMsg();
1802. }
1803.
1804. if(p->bEnInRxDtmf) p->nStep = CALLTEST_IN_WaitDtmf;
1805. else p->nStep = CALLTEST_IN_StartSendDtmf;
1806. }
1807. else if(nChState == S_CALL_PENDING)
1808. {
1809. nRet = SsmGetChStateKeepTime(ch);
1810. if(nRet > 2000) //pending longer than 2s
1811. {
1812. SsmHangup(ch);
1813. p->nInTotTest++;
1814. wsprintf(szBuf,"%d/%d/%d",p->nInRxDtmfOk,p->nInCallOK,p->nInTotTest);
1815. m_ChList.SetItemText( ch, ITEM_CallInTest, szBuf);
1816. p->dwTimeOut = 0l;
1817. p->nStep = CALLTEST_IDLE;
1818. }
1819. }
1820. break;
1821.
1822. case CALLTEST_IN_WaitDtmf:
1823. SsmGetDtmfStr(ch,szBuf);
1824. if(strcmp(szBuf,TEST_DTMF) == 0)
1825. {
1826. p->nInRxDtmfOk++;
1827. p->dwTimeOut = 0l;
1828. p->nStep = CALLTEST_IN_StartSendDtmf;
1829. }
1830. else if(nChState!=S_CALL_TALKING || ++p->dwTimeOut>40)
1831. {
1832. SsmHangup(ch);
1833. wsprintf(szBuf,"%d/%d/%d",p->nInRxDtmfOk,p->nInCallOK,p->nInTotTest);
1834. m_ChList.SetItemText( ch, ITEM_CallInTest, szBuf);
1835. p->dwTimeOut = 0l;
1836. p->nStep = CALLTEST_IDLE;
1837. }
1838. break;
1839.
1840. case CALLTEST_IN_StartSendDtmf:
1841. if(p->bEnInTxDtmf)
1842. {
1843. SsmTxDtmf(ch,TEST_DTMF);
1844. p->nStep = CALLTEST_IN_ChkTxDtmf;
1845. }
1846. else
1847. {
1848. SsmHangup(ch);
1849. wsprintf(szBuf,"%d/%d/%d",p->nInRxDtmfOk,p->nInCallOK,p->nInTotTest);
1850. m_ChList.SetItemText( ch, ITEM_CallInTest, szBuf);
1851. p->nStep = CALLTEST_IDLE;
1852. }
1853. break;
1854.
1855. case CALLTEST_IN_ChkTxDtmf:
1856. if(SsmChkTxDtmf(ch)==0)
1857. {
1858. SsmHangup(ch);
1859. wsprintf(szBuf,"%d/%d/%d",p->nInRxDtmfOk,p->nInCallOK,p->nInTotTest);
1860. m_ChList.SetItemText( ch, ITEM_CallInTest, szBuf);
1861. p->nStep = CALLTEST_IDLE;
1862. }
1863. break;
1864. }
1865. }
1866.
1867.
1868. //int WINAPI SsmSearchIdleCallOutCh(WORD wSearchMode, DWORD dwPrecedence)
1869. void CTestView::SearchIdleChCallout()
1870. {
1871. int ch;
1872.
1873.
1874. while((ch=SsmSearchIdleCallOutCh(0x26,0)) != -1)
1875. {
1876. // if(++nWaitSearchIdleChTimeCnt[ch] <= nCallInterval) return; //changed 2002.12.6
1877. nWaitSearchIdleChTimeCnt[ch] = 0;
1878.
1879. PCALLTEST p = &CallTest[ch];
1880.
1881. p->bEnOut = TRUE;
1882. p->bEnRec = FALSE;
1883. p->bEnOutRxDtmf = bEnCallOutRxDtmf;
1884. p->bEnOutTxDtmf = bEnCallOutTxDtmf;
1885. if(bDialAtOnce)
1886. {
1887. SsmPickup(ch);
1888. SsmSetTxCallerId(ch, CALLERID);
1889. if(SsmAutoDial(ch,PHONE_NUMBER) == -1)
1890. {
1891. SsmHangup(ch);
1892. }
1893. else
1894. {
1895. p->nOutTotTest++;
1896. p->dwTimeOut = 0L;
1897. p->nStep = CALLTEST_OUT_WaitDial;
1898. }
1899. }
1900. else p->nStep = CALLTEST_IDLE;
1901. if(bOneCallOnly) break;
1902. }
1903. }
1904.
1905. void CTestView::CalloutTestHandler(int ch, int nChState)
1906. {
1907. int nResult, nDirection;
1908. char szBuf[100];
1909. PCALLTEST p = &CallTest[ch];
1910.
1911. nResult = SsmGetAutoCallDirection(ch,&nDirection);
1912. if(nResult==-1 || nDirection<1) return;
1913.
1914. switch(p->nStep)
1915. {
1916. case CALLTEST_IDLE:
1917.
1918. if(++nWaitSearchIdleChTimeCnt[ch] <= nCallInterval) break; //changed 2002.12.6
1919. nWaitSearchIdleChTimeCnt[ch] = 0;
1920.
1921. if(bEnSearchIdleCh || (!bEnSearchIdleCh&&nChState==S_CALL_STANDBY))
1922. {
1923. SsmPickup(ch);
1924. SsmSetTxCallerId(ch, CALLERID);
1925. if(SsmAutoDial(ch,PHONE_NUMBER) == -1)
1926. {
1927. SsmHangup(ch);
1928. return;
1929. }
1930. p->nOutTotTest++;
1931. p->dwTimeOut = 0L;
1932. p->nStep = CALLTEST_OUT_WaitDial;
1933. }
1934. break;
1935.
1936. case CALLTEST_OUT_WaitDial:
1937. switch(SsmChkAutoDial(ch))
1938. {
1939. case DIAL_VOICE: //"通话"状态
1940. case DIAL_VOICEF1:
1941. case DIAL_VOICEF2:
1942. p->nOutCallOK++;
1943. p->dwTimeOut = 0L;
1944. if(p->bEnOutTxDtmf) p->nStep = CALLTEST_OUT_StartSendDtmf;
1945. else p->nStep = CALLTEST_OUT_WaitDtmf;
1946. break;
1947. case DIAL_NO_DIALTONE:
1948. case DIAL_BUSYTONE:
1949. case DIAL_ECHO_NOVOICE:
1950. case DIAL_NOVOICE:
1951. case DIAL_NOANSWER:
1952. case DIAL_FAILURE:
1953. case DIAL_INVALID_PHONUM:
1954. p->nAutoDialFailed ++;
1955. SsmHangup(ch);
1956. wsprintf(szBuf,"%d/%d/%d/%d/%d",p->nOutRxDtmfOK,p->nOutCallOK,p->nOutTotTest, p->nAutoDialFailed, p->nOutRxDtmfFailed);
1957. m_ChList.SetItemText( ch, ITEM_CallTest, szBuf);
1958. p->dwTimeOut = 0L;
1959. if(bEnSearchIdleCh) p->bEnOut = FALSE;
1960. p->nStep = CALLTEST_IDLE;
1961. break;
1962. case DIAL_STANDBY:
1963. nResult = SsmGetChStateKeepTime(ch);
1964. if(nResult > 2000)
1965. {
1966. p->nAutoDialFailed ++;
1967. SsmHangup(ch);
1968. wsprintf(szBuf,"%d/%d/%d/%d/%d",p->nOutRxDtmfOK,p->nOutCallOK,p->nOutTotTest, p->nAutoDialFailed, p->nOutRxDtmfFailed);
1969. m_ChList.SetItemText( ch, ITEM_CallTest, szBuf);
1970. p->dwTimeOut = 0L;
1971. if(bEnSearchIdleCh) p->bEnOut = FALSE;
1972. p->nStep = CALLTEST_IDLE;
1973. }
1974. break;
1975.
1976. case DIAL_DIALING:
1977. case DIAL_ECHOTONE:
1978. default:
1979. break;
1980. }
1981. break;
1982.
1983. case CALLTEST_OUT_StartSendDtmf:
1984. SsmTxDtmf(ch,TEST_DTMF);
1985. p->nStep = CALLTEST_OUT_ChkTxDtmf;
1986. break;
1987.
1988. case CALLTEST_OUT_ChkTxDtmf:
1989. if(SsmChkTxDtmf(ch) == 0)
1990. {
1991. p->nStep = CALLTEST_OUT_WaitDtmf;
1992. }
1993. break;
1994. case CALLTEST_OUT_WaitDtmf:
1995. if(p->bEnOutRxDtmf)
1996. {
1997. SsmGetDtmfStr(ch,szBuf);
1998. if(strcmp(szBuf,TEST_DTMF) == 0)
1999. {
2000. SsmHangup(ch);
2001. p->nOutRxDtmfOK++;
2002. wsprintf(szBuf,"%d/%d/%d/%d/%d",p->nOutRxDtmfOK,p->nOutCallOK,p->nOutTotTest, p->nAutoDialFailed, p->nOutRxDtmfFailed);
2003. m_ChList.SetItemText( ch, ITEM_CallTest, szBuf);
2004. if(bEnSearchIdleCh) p->bEnOut = FALSE;
2005. p->nStep = CALLTEST_IDLE;
2006. }
2007. else if(++p->dwTimeOut > 40)
2008. {
2009. SsmHangup(ch);
2010. p->nOutRxDtmfFailed++;
2011. wsprintf(szBuf,"%d/%d/%d/%d/%d",p->nOutRxDtmfOK,p->nOutCallOK,p->nOutTotTest, p->nAutoDialFailed, p->nOutRxDtmfFailed);
2012. m_ChList.SetItemText( ch, ITEM_CallTest, szBuf);
2013. if(bEnSearchIdleCh) p->bEnOut = FALSE;
2014. p->nStep = CALLTEST_IDLE;
2015. }
2016. }
2017. else
2018. {
2019. SsmHangup(ch);
2020. wsprintf(szBuf,"%d/%d/%d",p->nOutRxDtmfOK,p->nOutCallOK,p->nOutTotTest);
2021. m_ChList.SetItemText( ch, ITEM_CallTest, szBuf);
2022. if(bEnSearchIdleCh) p->bEnOut = FALSE;
2023. p->nStep = CALLTEST_IDLE;
2024. }
2025. break;
2026. }
2027. }
2028.
2029. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2030. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SS7 FUNCTION ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2031. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2032.
2033. void CTestView::OnClickChlist(NMHDR* pNMHDR, LRESULT* pResult)
2034. {
2035. // TODO: Add your control notification handler code here
2036. int nItem, nFlags;
2037.
2038. nFlags = LVNI_SELECTED;
2039. nItem = m_ChList.GetNextItem(-1, nFlags );
2040. if ( nItem != -1 )
2041. {
2042. m_SelCurCh.SetCurSel(nItem);
2043. CurCh = m_SelCurCh.GetCurSel();
2044. }
2045.
2046. OnSelchangeComboSelcurch();
2047.
2048. *pResult = 0;
2049. }
2050.
2051. void CTestView::OnOpenShconfig()
2052. {
2053. // TODO: Add your command handler code here
2054. TCHAR lpstrActual[300];
2055. TCHAR command[400] = TEXT("notepad ");
2056. STARTUPINFO si = {sizeof(si) };
2057. PROCESS_INFORMATION pi;
2058. DWORD dwExitCode;
2059.
2060. GetCurrentDirectory(MAX_PATH,lpstrActual);
2061. lstrcat(lpstrActual,"\ShConfig.ini");
2062. lstrcat(command, lpstrActual);
2063. //WinExec( command, SW_SHOWNORMAL);
2064. BOOL fSucess = CreateProcess(NULL, command, NULL, NULL,
2065. FALSE, 0, NULL, NULL, &si, &pi);
2066. if(fSucess)
2067. {
2068. // OnBUTTONSsmCloseCti();
2069. Sleep(200);
2070.
2071. CloseHandle(pi.hThread);
2072. WaitForSingleObject(pi.hProcess , INFINITE);
2073. GetExitCodeProcess(pi.hProcess , &dwExitCode);
2074. CloseHandle(pi.hProcess);
2075. // OnBUTTONSsmStartCti();
2076. }
2077. }
2078.
2079. void CTestView::OnOpenShcticonfig()
2080. {
2081. // TODO: Add your command handler code here
2082. TCHAR lpstrActual[300];
2083. // TCHAR command[400] = TEXT("notepad ");
2084. STARTUPINFO si = {sizeof(si) };
2085. PROCESS_INFORMATION pi;
2086. DWORD dwExitCode;
2087.
2088. GetCurrentDirectory(MAX_PATH,lpstrActual);
2089. lstrcat(lpstrActual,"\ShCtiConfig.exe");
2090. // lstrcat(command, lpstrActual);
2091.
2092. BOOL fSucess = CreateProcess(NULL, lpstrActual, NULL, NULL,
2093. FALSE, 0, NULL, NULL, &si, &pi);
2094. if(fSucess)
2095. {
2096. // OnBUTTONSsmCloseCti();
2097. Sleep(200);
2098.
2099. CloseHandle(pi.hThread);
2100. WaitForSingleObject(pi.hProcess , INFINITE);
2101. GetExitCodeProcess(pi.hProcess , &dwExitCode);
2102. CloseHandle(pi.hProcess);
2103.
2104. // OnBUTTONSsmStartCti();
2105. }
2106. else
2107. {
2108. // MessageBox("在当前目录下没有找到ShCtiConfig.exe程序!", MB_OK);//masked by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.11
2109. MessageBox(BoxMsg_NoConfigExe, MB_OK);//added by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007.1.11
2110. }
2111. }
2112.
2113. void CTestView::OnVer34()
2114. {
2115. // TODO: Add your command handler code here
2116. CVer34 dlg;
2117. dlg.DoModal();
2118. }
2119.
2120. void CTestView::Ontimeflag()
2121. {
2122. // TODO: Add your command handler code here
2123. bTimerOpen = !bTimerOpen;
2124. m_dlgBase.OnSetTimer(bTimerOpen);
2125. m_dlgPlay.OnSetTimer(bTimerOpen);
2126. m_dlgRec.OnSetTimer(bTimerOpen);
2127. m_dlgOther.OnSetTimer(bTimerOpen);
2128. m_dlgIP.OnSetTimer(bTimerOpen);
2129.
2130. return;
2131. }
2132.
2133. void CTestView::OnUpdateOntimeflag(CCmdUI* pCmdUI)
2134. {
2135. // TODO: Add your command update UI handler code here
2136. pCmdUI->SetCheck(bTimerOpen);
2137. }
2138.
2139. void CTestView::myShowErrMsg(int ch)
2140. {
2141. char szErrMsg[300], szErrCode[20];
2142.
2143. wsprintf(szErrCode,"ch=%d ErrorCode=%d",ch,SsmGetLastErrCode());
2144. SsmGetLastErrMsg(szErrMsg);
2145. // lstrcat(szErrMsg, szErrCode);
2146.
2147. AfxMessageBox(szErrMsg, MB_OK, 0);
2148. }
2149.
2150. void WriteLog(char *pMsg)
2151. {
2152. SYSTEMTIME st;
2153. GetLocalTime(&st);
2154.
2155. FILE* pFile = fopen( "T3523.txt", "a+t" );
2156. if(pFile != NULL)
2157. {
2158. fprintf( pFile,"%04u-%02u-%02u %02u:%02u:%02u %sn",
2159. st.wYear,
2160. st.wMonth,
2161. st.wDay,
2162. st.wHour,
2163. st.wMinute,
2164. st.wSecond,
2165. pMsg);
2166. fclose(pFile);
2167. }
2168. }
2169.
2170. void CTestView::OnVer353()
2171. {
2172. ver353 dlg;
2173. dlg.DoModal();
2174. }
2175.
2176. void CTestView::OnOverallEnergyLevel()
2177. {
2178. COverallEnergyLevelDlg dlg;
2179. dlg.DoModal();
2180. }
2181.
2182. void CTestView::On40exOpenBus()
2183. {
2184. C40ExDlg dlg;
2185. dlg.nCurCh = CurCh;
2186. dlg.DoModal();
2187. }
2188.
2189. void CTestView::OnSsmsetwaitdtmfex()
2190. {
2191. // TODO: Add your command handler code here
2192. CSetWaitDtmf dlg;
2193. dlg.DoModal();
2194. }
2195.
2196. //+++START+++ added by yxh for SpyTest, 2003.08.22
2197. void CTestView::OnButtonSpy()
2198. {
2199. // TODO: Add your command handler code here
2200. pDlg->ShowWindow(SW_SHOW);
2201. return;
2202. }
2203. //+++END+++ added by yxh for SpyTest, 2003.08.22
2204.
2205. //++++START++++ added by cqb for SHCTI030902 Test
2206. void CTestView::OnVer404()
2207. {
2208. // TODO: Add your command handler code here
2209. CVer404 dlg;
2210. dlg.DoModal();
2211. }
2212. //++++END++++
2213.
2214. void CTestView::OnVer444x()
2215. {
2216. // TODO: Add your command handler code here
2217. CVer444x dlg;
2218. dlg.DoModal();
2219. }
2220.
2221. //++++START++++ added by cqb for 函数返回BUG Test , 2004.9.29
2222. void CTestView::OnBoardinfo()
2223. {
2224. CBoardInfo bi;
2225. bi.DoModal();
2226. }
2227. //++++START++++ added by cqb for 函数返回BUG Test , 2004.9.29
2228.
2229. void CTestView::OnSelchangeTabView(NMHDR* pNMHDR, LRESULT* pResult)
2230. {
2231. // TODO: Add your control notification handler code here
2232. int nCurSel = m_TabCtrl.GetCurSel();
2233.
2234. for(int i=0; i<VIEW_MAX; i++)
2235. {
2236. ::ShowWindow(hwndView[i], SW_HIDE);
2237. }
2238. ::ShowWindow(hwndView[nCurSel], SW_SHOW);
2239.
2240. *pResult = 0;
2241. }
2242.
2243. void CTestView::OnSelectAllch()
2244. {
2245. // TODO: Add your control notification handler code here
2246. UpdateData(TRUE);
2247. int nStartCh = GetDlgItemInt(IDC_EDIT_SelectAllChStart, NULL, TRUE);
2248. int nEndCh = GetDlgItemInt(IDC_EDIT_SelectAllChEnd, NULL, TRUE);
2249. m_dlgBase.OnSetAllChPara(m_SelectAllCh, nStartCh, nEndCh);
2250. m_dlgPlay.OnSetAllChPara(m_SelectAllCh, nStartCh, nEndCh);
2251. m_dlgRec.OnSetAllChPara(m_SelectAllCh, nStartCh, nEndCh);
2252. m_dlgOther.OnSetAllChPara(m_SelectAllCh, nStartCh, nEndCh);
2253. m_dlgIP.OnSetAllChPara(m_SelectAllCh, nStartCh, nEndCh);
2254. }
2255.
2256. void CTestView::OnButtonSs7()
2257. {
2258. // TODO: Add your command handler code here
2259. CSs7 Ss7;
2260. Ss7.DoModal();
2261. }
2262.
2263. void CTestView::OnBUTTONfsk()
2264. {
2265. // TODO: Add your command handler code here
2266. CFsk myFsk;
2267. myFsk.DoModal();
2268. }
2269.
2270. void CTestView::OnButtonBus()
2271. {
2272. // TODO: Add your command handler code here
2273. BusChInfo myBusInfo;
2274. myBusInfo.DoModal();
2275. }
2276.
2277. void CTestView::OnButtonConf()
2278. {
2279. // TODO: Add your command handler code here
2280. CConInfo myConf;
2281. myConf.DoModal();
2282. }
2283.
2284. void CTestView::OnBUTTONSetChkTonePara()
2285. {
2286. // TODO: Add your command handler code here
2287. CSetChkTonePara mySetChkTonePara;
2288. mySetChkTonePara.DoModal();
2289. }
2290.
2291. void CTestView::OnBUTTONPcmFunc()
2292. {
2293. // TODO: Add your command handler code here
2294. CPcmCompatible myPcmCompatible;
2295. myPcmCompatible.DoModal();
2296. }
2297.
2298. void CTestView::OnBUTTONSS1Base()
2299. {
2300. // TODO: Add your command handler code here
2301. CSS1base mySS1Op;
2302. mySS1Op.DoModal();
2303. }
2304.
2305. void CTestView::OnVER458x()
2306. {
2307. // TODO: Add your command handler code here
2308. CDlgver456x dlg;
2309. dlg.DoModal();
2310. }
2311.
2312. void CTestView::OnVer4605()
2313. {
2314. // TODO: Add your command handler code here
2315. CDlgIsupAdv dlg;
2316. dlg.DoModal();
2317. }
2318.
2319. void CTestView::OnVer4720Shv()
2320. {
2321. // TODO: Add your command handler code here
2322. CShvDlg dlg;
2323. dlg.DoModal();
2324. }
2325.
2326. //++++start++++ added by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007-1-9
2327. void CTestView::InitLang()
2328. {
2329. if (g_dwLanguageID == LANGUAGE_CHINESE_SIMPLIFIED)
2330. {
2331. return;
2332. }
2333. else// if (PRIMARYLANGID(g_dwLanguageID) == LANG_ENGLISH)
2334. {
2335. //TabCtrl
2336. TC_ITEM * pTCItem;
2337. pTCItem = new TC_ITEM;
2338. pTCItem->mask = TCIF_TEXT;
2339. pTCItem->pszText = ENG_TESTFORM_TABCTRL_LAB1;
2340. m_TabCtrl.SetItem(0, pTCItem);
2341. pTCItem->pszText = ENG_TESTFORM_TABCTRL_LAB2;
2342. m_TabCtrl.SetItem(1, pTCItem);
2343. pTCItem->pszText = ENG_TESTFORM_TABCTRL_LAB3;
2344. m_TabCtrl.SetItem(2, pTCItem);
2345. pTCItem->pszText = ENG_TESTFORM_TABCTRL_LAB4;
2346. m_TabCtrl.SetItem(3, pTCItem);
2347. pTCItem->pszText = ENG_TESTFORM_TABCTRL_LAB5;
2348. m_TabCtrl.SetItem(4, pTCItem);
2349. pTCItem->pszText = ENG_TESTFORM_TABCTRL_LAB6;
2350. m_TabCtrl.SetItem(5, pTCItem);
2351. delete pTCItem;
2352.
2353. //ChList
2354. LV_COLUMN lvc;
2355. lvc.mask = LVCF_TEXT;
2356. lvc.pszText = ENG_TESTFORM_CHLIST_LAB2;
2357. m_ChList.SetColumn(1, &lvc);
2358. lvc.pszText = ENG_TESTFORM_CHLIST_LAB3;
2359. m_ChList.SetColumn(2, &lvc);
2360. lvc.pszText = ENG_TESTFORM_CHLIST_LAB6;
2361. m_ChList.SetColumn(5, &lvc);
2362. lvc.pszText = ENG_TESTFORM_CHLIST_LAB32;
2363. m_ChList.SetColumn(31, &lvc);
2364. lvc.pszText = ENG_TESTFORM_CHLIST_LAB33;
2365. m_ChList.SetColumn(32, &lvc);
2366. lvc.pszText = ENG_TESTFORM_CHLIST_LAB34;
2367. m_ChList.SetColumn(33, &lvc);
2368. lvc.pszText = ENG_TESTFORM_CHLIST_LAB35;
2369. m_ChList.SetColumn(34, &lvc);
2370. lvc.pszText = ENG_TESTFORM_CHLIST_LAB36;
2371. m_ChList.SetColumn(35, &lvc);
2372. lvc.pszText = ENG_TESTFORM_CHLIST_LAB37;
2373. m_ChList.SetColumn(36, &lvc);
2374. lvc.pszText = ENG_TESTFORM_CHLIST_LAB38;
2375. m_ChList.SetColumn(37, &lvc);
2376. lvc.pszText = ENG_TESTFORM_CHLIST_LAB39;
2377. m_ChList.SetColumn(38, &lvc);
2378. }
2379. }
2380. //+++++end+++++ added by jyp for 061228-bug-技术部门-提供TEST程序的中英文合一的版本, 2007-1-9
2381.
2382. //+++start+++ add by hunnad for 多路呼叫,2007.10.15
2383. void CTestView::OnMulticall()
2384. {
2385. // TODO: Add your command handler code here
2386. CDlgMultiCall dlg;
2387. dlg.DoModal();
2388.
2389. }
2390. //+++end+++ add by hunnad for 多路呼叫,2007.10.15
2391. //+++start+++ add by hunnad for 全部挂机,2007.10.15
2392. void CTestView::OnHangupall()
2393. {
2394. // TODO: Add your command handler code here
2395. for(int ch = 0; ch < SsmGetMaxCh(); ch++)
2396. SsmHangup(ch);
2397. }
2398. //+++start+++ add by hunnad for 全部挂机,2007.10.15
2399. //+++start+++ add by hunnad for 全部摘机,2007.10.15
2400. void CTestView::OnPickupall()
2401. {
2402. // TODO: Add your command handler code here
2403. for(int ch = 0; ch < SsmGetMaxCh(); ch++)
2404. {
2405. int nState = SsmGetChState(ch);
2406. if(nState == S_CALL_RINGING)
2407. SsmPickup(ch);
2408. }
2409. }
2410. //+++end+++ add by hunnad for 全部摘机,2007.10.15
2411.
呼叫中心源码 java 呼叫中心系统源码
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
springcloud/springboot集成NACOS 做注册和配置中心以及nacos源码分析
springcloud/springboot集成NACOS 做注册和配置中心以及nacos源码分析
数据 spring 客户端 nacos springboot -
呼叫中心系统网络架构 呼叫中心系统方案
飞利浦交换机呼叫中心方案 目 录 1 呼叫中心作用 2 2 呼叫中心的功能 2 3 呼叫中心功能实现 3 4 &n
呼叫中心系统网络架构 数据库 人工智能 网络 数据