Re #1655: Removed pjsua_wince and PocketPj (replaced with pjsua CLI, which is integrated in the 'pjsua' project for Win desktop).

git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@4493 74dad513-b988-da41-8d7b-12977e46ad98
This commit is contained in:
Nanang Izzuddin 2013-04-23 11:10:20 +00:00
parent cd9e89100a
commit 95678efb27
40 changed files with 12 additions and 15742 deletions

View File

@ -96,16 +96,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pjsip_test", "pjsip\build\p
{23D7679C-764C-4E02-8B29-BB882CEEEFE2} = {23D7679C-764C-4E02-8B29-BB882CEEEFE2}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PocketPJ", "pjsip-apps\src\pocketpj\PocketPJ.vcproj", "{48450961-D0DF-4B59-BD8D-39455AA02DF8}"
ProjectSection(ProjectDependencies) = postProject
{23D7679C-764C-4E02-8B29-BB882CEEEFE2} = {23D7679C-764C-4E02-8B29-BB882CEEEFE2}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pjsua_wince", "pjsip-apps\src\pjsua_wince\pjsua_wince.vcproj", "{C014B29B-4A42-414B-B567-988469F032D8}"
ProjectSection(ProjectDependencies) = postProject
{23D7679C-764C-4E02-8B29-BB882CEEEFE2} = {23D7679C-764C-4E02-8B29-BB882CEEEFE2}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpjproject", "pjsip-apps\build\libpjproject.vcproj", "{23D7679C-764C-4E02-8B29-BB882CEEEFE2}"
ProjectSection(ProjectDependencies) = postProject
{2BB84911-C1B4-4747-B93D-36AA82CC5031} = {2BB84911-C1B4-4747-B93D-36AA82CC5031}
@ -1038,11 +1028,8 @@ Global
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Smartphone 2003 (ARMV4).Deploy.0 = Debug|Smartphone 2003 (ARMV4)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Win32.ActiveCfg = Debug|Win32
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Win32.Build.0 = Debug|Win32
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
@ -1057,10 +1044,8 @@ Global
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Smartphone 2003 (ARMV4).Deploy.0 = Debug-Dynamic|Smartphone 2003 (ARMV4)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Win32.ActiveCfg = Debug-Dynamic|Win32
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Win32.Build.0 = Debug-Dynamic|Win32
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
@ -1075,10 +1060,8 @@ Global
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Smartphone 2003 (ARMV4).Deploy.0 = Debug-Static|Smartphone 2003 (ARMV4)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Win32.ActiveCfg = Debug-Static|Win32
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Win32.Build.0 = Debug-Static|Win32
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
@ -1093,10 +1076,8 @@ Global
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Smartphone 2003 (ARMV4).Deploy.0 = Release|Smartphone 2003 (ARMV4)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Win32.ActiveCfg = Release|Win32
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Win32.Build.0 = Release|Win32
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
@ -1111,10 +1092,8 @@ Global
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Smartphone 2003 (ARMV4).Deploy.0 = Release-Dynamic|Smartphone 2003 (ARMV4)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Win32.ActiveCfg = Release-Dynamic|Win32
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Win32.Build.0 = Release-Dynamic|Win32
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
@ -1129,10 +1108,8 @@ Global
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Smartphone 2003 (ARMV4).Deploy.0 = Release-Static|Smartphone 2003 (ARMV4)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Win32.ActiveCfg = Release-Static|Win32
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Win32.Build.0 = Release-Static|Win32
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
{8310649E-A25E-4AF0-91E8-9E3CC659BB89}.Release-Static|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
@ -2534,198 +2511,6 @@ Global
{B3F7D4E9-702F-4EB4-ADA8-098D0A83D770}.Release-Static|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 6 Standard SDK (ARMV4I)
{B3F7D4E9-702F-4EB4-ADA8-098D0A83D770}.Release-Static|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release-Static|Windows Mobile 6 Standard SDK (ARMV4I)
{B3F7D4E9-702F-4EB4-ADA8-098D0A83D770}.Release-Static|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release-Static|Windows Mobile 6 Standard SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Pocket PC 2003 (ARMV4).ActiveCfg = Debug|Pocket PC 2003 (ARMV4)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Pocket PC 2003 (ARMV4).Build.0 = Debug|Pocket PC 2003 (ARMV4)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Pocket PC 2003 (ARMV4).Deploy.0 = Debug|Pocket PC 2003 (ARMV4)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Smartphone 2003 (ARMV4).ActiveCfg = Debug|Smartphone 2003 (ARMV4)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Win32.ActiveCfg = Debug|Win32
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Pocket PC 2003 (ARMV4).ActiveCfg = Debug-Dynamic|Pocket PC 2003 (ARMV4)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Pocket PC 2003 (ARMV4).Build.0 = Debug-Dynamic|Pocket PC 2003 (ARMV4)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Pocket PC 2003 (ARMV4).Deploy.0 = Debug-Dynamic|Pocket PC 2003 (ARMV4)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Smartphone 2003 (ARMV4).ActiveCfg = Debug-Dynamic|Smartphone 2003 (ARMV4)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Win32.ActiveCfg = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Pocket PC 2003 (ARMV4).ActiveCfg = Debug-Static|Pocket PC 2003 (ARMV4)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Pocket PC 2003 (ARMV4).Build.0 = Debug-Static|Pocket PC 2003 (ARMV4)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Pocket PC 2003 (ARMV4).Deploy.0 = Debug-Static|Pocket PC 2003 (ARMV4)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Smartphone 2003 (ARMV4).ActiveCfg = Debug-Static|Smartphone 2003 (ARMV4)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Win32.ActiveCfg = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Debug-Static|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 6 Standard SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Pocket PC 2003 (ARMV4).ActiveCfg = Release|Pocket PC 2003 (ARMV4)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Pocket PC 2003 (ARMV4).Build.0 = Release|Pocket PC 2003 (ARMV4)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Pocket PC 2003 (ARMV4).Deploy.0 = Release|Pocket PC 2003 (ARMV4)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Smartphone 2003 (ARMV4).ActiveCfg = Release|Smartphone 2003 (ARMV4)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Win32.ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Standard SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Pocket PC 2003 (ARMV4).ActiveCfg = Release-Dynamic|Pocket PC 2003 (ARMV4)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Pocket PC 2003 (ARMV4).Build.0 = Release-Dynamic|Pocket PC 2003 (ARMV4)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Pocket PC 2003 (ARMV4).Deploy.0 = Release-Dynamic|Pocket PC 2003 (ARMV4)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Smartphone 2003 (ARMV4).ActiveCfg = Release-Dynamic|Smartphone 2003 (ARMV4)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Win32.ActiveCfg = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Pocket PC 2003 (ARMV4).ActiveCfg = Release-Static|Pocket PC 2003 (ARMV4)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Pocket PC 2003 (ARMV4).Build.0 = Release-Static|Pocket PC 2003 (ARMV4)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Pocket PC 2003 (ARMV4).Deploy.0 = Release-Static|Pocket PC 2003 (ARMV4)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Smartphone 2003 (ARMV4).ActiveCfg = Release-Static|Smartphone 2003 (ARMV4)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Win32.ActiveCfg = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
{48450961-D0DF-4B59-BD8D-39455AA02DF8}.Release-Static|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 6 Standard SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Pocket PC 2003 (ARMV4).ActiveCfg = Debug|Pocket PC 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Pocket PC 2003 (ARMV4).Build.0 = Debug|Pocket PC 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Pocket PC 2003 (ARMV4).Deploy.0 = Debug|Pocket PC 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Smartphone 2003 (ARMV4).ActiveCfg = Debug|Smartphone 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Smartphone 2003 (ARMV4).Build.0 = Debug|Smartphone 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Smartphone 2003 (ARMV4).Deploy.0 = Debug|Smartphone 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Win32.ActiveCfg = Debug|Win32
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Pocket PC 2003 (ARMV4).ActiveCfg = Debug-Dynamic|Pocket PC 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Pocket PC 2003 (ARMV4).Build.0 = Debug-Dynamic|Pocket PC 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Pocket PC 2003 (ARMV4).Deploy.0 = Debug-Dynamic|Pocket PC 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Smartphone 2003 (ARMV4).ActiveCfg = Debug-Dynamic|Smartphone 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Smartphone 2003 (ARMV4).Build.0 = Debug-Dynamic|Smartphone 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Smartphone 2003 (ARMV4).Deploy.0 = Debug-Dynamic|Smartphone 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Win32.ActiveCfg = Debug-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Pocket PC 2003 (ARMV4).ActiveCfg = Debug-Static|Pocket PC 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Pocket PC 2003 (ARMV4).Build.0 = Debug-Static|Pocket PC 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Pocket PC 2003 (ARMV4).Deploy.0 = Debug-Static|Pocket PC 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Smartphone 2003 (ARMV4).ActiveCfg = Debug-Static|Smartphone 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Smartphone 2003 (ARMV4).Build.0 = Debug-Static|Smartphone 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Smartphone 2003 (ARMV4).Deploy.0 = Debug-Static|Smartphone 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Win32.ActiveCfg = Debug-Static|Windows Mobile 6 Standard SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug-Static|Windows Mobile 6 Professional SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug-Static|Windows Mobile 6 Standard SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug-Static|Windows Mobile 6 Standard SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Debug-Static|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug-Static|Windows Mobile 6 Standard SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Pocket PC 2003 (ARMV4).ActiveCfg = Release|Pocket PC 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Pocket PC 2003 (ARMV4).Build.0 = Release|Pocket PC 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Pocket PC 2003 (ARMV4).Deploy.0 = Release|Pocket PC 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Smartphone 2003 (ARMV4).ActiveCfg = Release|Smartphone 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Smartphone 2003 (ARMV4).Build.0 = Release|Smartphone 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Smartphone 2003 (ARMV4).Deploy.0 = Release|Smartphone 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Win32.ActiveCfg = Release|Windows Mobile 6 Standard SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Standard SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Pocket PC 2003 (ARMV4).ActiveCfg = Release-Dynamic|Pocket PC 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Pocket PC 2003 (ARMV4).Build.0 = Release-Dynamic|Pocket PC 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Pocket PC 2003 (ARMV4).Deploy.0 = Release-Dynamic|Pocket PC 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Smartphone 2003 (ARMV4).ActiveCfg = Release-Dynamic|Smartphone 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Smartphone 2003 (ARMV4).Build.0 = Release-Dynamic|Smartphone 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Smartphone 2003 (ARMV4).Deploy.0 = Release-Dynamic|Smartphone 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Win32.ActiveCfg = Release-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release-Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release-Dynamic|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release-Dynamic|Windows Mobile 6 Professional SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release-Dynamic|Windows Mobile 6 Standard SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Pocket PC 2003 (ARMV4).ActiveCfg = Release-Static|Pocket PC 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Pocket PC 2003 (ARMV4).Build.0 = Release-Static|Pocket PC 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Pocket PC 2003 (ARMV4).Deploy.0 = Release-Static|Pocket PC 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Smartphone 2003 (ARMV4).ActiveCfg = Release-Static|Smartphone 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Smartphone 2003 (ARMV4).Build.0 = Release-Static|Smartphone 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Smartphone 2003 (ARMV4).Deploy.0 = Release-Static|Smartphone 2003 (ARMV4)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Win32.ActiveCfg = Release-Static|Windows Mobile 6 Standard SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release-Static|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release-Static|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release-Static|Windows Mobile 6 Professional SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release-Static|Windows Mobile 6 Standard SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release-Static|Windows Mobile 6 Standard SDK (ARMV4I)
{C014B29B-4A42-414B-B567-988469F032D8}.Release-Static|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release-Static|Windows Mobile 6 Standard SDK (ARMV4I)
{23D7679C-764C-4E02-8B29-BB882CEEEFE2}.Debug|Pocket PC 2003 (ARMV4).ActiveCfg = Debug|Pocket PC 2003 (ARMV4)
{23D7679C-764C-4E02-8B29-BB882CEEEFE2}.Debug|Pocket PC 2003 (ARMV4).Build.0 = Debug|Pocket PC 2003 (ARMV4)
{23D7679C-764C-4E02-8B29-BB882CEEEFE2}.Debug|Smartphone 2003 (ARMV4).ActiveCfg = Debug|Smartphone 2003 (ARMV4)

View File

@ -1,8 +0,0 @@
// stdafx.cpp : source file that includes just the standard includes
// pjsua_wince.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

View File

@ -1,25 +0,0 @@
// 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
// Windows Header Files:
#include <windows.h>
// Local Header Files
// TODO: reference additional headers your program requires here
//{{AFX_INSERT_LOCATION}}
// Microsoft eMbedded Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)

View File

@ -1,39 +0,0 @@
#ifndef __NEWRES_H__
#define __NEWRES_H__
#if !defined(UNDER_CE)
#define UNDER_CE _WIN32_WCE
#endif
#if defined(_WIN32_WCE)
#if !defined(WCEOLE_ENABLE_DIALOGEX)
#define DIALOGEX DIALOG DISCARDABLE
#endif
#include <commctrl.h>
#define SHMENUBAR RCDATA
#if defined(WIN32_PLATFORM_PSPC) && (_WIN32_WCE >= 300)
#include <aygshell.h>
#else
#define I_IMAGENONE (-2)
#define NOMENU 0xFFFF
#define IDS_SHNEW 1
#define IDM_SHAREDNEW 10
#define IDM_SHAREDNEWDEFAULT 11
#endif
#endif // _WIN32_WCE
#ifdef RC_INVOKED
#ifndef _INC_WINDOWS
#define _INC_WINDOWS
#include "winuser.h" // extract from windows header
#endif
#endif
#ifdef IDC_STATIC
#undef IDC_STATIC
#endif
#define IDC_STATIC (-1)
#endif //__NEWRES_H__

View File

