// UPhoneBoxDlg.h : heade r file // //{{AFX_INCLUDES() //}}AFX_INCLUDES #include "dialphonenum.h" #include "SetThreshold.h" #include #define WAVE_FORMAT_ALAW 0x0006 #define WAVE_FORMAT_MULAW 0x0007 #include "phonic_ubox.h" #if !defined(AFX_UPhoneBoxDLG_H__62FBB5F5_BADB_4DE5_81C1_7662793DA4E4__INCLUDED_) #define AFX_UPhoneBoxDLG_H__62FBB5F5_BADB_4DE5_81C1_7662793DA4E4__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 typedef unsigned long UBOX_LINE; #define INVALID_UBOX_LINE (UBOX_HANDLE)(-1) #define MAX_DEVICE 8 class CUBoxLine { UBOX_HANDLE hdl; UBOX_LINE lineId_; CString dtmfkey; bool agc; bool bbuzzer; bool bmsgswitch; public: // CString phonenum; bool bplaypause; CSetThreshold threshold; Cdialphonenum SendDtmfDlg; FILE* fpstream; bool brecord; public: CUBoxLine() :hdl(INVALID_UBOX_HANDLE), lineId_(INVALID_UBOX_LINE), agc(false), bbuzzer(false), bmsgswitch(false), bplaypause(false), fpstream(NULL), brecord(false) { // phonenum = _T("9876543210"); } ~CUBoxLine(){ ; } void init_param() { agc = false; bbuzzer = false; bmsgswitch = false; bplaypause = false; brecord = false; } void handl_plug_in(UBOX_HANDLE ubxHdl, UBOX_LINE lineid){ hdl = ubxHdl; lineId_ = lineid; init_param(); } void handl_plug_out() { hdl = INVALID_UBOX_HANDLE; lineId_ = INVALID_UBOX_LINE; if (fpstream) { fclose(fpstream); fpstream = NULL; } } UBOX_HANDLE line_handel() const { return hdl; } UBOX_LINE line_id() const { return lineId_; } void set_dtmf_key(char key) { dtmfkey += key; } CString get_dtmfky() const { return dtmfkey; } void clear_dtmf_key(){ dtmfkey = ""; } bool get_agc() const { return agc; } void set_agc(bool bset) { agc = bset; } bool get_buzzerSwitch() const { return bbuzzer; } void set_buzzerSwitch(bool bset) { bbuzzer = bset; } bool get_MessageSwitch() const { return bmsgswitch; } void set_MessageSwitch(bool bset) { bmsgswitch = bset; } }; ///////////////////////////////////////////////////////////////////////////// // CUPhoneBoxDlg dialog #include "ClientTunnel.h" #include "TrayIcon.h" class CUPhoneBoxDlg : public CDialog { CTrayIcon m_TrayIcon; // Construction public: void RefreshData(); void ReleaseData(); void ShowAllWindow(); void ClientBooking(CString id, CString name1, CString name2); void ExitWindow(int lineID, BOOL bSave); void ShowClient(int lineid, CString phone); CUPhoneBoxDlg(CWnd* pParent = NULL); // standard constructor void OnDisconnect(); BOOL OnConnect(); DWORD GetConnectionID(); void SetConnectionID(DWORD dwConnection); void ProcessChatMessageRequest2(BYTE code); void ProcessChatMessageRequest2(CString sql); void ProcessChatMessageRequest2(BYTE *pData, int length); BOOL ProcessChatMessageRequest(void *szDataBuf, int nDataLen); void ProcessChatMessageResponse(void *pResponse); void ProcessLoginResponse(void *pLoginResult); BOOL ProcessLoginRequest(); void ProcessNetEvent(int nEventType, void *pRecvMsg, DWORD dwDataLen); CClientTunnel m_tClientTunnel; DWORD m_dwConnectionID; // Dialog Data //{{AFX_DATA(CUPhoneBoxDlg) enum { IDD = IDD_UPhoneBox_DIALOG }; CListCtrl m_list; CListBox m_dis; //}}AFX_DATA int m_iClickItemID; inline CUBoxLine* get_line_by_ID(size_t lineID); inline CUBoxLine* get_line_by_handle(UBOX_HANDLE handle); void PopOpt(int index); void autoRecordFile(UBOX_HANDLE hdl); void handle_event( UBOX_HANDLE uboxHnd, int eventID, //事件,参考UBOX_EVENT的定义 unsigned long param1, //下面几个参数不同的事件,其含义不同 unsigned long param2, unsigned long param3, unsigned long param4); // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CUPhoneBoxDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: void OnPLugInPhonicusb(UBOX_HANDLE hdl); void OnCallIdPhonicusb(UBOX_HANDLE hdl, char* callid); void OnCallOutFinishPhonicusb(UBOX_HANDLE hdl); void OnDeviceAlarmPhonicusb(UBOX_HANDLE hdl); void OnDeviceErrorPhonicusb(UBOX_HANDLE hdl); void OnDtmfKeyPhonicusb(UBOX_HANDLE hdl, char dtmfcode); void OnHangIngPhonicusb(UBOX_HANDLE hdl); void OnHangUpPhonicusb(UBOX_HANDLE hdl); void OnHookOffPhonicusb(UBOX_HANDLE hdl); void OnLineIdlePhonicusb(UBOX_HANDLE hdl); void OnLineVoltagePhonicusb(UBOX_HANDLE hdl, long voltage); void OnPlayEndPhonicusb(UBOX_HANDLE hdl); void OnPlayErrorPhonicusb(UBOX_HANDLE hdl); void OnPlugOutPhonicusb(UBOX_HANDLE hdl); void OnPolarityPhonicusb(UBOX_HANDLE hdl, long param1); void OnRingPhonicusb(UBOX_HANDLE hdl); void OnRingCancelPhonicusb(UBOX_HANDLE hdl); void OnRingStopPhonicusb(UBOX_HANDLE hdl); void OnStreamVoicePhonicusb(UBOX_HANDLE hdl, char* pvoice, long len); void OnToneBusyPhonicusb(UBOX_HANDLE hdl); protected: HICON m_hIcon; HICON m_hIcon2; CUBoxLine ubox_device[MAX_DEVICE]; CString strPath; // Generated message map functions //{{AFX_MSG(CUPhoneBoxDlg) virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); afx_msg void OnCloseagc(); afx_msg void OnDialphonenum(); afx_msg void OnGethangthreshold(); afx_msg void OnGethardwareversion(); afx_msg void OnGetproductname(); afx_msg void OnGetusernum(); afx_msg void OnOpenbuzzer(); afx_msg void OnOpenconfiguremode(); afx_msg void OnOpenmsgswitch(); afx_msg void OnPauseplay(); afx_msg void OnPlayfile(); afx_msg void OnReadeeprom(); afx_msg void OnReadeepromex(); afx_msg void OnReadlinevoltage(); afx_msg void OnRecordfile(); afx_msg void OnRecordstream(); afx_msg void OnSethangthreshold(); afx_msg void OnSethookoffthreshold(); afx_msg void OnSofthangup(); afx_msg void OnSofthookoff(); afx_msg void OnStopplay(); afx_msg void OnStopreadlinevoltage(); afx_msg void OnStoprecord(); afx_msg void OnWriteeeprom(); afx_msg void OnSetBusyTone(); afx_msg void OnGethookoffthreshold(); afx_msg void OnDblclkOpt(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnDestroy(); afx_msg void OnRestart(); afx_msg void OnSetVolume(); afx_msg void OnTimer(UINT nIDEvent); afx_msg void OnClose(); afx_msg void OnAutorun(); LRESULT OnTrayNotification(WPARAM wParam, LPARAM lParam); LRESULT OnNewClient(WPARAM wParam, LPARAM lParam); //}}AFX_MSG DECLARE_MESSAGE_MAP() CFont m_font; }; #pragma pack( push, 1 ) struct WaveFileHeader //sizeof(WaveFileHeader) = 44 { unsigned long riff_chunk_ID_; //"RIFF" unsigned long riff_chunk_size_; //riff_chunk_size_ = filesize-8 unsigned long wave_id_; //"WAVE" unsigned long wave_fmt_chunk_id_; //"fmt " unsigned long wave_fmt_chunk_size_; //=sizeof(wav_fmt_) WAVEFORMATEX wav_fmt_; unsigned long fact_chunk_ID_; //"fact" unsigned long fact_chunk_size_; //4 unsigned long fact_data_size_; //fact_data_size_=riff_chunk_size_-50 unsigned long data_data_ID_; //"data" unsigned long data_data_size_; //data_data_size_=riff_chunk_size_-50 WaveFileHeader() { set(0, WAVE_FORMAT_PCM); } WaveFileHeader(size_t wavesize) { set(wavesize, WAVE_FORMAT_PCM); } WaveFileHeader(size_t wavesize, WORD fmt) { set(wavesize, fmt); } void set(size_t wavesize, WORD fmt) { riff_chunk_ID_ = FOURCC_RIFF; riff_chunk_size_ = wavesize + sizeof(WaveFileHeader) - 2 * sizeof(unsigned long); wave_id_ = mmioFOURCC('W', 'A', 'V', 'E'); wave_fmt_chunk_id_ = mmioFOURCC('f', 'm', 't', ' '); wave_fmt_chunk_size_ = 0x12; wav_fmt_.wFormatTag = /*(WORD)*/fmt; wav_fmt_.nChannels = 1; // 1 for mono wav_fmt_.nSamplesPerSec = 8000; wav_fmt_.cbSize = 0; fact_data_size_ = wavesize; switch (fmt) { case WAVE_FORMAT_PCM: wav_fmt_.wBitsPerSample = 16; break; case WAVE_FORMAT_ALAW: case WAVE_FORMAT_MULAW: wav_fmt_.wBitsPerSample = 8; break; } wav_fmt_.nAvgBytesPerSec = wav_fmt_.nChannels * wav_fmt_.nSamplesPerSec * wav_fmt_.wBitsPerSample / 8; wav_fmt_.nBlockAlign = wav_fmt_.nChannels * wav_fmt_.wBitsPerSample / 8; fact_chunk_ID_ = mmioFOURCC('f', 'a', 'c', 't'); fact_chunk_size_ = 4; data_data_ID_ = mmioFOURCC('d', 'a', 't', 'a'); data_data_size_ = wavesize; } }; #pragma pack( pop, 1 ) //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_UPhoneBoxDLG_H__62FBB5F5_BADB_4DE5_81C1_7662793DA4E4__INCLUDED_)