Update of /cvsroot/iaxclient/iaxclient/simpleclient/WinIAX In directory sc8-pr-cvs1:/tmp/cvs-serv4513 Added Files: ReadMe.txt StdAfx.cpp StdAfx.h WinIAX.cpp WinIAX.dsp WinIAX.dsw resource.h resource.rc winiax.h Log Message: WinIAX contributed to iaxclient by Faizan "Tili" Naqvi <fa...@ti...> --- NEW FILE: ReadMe.txt --- WinIAX contributed to iaxclient by Faizan "Tili" Naqvi <fa...@ti...> ======================================================================== WIN32 APPLICATION : WinIAX ======================================================================== AppWizard has created this WinIAX application for you. This file contains a summary of what you will find in each of the files that make up your WinIAX application. WinIAX.cpp This is the main application source file. WinIAX.dsp This file (the project file) contains information at the project level and is used to build a single project or subproject. Other users can share the project (.dsp) file, but they should export the makefiles locally. ///////////////////////////////////////////////////////////////////////////// Other standard files: StdAfx.h, StdAfx.cpp These files are used to build a precompiled header (PCH) file named WinIAX.pch and a precompiled types file named StdAfx.obj. ///////////////////////////////////////////////////////////////////////////// Other notes: AppWizard uses "TODO:" to indicate parts of the source code you should add to or customize. ///////////////////////////////////////////////////////////////////////////// --- NEW FILE: StdAfx.cpp --- // stdafx.cpp : source file that includes just the standard includes // WinIAX.pch will be the pre-compiled header // stdafx.obj will contain the pre-compiled type information #include "stdafx.h" // TODO: reference any additional headers you need in STDAFX.H // and not in this file --- NEW FILE: StdAfx.h --- // stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, but // are changed infrequently // #if !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_) #define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #include <windows.h> // TODO: reference additional headers your program requires here //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_) --- NEW FILE: WinIAX.cpp --- // WinIAX.cpp : Defines the entry point for the application. // #include "stdafx.h" #include "winiax.h" #include "resource.h" #include "iaxclient.h" #include "commctrl.h" //#include "stdarg.h" //#include "varargs.h" #define APP_NAME "WinIAX Client" #define LEVEL_MAX -10 #define LEVEL_MIN -50 #define TIMER_PROCESS_CALLS 1001 int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // TODO: Place code here. WNDCLASSEX wnd; wnd.cbSize=sizeof WNDCLASSEX; wnd.lpfnWndProc=(WNDPROC)DialogProc; // wnd.hIcon=LoadIcon(NULL,MAKEINTRESOURCE(IDI_ICON1)); // wnd.hIconSm=LoadIcon(NULL,MAKEINTRESOURCE(IDI_ICON1)); // wnd.hIconSm=(HICON)LoadImage(hInstance ,MAKEINTRESOURCE(IDI_ICON1),IMAGE_ICON,GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON),LR_DEFAULTCOLOR); RegisterClassEx(&wnd); INITCOMMONCONTROLSEX cmtcl; cmtcl.dwSize=sizeof (INITCOMMONCONTROLSEX); cmtcl.dwICC=ICC_WIN95_CLASSES; InitCommonControlsEx(&cmtcl); hBr=CreateSolidBrush(RGB(40,100,150)); // m_hwndMainDlg=CreateDialog(hInstance,MAKEINTRESOURCE(IDD_MAIN_DLG),NULL,(DLGPROC)DialogProc); m_hwndMainDlg=CreateDialog(hInstance,MAKEINTRESOURCE(IDD_MAIN_DLG),NULL,(DLGPROC)DialogProc); if(!m_hwndMainDlg) { // GetLastError(); TMessageBox("Couldnt create main dialog box\nAborting..."); return 0; } ShowWindow(m_hwndMainDlg,SW_SHOW); // PBM_SETRANGE(0,LEVEL_MAX-LEVEL_MIN); MSG msg; while(GetMessage(&msg,NULL,0,0)) { if(!IsDialogMessage(m_hwndMainDlg,&msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } // KillTimer(NULL,m_iTimerId); iaxc_dump_call(); iaxc_process_calls(); for(int i=0;i<10;i++) { iaxc_millisleep(100); iaxc_process_calls(); } iaxc_stop_processing_thread(); iaxc_shutdown(); return 0; } int TMessageBox(char *szMsg,int btn) { return MessageBox(m_hwndMainDlg,szMsg,APP_NAME,btn); } INT_PTR DialogProc( HWND hwndDlg, // handle to dialog box UINT uMsg, // message WPARAM wParam, // first message parameter LPARAM lParam // second message parameter ) { BOOL bRet=FALSE; switch (uMsg) { case WM_INITDIALOG: bRet=OnInitDialog(); break; case WM_SYSCOMMAND: bRet=OnSysCommand(wParam); break; case WM_DESTROY: EndDialog(m_hwndMainDlg,0); PostQuitMessage(0); bRet=FALSE; break; case WM_TIMER: bRet=OnTimer(wParam); break; case WM_CTLCOLORDLG: return (INT_PTR)hBr; break; case WM_CTLCOLORSTATIC: SetBkColor((HDC)wParam,RGB(40,100,150)); SetTextColor((HDC)wParam,RGB(255,255,255)); return (INT_PTR)hBr; break; case WM_COMMAND: { switch (LOWORD(wParam)) { case IDC_BN_DIAL: OnBnDial(); // TMessageBox("Dial Clicked"); break; case IDC_BN_HANGUP: OnBnHangup(); TMessageBox("Hangup Clicked"); break; case IDC_BN_1: SendDTMF('1'); break; case IDC_BN_2: SendDTMF('2'); break; case IDC_BN_3: SendDTMF('3'); break; case IDC_BN_4: SendDTMF('4'); break; case IDC_BN_5: SendDTMF('5'); break; case IDC_BN_6: SendDTMF('6'); break; case IDC_BN_7: SendDTMF('7'); break; case IDC_BN_8: SendDTMF('8'); break; case IDC_BN_9: SendDTMF('9'); break; case IDC_BN_ASTERISK: SendDTMF('*'); break; case IDC_BN_0: SendDTMF('0'); break; case IDC_BN_HASH: SendDTMF('#'); break; // case IDC_PROG_INPUT: // break; // case IDC_PROG_OUTPUT: // bRet=TRUE; // break; // case IDC_E_IAX_URI: // break; } } // bRet=FALSE; break; } return bRet; } BOOL OnInitDialog() { // TMessageBox("OnInitDialog"); double silence_threshold = -99; iaxc_initialize(AUDIO_INTERNAL_PA); iaxc_set_encode_format(IAXC_FORMAT_GSM); iaxc_set_silence_threshold(silence_threshold); iaxc_set_error_callback(status_callback); iaxc_set_levels_callback(levels_callback); iaxc_start_processing_thread(); PostMessage(GetDlgItem(m_hwndMainDlg,IDC_PROG_OUTPUT),PBM_SETRANGE,0,LEVEL_MIN-LEVEL_MAX); PostMessage(GetDlgItem(m_hwndMainDlg,IDC_PROG_INPUT),PBM_SETRANGE,0,LEVEL_MIN-LEVEL_MAX); // m_iTimerId=SetTimer(NULL,0,500,(TIMERPROC)TimerProc); return TRUE; } BOOL OnSysCommand(UINT uCmd) { BOOL bRet=FALSE; switch (uCmd) { case SC_CLOSE: DestroyWindow(m_hwndMainDlg); bRet=TRUE; break; case SC_MINIMIZE: ShowWindow(m_hwndMainDlg,SW_MINIMIZE); bRet=TRUE; break; } return bRet; } void OnBnDial() { char szString[MAX_PATH]; GetDlgItemText(m_hwndMainDlg,IDC_E_IAX_URI,szString,MAX_PATH); iaxc_call(szString); } void OnBnHangup() { iaxc_dump_call(); } void status_callback(char *msg) { SetDlgItemText(m_hwndMainDlg,IDC_ST_STATUS,msg); } int levels_callback(float input, float output) { int inputLevel,outputLevel; if (input < LEVEL_MIN) input = LEVEL_MIN; else if (input > LEVEL_MAX) input = LEVEL_MAX; inputLevel = (int)input - (LEVEL_MIN); if (output < LEVEL_MIN) output = LEVEL_MIN; else if (input > LEVEL_MAX) output = LEVEL_MAX; outputLevel = (int)output - (LEVEL_MIN); PostMessage(GetDlgItem(m_hwndMainDlg,IDC_PROG_OUTPUT),PBM_SETPOS,outputLevel,0); PostMessage(GetDlgItem(m_hwndMainDlg,IDC_PROG_INPUT),PBM_SETPOS,inputLevel,0); //char szStr[30]; //sprintf(szStr,"Output %d,input %d",output,input); //SetDlgItemText(m_hwndMainDlg,IDC_ST_STATUS,szStr); // Set // theFrame->input->SetValue(inputLevel); // theFrame->output->SetValue(outputLevel); return 0; } void SendDTMF(char num) { iaxc_send_dtmf(num); } BOOL OnTimer(UINT nIDEvent) { BOOL bRet=TRUE; if(nIDEvent==TIMER_PROCESS_CALLS) { iaxc_process_calls(); bRet=FALSE; } return bRet; } VOID CALLBACK TimerProc( HWND hwnd, // handle to window UINT uMsg, // WM_TIMER message UINT_PTR idEvent, // timer identifier DWORD dwTime // current system time ) { // Using thread instead of timer from now on. if(idEvent==m_iTimerId) { iaxc_process_calls(); } } --- NEW FILE: WinIAX.dsp --- # Microsoft Developer Studio Project File - Name="WinIAX" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 CFG=WinIAX - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "WinIAX.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "WinIAX.mak" CFG="WinIAX - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "WinIAX - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "WinIAX - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "WinIAX - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"stdafx.h" /FD /c # ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\lib" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"stdafx.h" /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib comctl32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib winmm.lib ..\..\lib\Release\iaxclient_lib.lib ..\..\lib\sox\Release\sox.lib /nologo /subsystem:windows /machine:I386 !ELSEIF "$(CFG)" == "WinIAX - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c # ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\lib\sox" /I "../../lib/gsm/src" /I "../../lib" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib winmm.lib ws2_32.lib comctl32.lib ..\..\lib\Debug\iaxclient_lib.lib ..\..\lib\sox\Debug\sox.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept !ENDIF # Begin Target # Name "WinIAX - Win32 Release" # Name "WinIAX - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\resource.rc # End Source File # Begin Source File SOURCE=.\StdAfx.cpp # ADD CPP /Yc"stdafx.h" # End Source File # Begin Source File SOURCE=.\WinIAX.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\StdAfx.h # End Source File # Begin Source File SOURCE=.\winiax.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # Begin Source File SOURCE=.\ReadMe.txt # End Source File # End Target # End Project --- NEW FILE: WinIAX.dsw --- Microsoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "WinIAX"=.\WinIAX.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### --- NEW FILE: resource.h --- //{{NO_DEPENDENCIES}} // Microsoft Developer Studio generated include file. // Used by resource.rc // #define IDD_MAIN_DLG 101 #define IDC_BN_DIAL 1000 #define IDC_E_IAX_URI 1001 #define IDC_BN_HANGUP 1002 #define IDC_ST_STATUS 1004 #define IDC_BN_1 1012 #define IDC_BN_2 1013 #define IDC_BN_3 1014 #define IDC_BN_4 1015 #define IDC_BN_5 1016 #define IDC_BN_6 1017 #define IDC_BN_7 1018 #define IDC_BN_8 1019 #define IDC_BN_9 1020 #define IDC_BN_ASTERISK 1021 #define IDC_BN_0 1022 #define IDC_BN_HASH 1023 #define IDC_PROG_OUTPUT 1024 #define IDC_PROG_INPUT 1025 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 102 #define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_CONTROL_VALUE 1026 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif --- NEW FILE: resource.rc --- //Microsoft Developer Studio generated resource script. // #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "afxres.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // English (U.S.) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #ifdef _WIN32 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #pragma code_page(1252) #endif //_WIN32 #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE DISCARDABLE BEGIN "resource.h\0" END 2 TEXTINCLUDE DISCARDABLE BEGIN "#include ""afxres.h""\r\n" "\0" END 3 TEXTINCLUDE DISCARDABLE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Dialog // IDD_MAIN_DLG DIALOG DISCARDABLE 0, 0, 234, 175 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Dialog" FONT 8, "MS Sans Serif" BEGIN PUSHBUTTON "Dial",IDC_BN_DIAL,67,34,50,14 EDITTEXT IDC_E_IAX_URI,50,7,177,14,ES_AUTOHSCROLL LTEXT "IAX URI:",IDC_STATIC,17,10,29,8 PUSHBUTTON "Hangup",IDC_BN_HANGUP,117,34,50,14 LTEXT "Welcome to WinIAX Client",IDC_ST_STATUS,7,143,220,25 PUSHBUTTON "1",IDC_BN_1,90,58,17,14 PUSHBUTTON "2",IDC_BN_2,108,58,17,14 PUSHBUTTON "3",IDC_BN_3,126,58,17,14 PUSHBUTTON "4",IDC_BN_4,90,72,17,14 PUSHBUTTON "5",IDC_BN_5,108,72,17,14 PUSHBUTTON "6",IDC_BN_6,126,72,17,14 PUSHBUTTON "7",IDC_BN_7,90,86,17,14 PUSHBUTTON "8",IDC_BN_8,108,86,17,14 PUSHBUTTON "9",IDC_BN_9,126,86,17,14 PUSHBUTTON "*",IDC_BN_ASTERISK,90,100,17,14 PUSHBUTTON "0",IDC_BN_0,108,100,17,14 PUSHBUTTON "#",IDC_BN_HASH,126,100,17,14 CONTROL "Progress1",IDC_PROG_OUTPUT,"msctls_progress32", PBS_VERTICAL | WS_BORDER,204,49,8,73 CONTROL "Progress2",IDC_PROG_INPUT,"msctls_progress32", PBS_VERTICAL | WS_BORDER,219,49,8,73 END ///////////////////////////////////////////////////////////////////////////// // // DESIGNINFO // #ifdef APSTUDIO_INVOKED GUIDELINES DESIGNINFO DISCARDABLE BEGIN IDD_MAIN_DLG, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 227 TOPMARGIN, 7 BOTTOMMARGIN, 168 END END #endif // APSTUDIO_INVOKED #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED --- NEW FILE: winiax.h --- #include "gsm\inc\gsm.h" #include "stdio.h" #include "process.h" //#include "sox.h" HWND m_hwndMainDlg; UINT_PTR m_iTimerId; HBRUSH hBr; int TMessageBox(char *szMsg,int btn=MB_OK); BOOL OnInitDialog(); BOOL OnSysCommand(UINT uCmd); INT_PTR DialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); void OnBnDial(); void OnBnHangup(); void status_callback(char *msg); int levels_callback(float input, float output); void SendDTMF(char num); BOOL OnTimer(UINT nIDEvent); VOID CALLBACK TimerProc(HWND hwnd,UINT uMsg,UINT_PTR idEvent,DWORD dwTime); |