@ -1,780 +0,0 @@
// pjsua_wince.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
#include "pjsua_wince.h"
#include <commctrl.h>
#include <pjsua-lib/pjsua.h>
#define MAX_LOADSTRING 100
// Global Variables:
static HINSTANCE hInst;
static HWND hMainWnd;
static HWND hwndCB;
static HWND hwndGlobalStatus, hwndURI, hwndCallStatus;
static HWND hwndActionButton, hwndExitButton;
//
// Basic config.
//
#define SIP_PORT 5060
//
// Destination URI (to make call, or to subscribe presence)
//
#define SIP_DST_URI "sip:192.168.0.7:5061"
//
// Account
//
#define HAS_SIP_ACCOUNT 0 // 0 to disable registration
#define SIP_DOMAIN "server"
#define SIP_REALM "server"
#define SIP_USER "user"
#define SIP_PASSWD "secret"
//
// Outbound proxy for all accounts
//
#define SIP_PROXY NULL
//#define SIP_PROXY "sip:192.168.0.2;lr"
//
// Configure nameserver if DNS SRV is to be used with both SIP
// or STUN (for STUN see other settings below)
//
#define NAMESERVER NULL
//#define NAMESERVER "62.241.163.201"
//
// STUN server
#if 0
// Use this to have the STUN server resolved normally
# define STUN_DOMAIN NULL
# define STUN_SERVER "stun.fwdnet.net"
#elif 0
// Use this to have the STUN server resolved with DNS SRV
# define STUN_DOMAIN "iptel.org"
# define STUN_SERVER NULL
#else
// Use this to disable STUN
# define STUN_DOMAIN NULL
# define STUN_SERVER NULL
#endif
//
// Use ICE?
//
#define USE_ICE 0
//
// Globals
//
static pj_pool_t *g_pool;
static pj_str_t g_local_uri;
static int g_current_acc;
static int g_current_call = PJSUA_INVALID_ID;
static int g_current_action;
enum
{
ID_GLOBAL_STATUS = 21,
ID_URI,
ID_CALL_STATUS,
ID_POLL_TIMER,
};
enum
{
ID_MENU_NONE = 64,
ID_MENU_CALL,
ID_MENU_ANSWER,
ID_MENU_DISCONNECT,
ID_BTN_ACTION,
};
// Forward declarations of functions included in this code module:
static ATOM MyRegisterClass (HINSTANCE, LPTSTR);
BOOL InitInstance (HINSTANCE, int);
static void OnCreate (HWND hWnd);
static LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
/////////////////////////////////////////////////////////////////////////////
static void OnError(const wchar_t *title, pj_status_t status)
{
char errmsg[PJ_ERR_MSG_SIZE];
PJ_DECL_UNICODE_TEMP_BUF(werrmsg, PJ_ERR_MSG_SIZE);
pj_strerror(status, errmsg, sizeof(errmsg));
MessageBox(NULL, PJ_STRING_TO_NATIVE(errmsg, werrmsg, PJ_ERR_MSG_SIZE),
title, MB_OK);
}
static void SetLocalURI(const char *uri, int len, bool enabled=true)
{
wchar_t tmp[128];
if (len==-1) len=pj_ansi_strlen(uri);
pj_ansi_to_unicode(uri, len, tmp, PJ_ARRAY_SIZE(tmp));
SetDlgItemText(hMainWnd, ID_GLOBAL_STATUS, tmp);
EnableWindow(hwndGlobalStatus, enabled?TRUE:FALSE);
}
static void SetURI(const char *uri, int len, bool enabled=true)
{
wchar_t tmp[128];
if (len==-1) len=pj_ansi_strlen(uri);
pj_ansi_to_unicode(uri, len, tmp, PJ_ARRAY_SIZE(tmp));
SetDlgItemText(hMainWnd, ID_URI, tmp);
EnableWindow(hwndURI, enabled?TRUE:FALSE);
}
static void SetCallStatus(const char *state, int len)
{
wchar_t tmp[128];
if (len==-1) len=pj_ansi_strlen(state);
pj_ansi_to_unicode(state, len, tmp, PJ_ARRAY_SIZE(tmp));
SetDlgItemText(hMainWnd, ID_CALL_STATUS, tmp);
}
static void SetAction(int action, bool enable=true)
{
HMENU hMenu;
hMenu = CommandBar_GetMenu(hwndCB, 0);
RemoveMenu(hMenu, ID_MENU_NONE, MF_BYCOMMAND);
RemoveMenu(hMenu, ID_MENU_CALL, MF_BYCOMMAND);
RemoveMenu(hMenu, ID_MENU_ANSWER, MF_BYCOMMAND);
RemoveMenu(hMenu, ID_MENU_DISCONNECT, MF_BYCOMMAND);
switch (action) {
case ID_MENU_NONE:
InsertMenu(hMenu, ID_EXIT, MF_BYCOMMAND, action, TEXT("None"));
SetWindowText(hwndActionButton, TEXT("-"));
break;
case ID_MENU_CALL:
InsertMenu(hMenu, ID_EXIT, MF_BYCOMMAND, action, TEXT("Call"));
SetWindowText(hwndActionButton, TEXT("&Call"));
break;
case ID_MENU_ANSWER:
InsertMenu(hMenu, ID_EXIT, MF_BYCOMMAND, action, TEXT("Answer"));
SetWindowText(hwndActionButton, TEXT("&Answer"));
break;
case ID_MENU_DISCONNECT:
InsertMenu(hMenu, ID_EXIT, MF_BYCOMMAND, action, TEXT("Hangup"));
SetWindowText(hwndActionButton, TEXT("&Hangup"));
break;
}
EnableMenuItem(hMenu, action, MF_BYCOMMAND | (enable?MF_ENABLED:MF_GRAYED));
DrawMenuBar(hMainWnd);
g_current_action = action;
}
/*
* Handler when invite state has changed.
*/
static void on_call_state(pjsua_call_id call_id, pjsip_event *e)
{
pjsua_call_info call_info;
PJ_UNUSED_ARG(e);
pjsua_call_get_info(call_id, &call_info);
if (call_info.state == PJSIP_INV_STATE_DISCONNECTED) {
g_current_call = PJSUA_INVALID_ID;
SetURI(SIP_DST_URI, -1);
SetAction(ID_MENU_CALL);
//SetCallStatus(call_info.state_text.ptr, call_info.state_text.slen);
SetCallStatus(call_info.last_status_text.ptr, call_info.last_status_text.slen);
} else {
//if (g_current_call == PJSUA_INVALID_ID)
// g_current_call = call_id;
if (call_info.remote_contact.slen)
SetURI(call_info.remote_contact.ptr, call_info.remote_contact.slen, false);
else
SetURI(call_info.remote_info.ptr, call_info.remote_info.slen, false);
if (call_info.state == PJSIP_INV_STATE_CONFIRMED)
SetAction(ID_MENU_DISCONNECT);
SetCallStatus(call_info.state_text.ptr, call_info.state_text.slen);
}
}
/*
* Callback on media state changed event.
* The action may connect the call to sound device, to file, or
* to loop the call.
*/
static void on_call_media_state(pjsua_call_id call_id)
{
pjsua_call_info call_info;
pjsua_call_get_info(call_id, &call_info);
if (call_info.media_status == PJSUA_CALL_MEDIA_ACTIVE) {
pjsua_conf_connect(call_info.conf_slot, 0);
pjsua_conf_connect(0, call_info.conf_slot);
}
}
/**
* Handler when there is incoming call.
*/
static void on_incoming_call(pjsua_acc_id acc_id, pjsua_call_id call_id,
pjsip_rx_data *rdata)
{
pjsua_call_info call_info;
PJ_UNUSED_ARG(acc_id);
PJ_UNUSED_ARG(rdata);
if (g_current_call != PJSUA_INVALID_ID) {
pj_str_t reason;
reason = pj_str("Another call is in progress");
pjsua_call_answer(call_id, PJSIP_SC_BUSY_HERE, &reason, NULL);
return;
}
g_current_call = call_id;
pjsua_call_get_info(call_id, &call_info);
SetAction(ID_MENU_ANSWER);
SetURI(call_info.remote_info.ptr, call_info.remote_info.slen, false);
pjsua_call_answer(call_id, 200, NULL, NULL);
}
/*
* Handler registration status has changed.
*/
static void on_reg_state(pjsua_acc_id acc_id)
{
PJ_UNUSED_ARG(acc_id);
// Log already written.
}
/*
* Handler on buddy state changed.
*/
static void on_buddy_state(pjsua_buddy_id buddy_id)
{
/* Currently this is not processed */
PJ_UNUSED_ARG(buddy_id);
}
/**
* Incoming IM message (i.e. MESSAGE request)!
*/
static void on_pager(pjsua_call_id call_id, const pj_str_t *from,
const pj_str_t *to, const pj_str_t *contact,
const pj_str_t *mime_type, const pj_str_t *text)
{
/* Currently this is not processed */
PJ_UNUSED_ARG(call_id);
PJ_UNUSED_ARG(from);
PJ_UNUSED_ARG(to);
PJ_UNUSED_ARG(contact);
PJ_UNUSED_ARG(mime_type);
PJ_UNUSED_ARG(text);
}
/**
* Received typing indication
*/
static void on_typing(pjsua_call_id call_id, const pj_str_t *from,
const pj_str_t *to, const pj_str_t *contact,
pj_bool_t is_typing)
{
/* Currently this is not processed */
PJ_UNUSED_ARG(call_id);
PJ_UNUSED_ARG(from);
PJ_UNUSED_ARG(to);
PJ_UNUSED_ARG(contact);
PJ_UNUSED_ARG(is_typing);
}
/**
* Callback upon NAT detection completion
*/
static void nat_detect_cb(const pj_stun_nat_detect_result *res)
{
if (res->status != PJ_SUCCESS) {
char msg[250];
pj_ansi_snprintf(msg, sizeof(msg), "NAT detection failed: %s",
res->status_text);
SetCallStatus(msg, pj_ansi_strlen(msg));
} else {
char msg[250];
pj_ansi_snprintf(msg, sizeof(msg), "NAT type is %s",
res->nat_type_name);
SetCallStatus(msg, pj_ansi_strlen(msg));
}
}
static BOOL OnInitStack(void)
{
pjsua_config cfg;
pjsua_logging_config log_cfg;
pjsua_media_config media_cfg;
pjsua_transport_config udp_cfg;
pjsua_transport_config rtp_cfg;
pjsua_transport_id transport_id;
pjsua_transport_info transport_info;
pj_str_t tmp;
pj_status_t status;
/* Create pjsua */
status = pjsua_create();
if (status != PJ_SUCCESS) {
OnError(TEXT("Error creating pjsua"), status);
return FALSE;
}
/* Create global pool for application */
g_pool = pjsua_pool_create("pjsua", 4000, 4000);
/* Init configs */
pjsua_config_default(&cfg);
pjsua_media_config_default(&media_cfg);
pjsua_transport_config_default(&udp_cfg);
udp_cfg.port = SIP_PORT;
pjsua_transport_config_default(&rtp_cfg);
rtp_cfg.port = 40000;
pjsua_logging_config_default(&log_cfg);
log_cfg.level = 5;
log_cfg.log_filename = pj_str("\\pjsua.txt");
log_cfg.msg_logging = 1;
log_cfg.decor = pj_log_get_decor() | PJ_LOG_HAS_CR;
/* Setup media */
media_cfg.clock_rate = 8000;
media_cfg.ec_options = PJMEDIA_ECHO_SIMPLE;
media_cfg.ec_tail_len = 256;
// use default quality setting
//media_cfg.quality = 1;
media_cfg.ptime = 20;
media_cfg.enable_ice = USE_ICE;
/* Initialize application callbacks */
cfg.cb.on_call_state = &on_call_state;
cfg.cb.on_call_media_state = &on_call_media_state;
cfg.cb.on_incoming_call = &on_incoming_call;
cfg.cb.on_reg_state = &on_reg_state;
cfg.cb.on_buddy_state = &on_buddy_state;
cfg.cb.on_pager = &on_pager;
cfg.cb.on_typing = &on_typing;
cfg.cb.on_nat_detect = &nat_detect_cb;
if (SIP_PROXY) {
cfg.outbound_proxy_cnt = 1;
cfg.outbound_proxy[0] = pj_str(SIP_PROXY);
}
if (NAMESERVER) {
cfg.nameserver_count = 1;
cfg.nameserver[0] = pj_str(NAMESERVER);
}
if (NAMESERVER && STUN_DOMAIN) {
cfg.stun_domain = pj_str(STUN_DOMAIN);
} else if (STUN_SERVER) {
cfg.stun_host = pj_str(STUN_SERVER);
}
/* Initialize pjsua */
status = pjsua_init(&cfg, &log_cfg, &media_cfg);
if (status != PJ_SUCCESS) {
OnError(TEXT("Initialization error"), status);
return FALSE;
}
/* Set codec priority */
pjsua_codec_set_priority(pj_cstr(&tmp, "pcmu"), 240);
pjsua_codec_set_priority(pj_cstr(&tmp, "pcma"), 230);
pjsua_codec_set_priority(pj_cstr(&tmp, "speex/8000"), 190);
pjsua_codec_set_priority(pj_cstr(&tmp, "ilbc"), 189);
pjsua_codec_set_priority(pj_cstr(&tmp, "speex/16000"), 180);
pjsua_codec_set_priority(pj_cstr(&tmp, "speex/32000"), 0);
pjsua_codec_set_priority(pj_cstr(&tmp, "gsm"), 100);
/* Add UDP transport and the corresponding PJSUA account */
status = pjsua_transport_create(PJSIP_TRANSPORT_UDP,
&udp_cfg, &transport_id);
if (status != PJ_SUCCESS) {
OnError(TEXT("Error starting SIP transport"), status);
return FALSE;
}
pjsua_transport_get_info(transport_id, &transport_info);
g_local_uri.ptr = (char*)pj_pool_alloc(g_pool, 128);
g_local_uri.slen = pj_ansi_sprintf(g_local_uri.ptr,
"<sip:%.*s:%d>",
(int)transport_info.local_name.host.slen,
transport_info.local_name.host.ptr,
transport_info.local_name.port);
/* Add local account */
pjsua_acc_add_local(transport_id, PJ_TRUE, &g_current_acc);
pjsua_acc_set_online_status(g_current_acc, PJ_TRUE);
/* Add account */
if (HAS_SIP_ACCOUNT) {
pjsua_acc_config cfg;
pjsua_acc_config_default(&cfg);
cfg.id = pj_str("sip:" SIP_USER "@" SIP_DOMAIN);
cfg.reg_uri = pj_str("sip:" SIP_DOMAIN);
cfg.cred_count = 1;
cfg.cred_info[0].realm = pj_str(SIP_REALM);
cfg.cred_info[0].scheme = pj_str("digest");
cfg.cred_info[0].username = pj_str(SIP_USER);
cfg.cred_info[0].data_type = PJSIP_CRED_DATA_PLAIN_PASSWD;
cfg.cred_info[0].data = pj_str(SIP_PASSWD);
status = pjsua_acc_add(&cfg, PJ_TRUE, &g_current_acc);
if (status != PJ_SUCCESS) {
pjsua_destroy();
return PJ_FALSE;
}
}
/* Add buddy */
if (SIP_DST_URI) {
pjsua_buddy_config bcfg;
pjsua_buddy_config_default(&bcfg);
bcfg.uri = pj_str(SIP_DST_URI);
bcfg.subscribe = PJ_FALSE;
pjsua_buddy_add(&bcfg, NULL);
}
/* Start pjsua */
status = pjsua_start();
if (status != PJ_SUCCESS) {
OnError(TEXT("Error starting pjsua"), status);
return FALSE;
}
return TRUE;
}
//////////////////////////////////////////////////////////////////////////////
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
MSG msg;
HACCEL hAccelTable;
PJ_UNUSED_ARG(lpCmdLine);
PJ_UNUSED_ARG(hPrevInstance);
// Perform application initialization:
if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}
hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_PJSUA_WINCE);
// Main message loop:
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return msg.wParam;
}
static ATOM MyRegisterClass(HINSTANCE hInstance, LPTSTR szWindowClass)
{
WNDCLASS wc;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = (WNDPROC) WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_PJSUA_WINCE));
wc.hCursor = 0;
wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = 0;
wc.lpszClassName = szWindowClass;
return RegisterClass(&wc);
}
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;
TCHAR szTitle[MAX_LOADSTRING];
TCHAR szWindowClass[MAX_LOADSTRING];
hInst = hInstance;
/* Init stack */
if (OnInitStack() == FALSE)
return FALSE;
LoadString(hInstance, IDC_PJSUA_WINCE, szWindowClass, MAX_LOADSTRING);
MyRegisterClass(hInstance, szWindowClass);
LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
hWnd = CreateWindow(szWindowClass, szTitle, WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 200,
NULL, NULL, hInstance, NULL);
if (!hWnd)
{
return FALSE;
}
hMainWnd = hWnd;
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
if (hwndCB)
CommandBar_Show(hwndCB, TRUE);
SetTimer(hMainWnd, ID_POLL_TIMER, 50, NULL);
pjsua_detect_nat_type();
return TRUE;
}
static void OnCreate(HWND hWnd)
{
enum
{
X = 10,
Y = 40,
W = 220,
H = 30,
};
DWORD dwStyle;
hMainWnd = hWnd;
hwndCB = CommandBar_Create(hInst, hWnd, 1);
CommandBar_InsertMenubar(hwndCB, hInst, IDM_MENU, 0);
CommandBar_AddAdornments(hwndCB, 0, 0);
// Create global status text
dwStyle = WS_CHILD | WS_VISIBLE | WS_DISABLED | ES_LEFT;
hwndGlobalStatus = CreateWindow(
TEXT("EDIT"), // Class name
NULL, // Window text
dwStyle, // Window style
X, // x-coordinate of the upper-left corner
Y+0, // y-coordinate of the upper-left corner
W, // Width of the window for the edit
// control
H-5, // Height of the window for the edit
// control
hWnd, // Window handle to the parent window
(HMENU) ID_GLOBAL_STATUS, // Control identifier
hInst, // Instance handle
NULL); // Specify NULL for this parameter when
// you create a control
SetLocalURI(g_local_uri.ptr, g_local_uri.slen, false);
// Create URI edit
dwStyle = WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER;
hwndURI = CreateWindow (
TEXT("EDIT"), // Class name
NULL, // Window text
dwStyle, // Window style
X, // x-coordinate of the upper-left corner
Y+H, // y-coordinate of the upper-left corner
W, // Width of the window for the edit
// control
H-5, // Height of the window for the edit
// control
hWnd, // Window handle to the parent window
(HMENU) ID_URI, // Control identifier
hInst, // Instance handle
NULL); // Specify NULL for this parameter when
// you create a control
// Create action Button
hwndActionButton = CreateWindow( L"button", L"Action",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
X, Y+2*H,
60, H-5, hWnd,
(HMENU) ID_BTN_ACTION,
hInst, NULL );
// Create exit button
hwndExitButton = CreateWindow( L"button", L"E&xit",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
X+70, Y+2*H,
60, H-5, hWnd,
(HMENU) ID_EXIT,
hInst, NULL );
// Create call status edit
dwStyle = WS_CHILD | WS_VISIBLE | WS_DISABLED;
hwndCallStatus = CreateWindow (
TEXT("EDIT"), // Class name
NULL, // Window text
dwStyle, // Window style
X, // x-coordinate of the upper-left corner
Y+3*H, // y-coordinate of the upper-left corner
W, // Width of the window for the edit
// control
H-5, // Height of the window for the edit
// control
hWnd, // Window handle to the parent window
(HMENU) ID_CALL_STATUS, // Control identifier
hInst, // Instance handle
NULL); // Specify NULL for this parameter when
// you create a control
SetCallStatus("Ready", 5);
SetAction(ID_MENU_CALL);
SetURI(SIP_DST_URI, -1);
SetFocus(hWnd);
}
static void OnDestroy(void)
{
pjsua_destroy();
}
static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
switch (message) {
case WM_KEYUP:
if (wParam==114) {
wParam = ID_MENU_CALL;
} else if (wParam==115) {
if (g_current_call == PJSUA_INVALID_ID)
wParam = ID_EXIT;
else
wParam = ID_MENU_DISCONNECT;
} else
break;
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
if (wmId == ID_BTN_ACTION)
wmId = g_current_action;
switch (wmId)
{
case ID_MENU_CALL:
if (g_current_call != PJSUA_INVALID_ID) {
MessageBox(NULL, TEXT("Can not make call"),
TEXT("You already have one call active"), MB_OK);
}
pj_str_t dst_uri;
wchar_t text[256];
char tmp[256];
pj_status_t status;
GetWindowText(hwndURI, text, PJ_ARRAY_SIZE(text));
pj_unicode_to_ansi(text, pj_unicode_strlen(text),
tmp, sizeof(tmp));
dst_uri.ptr = tmp;
dst_uri.slen = pj_ansi_strlen(tmp);
status = pjsua_call_make_call(g_current_acc,
&dst_uri, 0, NULL,
NULL, &g_current_call);
if (status != PJ_SUCCESS)
OnError(TEXT("Unable to make call"), status);
break;
case ID_MENU_ANSWER:
if (g_current_call == PJSUA_INVALID_ID)
MessageBox(NULL, TEXT("Can not answer"),
TEXT("There is no call!"), MB_OK);
else
pjsua_call_answer(g_current_call, 200, NULL, NULL);
break;
case ID_MENU_DISCONNECT:
if (g_current_call == PJSUA_INVALID_ID)
MessageBox(NULL, TEXT("Can not disconnect"),
TEXT("There is no call!"), MB_OK);
else
pjsua_call_hangup(g_current_call, PJSIP_SC_DECLINE, NULL, NULL);
break;
case ID_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_CREATE:
OnCreate(hWnd);
break;
case WM_DESTROY:
OnDestroy();
CommandBar_Destroy(hwndCB);
PostQuitMessage(0);
break;
case WM_TIMER:
pjsua_handle_events(1);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}

View File

@ -1,12 +0,0 @@
#if !defined(AFX_PJSUA_WINCE_H__F6793AE3_47AC_45D8_B00D_AB766E72C6BF__INCLUDED_)
#define AFX_PJSUA_WINCE_H__F6793AE3_47AC_45D8_B00D_AB766E72C6BF__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "resource.h"
#endif // !defined(AFX_PJSUA_WINCE_H__F6793AE3_47AC_45D8_B00D_AB766E72C6BF__INCLUDED_)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,108 +0,0 @@
//Microsoft eMbedded Visual C++ generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "newres.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
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_PJSUA_WINCE ICON DISCARDABLE "pjsua_wince.ICO"
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include ""newres.h""\r\n"
"\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Menubar
//
IDM_MENU MENU DISCARDABLE
BEGIN
MENUITEM "E&xit", ID_EXIT
END
/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//
IDC_PJSUA_WINCE ACCELERATORS DISCARDABLE
BEGIN
"/", IDM_HELP_ABOUT, ASCII, ALT, NOINVERT
VK_F4, IDM_FILE_EXIT, VIRTKEY, ALT, NOINVERT
END
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE DISCARDABLE
BEGIN
IDS_APP_TITLE "pjsua_wince"
IDS_HELLO "Hello World!"
IDC_PJSUA_WINCE "PJSUA_WINCE"
END
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,28 +0,0 @@
//{{NO_DEPENDENCIES}}
// Microsoft eMbedded Visual C++ generated include file.
// Used by pjsua_wince.rc
//
#define IDS_APP_TITLE 1
#define IDS_HELLO 2
#define IDC_PJSUA_WINCE 3
#define IDI_PJSUA_WINCE 101
#define IDM_MENU 102
#define IDD_ABOUTBOX 103
#define IDM_FILE_EXIT 40002
#define IDM_HELP_ABOUT 40003
#define ID_MAKECALL 40004
#define ID_ANSWER 40005
#define ID_DISCONNECT 40006
#define ID_ACTION 40007
#define ID_EXIT 65535
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 104
#define _APS_NEXT_COMMAND_VALUE 40008
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

View File

@ -1,66 +0,0 @@
// PocketPJ.cpp : Defines the class behaviors for the application.
//
#include "stdafx.h"
#include "PocketPJ.h"
#include "PocketPJDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPocketPJApp
BEGIN_MESSAGE_MAP(CPocketPJApp, CWinApp)
//{{AFX_MSG_MAP(CPocketPJApp)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPocketPJApp construction
CPocketPJApp::CPocketPJApp()
: CWinApp()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CPocketPJApp object
CPocketPJApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CPocketPJApp initialization
BOOL CPocketPJApp::InitInstance()
{
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
CPocketPJDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}

View File

@ -1,49 +0,0 @@
// PocketPJ.h : main header file for the POCKETPJ application
//
#if !defined(AFX_POCKETPJ_H__D90320F8_01F9_4F5C_8655_13CF2FFDDF48__INCLUDED_)
#define AFX_POCKETPJ_H__D90320F8_01F9_4F5C_8655_13CF2FFDDF48__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
#include "resource.h" // main symbols
/////////////////////////////////////////////////////////////////////////////
// CPocketPJApp:
// See PocketPJ.cpp for the implementation of this class
//
class CPocketPJApp : public CWinApp
{
public:
CPocketPJApp();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CPocketPJApp)
public:
virtual BOOL InitInstance();
//}}AFX_VIRTUAL
// Implementation
//{{AFX_MSG(CPocketPJApp)
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft eMbedded Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_POCKETPJ_H__D90320F8_01F9_4F5C_8655_13CF2FFDDF48__INCLUDED_)

View File

@ -1,316 +0,0 @@
//Microsoft eMbedded Visual C++ generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
#include "newres.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"
"#include ""newres.h""\r\n"
"\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"#define _AFX_NO_SPLITTER_RESOURCES\r\n"
"#define _AFX_NO_OLE_RESOURCES\r\n"
"#define _AFX_NO_TRACKER_RESOURCES\r\n"
"#define _AFX_NO_PROPERTY_RESOURCES\r\n"
"\r\n"
"#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
"#ifdef _WIN32\r\n"
"LANGUAGE 9, 1\r\n"
"#pragma code_page(1252)\r\n"
"#endif //_WIN32\r\n"
"#include ""res\\PocketPJ.rc2"" // non-Microsoft eMbedded Visual C++ edited resources\r\n"
"#include ""afxres.rc"" // Standard components\r\n"
"#include ""wceres.rc"" // WCE-specific components\r\n"
"#endif\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDR_MAINFRAME ICON DISCARDABLE "res\\PocketPJ.ico"
IDI_ONLINE ICON DISCARDABLE "res\\online.ico"
IDI_OFFLINE ICON DISCARDABLE "res\\offline.ico"
IDI_INVISIBLE ICON DISCARDABLE "res\\invisibl.ico"
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_POCKETPJ_DIALOG DIALOGEX 0, 0, 139, 151
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION
EXSTYLE WS_EX_APPWINDOW | 0x80000000L
CAPTION "PocketPJ"
FONT 8, "System"
BEGIN
LTEXT "sip:user@pjsip.lab",IDC_ACC_ID,22,5,115,8
CONTROL 135,IDC_BTN_ACC,"Static",SS_BITMAP | SS_NOTIFY |
WS_BORDER | WS_TABSTOP,7,3,12,11
CONTROL "List1",IDC_BUDDY_LIST,"SysListView32",LVS_SMALLICON |
LVS_SINGLESEL | LVS_SORTASCENDING | WS_BORDER |
WS_TABSTOP,7,35,127,109
LTEXT "URL:",IDC_STATIC,7,19,16,8
EDITTEXT IDC_URL,25,16,97,12,ES_AUTOHSCROLL
CONTROL 138,IDC_BTN_ACTION,"Static",SS_BITMAP | SS_NOTIFY |
WS_BORDER,125,16,12,11
END
IDD_SETTING DIALOG DISCARDABLE 0, 0, 140, 143
STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "PocketPJ Settings.."
FONT 8, "System"
BEGIN
EDITTEXT IDC_DOMAIN,38,7,78,12,ES_AUTOHSCROLL
EDITTEXT IDC_USER,38,21,78,12,ES_AUTOHSCROLL
EDITTEXT IDC_PASSWD,38,35,78,12,ES_PASSWORD | ES_AUTOHSCROLL
EDITTEXT IDC_DNS,38,49,78,12,ES_AUTOHSCROLL
EDITTEXT IDC_STUN_SRV,56,64,77,12,ES_AUTOHSCROLL
CONTROL "ICE",IDC_ICE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,79,
24,10
CONTROL "TCP",IDC_TCP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,33,
79,24,10
CONTROL "SRTP",IDC_SRTP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,61,
79,29,10
CONTROL "PUBLISH",IDC_PUBLISH,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,93,79,40,10
CONTROL "EC, tail:",IDC_ECHO_SUPPRESS,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,7,92,37,10
EDITTEXT IDC_EC_TAIL,47,91,23,12,ES_AUTOHSCROLL
CONTROL "VAD",IDC_VAD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,93,
92,25,10
COMBOBOX IDC_CODECS,59,105,42,39,CBS_DROPDOWNLIST | WS_VSCROLL |
WS_TABSTOP
PUSHBUTTON "OK",IDOK,17,122,50,14
PUSHBUTTON "Cancel",IDCANCEL,73,122,50,14
LTEXT "Domain:",IDC_STATIC,7,8,30,9
LTEXT "User:",IDC_STATIC,7,22,30,9
LTEXT "Passwd:",IDC_STATIC,7,36,30,9
CONTROL "STUN Srv:",IDC_STUN,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,7,65,47,10
LTEXT "DNS:",IDC_STATIC,8,50,30,9
LTEXT "ms",IDC_STATIC,75,92,13,9
LTEXT "Codec priority:",IDC_STATIC,7,107,49,9
CONTROL "AA",IDC_AA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,107,
107,25,10
END
#ifndef _MAC
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904B0"
BEGIN
VALUE "CompanyName", "HP\0"
VALUE "FileDescription", "PocketPJ WCE MFC Application\0"
VALUE "FileVersion", "1, 0, 0, 1\0"
VALUE "InternalName", "PocketPJ\0"
VALUE "LegalCopyright", "Copyright © 2008\0"
VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "PocketPJ.exe\0"
VALUE "ProductName", "PocketPJ Application\0"
VALUE "ProductVersion", "1, 0, 0, 1\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
#endif // !_MAC
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE
BEGIN
IDD_POCKETPJ_DIALOG, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 137
TOPMARGIN, 7
BOTTOMMARGIN, 144
HORZGUIDE, 28
END
IDD_SETTING, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 133
TOPMARGIN, 7
BOTTOMMARGIN, 136
END
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Bitmap
//
IDB_ONLINE BITMAP DISCARDABLE "res\\online.bmp"
IDB_OFFLINE BITMAP DISCARDABLE "res\\offline.bmp"
IDB_INVISIBLE BITMAP DISCARDABLE "res\\invisibl.bmp"
IDB_ACTION BITMAP DISCARDABLE "res\\action.bmp"
IDB_BLANK BITMAP DISCARDABLE "res\\blank.bmp"
/////////////////////////////////////////////////////////////////////////////
//
// Menubar
//
IDR_ACC_MENU MENU DISCARDABLE
BEGIN
POPUP "Set Online Status:"
BEGIN
MENUITEM "&Online", IDC_ACC_ONLINE
MENUITEM "&Invisible", IDC_ACC_INVISIBLE
MENUITEM SEPARATOR
MENUITEM "&Settings...", IDC_ACC_SETTINGS
MENUITEM SEPARATOR
MENUITEM "E&xit", IDOK
END
END
IDR_URI_MENU MENU DISCARDABLE
BEGIN
POPUP "URI Action"
BEGIN
MENUITEM "&Call...", IDC_URI_CALL
MENUITEM "Add to Buddy List", IDC_URI_ADD_BUDDY
MENUITEM "&Del Buddy", IDC_URI_DEL_BUDDY
END
END
/////////////////////////////////////////////////////////////////////////////
//
// Data
//
IDR_ACC_MENU SHMENUBAR DISCARDABLE
BEGIN
IDR_ACC_MENU, 1,
I_IMAGENONE, IDC_MENU1, TBSTATE_ENABLED,
TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_CAP_MENUITEM32786, 0, 0,
END
IDR_URI_MENU SHMENUBAR DISCARDABLE
BEGIN
IDR_URI_MENU, 1,
I_IMAGENONE, IDC_MENU2, TBSTATE_ENABLED,
TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_CAP_MENUITEM32790, 0, 0,
END
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE DISCARDABLE
BEGIN
IDS_CAP_ONLINE "Online"
IDS_CAP_OFFLINE "Offline"
IDS_CAP_INVISIBLE "Invisible"
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_CAP_MENUITEM32786 "Set Online Status:"
IDS_CAP_MENUITEM32790 "URI Action"
END
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#define _AFX_NO_SPLITTER_RESOURCES
#define _AFX_NO_OLE_RESOURCES
#define _AFX_NO_TRACKER_RESOURCES
#define _AFX_NO_PROPERTY_RESOURCES
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE 9, 1
#pragma code_page(1252)
#endif //_WIN32
#include "res\PocketPJ.rc2" // non-Microsoft eMbedded Visual C++ edited resources
#include "afxres.rc" // Standard components
// #include "wceres.rc" // WCE-specific components
#endif
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View File

@ -1,102 +0,0 @@
; CLW file contains information for the MFC ClassWizard
[General Info]
Version=1
LastClass=CSettingsDlg
LastTemplate=CDialog
NewFileInclude1=#include "stdafx.h"
NewFileInclude2=#include "PocketPJ.h"
ClassCount=3
Class1=CPocketPJApp
Class2=CPocketPJDlg
ResourceCount=5
Resource2=IDR_ACC_MENU
Resource3=IDD_POCKETPJ_DIALOG
Resource4=IDD_SETTING
Resource1=IDR_MAINFRAME
Class3=CSettingsDlg
Resource5=IDR_URI_MENU
[CLS:CPocketPJApp]
Type=0
HeaderFile=PocketPJ.h
ImplementationFile=PocketPJ.cpp
Filter=N
[CLS:CPocketPJDlg]
Type=0
HeaderFile=PocketPJDlg.h
ImplementationFile=PocketPJDlg.cpp
Filter=D
BaseClass=CDialog
VirtualFilter=dWC
LastObject=CPocketPJDlg
[DLG:IDD_POCKETPJ_DIALOG]
Type=1
Class=CPocketPJDlg
ControlCount=6
Control1=IDC_ACC_ID,static,1342308352
Control2=IDC_BTN_ACC,static,1350631694
Control3=IDC_BUDDY_LIST,SysListView32,1350631446
Control4=IDC_STATIC,static,1342308352
Control5=IDC_URL,edit,1350631552
Control6=IDC_BTN_ACTION,static,1350566158
[MNU:IDR_ACC_MENU]
Type=1
Class=CPocketPJDlg
Command1=IDC_ACC_ONLINE
Command2=IDC_ACC_INVISIBLE
Command3=IDC_ACC_SETTINGS
Command4=IDOK
CommandCount=4
[MNU:IDR_URI_MENU]
Type=1
Class=CPocketPJDlg
Command1=IDC_URI_CALL
Command2=IDC_URI_ADD_BUDDY
Command3=IDC_URI_DEL_BUDDY
CommandCount=3
[DLG:IDD_SETTING]
Type=1
Class=CSettingsDlg
ControlCount=23
Control1=IDC_DOMAIN,edit,1350631552
Control2=IDC_USER,edit,1350631552
Control3=IDC_PASSWD,edit,1350631584
Control4=IDC_DNS,edit,1350631552
Control5=IDC_STUN_SRV,edit,1350631552
Control6=IDC_ICE,button,1342242819
Control7=IDC_TCP,button,1342242819
Control8=IDC_SRTP,button,1342242819
Control9=IDC_PUBLISH,button,1342242819
Control10=IDC_ECHO_SUPPRESS,button,1342242819
Control11=IDC_EC_TAIL,edit,1350631552
Control12=IDC_VAD,button,1342242819
Control13=IDC_CODECS,combobox,1344339971
Control14=IDOK,button,1342242816
Control15=IDCANCEL,button,1342242816
Control16=IDC_STATIC,static,1342308352
Control17=IDC_STATIC,static,1342308352
Control18=IDC_STATIC,static,1342308352
Control19=IDC_STUN,button,1342242819
Control20=IDC_STATIC,static,1342308352
Control21=IDC_STATIC,static,1342308352
Control22=IDC_STATIC,static,1342308352
Control23=IDC_AA,button,1342242819
[CLS:CSettingsDlg]
Type=0
HeaderFile=SettingsDlg.h
ImplementationFile=SettingsDlg.cpp
BaseClass=CDialog
Filter=D
VirtualFilter=dWC
LastObject=CSettingsDlg

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,269 +0,0 @@
Microsoft eMbedded Visual Tools Workspace File, Format Version 4.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "PocketPJ"=".\PocketPJ.vcp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name libgsmcodec
End Project Dependency
Begin Project Dependency
Project_Dep_Name libportaudio
End Project Dependency
Begin Project Dependency
Project_Dep_Name libresample
End Project Dependency
Begin Project Dependency
Project_Dep_Name libsrtp
End Project Dependency
Begin Project Dependency
Project_Dep_Name pjlib_util_wince
End Project Dependency
Begin Project Dependency
Project_Dep_Name pjlib_wince
End Project Dependency
Begin Project Dependency
Project_Dep_Name pjmedia_codec_wince
End Project Dependency
Begin Project Dependency
Project_Dep_Name pjmedia_wince
End Project Dependency
Begin Project Dependency
Project_Dep_Name pjnath_wince
End Project Dependency
Begin Project Dependency
Project_Dep_Name pjsip_core_wince
End Project Dependency
Begin Project Dependency
Project_Dep_Name pjsip_simple_wince
End Project Dependency
Begin Project Dependency
Project_Dep_Name pjsip_ua_wince
End Project Dependency
Begin Project Dependency
Project_Dep_Name pjsua_lib_wince
End Project Dependency
Begin Project Dependency
Project_Dep_Name libilbccodec
End Project Dependency
Begin Project Dependency
Project_Dep_Name libspeex
End Project Dependency
Begin Project Dependency
Project_Dep_Name pjmedia_auddev_wince
End Project Dependency
}}}
###############################################################################
Project: "libgsmcodec"="..\..\..\third_party\build\gsm\libgsmcodec.vcp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "libilbccodec"="..\..\..\third_party\build\ilbc\libilbccodec.vcp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "libportaudio"="..\..\..\third_party\build\portaudio\libportaudio.vcp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "libresample"="..\..\..\third_party\build\resample\libresample.vcp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "libspeex"="..\..\..\third_party\build\speex\libspeex.vcp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "libsrtp"="..\..\..\third_party\build\srtp\libsrtp.vcp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "pjlib_util_wince"="..\..\..\pjlib-util\build\wince-evc4\pjlib_util_wince.vcp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "pjlib_wince"="..\..\..\pjlib\build\wince-evc4\pjlib_wince.vcp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "pjmedia_auddev_wince"="..\..\..\pjmedia\build\wince-evc4\pjmedia_auddev_wince.vcp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "pjmedia_codec_wince"="..\..\..\pjmedia\build\wince-evc4\pjmedia_codec_wince.vcp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "pjmedia_wince"="..\..\..\pjmedia\build\wince-evc4\pjmedia_wince.vcp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "pjnath_wince"="..\..\..\pjnath\build\wince-evc4\pjnath_wince.vcp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "pjsip_core_wince"="..\..\..\pjsip\build\wince-evc4\pjsip_core_wince.vcp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "pjsip_simple_wince"="..\..\..\pjsip\build\wince-evc4\pjsip_simple_wince.vcp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "pjsip_ua_wince"="..\..\..\pjsip\build\wince-evc4\pjsip_ua_wince.vcp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "pjsua_lib_wince"="..\..\..\pjsip\build\wince-evc4\pjsua_lib_wince.vcp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

View File

@ -1,792 +0,0 @@
// PocketPJDlg.cpp : implementation file
//
#include "stdafx.h"
#include "PocketPJ.h"
#include "PocketPJDlg.h"
#include <iphlpapi.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define TIMER_ID 101
static CPocketPJDlg *theDlg;
/////////////////////////////////////////////////////////////////////////////
// CPocketPJDlg dialog
CPocketPJDlg::CPocketPJDlg(CWnd* pParent /*=NULL*/)
: CDialog(CPocketPJDlg::IDD, pParent), m_PopUp(NULL)
{
//{{AFX_DATA_INIT(CPocketPJDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
theDlg = this;
m_PopUp = new CPopUpWnd(this);
m_PopUp->Hide();
unsigned i;
m_PopUpCount = 0;
for (i=0; i<POPUP_MAX_TYPE; ++i) {
m_PopUpState[i] = FALSE;
}
}
void CPocketPJDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPocketPJDlg)
DDX_Control(pDX, IDC_URL, m_Url);
DDX_Control(pDX, IDC_BUDDY_LIST, m_BuddyList);
DDX_Control(pDX, IDC_BTN_ACTION, m_BtnUrlAction);
DDX_Control(pDX, IDC_BTN_ACC, m_BtnAcc);
DDX_Control(pDX, IDC_ACC_ID, m_AccId);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPocketPJDlg, CDialog)
//{{AFX_MSG_MAP(CPocketPJDlg)
ON_BN_CLICKED(IDC_BTN_ACC, OnBtnAcc)
ON_BN_CLICKED(IDC_BTN_ACTION, OnBtnAction)
ON_COMMAND(IDC_ACC_SETTINGS, OnSettings)
ON_COMMAND(IDC_URI_CALL, OnUriCall)
ON_WM_TIMER()
ON_COMMAND(IDC_URI_ADD_BUDDY, OnUriAddBuddy)
ON_COMMAND(IDC_URI_DEL_BUDDY, OnUriDelBuddy)
ON_COMMAND(IDC_ACC_ONLINE, OnAccOnline)
ON_COMMAND(IDC_ACC_INVISIBLE, OnAccInvisible)
ON_NOTIFY(NM_CLICK, IDC_BUDDY_LIST, OnClickBuddyList)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CPocketPJDlg::Error(const CString &title, pj_status_t rc)
{
char errmsg[PJ_ERR_MSG_SIZE];
wchar_t werrmsg[PJ_ERR_MSG_SIZE];
pj_strerror(rc, errmsg, sizeof(errmsg));
pj_ansi_to_unicode(errmsg, strlen(errmsg), werrmsg, PJ_ARRAY_SIZE(werrmsg));
AfxMessageBox(title + _T(": ") + werrmsg);
}
BOOL CPocketPJDlg::Restart()
{
unsigned i;
pj_status_t status;
char ver[80];
sprintf(ver, "PocketPJ/%s", pj_get_version());
ShowWindow(SW_SHOW);
PopUp_Show(POPUP_REGISTRATION, ver,
"Starting up....", "", "", "", 0);
KillTimer(TIMER_ID);
// Destroy first.
PopUp_Modify(POPUP_REGISTRATION, POPUP_EL_TITLE3, "Cleaning up..");
pjsua_destroy();
m_BtnAcc.SetBitmap(::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_OFFLINE)) );
UpdateWindow();
// Create
PopUp_Show(POPUP_REGISTRATION, ver,
"Starting up....", "Creating stack..", "", "", 0);
status = pjsua_create();
if (status != PJ_SUCCESS) {
Error(_T("Error in creating library"), status);
PopUp_Hide(POPUP_REGISTRATION);
return FALSE;
}
pjsua_config cfg;
pjsua_logging_config log_cfg;
pjsua_media_config media_cfg;
pjsua_config_default(&cfg);
cfg.max_calls = 1;
cfg.thread_cnt = 0;
cfg.user_agent = pj_str(ver);
cfg.cb.on_call_state = &on_call_state;
cfg.cb.on_call_media_state = &on_call_media_state;
cfg.cb.on_incoming_call = &on_incoming_call;
cfg.cb.on_reg_state = &on_reg_state;
cfg.cb.on_buddy_state = &on_buddy_state;
cfg.cb.on_pager = &on_pager;
/* Configure nameserver */
char nameserver[60];
{
FIXED_INFO fi;
PIP_ADDR_STRING pDNS = NULL;
ULONG len = sizeof(fi);
CString err;
PopUp_Modify(POPUP_REGISTRATION, POPUP_EL_TITLE3, "Retrieving network parameters..");
if (GetNetworkParams(&fi, &len) != ERROR_SUCCESS) {
err = _T("Info: Error querying network parameters. You must configure DNS server.");
} else if (fi.CurrentDnsServer) {
pDNS = fi.CurrentDnsServer;
} else if (fi.DnsServerList.IpAddress.String[0] != 0) {
pDNS = &fi.DnsServerList;
} else {
err = _T("Info: DNS server not configured. You must configure DNS server.");
}
if (err.GetLength()) {
if (m_Cfg.m_DNS.GetLength()) {
pj_unicode_to_ansi((LPCTSTR)m_Cfg.m_DNS, m_Cfg.m_DNS.GetLength(),
nameserver, sizeof(nameserver));
cfg.nameserver_count = 1;
cfg.nameserver[0] = pj_str(nameserver);
} else {
AfxMessageBox(err);
pjsua_destroy();
PopUp_Hide(POPUP_REGISTRATION);
return FALSE;
}
} else {
strcpy(nameserver, pDNS->IpAddress.String);
cfg.nameserver_count = 1;
cfg.nameserver[0] = pj_str(nameserver);
}
}
char tmp_stun[80];
if (m_Cfg.m_UseStun) {
pj_unicode_to_ansi((LPCTSTR)m_Cfg.m_StunSrv, m_Cfg.m_StunSrv.GetLength(),
tmp_stun, sizeof(tmp_stun));
cfg.stun_host = pj_str(tmp_stun);
}
pjsua_logging_config_default(&log_cfg);
log_cfg.msg_logging = PJ_TRUE;
log_cfg.log_filename = pj_str("\\PocketPJ.TXT");
pjsua_media_config_default(&media_cfg);
media_cfg.clock_rate = 8000;
media_cfg.audio_frame_ptime = 40;
media_cfg.ec_tail_len = 0;
media_cfg.ilbc_mode = 30;
media_cfg.max_media_ports = 8;
// use default quality setting
//media_cfg.quality = 5;
media_cfg.thread_cnt = 1;
media_cfg.enable_ice = m_Cfg.m_UseIce;
media_cfg.no_vad = !m_Cfg.m_VAD;
if (m_Cfg.m_EchoSuppress) {
media_cfg.ec_options = PJMEDIA_ECHO_SIMPLE;
media_cfg.ec_tail_len = m_Cfg.m_EcTail;
}
// Init
PopUp_Modify(POPUP_REGISTRATION, POPUP_EL_TITLE3, "Initializing..");
status = pjsua_init(&cfg, &log_cfg, &media_cfg);
if (status != PJ_SUCCESS) {
Error(_T("Error initializing library"), status);
pjsua_destroy();
PopUp_Hide(POPUP_REGISTRATION);
return FALSE;
}
// Create one UDP transport
PopUp_Modify(POPUP_REGISTRATION, POPUP_EL_TITLE3, "Adding UDP transport..");
pjsua_transport_id transport_id;
pjsua_transport_config udp_cfg;
pjsua_transport_config_default(&udp_cfg);
udp_cfg.port = 0;
status = pjsua_transport_create(PJSIP_TRANSPORT_UDP,
&udp_cfg, &transport_id);
if (status != PJ_SUCCESS) {
Error(_T("Error creating UDP transport"), status);
pjsua_destroy();
PopUp_Hide(POPUP_REGISTRATION);
return FALSE;
}
// Always instantiate TCP to support auto-switching to TCP when
// packet is larger than 1300 bytes. If TCP is disabled when
// no auto-switching will occur
if (1) {
// Create one TCP transport
PopUp_Modify(POPUP_REGISTRATION, POPUP_EL_TITLE3, "Adding TCP transport..");
pjsua_transport_id transport_id;
pjsua_transport_config tcp_cfg;
pjsua_transport_config_default(&tcp_cfg);
tcp_cfg.port = 0;
status = pjsua_transport_create(PJSIP_TRANSPORT_TCP,
&tcp_cfg, &transport_id);
if (status != PJ_SUCCESS) {
Error(_T("Error creating TCP transport"), status);
pjsua_destroy();
PopUp_Hide(POPUP_REGISTRATION);
return FALSE;
}
}
// Adjust codecs priority
pj_str_t tmp;
pjsua_codec_set_priority(pj_cstr(&tmp, "*"), 0);
for (i=0; i<(unsigned)m_Cfg.m_Codecs.GetSize(); ++i) {
CString codec = m_Cfg.m_Codecs.GetAt(i);
char tmp_nam[80];
pj_unicode_to_ansi((LPCTSTR)codec, codec.GetLength(),
tmp_nam, sizeof(tmp_nam));
pjsua_codec_set_priority(pj_cstr(&tmp, tmp_nam), (pj_uint8_t)(200-i));
}
// Start!
PopUp_Modify(POPUP_REGISTRATION, POPUP_EL_TITLE3, "Starting..");
status = pjsua_start();
if (status != PJ_SUCCESS) {
Error(_T("Error starting library"), status);
pjsua_destroy();
PopUp_Hide(POPUP_REGISTRATION);
return FALSE;
}
// Add account
PopUp_Modify(POPUP_REGISTRATION, POPUP_EL_TITLE3, "Adding account..");
char domain[80], username[80], passwd[80];
char id[80], reg_uri[80];
pjsua_acc_config acc_cfg;
pj_unicode_to_ansi((LPCTSTR)m_Cfg.m_Domain, m_Cfg.m_Domain.GetLength(),
domain, sizeof(domain));
pj_unicode_to_ansi((LPCTSTR)m_Cfg.m_User, m_Cfg.m_User.GetLength(),
username, sizeof(username));
pj_unicode_to_ansi((LPCTSTR)m_Cfg.m_Password, m_Cfg.m_Password.GetLength(),
passwd, sizeof(passwd));
snprintf(id, sizeof(id), "<sip:%s@%s>", username, domain);
snprintf(reg_uri, sizeof(reg_uri), "sip:%s", domain);
pjsua_acc_config_default(&acc_cfg);
acc_cfg.id = pj_str(id);
acc_cfg.reg_uri = pj_str(reg_uri);
acc_cfg.cred_count = 1;
acc_cfg.cred_info[0].scheme = pj_str("Digest");
acc_cfg.cred_info[0].realm = pj_str("*");
acc_cfg.cred_info[0].username = pj_str(username);
acc_cfg.cred_info[0].data_type = 0;
acc_cfg.cred_info[0].data = pj_str(passwd);
#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0)
acc_cfg.use_srtp = (m_Cfg.m_UseSrtp ? PJMEDIA_SRTP_OPTIONAL : PJMEDIA_SRTP_DISABLED);
acc_cfg.srtp_secure_signaling = 0;
#endif
acc_cfg.publish_enabled = m_Cfg.m_UsePublish;
char route[80];
if (m_Cfg.m_TCP) {
snprintf(route, sizeof(route), "<sip:%s;lr;transport=tcp>", domain);
acc_cfg.proxy[acc_cfg.proxy_cnt++] = pj_str(route);
} else {
snprintf(route, sizeof(route), "<sip:%s;lr>", domain);
acc_cfg.proxy[acc_cfg.proxy_cnt++] = pj_str(route);
}
status = pjsua_acc_add(&acc_cfg, PJ_TRUE, &m_PjsuaAccId);
if (status != PJ_SUCCESS) {
Error(_T("Invalid account settings"), status);
pjsua_destroy();
PopUp_Hide(POPUP_REGISTRATION);
return FALSE;
}
CString acc_text = m_Cfg.m_User + _T("@") + m_Cfg.m_Domain;
m_AccId.SetWindowText(acc_text);
PopUp_Modify(POPUP_REGISTRATION, POPUP_EL_TITLE1, acc_text);
PopUp_Modify(POPUP_REGISTRATION, POPUP_EL_TITLE2, "Registering..");
PopUp_Modify(POPUP_REGISTRATION, POPUP_EL_TITLE3, "");
SetTimer(TIMER_ID, 100, NULL);
return TRUE;
}
void CPocketPJDlg::PopUp_Show( PopUpType type,
const CString& title1,
const CString& title2,
const CString& title3,
const CString& btn1,
const CString& btn2,
unsigned userData)
{
PJ_UNUSED_ARG(userData);
if (!m_PopUpState[type])
++m_PopUpCount;
m_PopUpState[type] = TRUE;
m_PopUpContent[type].m_Title1 = title1;
m_PopUpContent[type].m_Title2 = title2;
m_PopUpContent[type].m_Title3 = title3;
m_PopUpContent[type].m_Btn1 = btn1;
m_PopUpContent[type].m_Btn2 = btn2;
m_PopUp->SetContent(m_PopUpContent[type]);
m_PopUp->Show();
}
void CPocketPJDlg::PopUp_Modify(PopUpType type,
PopUpElement el,
const CString& text)
{
switch (el) {
case POPUP_EL_TITLE1:
m_PopUpContent[type].m_Title1 = text;
break;
case POPUP_EL_TITLE2:
m_PopUpContent[type].m_Title2 = text;
break;
case POPUP_EL_TITLE3:
m_PopUpContent[type].m_Title3 = text;
break;
case POPUP_EL_BUTTON1:
m_PopUpContent[type].m_Btn1 = text;
break;
case POPUP_EL_BUTTON2:
m_PopUpContent[type].m_Btn1 = text;
break;
}
m_PopUp->SetContent(m_PopUpContent[type]);
}
void CPocketPJDlg::PopUp_Hide(PopUpType type)
{
if (m_PopUpState[type])
--m_PopUpCount;
m_PopUpState[type] = FALSE;
if (m_PopUpCount == 0) {
m_PopUp->Hide();
UpdateWindow();
} else {
for (int i=POPUP_MAX_TYPE-1; i>=0; --i) {
if (m_PopUpState[i]) {
m_PopUp->SetContent(m_PopUpContent[i]);
break;
}
}
}
}
void CPocketPJDlg::OnIncomingCall()
{
pjsua_call_info ci;
pjsua_call_get_info(0, &ci);
PopUp_Show(POPUP_CALL, "Incoming call..", ci.remote_info.ptr, "",
"Answer", "Hangup", 0);
pjsua_call_answer(0, 180, NULL, NULL);
if (m_Cfg.m_AutoAnswer)
OnPopUpButton(1);
}
void CPocketPJDlg::OnCallState()
{
pjsua_call_info ci;
pjsua_call_get_info(0, &ci);
switch (ci.state) {
case PJSIP_INV_STATE_NULL: /**< Before INVITE is sent or received */
break;
case PJSIP_INV_STATE_CALLING: /**< After INVITE is sent */
PopUp_Show(POPUP_CALL, "Calling..", ci.remote_info.ptr, "",
"", "Hangup", 0);
break;
case PJSIP_INV_STATE_INCOMING: /**< After INVITE is received. */
OnIncomingCall();
break;
case PJSIP_INV_STATE_EARLY: /**< After response with To tag. */
case PJSIP_INV_STATE_CONNECTING:/**< After 2xx is sent/received. */
case PJSIP_INV_STATE_CONFIRMED: /**< After ACK is sent/received. */
{
CString stateText = ci.state_text.ptr;
PopUp_Modify(POPUP_CALL, POPUP_EL_TITLE3, stateText);
}
break;
case PJSIP_INV_STATE_DISCONNECTED:/**< Session is terminated. */
PopUp_Modify(POPUP_CALL, POPUP_EL_TITLE3, "Disconnected");
PopUp_Hide(POPUP_CALL);
break;
}
}
void CPocketPJDlg::on_call_state(pjsua_call_id call_id, pjsip_event *e)
{
PJ_UNUSED_ARG(e);
PJ_UNUSED_ARG(call_id);
theDlg->OnCallState();
}
void CPocketPJDlg::on_call_media_state(pjsua_call_id call_id)
{
pjsua_call_info call_info;
pjsua_call_get_info(call_id, &call_info);
if (call_info.media_status == PJSUA_CALL_MEDIA_ACTIVE) {
pjsua_conf_connect(call_info.conf_slot, 0);
pjsua_conf_connect(0, call_info.conf_slot);
}
}
void CPocketPJDlg::on_incoming_call(pjsua_acc_id acc_id, pjsua_call_id call_id,
pjsip_rx_data *rdata)
{
PJ_UNUSED_ARG(acc_id);
PJ_UNUSED_ARG(call_id);
PJ_UNUSED_ARG(rdata);
theDlg->OnIncomingCall();
}
void CPocketPJDlg::OnRegState()
{
pjsua_acc_info ai;
pjsua_acc_get_info(m_PjsuaAccId, &ai);
CString acc_text = m_Cfg.m_User + _T("@") + m_Cfg.m_Domain;
if (ai.expires>0 && ai.status/100==2) {
/* Registration success */
HBITMAP old = m_BtnAcc.SetBitmap(::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_ONLINE)) );
PJ_UNUSED_ARG(old);
acc_text += " (OK)";
m_AccId.SetWindowText(acc_text);
} else if (ai.status/100 != 2) {
acc_text += " (err)";
Error(_T("SIP registration error"), PJSIP_ERRNO_FROM_SIP_STATUS(ai.status));
m_AccId.SetWindowText(acc_text);
}
PopUp_Hide(POPUP_REGISTRATION);
}
void CPocketPJDlg::on_reg_state(pjsua_acc_id acc_id)
{
PJ_UNUSED_ARG(acc_id);
theDlg->OnRegState();
}
void CPocketPJDlg::on_buddy_state(pjsua_buddy_id buddy_id)
{
PJ_UNUSED_ARG(buddy_id);
theDlg->RedrawBuddyList();
}
void CPocketPJDlg::on_pager(pjsua_call_id call_id, const pj_str_t *from,
const pj_str_t *to, const pj_str_t *contact,
const pj_str_t *mime_type, const pj_str_t *text)
{
PJ_UNUSED_ARG(call_id);
PJ_UNUSED_ARG(from);
PJ_UNUSED_ARG(to);
PJ_UNUSED_ARG(contact);
PJ_UNUSED_ARG(mime_type);
PJ_UNUSED_ARG(text);
}
/////////////////////////////////////////////////////////////////////////////
// CPocketPJDlg message handlers
BOOL CPocketPJDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
CenterWindow(GetDesktopWindow()); // center to the hpc screen
// TODO: Add extra initialization here
m_Cfg.LoadRegistry();
//ShowWindow(SW_SHOW);
m_AccId.SetWindowText(m_Cfg.m_User);
CImageList *il = new CImageList;
VERIFY(il->Create(16, 16, ILC_COLOR|ILC_MASK, 2, 4));
CBitmap *bmp = new CBitmap;
bmp->LoadBitmap(MAKEINTRESOURCE(IDB_BLANK));
il->Add(bmp, RGB(255,255,255));
bmp = new CBitmap;
bmp->LoadBitmap(MAKEINTRESOURCE(IDB_ONLINE));
il->Add(bmp, RGB(255,255,255));
m_BuddyList.SetImageList(il, LVSIL_SMALL);
if (m_Cfg.m_Domain.GetLength()==0 || Restart() == FALSE) {
for (;;) {
CSettingsDlg dlg(m_Cfg);
if (dlg.DoModal() != IDOK) {
EndDialog(IDOK);
return TRUE;
}
m_Cfg.SaveRegistry();
if (Restart())
break;
}
}
RedrawBuddyList();
return TRUE; // return TRUE unless you set the focus to a control
}
void CPocketPJDlg::OnBtnAcc()
{
CMenu menu;
VERIFY(menu.LoadMenu(IDR_ACC_MENU));
CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
RECT r;
m_BtnAcc.GetWindowRect(&r);
pPopup->TrackPopupMenu(TPM_LEFTALIGN, r.left+4, r.top+4, this);
}
void CPocketPJDlg::OnBtnAction()
{
CMenu menu;
VERIFY(menu.LoadMenu(IDR_URI_MENU));
CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
RECT r;
this->m_BtnUrlAction.GetWindowRect(&r);
pPopup->TrackPopupMenu(TPM_LEFTALIGN, r.left+4, r.top+4, this);
}
void CPocketPJDlg::OnSettings()
{
for (;;) {
CSettingsDlg dlg(m_Cfg);
if (dlg.DoModal() != IDOK) {
return;
}
m_Cfg.SaveRegistry();
if (Restart())
break;
}
}
void CPocketPJDlg::OnOK()
{
if (AfxMessageBox(_T("Quit PocketPJ?"), MB_YESNO)==IDYES) {
KillTimer(TIMER_ID);
PopUp_Show(POPUP_REGISTRATION, "", "Shutting down..", "", "", "", 0);
pjsua_destroy();
CDialog::OnOK();
PopUp_Hide(POPUP_REGISTRATION);
m_Cfg.SaveRegistry();
return;
}
}
void CPocketPJDlg::OnTimer(UINT nIDEvent)
{
pjsua_handle_events(10);
CDialog::OnTimer(nIDEvent);
}
int CPocketPJDlg::FindBuddyInPjsua(const CString &Uri)
{
char uri[80];
pjsua_buddy_id id[128];
unsigned i, count = PJ_ARRAY_SIZE(id);
if (pjsua_enum_buddies(id, &count) != PJ_SUCCESS)
return PJSUA_INVALID_ID;
if (count==0)
return PJSUA_INVALID_ID;
pj_unicode_to_ansi((LPCTSTR)Uri, Uri.GetLength(), uri, sizeof(uri));
for (i=0; i<count; ++i) {
pjsua_buddy_info bi;
pjsua_buddy_get_info(id[i], &bi);
if (pj_strcmp2(&bi.uri, uri)==0)
return i;
}
return PJSUA_INVALID_ID;
}
int CPocketPJDlg::FindBuddyInCfg(const CString &uri)
{
int i;
for (i=0; i<m_Cfg.m_BuddyList.GetSize(); ++i) {
if (m_Cfg.m_BuddyList.GetAt(0) == uri) {
return i;
}
}
return -1;
}
void CPocketPJDlg::RedrawBuddyList()
{
int i;
m_BuddyList.DeleteAllItems();
for (i=0; i<m_Cfg.m_BuddyList.GetSize(); ++i) {
int isOnline;
int id;
id = FindBuddyInPjsua(m_Cfg.m_BuddyList.GetAt(i));
if (id != PJSUA_INVALID_ID) {
pjsua_buddy_info bi;
pjsua_buddy_get_info(id, &bi);
isOnline = (bi.status == PJSUA_BUDDY_STATUS_ONLINE);
} else {
isOnline = 0;
}
LVITEM lvi;
memset(&lvi, 0, sizeof(lvi));
lvi.mask = LVIF_TEXT | LVIF_IMAGE;
lvi.iItem = i;
lvi.iImage = isOnline;
lvi.pszText = (LPTSTR)(LPCTSTR)m_Cfg.m_BuddyList.GetAt(i);
m_BuddyList.InsertItem(&lvi);
}
}
void CPocketPJDlg::OnUriCall()
{
char tmp[120];
CString uri;
pj_status_t status;
m_Url.GetWindowText(uri);
pj_unicode_to_ansi((LPCTSTR)uri, uri.GetLength(), tmp, sizeof(tmp));
if ((status=pjsua_verify_sip_url(tmp)) != PJ_SUCCESS) {
Error("The URL is not valid SIP URL", status);
return;
}
pj_str_t dest_uri = pj_str(tmp);
pjsua_call_id call_id;
status = pjsua_call_make_call(m_PjsuaAccId, &dest_uri, 0, NULL, NULL, &call_id);
if (status != PJ_SUCCESS)
Error("Unable to make call", status);
}
void CPocketPJDlg::OnUriAddBuddy()
{
int i;
char tmp[120];
CString uri;
pj_status_t status;
m_Url.GetWindowText(uri);
pj_unicode_to_ansi((LPCTSTR)uri, uri.GetLength(), tmp, sizeof(tmp));
if ((status=pjsua_verify_sip_url(tmp)) != PJ_SUCCESS) {
Error("The URL is not valid SIP URL", status);
return;
}
for (i=0; i<m_Cfg.m_BuddyList.GetSize(); ++i) {
if (m_Cfg.m_BuddyList.GetAt(0) == uri) {
AfxMessageBox(_T("The URI is already in the buddy list"));
return;
}
}
m_Cfg.m_BuddyList.Add(uri);
RedrawBuddyList();
}
void CPocketPJDlg::OnUriDelBuddy()
{
CString uri;
m_Url.GetWindowText(uri);
int i = FindBuddyInCfg(uri);
if (i<0) {
/* Buddy not found */
return;
}
m_Cfg.m_BuddyList.RemoveAt(i);
RedrawBuddyList();
AfxMessageBox(_T("Buddy " + uri + " deleted"));
}
void CPocketPJDlg::OnAccOnline()
{
pjsua_acc_set_online_status(m_PjsuaAccId, PJ_TRUE);
m_BtnAcc.SetBitmap(::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_ONLINE)) );
}
void CPocketPJDlg::OnAccInvisible()
{
pjsua_acc_set_online_status(m_PjsuaAccId, PJ_FALSE);
m_BtnAcc.SetBitmap(::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_INVISIBLE)) );
}
void CPocketPJDlg::OnPopUpButton(int btnNo)
{
if (btnNo == 1) {
pjsua_call_answer(0, 200, NULL, 0);
PopUp_Modify(POPUP_CALL, POPUP_EL_BUTTON1, "");
} else if (btnNo == 2) {
// Hangup button
PopUp_Modify(POPUP_CALL, POPUP_EL_TITLE2, "Hang up..");
PopUp_Modify(POPUP_CALL, POPUP_EL_TITLE3, "");
pjsua_call_hangup(0, PJSIP_SC_DECLINE, 0, 0);
}
}
void CPocketPJDlg::OnClickBuddyList(NMHDR* pNMHDR, LRESULT* pResult)
{
POSITION pos = m_BuddyList.GetFirstSelectedItemPosition();
PJ_UNUSED_ARG(pNMHDR);
if (pos != NULL) {
int iItem = m_BuddyList.GetNextSelectedItem(pos);
CString uri = m_BuddyList.GetItemText(iItem, 0);
m_Url.SetWindowText(uri);
}
*pResult = 0;
}

View File

@ -1,129 +0,0 @@
// PocketPJDlg.h : header file
//
#if !defined(AFX_POCKETPJDLG_H__DF5F90C9_E72B_4557_9126_AFE75A3ADE9D__INCLUDED_)
#define AFX_POCKETPJDLG_H__DF5F90C9_E72B_4557_9126_AFE75A3ADE9D__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#include "SettingsDlg.h"
#include "PopUpWnd.h"
#include <pjsua-lib/pjsua.h>
/////////////////////////////////////////////////////////////////////////////
// CPocketPJDlg dialog
class CPocketPJDlg : public CDialog
{
// Construction
public:
CPocketPJDlg(CWnd* pParent = NULL); // standard constructor
void OnPopUpButton(int btnNo);
void OnIncomingCall();
// Dialog Data
//{{AFX_DATA(CPocketPJDlg)
enum { IDD = IDD_POCKETPJ_DIALOG };
CEdit m_Url;
CListCtrl m_BuddyList;
CStatic m_BtnUrlAction;
CStatic m_BtnAcc;
CStatic m_AccId;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CPocketPJDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CPocketPJDlg)
virtual BOOL OnInitDialog();
afx_msg void OnBtnAcc();
afx_msg void OnBtnAction();
afx_msg void OnSettings();
afx_msg void OnUriCall();
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnUriAddBuddy();
afx_msg void OnUriDelBuddy();
afx_msg void OnAccOnline();
afx_msg void OnAccInvisible();
afx_msg void OnClickBuddyList(NMHDR* pNMHDR, LRESULT* pResult);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
enum PopUpType
{
POPUP_REGISTRATION,
POPUP_CALL,
POPUP_MAX_TYPE
};
enum PopUpElement
{
POPUP_EL_TITLE1,
POPUP_EL_TITLE2,
POPUP_EL_TITLE3,
POPUP_EL_BUTTON1,
POPUP_EL_BUTTON2,
};
CPopUpWnd *m_PopUp;
int m_PopUpCount;
BOOL m_PopUpState[POPUP_MAX_TYPE];
CPopUpContent m_PopUpContent[POPUP_MAX_TYPE];
void PopUp_Show(PopUpType type,
const CString& title1,
const CString& title2,
const CString& title3,
const CString& btn1,
const CString& btn2,
unsigned userData);
void PopUp_Modify(PopUpType type,
PopUpElement el,
const CString& text);
void PopUp_Hide(PopUpType type);
private:
CPocketPJSettings m_Cfg;
void Error(const CString &title, pj_status_t rc);
BOOL Restart();
void OnOK();
int FindBuddyInCfg(const CString &uri);
int FindBuddyInPjsua(const CString &uri);
void RedrawBuddyList();
private:
pjsua_acc_id m_PjsuaAccId;
void OnRegState();
void OnCallState();
// pjsua callbacks
static void on_call_state(pjsua_call_id call_id, pjsip_event *e);
static void on_call_media_state(pjsua_call_id call_id);
static void on_incoming_call(pjsua_acc_id acc_id, pjsua_call_id call_id,
pjsip_rx_data *rdata);
static void on_reg_state(pjsua_acc_id acc_id);
static void on_buddy_state(pjsua_buddy_id buddy_id);
static void on_pager(pjsua_call_id call_id, const pj_str_t *from,
const pj_str_t *to, const pj_str_t *contact,
const pj_str_t *mime_type, const pj_str_t *text);
};
//{{AFX_INSERT_LOCATION}}
// Microsoft eMbedded Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_POCKETPJDLG_H__DF5F90C9_E72B_4557_9126_AFE75A3ADE9D__INCLUDED_)

View File

@ -1,235 +0,0 @@
#include "stdafx.h"
#include "PopUpWnd.h"
#include "resource.h"
#include "PocketPJDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define IDC_BTN1 10
#define IDC_BTN2 11
/////////////////////////////////////////////////////////////////////////////
// CPopUpWnd
CPopUpWnd::CPopUpWnd(CPocketPJDlg* pParent)
{
Create(pParent);
}
CPopUpWnd::~CPopUpWnd()
{
DestroyWindow();
}
BOOL CPopUpWnd::Create(CPocketPJDlg* pParent)
{
BOOL bSuccess;
m_ParentWnd = pParent;
// Register window class
CString csClassName = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW,
0,
CBrush(::GetSysColor(COLOR_BTNFACE)));
// Create popup window
bSuccess = CreateEx(WS_EX_DLGMODALFRAME|WS_EX_TOPMOST, // Extended style
csClassName, // Classname
_T("PocketPJ"), // Title
WS_POPUP|WS_BORDER|WS_CAPTION, // style
0,0, // position - updated soon.
1,1, // Size - updated soon
pParent->GetSafeHwnd(), // handle to parent
0, // No menu
NULL);
if (!bSuccess)
return FALSE;
ShowWindow(SW_HIDE);
// Now create the controls
CRect TempRect(0,0,10,10);
/* |SS_LEFTNOWORDWRAP */
bSuccess = m_Title1.Create(_T("Title1"), WS_CHILD|WS_VISIBLE|SS_NOPREFIX,
TempRect, this, IDC_TITLE1);
if (!bSuccess)
return FALSE;
bSuccess = m_Title2.Create(_T("Title2"), WS_CHILD|WS_VISIBLE|SS_NOPREFIX,
TempRect, this, IDC_TITLE2);
if (!bSuccess)
return FALSE;
bSuccess = m_Title3.Create(_T("Title3"), WS_CHILD|WS_VISIBLE|SS_NOPREFIX,
TempRect, this, IDC_TITLE3);
if (!bSuccess)
return FALSE;
bSuccess = m_Btn1.Create(_T("Button1"),
WS_CHILD|WS_VISIBLE|WS_TABSTOP| BS_PUSHBUTTON,
TempRect, this, IDC_BTN1);
if (!bSuccess)
return FALSE;
bSuccess = m_Btn2.Create(_T("Button2"),
WS_CHILD|WS_VISIBLE|WS_TABSTOP| BS_PUSHBUTTON,
TempRect, this, IDC_BTN2);
if (!bSuccess)
return FALSE;
CFont *ft1 = new CFont,
*ft2 = new CFont,
*ft3 = new CFont;
LOGFONT lf;
memset(&lf, 0, sizeof(LOGFONT));
lf.lfHeight = 12;
lstrcpy(lf.lfFaceName, _T("Arial"));
VERIFY(ft1->CreateFontIndirect(&lf));
VERIFY(ft3->CreateFontIndirect(&lf));
lf.lfHeight = 20;
VERIFY(ft2->CreateFontIndirect(&lf));
m_Title1.SetFont(ft1, TRUE);
m_Title2.SetFont(ft2, TRUE);
m_Title3.SetFont(ft3, TRUE);
SetWindowSize();
// Center and show window
CenterWindow();
Show();
return TRUE;
}
void CPopUpWnd::SetContent(const CPopUpContent &content)
{
m_Title1.SetWindowText(content.m_Title1);
m_Title2.SetWindowText(content.m_Title2);
m_Title3.SetWindowText(content.m_Title3);
if (content.m_Btn1 != "") {
m_Btn1.SetWindowText(content.m_Btn1);
m_Btn1.ShowWindow(SW_SHOW);
} else {
m_Btn1.ShowWindow(SW_HIDE);
}
if (content.m_Btn2 != "") {
m_Btn2.SetWindowText(content.m_Btn2);
m_Btn2.ShowWindow(SW_SHOW);
} else {
m_Btn2.ShowWindow(SW_HIDE);
}
UpdateWindow();
ShowWindow(SW_SHOW);
}
void CPopUpWnd::SetWindowSize(int width, int height)
{
enum { H1 = 16, H2 = 40, H3 = 16, S = 5, G = 10, BW=60, BH=20, BG=40};
CRect rootRect(0, 0, 320, 240);
int Y;
MoveWindow((rootRect.Width() - width)/2, (rootRect.Height() - height)/2,
width, height);
m_Title1.MoveWindow(10, Y=S, width-20, H1);
m_Title2.MoveWindow(10, Y+=H1+G, width-20, H2);
m_Title3.MoveWindow(10, Y+=H2+G, width-20, H3);
m_Btn1.MoveWindow((width-2*BW-BG)/2, Y+=H3+G, BW, BH);
m_Btn2.MoveWindow((width-2*BW-BG)/2+BW+BG, Y, BW, BH);
}
void CPopUpWnd::Hide()
{
if (!::IsWindow(GetSafeHwnd()))
return;
if (IsWindowVisible())
{
ShowWindow(SW_HIDE);
ModifyStyle(WS_VISIBLE, 0);
}
}
void CPopUpWnd::Show()
{
if (!::IsWindow(GetSafeHwnd()))
return;
ModifyStyle(0, WS_VISIBLE);
ShowWindow(SW_SHOWNA);
RedrawWindow(NULL,NULL,RDW_ERASE|RDW_INVALIDATE|RDW_UPDATENOW);
}
BEGIN_MESSAGE_MAP(CPopUpWnd, CWnd)
//{{AFX_MSG_MAP(CPopUpWnd)
ON_WM_ERASEBKGND()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BTN1, OnCancel1)
ON_BN_CLICKED(IDC_BTN2, OnCancel2)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPopUpWnd message handlers
BOOL CPopUpWnd::OnEraseBkgnd(CDC* pDC)
{
CBrush backBrush;
backBrush.CreateSolidBrush(RGB(255,255,255));
CBrush* pOldBrush = pDC->SelectObject(&backBrush);
CRect rect;
pDC->GetClipBox(&rect); // Erase the area needed
pDC->PatBlt(rect.left, rect.top, rect.Width(), rect.Height(), PATCOPY);
pDC->SelectObject(pOldBrush);
return TRUE;
}
void CPopUpWnd::OnCancel1()
{
m_ParentWnd->OnPopUpButton(1);
}
void CPopUpWnd::OnCancel2()
{
m_ParentWnd->OnPopUpButton(2);
}
BOOL CPopUpWnd::DestroyWindow()
{
return CWnd::DestroyWindow();
}
void CPopUpWnd::PeekAndPump()
{
MSG msg;
while (::PeekMessage(&msg, NULL,0,0,PM_NOREMOVE))
{
if (!AfxGetApp()->PumpMessage())
{
::PostQuitMessage(0);
return;
}
}
}

View File

@ -1,67 +0,0 @@
#ifndef __POPUP_WND_H__
#define __POPUP_WND_H__
class CPocketPJDlg;
/////////////////////////////////////////////////////////////////////////////
struct CPopUpContent
{
CString m_Title1;
CString m_Title2;
CString m_Title3;
CString m_Btn1;
CString m_Btn2;
};
/////////////////////////////////////////////////////////////////////////////
// CPopUpWnd window
class CPopUpWnd : public CWnd
{
public:
CPopUpWnd(CPocketPJDlg* pParent);
virtual ~CPopUpWnd();
void SetContent(const CPopUpContent &content);
void Hide();
void Show();
void SetWindowSize(int nWindowWidth = 200, int nWindowHeight = 180);
void PeekAndPump();
// Implementation
protected:
CPocketPJDlg * m_ParentWnd;
CStatic m_Title1;
CStatic m_Title2;
CStatic m_Title3;
CButton m_Btn1;
CButton m_Btn2;
BOOL Create(CPocketPJDlg* pParent);
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CPopUpWnd)
public:
virtual BOOL DestroyWindow();
//}}AFX_VIRTUAL
// Generated message map functions
protected:
//{{AFX_MSG(CPopUpWnd)
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
//}}AFX_MSG
afx_msg void OnCancel1();
afx_msg void OnCancel2();
DECLARE_MESSAGE_MAP()
};
#endif
/////////////////////////////////////////////////////////////////////////////

View File

@ -1,81 +0,0 @@
========================================================================
Microsoft Foundation Class Library for Windows CE: PocketPJ
========================================================================
AppWizard has created this PocketPJ application for you. This application
not only demonstrates the basics of using the Microsoft Foundation classes
but is also a starting point for writing your application.
This file contains a summary of what you will find in each of the files that
make up your PocketPJ application.
PocketPJ.h
This is the main header file for the application. It includes other
project specific headers (including Resource.h) and declares the
CPocketPJApp application class.
PocketPJ.cpp
This is the main application source file that contains the application
class CPocketPJApp.
PocketPJ.rc
This is a listing of all of the Microsoft Windows CE resources that the
program uses. It includes the icons, bitmaps, and cursors that are stored
in the RES subdirectory. This file can be directly edited in Microsoft
eMbedded Visual C++.
res\PocketPJ.ico
This is an icon file, which is used as the application's icon. This
icon is included by the main resource file PocketPJ.rc.
res\PocketPJ.rc2
This file contains resources that are not edited by Microsoft
eMbedded Visual C++. You should place all resources not
editable by the resource editor in this file.
PocketPJ.vcc
This file contains information used by ClassWizard to edit existing
classes or add new classes. ClassWizard also uses this file to store
information needed to create and edit message maps and dialog data
maps and to create prototype member functions.
/////////////////////////////////////////////////////////////////////////////
AppWizard creates one dialog class:
PocketPJDlg.h, PocketPJDlg.cpp - the dialog
These files contain your CPocketPJDlg class. This class defines
the behavior of your application's main dialog. The dialog's
template is in PocketPJ.rc, which can be edited in Microsoft
Developer Studio.
/////////////////////////////////////////////////////////////////////////////
Other standard files:
StdAfx.h, StdAfx.cpp
These files are used to build a precompiled header (PCH) file
named PocketPJ.pch and a precompiled types file named StdAfx.obj.
Resource.h
This is the standard header file, which defines new resource IDs.
Microsoft eMbedded Visual C++ reads and updates this file.
/////////////////////////////////////////////////////////////////////////////
Other notes:
AppWizard uses "TODO:" to indicate parts of the source code you
should add to or customize.
If your application uses MFC in a shared DLL, and your application is
in a language other than the operating system's current language, you
will need to copy the corresponding localized resources MFCWCXXX.DLL from
the Microsoft eMbedded Visual C++ CD-ROM onto the system or system32 directory,
and rename it to be MFCLOC.DLL. ("XXX" stands for the language abbreviation.
For example, MFCWCDEU.DLL contains resources translated to German.) If you
don't do this, some of the UI elements of your application will remain in the
language of the operating system.
/////////////////////////////////////////////////////////////////////////////

View File

@ -1,376 +0,0 @@
// SettingsDlg.cpp : implementation file
//
#include "stdafx.h"
#include "PocketPJ.h"
#include "SettingsDlg.h"
#include <pjsua-lib/pjsua.h>
#include <atlbase.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define REG_PATH _T("pjsip.org\\PocketPC")
#define REG_DOMAIN _T("Domain")
#define REG_USER _T("User")
#define REG_PASSWD _T("Data")
#define REG_USE_STUN _T("UseSTUN")
#define REG_STUN_SRV _T("STUNSrv")
#define REG_DNS _T("DNS")
#define REG_USE_ICE _T("UseICE")
#define REG_USE_SRTP _T("UseSRTP")
#define REG_USE_PUBLISH _T("UsePUBLISH")
#define REG_BUDDY_CNT _T("BuddyCnt")
#define REG_BUDDY_X _T("Buddy%u")
#define REG_ENABLE_EC _T("EnableEC")
#define REG_EC_TAIL _T("ECTail")
#define REG_ENABLE_VAD _T("EnableVAD")
#define REG_ENABLE_TCP _T("EnableTCP")
#define REG_CODEC_CNT _T("CodecCnt")
#define REG_CODEC_X _T("Codec%u")
#define REG_AUTO_ANSWER _T("AutoAnswer")
/////////////////////////////////////////////////////////////////////////////
// Settings
CPocketPJSettings::CPocketPJSettings()
: m_UseStun(FALSE), m_UseIce(FALSE), m_UseSrtp(FALSE), m_UsePublish(FALSE),
m_EchoSuppress(TRUE), m_EcTail(200), m_TCP(FALSE), m_VAD(FALSE),
m_AutoAnswer(FALSE)
{
/* Init codec list */
#if defined(PJMEDIA_HAS_GSM_CODEC) && PJMEDIA_HAS_GSM_CODEC
m_Codecs.Add(_T("GSM"));
#endif
#if defined(PJMEDIA_HAS_G711_CODEC) && PJMEDIA_HAS_G711_CODEC
m_Codecs.Add(_T("PCMU"));
m_Codecs.Add(_T("PCMA"));
#endif
#if defined(PJMEDIA_HAS_SPEEX_CODEC) && PJMEDIA_HAS_SPEEX_CODEC
m_Codecs.Add(_T("Speex"));
#endif
}
// Load from registry
void CPocketPJSettings::LoadRegistry()
{
CRegKey key;
wchar_t textVal[256];
DWORD dwordVal;
DWORD cbData;
if (key.Open(HKEY_CURRENT_USER, REG_PATH) != ERROR_SUCCESS)
return;
cbData = sizeof(textVal);
if (key.QueryValue(textVal, REG_DOMAIN, &cbData) == ERROR_SUCCESS) {
m_Domain = textVal;
}
cbData = sizeof(textVal);
if (key.QueryValue(textVal, REG_USER, &cbData) == ERROR_SUCCESS) {
m_User = textVal;
}
cbData = sizeof(textVal);
if (key.QueryValue(textVal, REG_PASSWD, &cbData) == ERROR_SUCCESS) {
m_Password = textVal;
}
cbData = sizeof(textVal);
if (key.QueryValue(textVal, REG_STUN_SRV, &cbData) == ERROR_SUCCESS) {
m_StunSrv = textVal;
}
cbData = sizeof(textVal);
if (key.QueryValue(textVal, REG_DNS, &cbData) == ERROR_SUCCESS) {
m_DNS = textVal;
}
dwordVal = 0;
if (key.QueryValue(dwordVal, REG_USE_STUN) == ERROR_SUCCESS) {
m_UseStun = dwordVal != 0;
}
if (key.QueryValue(dwordVal, REG_USE_ICE) == ERROR_SUCCESS) {
m_UseIce = dwordVal != 0;
}
if (key.QueryValue(dwordVal, REG_USE_SRTP) == ERROR_SUCCESS) {
m_UseSrtp = dwordVal != 0;
}
cbData = sizeof(dwordVal);
if (key.QueryValue(dwordVal, REG_USE_PUBLISH) == ERROR_SUCCESS) {
m_UsePublish = dwordVal != 0;
}
cbData = sizeof(dwordVal);
if (key.QueryValue(dwordVal, REG_ENABLE_EC) == ERROR_SUCCESS) {
m_EchoSuppress = dwordVal != 0;
}
cbData = sizeof(dwordVal);
if (key.QueryValue(dwordVal, REG_EC_TAIL) == ERROR_SUCCESS) {
m_EcTail = dwordVal;
}
cbData = sizeof(dwordVal);
if (key.QueryValue(dwordVal, REG_ENABLE_TCP) == ERROR_SUCCESS) {
m_TCP = dwordVal != 0;
}
cbData = sizeof(dwordVal);
if (key.QueryValue(dwordVal, REG_ENABLE_VAD) == ERROR_SUCCESS) {
m_VAD = dwordVal != 0;
}
cbData = sizeof(dwordVal);
if (key.QueryValue(dwordVal, REG_AUTO_ANSWER) == ERROR_SUCCESS) {
m_AutoAnswer = dwordVal != 0;
}
m_BuddyList.RemoveAll();
DWORD buddyCount = 0;
cbData = sizeof(dwordVal);
if (key.QueryValue(dwordVal, REG_BUDDY_CNT) == ERROR_SUCCESS) {
buddyCount = dwordVal;
}
unsigned i;
for (i=0; i<buddyCount; ++i) {
CString entry;
entry.Format(REG_BUDDY_X, i);
cbData = sizeof(textVal);
if (key.QueryValue(textVal, entry, &cbData) == ERROR_SUCCESS) {
m_BuddyList.Add(textVal);
}
}
DWORD codecCount = 0;
cbData = sizeof(dwordVal);
if (key.QueryValue(codecCount, REG_CODEC_CNT) == ERROR_SUCCESS) {
m_Codecs.RemoveAll();
for (i=0; i<codecCount; ++i) {
CString entry;
entry.Format(REG_CODEC_X, i);
cbData = sizeof(textVal);
if (key.QueryValue(textVal, entry, &cbData) == ERROR_SUCCESS) {
m_Codecs.Add(textVal);
}
}
}
key.Close();
}
// Save to registry
void CPocketPJSettings::SaveRegistry()
{
CRegKey key;
if (key.Create(HKEY_CURRENT_USER, REG_PATH) != ERROR_SUCCESS)
return;
key.SetValue(m_Domain, REG_DOMAIN);
key.SetValue(m_User, REG_USER);
key.SetValue(m_Password, REG_PASSWD);
key.SetValue(m_StunSrv, REG_STUN_SRV);
key.SetValue(m_DNS, REG_DNS);
key.SetValue(m_UseStun, REG_USE_STUN);
key.SetValue(m_UseIce, REG_USE_ICE);
key.SetValue(m_UseSrtp, REG_USE_SRTP);
key.SetValue(m_UsePublish, REG_USE_PUBLISH);
key.SetValue(m_EchoSuppress, REG_ENABLE_EC);
key.SetValue(m_EcTail, REG_EC_TAIL);
key.SetValue(m_TCP, REG_ENABLE_TCP);
key.SetValue(m_VAD, REG_ENABLE_VAD);
key.SetValue(m_AutoAnswer, REG_AUTO_ANSWER);
key.SetValue(m_BuddyList.GetSize(), REG_BUDDY_CNT);
int i;
for (i=0; i<m_BuddyList.GetSize(); ++i) {
CString entry;
entry.Format(REG_BUDDY_X, i);
key.SetValue(m_BuddyList.GetAt(i), entry);
}
DWORD N = m_Codecs.GetSize();
key.SetValue(N, REG_CODEC_CNT);
for (i=0; i<m_Codecs.GetSize(); ++i) {
CString entry;
entry.Format(REG_CODEC_X, i);
key.SetValue(m_Codecs.GetAt(i), entry);
}
key.Close();
}
/////////////////////////////////////////////////////////////////////////////
// CSettingsDlg dialog
CSettingsDlg::CSettingsDlg(CPocketPJSettings &cfg, CWnd* pParent)
: CDialog(CSettingsDlg::IDD, pParent), m_Cfg(cfg)
{
//{{AFX_DATA_INIT(CSettingsDlg)
m_Domain = _T("");
m_ICE = FALSE;
m_Passwd = _T("");
m_PUBLISH = FALSE;
m_SRTP = FALSE;
m_STUN = FALSE;
m_StunSrv = _T("");
m_User = _T("");
m_Dns = _T("");
m_EchoSuppress = FALSE;
m_EcTail = _T("");
m_TCP = FALSE;
m_VAD = FALSE;
m_AutoAnswer = FALSE;
//}}AFX_DATA_INIT
m_Domain = m_Cfg.m_Domain;
m_ICE = m_Cfg.m_UseIce;
m_Passwd = m_Cfg.m_Password;
m_PUBLISH = m_Cfg.m_UsePublish;
m_SRTP = m_Cfg.m_UseSrtp;
m_STUN = m_Cfg.m_UseStun;
m_StunSrv = m_Cfg.m_StunSrv;
m_User = m_Cfg.m_User;
m_Dns = m_Cfg.m_DNS;
m_EchoSuppress = m_Cfg.m_EchoSuppress;
m_TCP = m_Cfg.m_TCP;
m_VAD = m_Cfg.m_VAD;
m_AutoAnswer= m_Cfg.m_AutoAnswer;
CString s;
s.Format(_T("%d"), m_Cfg.m_EcTail);
m_EcTail = s;
}
void CSettingsDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSettingsDlg)
DDX_Control(pDX, IDC_CODECS, m_Codecs);
DDX_Text(pDX, IDC_DOMAIN, m_Domain);
DDX_Check(pDX, IDC_ICE, m_ICE);
DDX_Text(pDX, IDC_PASSWD, m_Passwd);
DDX_Check(pDX, IDC_PUBLISH, m_PUBLISH);
DDX_Check(pDX, IDC_SRTP, m_SRTP);
DDX_Check(pDX, IDC_STUN, m_STUN);
DDX_Text(pDX, IDC_STUN_SRV, m_StunSrv);
DDX_Text(pDX, IDC_USER, m_User);
DDX_Text(pDX, IDC_DNS, m_Dns);
DDX_Check(pDX, IDC_ECHO_SUPPRESS, m_EchoSuppress);
DDX_Text(pDX, IDC_EC_TAIL, m_EcTail);
DDX_Check(pDX, IDC_TCP, m_TCP);
DDX_Check(pDX, IDC_VAD, m_VAD);
DDX_Check(pDX, IDC_AA, m_AutoAnswer);
//}}AFX_DATA_MAP
if (m_Codecs.GetCount() == 0) {
int i;
for (i=0; i<m_Cfg.m_Codecs.GetSize(); ++i) {
m_Codecs.AddString(m_Cfg.m_Codecs.GetAt(i));
}
m_Codecs.SetCurSel(0);
}
}
BEGIN_MESSAGE_MAP(CSettingsDlg, CDialog)
//{{AFX_MSG_MAP(CSettingsDlg)
ON_BN_CLICKED(IDC_STUN, OnStun)
ON_BN_CLICKED(IDC_ECHO_SUPPRESS, OnEchoSuppress)
ON_CBN_SELCHANGE(IDC_CODECS, OnSelchangeCodecs)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSettingsDlg message handlers
int CSettingsDlg::DoModal()
{
int rc = CDialog::DoModal();
return rc;
}
void CSettingsDlg::OnStun()
{
}
void CSettingsDlg::OnEchoSuppress()
{
}
void CSettingsDlg::OnSelchangeCodecs()
{
int cur = m_Codecs.GetCurSel();
if (cur < 1)
return;
CString codec;
DWORD N;
m_Codecs.GetLBText(cur, codec);
N = m_Codecs.GetCount();
m_Codecs.DeleteString(cur);
N = m_Codecs.GetCount();
m_Codecs.InsertString(0, codec);
N = m_Codecs.GetCount();
m_Codecs.SetCurSel(0);
}
void CSettingsDlg::OnOK()
{
UpdateData(TRUE);
m_Cfg.m_Domain = m_Domain;
m_Cfg.m_UseIce = m_ICE != 0;
m_Cfg.m_Password = m_Passwd;
m_Cfg.m_UsePublish = m_PUBLISH != 0;
m_Cfg.m_UseSrtp = m_SRTP != 0;
m_Cfg.m_UseStun = m_STUN != 0;
m_Cfg.m_StunSrv = m_StunSrv;
m_Cfg.m_User = m_User;
m_Cfg.m_DNS = m_Dns;
m_Cfg.m_EchoSuppress= m_EchoSuppress != 0;
m_Cfg.m_EcTail = _ttoi(m_EcTail);
m_Cfg.m_TCP = m_TCP != 0;
m_Cfg.m_VAD = m_VAD != 0;
m_Cfg.m_AutoAnswer = m_AutoAnswer != 0;
unsigned i;
m_Cfg.m_Codecs.RemoveAll();
DWORD N = m_Codecs.GetCount();
for (i=0; i<N; ++i) {
CString codec;
m_Codecs.GetLBText(i, codec);
m_Cfg.m_Codecs.Add(codec);
}
CDialog::OnOK();
}

View File

@ -1,99 +0,0 @@
#if !defined(AFX_SETTINGSDLG_H__46F18E6E_F411_4D9E_BEE9_619D80BC81DC__INCLUDED_)
#define AFX_SETTINGSDLG_H__46F18E6E_F411_4D9E_BEE9_619D80BC81DC__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// SettingsDlg.h : header file
//
#include <Afxtempl.h>
/////////////////////////////////////////////////////////////////////////////
// Settings
struct CPocketPJSettings
{
CString m_Domain;
CString m_User;
CString m_Password;
bool m_UseStun;
CString m_StunSrv;
bool m_UseIce;
bool m_UseSrtp;
bool m_UsePublish;
CString m_DNS;
bool m_EchoSuppress;
DWORD m_EcTail;
bool m_TCP;
bool m_VAD;
bool m_AutoAnswer;
CArray<CString,CString> m_Codecs;
CArray<CString,CString> m_BuddyList;
CPocketPJSettings();
// Load from registry
void LoadRegistry();
// Save to registry
void SaveRegistry();
};
/////////////////////////////////////////////////////////////////////////////
// CSettingsDlg dialog
class CSettingsDlg : public CDialog
{
// Construction
public:
CSettingsDlg(CPocketPJSettings & cfg, CWnd* pParent = NULL);
// Dialog Data
//{{AFX_DATA(CSettingsDlg)
enum { IDD = IDD_SETTING };
CComboBox m_Codecs;
CString m_Domain;
BOOL m_ICE;
CString m_Passwd;
BOOL m_PUBLISH;
BOOL m_SRTP;
BOOL m_STUN;
CString m_StunSrv;
CString m_User;
CString m_Dns;
BOOL m_EchoSuppress;
CString m_EcTail;
BOOL m_TCP;
BOOL m_VAD;
BOOL m_AutoAnswer;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CSettingsDlg)
public:
virtual int DoModal();
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
CPocketPJSettings & m_Cfg;
// Generated message map functions
//{{AFX_MSG(CSettingsDlg)
afx_msg void OnStun();
afx_msg void OnEchoSuppress();
afx_msg void OnSelchangeCodecs();
virtual void OnOK();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_SETTINGSDLG_H__46F18E6E_F411_4D9E_BEE9_619D80BC81DC__INCLUDED_)

View File

@ -1,6 +0,0 @@
// stdafx.cpp : source file that includes just the standard includes
// PocketPJ.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"

View File

@ -1,32 +0,0 @@
// 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__20B05C7D_B63E_4E5C_B3BB_E76C6C9E70B7__INCLUDED_)
#define AFX_STDAFX_H__20B05C7D_B63E_4E5C_B3BB_E76C6C9E70B7__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#pragma warning(disable:4496)
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#include <afxwin.h> // MFC core and standard components
#include <afxext.h> // MFC extensions
#if defined(_AFXDLL)
#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls
#endif
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT
//{{AFX_INSERT_LOCATION}}
// Microsoft eMbedded Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_STDAFX_H__20B05C7D_B63E_4E5C_B3BB_E76C6C9E70B7__INCLUDED_)

View File

@ -1,28 +0,0 @@
#ifndef __NEWRES_H__
#define __NEWRES_H__
#define SHMENUBAR RCDATA
#if !(defined(_WIN32_WCE_PSPC) && (_WIN32_WCE >= 300))
#undef HDS_HORZ
#undef HDS_BUTTONS
#undef HDS_HIDDEN
#include <commctrl.h>
// for MenuBar
#define I_IMAGENONE (-2)
#define NOMENU 0xFFFF
#define IDS_SHNEW 1
#define IDM_SHAREDNEW 10
#define IDM_SHAREDNEWDEFAULT 11
// for Tab Control
#define TCS_SCROLLOPPOSITE 0x0001 // assumes multiline tab
#define TCS_BOTTOM 0x0002
#define TCS_RIGHT 0x0002
#define TCS_VERTICAL 0x0080
#define TCS_MULTISELECT 0x0004 // allow multi-select in button mode
#define TCS_FLATBUTTONS 0x0008
#endif //_WIN32_WCE_PSPC
#endif //__NEWRES_H__

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,13 +0,0 @@
//
// POCKETPJ.RC2 - resources Microsoft eMbedded Visual C++ does not edit directly
//
#ifdef APSTUDIO_INVOKED
#error this file is not editable by Microsoft eMbedded Visual C++
#endif //APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
// Add manually edited resources here...
/////////////////////////////////////////////////////////////////////////////

Binary file not shown.

Before

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 318 B

View File

@ -1,71 +0,0 @@
//{{NO_DEPENDENCIES}}
// Microsoft eMbedded Visual C++ generated include file.
// Used by PocketPJ.rc
//
#define IDD_POCKETPJ_DIALOG 102
#define IDR_MAINFRAME 128
#define IDI_ONLINE 131
#define IDI_OFFLINE 132
#define IDI_INVISIBLE 133
#define IDB_ONLINE 135
#define IDB_OFFLINE 136
#define IDB_INVISIBLE 137
#define IDB_ACTION 138
#define IDR_ACC_MENU 139
#define IDR_URI_MENU 140
#define IDD_SETTING 141
#define IDD_POPUP 143
#define IDB_BLANK 144
#define IDC_BTN_ACC 1006
#define IDC_BTN_ACTION 1007
#define IDC_ACC_ID 1008
#define IDC_BUDDY_LIST 1009
#define IDC_URL 1010
#define IDC_DOMAIN 1011
#define IDC_USER 1012
#define IDC_PASSWD 1013
#define IDC_STUN 1014
#define IDC_STUN_SRV 1015
#define IDC_ICE 1016
#define IDC_SRTP 1017
#define IDC_TITLE1 1017
#define IDC_PUBLISH 1018
#define IDC_TITLE2 1018
#define IDC_DNS 1019
#define IDC_TITLE3 1020
#define IDC_ECHO_SUPPRESS 1020
#define IDC_BUTTON1 1021
#define IDC_EC_TAIL 1021
#define IDC_BUTTON2 1022
#define IDC_VAD 1022
#define IDC_TCP 1023
#define IDC_CODECS 1024
#define IDC_AA 1025
#define IDS_CAP_ONLINE 32772
#define IDS_CAP_OFFLINE 32774
#define IDS_CAP_INVISIBLE 32776
#define IDC_ONLINE 32777
#define IDC_ACC_ONLINE 32777
#define IDS_CAP_MENUITEM32783 32784
#define IDC_MENU1 32785
#define IDS_CAP_MENUITEM32786 32787
#define IDC_SETTINGS 32788
#define IDC_ACC_SETTINGS 32788
#define IDC_MENU2 32789
#define IDS_CAP_MENUITEM32790 32791
#define IDC_URI_CALL 32792
#define IDC_URI_ADD_BUDDY 32793
#define ID_URI_DEL_BUDDY 32794
#define IDC_URI_DEL_BUDDY 32794
#define IDC_ACC_INVISIBLE 32795
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 145
#define _APS_NEXT_COMMAND_VALUE 32796
#define _APS_NEXT_CONTROL_VALUE 1025
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif