diff --git a/Freeswitch.2010.sln b/Freeswitch.2010.sln new file mode 100644 index 0000000000..37b0415498 --- /dev/null +++ b/Freeswitch.2010.sln @@ -0,0 +1,2571 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Codecs", "Codecs", "{F881ADA2-2F1A-4046-9FEB-191D9422D781}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Endpoints", "Endpoints", "{9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Applications", "Applications", "{E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Dialplans", "Dialplans", "{C5F182F9-754A-4EC5-B50F-76ED02BE13F4}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Event Handlers", "Event Handlers", "{9ADF1E48-2F5C-4ED7-A893-596259FABFE0}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Formats", "Formats", "{A5A27244-AD24-46E5-B01B-840CD296C91D}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Docs", "Docs", "{CBD81696-EFB4-4D2F-8451-1B8DAA86155A}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Directories", "Directories", "{B8F5B47B-8568-46EB-B320-64C17D2A98BC}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Languages", "Languages", "{0C808854-54D1-4230-BFF5-77B5FD905000}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ASR-TTS", "ASR-TTS", "{4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Loggers", "Loggers", "{A7AB4405-FDB7-4853-9FBB-1516B1C3D80A}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "XML Interfaces", "XML Interfaces", "{F69A4A6B-9360-4EBB-A280-22AA3C455AC5}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Libraries", "_Libraries", "{EB910B0D-F27D-4B62-B67B-DE834C99AC5B}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Downloads", "_Downloads", "{C120A020-773F-4EA3-923F-B67AF28B750D}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "say", "say", "{6CD61A1D-797C-470A-BE08-8C31B68BB336}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Config", "_Config", "{57D119DC-484F-420F-B9E9-8589FD9A8DF8}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Default", "Default", "{3B08FEFD-4D3D-4C16-BA94-EE83509E32A0}" + ProjectSection(SolutionItems) = preProject + conf\freeswitch.xml = conf\freeswitch.xml + conf\vars.xml = conf\vars.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Release", "Release", "{7BFD517E-7F8F-4A40-A78E-8D3632738227}" + ProjectSection(SolutionItems) = preProject + release\conf\freeswitch.xml = release\conf\freeswitch.xml + release\conf\vars.xml = release\conf\vars.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debug", "Debug", "{6374D55C-FABE-4A02-9CF1-4145308A56C5}" + ProjectSection(SolutionItems) = preProject + debug\conf\freeswitch.xml = debug\conf\freeswitch.xml + debug\conf\vars.xml = debug\conf\vars.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Build System", "_Build System", "{DB1024A8-41BF-4AD7-9AE6-13202230D1F3}" + ProjectSection(SolutionItems) = preProject + acsite.m4 = acsite.m4 + bootstrap.sh = bootstrap.sh + build\buildlib.sh = build\buildlib.sh + configure.in = configure.in + Makefile.am = Makefile.am + build\modmake.rules.in = build\modmake.rules.in + build\modules.conf.in = build\modules.conf.in + libs\win32\util.vbs = libs\win32\util.vbs + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "m4", "m4", "{CDE9B06A-3C27-4987-8FAE-DF1006BC705D}" + ProjectSection(SolutionItems) = preProject + build\config\ac_cflags_gcc_option.m4 = build\config\ac_cflags_gcc_option.m4 + build\config\ac_cflags_sun_option.m4 = build\config\ac_cflags_sun_option.m4 + build\config\ac_gcc_archflag.m4 = build\config\ac_gcc_archflag.m4 + build\config\ac_gcc_x86_cpuid.m4 = build\config\ac_gcc_x86_cpuid.m4 + build\config\ac_prog_gzip.m4 = build\config\ac_prog_gzip.m4 + build\config\ac_prog_wget.m4 = build\config\ac_prog_wget.m4 + build\config\ax_cc_maxopt.m4 = build\config\ax_cc_maxopt.m4 + build\config\ax_cflags_warn_all_ansi.m4 = build\config\ax_cflags_warn_all_ansi.m4 + build\config\ax_check_compiler_flags.m4 = build\config\ax_check_compiler_flags.m4 + build\config\ax_compiler_vendor.m4 = build\config\ax_compiler_vendor.m4 + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "autoload_configs", "autoload_configs", "{3C90CCF0-2CDD-4A7A-ACFF-208C1E271692}" + ProjectSection(SolutionItems) = preProject + conf\autoload_configs\alsa.conf.xml = conf\autoload_configs\alsa.conf.xml + conf\autoload_configs\conference.conf.xml = conf\autoload_configs\conference.conf.xml + conf\autoload_configs\console.conf.xml = conf\autoload_configs\console.conf.xml + conf\autoload_configs\dialplan_directory.conf.xml = conf\autoload_configs\dialplan_directory.conf.xml + conf\autoload_configs\dingaling.conf.xml = conf\autoload_configs\dingaling.conf.xml + conf\autoload_configs\enum.conf.xml = conf\autoload_configs\enum.conf.xml + conf\autoload_configs\event_multicast.conf.xml = conf\autoload_configs\event_multicast.conf.xml + conf\autoload_configs\event_socket.conf.xml = conf\autoload_configs\event_socket.conf.xml + conf\autoload_configs\ivr.conf.xml = conf\autoload_configs\ivr.conf.xml + conf\autoload_configs\java.conf.xml = conf\autoload_configs\java.conf.xml + conf\autoload_configs\limit.conf.xml = conf\autoload_configs\limit.conf.xml + conf\autoload_configs\local_stream.conf.xml = conf\autoload_configs\local_stream.conf.xml + conf\autoload_configs\logfile.conf.xml = conf\autoload_configs\logfile.conf.xml + conf\autoload_configs\modules.conf.xml = conf\autoload_configs\modules.conf.xml + conf\autoload_configs\openmrcp.conf.xml = conf\autoload_configs\openmrcp.conf.xml + conf\autoload_configs\portaudio.conf.xml = conf\autoload_configs\portaudio.conf.xml + conf\autoload_configs\rss.conf.xml = conf\autoload_configs\rss.conf.xml + conf\autoload_configs\sofia.conf.xml = conf\autoload_configs\sofia.conf.xml + conf\autoload_configs\spidermonkey.conf.xml = conf\autoload_configs\spidermonkey.conf.xml + conf\autoload_configs\switch.conf.xml = conf\autoload_configs\switch.conf.xml + conf\autoload_configs\syslog.conf.xml = conf\autoload_configs\syslog.conf.xml + conf\autoload_configs\voicemail.conf.xml = conf\autoload_configs\voicemail.conf.xml + conf\autoload_configs\wanpipe.conf.xml = conf\autoload_configs\wanpipe.conf.xml + conf\autoload_configs\woomera.conf.xml = conf\autoload_configs\woomera.conf.xml + conf\autoload_configs\xml_cdr.conf.xml = conf\autoload_configs\xml_cdr.conf.xml + conf\autoload_configs\xml_curl.conf.xml = conf\autoload_configs\xml_curl.conf.xml + conf\autoload_configs\xml_rpc.conf.xml = conf\autoload_configs\xml_rpc.conf.xml + conf\autoload_configs\zeroconf.conf.xml = conf\autoload_configs\zeroconf.conf.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dialplan", "dialplan", "{C7E2382E-2C22-4D18-BF93-80C6A1FFA7AC}" + ProjectSection(SolutionItems) = preProject + conf\dialplan\default.xml = conf\dialplan\default.xml + conf\dialplan\public.xml = conf\dialplan\public.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "directory", "directory", "{FC71C66E-E268-4EAD-B1F5-F008DC382E83}" + ProjectSection(SolutionItems) = preProject + conf\directory\default.xml = conf\directory\default.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sip_profiles", "sip_profiles", "{8E2E8798-8B6F-4A55-8E4F-4E6FDE40ED26}" + ProjectSection(SolutionItems) = preProject + conf\sip_profiles\external.xml = conf\sip_profiles\external.xml + conf\sip_profiles\internal.xml = conf\sip_profiles\internal.xml + conf\sip_profiles\nat.xml = conf\sip_profiles\nat.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "lang", "lang", "{09455AA9-C243-4F16-A1A1-A016881A2765}" + ProjectSection(SolutionItems) = preProject + conf\directory\default.xml = conf\directory\default.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "en", "en", "{57199684-EC63-4A60-9DC6-11815AF6B413}" + ProjectSection(SolutionItems) = preProject + conf\lang\en\en.xml = conf\lang\en\en.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "de", "de", "{2DED4BA2-D6B0-4064-BB2A-76DE3AA49E7C}" + ProjectSection(SolutionItems) = preProject + conf\lang\de\de.xml = conf\lang\de\de.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "fr", "fr", "{D4A12E4C-DBDA-4614-BA26-3425AE9F60F5}" + ProjectSection(SolutionItems) = preProject + conf\lang\fr\fr.xml = conf\lang\fr\fr.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "demo", "demo", "{D3E5C8ED-3A6A-4FEA-92A2-48A0BA865358}" + ProjectSection(SolutionItems) = preProject + conf\lang\de\demo\demo.xml = conf\lang\de\demo\demo.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vm", "vm", "{CC3E7F48-2590-49CB-AD8B-BE3650F55462}" + ProjectSection(SolutionItems) = preProject + conf\lang\de\vm\tts.xml = conf\lang\de\vm\tts.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "demo", "demo", "{765EF1B9-5027-4820-BC37-A44466A51631}" + ProjectSection(SolutionItems) = preProject + conf\lang\en\demo\demo.xml = conf\lang\en\demo\demo.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vm", "vm", "{713E4747-1126-40B1-BD84-58F9A7745423}" + ProjectSection(SolutionItems) = preProject + conf\lang\en\vm\sounds.xml = conf\lang\en\vm\sounds.xml + conf\lang\en\vm\tts.xml = conf\lang\en\vm\tts.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "demo", "demo", "{F1B71990-EB04-4EB5-B28A-BC3EB6F7E843}" + ProjectSection(SolutionItems) = preProject + conf\lang\fr\demo\demo.xml = conf\lang\fr\demo\demo.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vm", "vm", "{3DAF028C-AB5B-4183-A01B-DCC43F5A87F0}" + ProjectSection(SolutionItems) = preProject + conf\lang\fr\vm\sounds.xml = conf\lang\fr\vm\sounds.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "autoload_configs", "autoload_configs", "{4833F8E3-ABBF-4260-9DB1-B34015676CFC}" + ProjectSection(SolutionItems) = preProject + debug\conf\autoload_configs\alsa.conf.xml = debug\conf\autoload_configs\alsa.conf.xml + debug\conf\autoload_configs\conference.conf.xml = debug\conf\autoload_configs\conference.conf.xml + debug\conf\autoload_configs\console.conf.xml = debug\conf\autoload_configs\console.conf.xml + debug\conf\autoload_configs\dialplan_directory.conf.xml = debug\conf\autoload_configs\dialplan_directory.conf.xml + debug\conf\autoload_configs\dingaling.conf.xml = debug\conf\autoload_configs\dingaling.conf.xml + debug\conf\autoload_configs\enum.conf.xml = debug\conf\autoload_configs\enum.conf.xml + debug\conf\autoload_configs\event_multicast.conf.xml = debug\conf\autoload_configs\event_multicast.conf.xml + debug\conf\autoload_configs\event_socket.conf.xml = debug\conf\autoload_configs\event_socket.conf.xml + debug\conf\autoload_configs\ivr.conf.xml = debug\conf\autoload_configs\ivr.conf.xml + debug\conf\autoload_configs\java.conf.xml = debug\conf\autoload_configs\java.conf.xml + debug\conf\autoload_configs\limit.conf.xml = debug\conf\autoload_configs\limit.conf.xml + debug\conf\autoload_configs\local_stream.conf.xml = debug\conf\autoload_configs\local_stream.conf.xml + debug\conf\autoload_configs\logfile.conf.xml = debug\conf\autoload_configs\logfile.conf.xml + debug\conf\autoload_configs\modules.conf.xml = debug\conf\autoload_configs\modules.conf.xml + debug\conf\autoload_configs\openmrcp.conf.xml = debug\conf\autoload_configs\openmrcp.conf.xml + debug\conf\autoload_configs\portaudio.conf.xml = debug\conf\autoload_configs\portaudio.conf.xml + debug\conf\autoload_configs\rss.conf.xml = debug\conf\autoload_configs\rss.conf.xml + debug\conf\autoload_configs\sofia.conf.xml = debug\conf\autoload_configs\sofia.conf.xml + debug\conf\autoload_configs\spidermonkey.conf.xml = debug\conf\autoload_configs\spidermonkey.conf.xml + debug\conf\autoload_configs\switch.conf.xml = debug\conf\autoload_configs\switch.conf.xml + debug\conf\autoload_configs\syslog.conf.xml = debug\conf\autoload_configs\syslog.conf.xml + debug\conf\autoload_configs\voicemail.conf.xml = debug\conf\autoload_configs\voicemail.conf.xml + debug\conf\autoload_configs\wanpipe.conf.xml = debug\conf\autoload_configs\wanpipe.conf.xml + debug\conf\autoload_configs\woomera.conf.xml = debug\conf\autoload_configs\woomera.conf.xml + debug\conf\autoload_configs\xml_cdr.conf.xml = debug\conf\autoload_configs\xml_cdr.conf.xml + debug\conf\autoload_configs\xml_curl.conf.xml = debug\conf\autoload_configs\xml_curl.conf.xml + debug\conf\autoload_configs\xml_rpc.conf.xml = debug\conf\autoload_configs\xml_rpc.conf.xml + debug\conf\autoload_configs\zeroconf.conf.xml = debug\conf\autoload_configs\zeroconf.conf.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dialplan", "dialplan", "{D44DD429-FE98-42AA-B5B7-4B4EBE33AEFD}" + ProjectSection(SolutionItems) = preProject + debug\conf\dialplan\default.xml = debug\conf\dialplan\default.xml + debug\conf\dialplan\US.conf.xml = debug\conf\dialplan\US.conf.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "directory", "directory", "{471110C9-A7ED-4966-98E1-8EA667BF0EEA}" + ProjectSection(SolutionItems) = preProject + debug\conf\directory\default.xml = debug\conf\directory\default.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sip_profiles", "sip_profiles", "{4DF5199E-F7F5-4347-97DD-22078FCDB371}" + ProjectSection(SolutionItems) = preProject + debug\conf\sip_profiles\default.xml = debug\conf\sip_profiles\default.xml + debug\conf\sip_profiles\nat.xml = debug\conf\sip_profiles\nat.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "lang", "lang", "{B487BEBE-4A5C-434F-8D30-39465412F84F}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "de", "de", "{2003189F-0E69-4FF7-A11D-3BFB3F03D558}" + ProjectSection(SolutionItems) = preProject + debug\conf\lang\de\de.xml = debug\conf\lang\de\de.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "en", "en", "{C8EA69FA-365E-4897-9BB0-08022509E18B}" + ProjectSection(SolutionItems) = preProject + debug\conf\lang\en\en.xml = debug\conf\lang\en\en.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "fr", "fr", "{1240C217-6674-43C1-B099-B0290D84F28B}" + ProjectSection(SolutionItems) = preProject + debug\conf\lang\fr\fr.xml = debug\conf\lang\fr\fr.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "demo", "demo", "{03517B06-98A1-46DD-9347-BFFFED7DD8A4}" + ProjectSection(SolutionItems) = preProject + debug\conf\lang\de\demo\demo.xml = debug\conf\lang\de\demo\demo.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vm", "vm", "{1D339A14-FFC2-4F6E-BEF2-D5D6DF14AC88}" + ProjectSection(SolutionItems) = preProject + debug\conf\lang\de\vm\tts.xml = debug\conf\lang\de\vm\tts.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "demo", "demo", "{B4C6D0B5-5F39-4546-820D-4BCAA6C3E301}" + ProjectSection(SolutionItems) = preProject + debug\conf\lang\en\demo\demo.xml = debug\conf\lang\en\demo\demo.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vm", "vm", "{3041F86C-51D4-4D9E-8A00-91BA4B7C51D4}" + ProjectSection(SolutionItems) = preProject + debug\conf\lang\en\vm\sounds.xml = debug\conf\lang\en\vm\sounds.xml + debug\conf\lang\en\vm\tts.xml = debug\conf\lang\en\vm\tts.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "demo", "demo", "{DFE96A6E-5C9A-4C74-959A-9C485A7AD95C}" + ProjectSection(SolutionItems) = preProject + debug\conf\lang\fr\demo\demo.xml = debug\conf\lang\fr\demo\demo.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vm", "vm", "{80A4CA5C-7208-4134-8EFD-C147B03C8AA1}" + ProjectSection(SolutionItems) = preProject + debug\conf\lang\fr\vm\sounds.xml = debug\conf\lang\fr\vm\sounds.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "autoload_configs", "autoload_configs", "{8D29085B-952D-4594-9BB9-5781CE552D0A}" + ProjectSection(SolutionItems) = preProject + release\conf\autoload_configs\alsa.conf.xml = release\conf\autoload_configs\alsa.conf.xml + release\conf\autoload_configs\conference.conf.xml = release\conf\autoload_configs\conference.conf.xml + release\conf\autoload_configs\console.conf.xml = release\conf\autoload_configs\console.conf.xml + release\conf\autoload_configs\dialplan_directory.conf.xml = release\conf\autoload_configs\dialplan_directory.conf.xml + release\conf\autoload_configs\dingaling.conf.xml = release\conf\autoload_configs\dingaling.conf.xml + release\conf\autoload_configs\enum.conf.xml = release\conf\autoload_configs\enum.conf.xml + release\conf\autoload_configs\event_multicast.conf.xml = release\conf\autoload_configs\event_multicast.conf.xml + release\conf\autoload_configs\event_socket.conf.xml = release\conf\autoload_configs\event_socket.conf.xml + release\conf\autoload_configs\ivr.conf.xml = release\conf\autoload_configs\ivr.conf.xml + release\conf\autoload_configs\java.conf.xml = release\conf\autoload_configs\java.conf.xml + release\conf\autoload_configs\limit.conf.xml = release\conf\autoload_configs\limit.conf.xml + release\conf\autoload_configs\local_stream.conf.xml = release\conf\autoload_configs\local_stream.conf.xml + release\conf\autoload_configs\logfile.conf.xml = release\conf\autoload_configs\logfile.conf.xml + release\conf\autoload_configs\modules.conf.xml = release\conf\autoload_configs\modules.conf.xml + release\conf\autoload_configs\openmrcp.conf.xml = release\conf\autoload_configs\openmrcp.conf.xml + release\conf\autoload_configs\portaudio.conf.xml = release\conf\autoload_configs\portaudio.conf.xml + release\conf\autoload_configs\rss.conf.xml = release\conf\autoload_configs\rss.conf.xml + release\conf\autoload_configs\sofia.conf.xml = release\conf\autoload_configs\sofia.conf.xml + release\conf\autoload_configs\spidermonkey.conf.xml = release\conf\autoload_configs\spidermonkey.conf.xml + release\conf\autoload_configs\switch.conf.xml = release\conf\autoload_configs\switch.conf.xml + release\conf\autoload_configs\syslog.conf.xml = release\conf\autoload_configs\syslog.conf.xml + release\conf\autoload_configs\voicemail.conf.xml = release\conf\autoload_configs\voicemail.conf.xml + release\conf\autoload_configs\wanpipe.conf.xml = release\conf\autoload_configs\wanpipe.conf.xml + release\conf\autoload_configs\woomera.conf.xml = release\conf\autoload_configs\woomera.conf.xml + release\conf\autoload_configs\xml_cdr.conf.xml = release\conf\autoload_configs\xml_cdr.conf.xml + release\conf\autoload_configs\xml_curl.conf.xml = release\conf\autoload_configs\xml_curl.conf.xml + release\conf\autoload_configs\xml_rpc.conf.xml = release\conf\autoload_configs\xml_rpc.conf.xml + release\conf\autoload_configs\zeroconf.conf.xml = release\conf\autoload_configs\zeroconf.conf.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dialplan", "dialplan", "{23874F4B-C0AF-4587-9F7E-DB0F06DE8CB4}" + ProjectSection(SolutionItems) = preProject + conf\dialplan\default.xml = conf\dialplan\default.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "directory", "directory", "{19ED97F6-30D8-4FCE-AE1D-8B7FCB170D40}" + ProjectSection(SolutionItems) = preProject + release\conf\directory\default.xml = release\conf\directory\default.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sip_profiles", "sip_profiles", "{99E79D76-FCFC-466B-965B-273CCACF99B0}" + ProjectSection(SolutionItems) = preProject + release\conf\sip_profiles\default.xml = release\conf\sip_profiles\default.xml + release\conf\sip_profiles\nat.xml = release\conf\sip_profiles\nat.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "lang", "lang", "{8FADAC7F-CA9E-49D9-B957-A5F5605D238C}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "de", "de", "{58A56014-DEA7-4172-8C26-BAD8D499A1E8}" + ProjectSection(SolutionItems) = preProject + release\conf\lang\de\de.xml = release\conf\lang\de\de.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "en", "en", "{EB577858-8284-4DEA-ADDA-DD046BCA0126}" + ProjectSection(SolutionItems) = preProject + release\conf\lang\en\en.xml = release\conf\lang\en\en.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "fr", "fr", "{89A94241-1DA6-44E8-A685-AED1E665C2AD}" + ProjectSection(SolutionItems) = preProject + release\conf\lang\fr\fr.xml = release\conf\lang\fr\fr.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "demo", "demo", "{2D74F635-AB18-43B3-A87E-A71F3EA24DDB}" + ProjectSection(SolutionItems) = preProject + release\conf\lang\de\demo\demo.xml = release\conf\lang\de\demo\demo.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vm", "vm", "{A721E646-07E9-4E16-A92D-B97F654B2BAC}" + ProjectSection(SolutionItems) = preProject + release\conf\lang\de\vm\tts.xml = release\conf\lang\de\vm\tts.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "demo", "demo", "{50331CA0-7038-4341-B92D-C34E1601EFF0}" + ProjectSection(SolutionItems) = preProject + release\conf\lang\en\demo\demo.xml = release\conf\lang\en\demo\demo.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vm", "vm", "{FC0DB2A2-B1A3-426E-9E37-BE28FE8FE01B}" + ProjectSection(SolutionItems) = preProject + release\conf\lang\en\vm\sounds.xml = release\conf\lang\en\vm\sounds.xml + release\conf\lang\en\vm\tts.xml = release\conf\lang\en\vm\tts.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "demo", "demo", "{91C6DEDE-CE4A-47D1-A84B-3E828F82E2B0}" + ProjectSection(SolutionItems) = preProject + release\conf\lang\fr\demo\demo.xml = release\conf\lang\fr\demo\demo.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vm", "vm", "{8F5A511B-F716-4D07-9657-55B9E4F1D3E9}" + ProjectSection(SolutionItems) = preProject + release\conf\lang\fr\vm\sounds.xml = release\conf\lang\fr\vm\sounds.xml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Sound Files", "Sound Files", "{4F227C26-768F-46A3-8684-1D08A46FB374}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "unimrcp", "unimrcp", "{62F27B1A-C919-4A70-8478-51F178F3B18F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FreeSwitchConsole", "w32\Console\FreeSwitchConsole.2010.vcxproj", "{1AF3A893-F7BE-43DD-B697-8AB2397C0D67}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FreeSwitchCoreLib", "w32\Library\FreeSwitchCore.2010.vcxproj", "{202D7A4E-760D-4D0E-AFA1-D7459CED30FF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g729", "src\mod\codecs\mod_g729\mod_g729.2010.vcxproj", "{1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sndfile", "src\mod\formats\mod_sndfile\mod_sndfile.2010.vcxproj", "{AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_PortAudio", "src\mod\endpoints\mod_portaudio\mod_PortAudio.2010.vcxproj", "{5FD31A25-5D83-4794-8BEE-904DAD84CE71}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_speex", "src\mod\codecs\mod_speex\mod_speex.2010.vcxproj", "{5580D60E-0F77-4716-9CD4-B8E5986FA375}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "docs", "docs\docs.2010.vcxproj", "{1A1FF289-4FD6-4285-A422-D31DD67A4723}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dialplan_xml", "src\mod\dialplans\mod_dialplan_xml\mod_dialplan_xml.2010.vcxproj", "{07113B25-D3AF-4E04-BA77-4CD1171F022C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_ldap", "src\mod\directories\mod_ldap\mod_ldap.2010.vcxproj", "{EC3E5C7F-EE09-47E2-80FE-546363D14A98}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dialplan_directory", "src\mod\dialplans\mod_dialplan_directory\mod_dialplan_directory.2010.vcxproj", "{A27CCA23-1541-4337-81A4-F0A6413078A0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_event_multicast", "src\mod\event_handlers\mod_event_multicast\mod_event_multicast.2010.vcxproj", "{784113EF-44D9-4949-835D-7065D3C7AD08}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libteletone", "libs\libteletone\libteletone.2010.vcxproj", "{89385C74-5860-4174-9CAF-A39E7C48909C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey", "src\mod\languages\mod_spidermonkey\mod_spidermonkey.2010.vcxproj", "{1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_cepstral", "src\mod\asr_tts\mod_cepstral\mod_cepstral.2010.vcxproj", "{692F6330-4D87-4C82-81DF-40DB5892636E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_ilbc", "src\mod\codecs\mod_ilbc\mod_ilbc.2010.vcxproj", "{D3EC0AFF-76FC-4210-A825-9A17410660A3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dingaling", "src\mod\endpoints\mod_dingaling\mod_dingaling.2010.vcxproj", "{FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_commands", "src\mod\applications\mod_commands\mod_commands.2010.vcxproj", "{30A5B29C-983E-4580-9FD0-D647CCDCC7EB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_console", "src\mod\loggers\mod_console\mod_console.2010.vcxproj", "{1C453396-D912-4213-89FD-9B489162B7B5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xml_rpc", "src\mod\xml_int\mod_xml_rpc\mod_xml_rpc.2010.vcxproj", "{CBEC7225-0C21-4DA8-978E-1F158F8AD950}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_rss", "src\mod\applications\mod_rss\mod_rss.2010.vcxproj", "{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_conference", "src\mod\applications\mod_conference\mod_conference.2010.vcxproj", "{C24FB505-05D7-4319-8485-7540B44C8603}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dptools", "src\mod\applications\mod_dptools\mod_dptools.2010.vcxproj", "{B5881A85-FE70-4F64-8607-2CAAE52669C6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_event_socket", "src\mod\event_handlers\mod_event_socket\mod_event_socket.2010.vcxproj", "{05515420-16DE-4E63-BE73-85BE85BA5142}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libdingaling", "libs\libdingaling\libdingaling.2010.vcxproj", "{1906D736-08BD-4EE1-924F-B536249B9A54}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsrtp", "libs\srtp\libsrtp.2010.vcxproj", "{EEF031CB-FED8-451E-A471-91EC8D4F6750}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsqlite", "libs\win32\sqlite\sqlite.2010.vcxproj", "{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpcre", "libs\win32\pcre\libpcre.2010.vcxproj", "{8D04B550-D240-4A44-8A18-35DA3F7038D9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpcre Generate pcre_chartables.c", "libs\win32\pcre\pcre_chartables.c.2010.vcxproj", "{1CED5987-A529-46DC-B30F-870D85FF9C94}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libapr", "libs\win32\apr\libapr.2010.vcxproj", "{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libaprutil", "libs\win32\apr-util\libaprutil.2010.vcxproj", "{F057DA7F-79E5-4B00-845C-EF446EF055E3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iksemel", "libs\win32\iksemel\iksemel.2010.vcxproj", "{E727E8F6-935D-46FE-8B0E-37834748A0E3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsndfile", "libs\win32\libsndfile\libsndfile.2010.vcxproj", "{3D0370CA-BED2-4657-A475-32375CBCB6E4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curllib", "libs\win32\curl\curllib.2010.vcxproj", "{87EE9DA4-DE1E-4448-8324-183C98DCA588}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xml", "libs\win32\apr-util\xml.2010.vcxproj", "{155844C3-EC5F-407F-97A4-A2DDADED9B2F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "js", "libs\win32\js\js.2010.vcxproj", "{204FA0DE-305D-4414-AE2E-F195A23F390D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sofia", "src\mod\endpoints\mod_sofia\mod_sofia.2010.vcxproj", "{0DF3ABD0-DDC0-4265-B778-07C66780979B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsofia_sip_ua_static", "libs\win32\sofia\libsofia_sip_ua_static.2010.vcxproj", "{70A49BC2-7500-41D0-B75D-EDCC5BE987A0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download PTHREAD", "libs\win32\Download PTHREAD.2010.vcxproj", "{8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pthread", "libs\win32\pthread\pthread.2010.vcxproj", "{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g723_1", "src\mod\codecs\mod_g723_1\mod_g723_1.2010.vcxproj", "{FEA1EEF7-876F-48DE-88BF-C0E3E606D758}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_native_file", "src\mod\formats\mod_native_file\mod_native_file.2010.vcxproj", "{9254C4B0-6F60-42B6-BB3A-36D63FC001C7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_core_db", "src\mod\languages\mod_spidermonkey\mod_spidermonkey_core_db.2010.vcxproj", "{ACFFF684-4D19-4D48-AF12-88EA1D778BDF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_teletone", "src\mod\languages\mod_spidermonkey\mod_spidermonkey_teletone.2010.vcxproj", "{8F992C49-6C51-412F-B2A3-34EAB708EB65}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libudns", "libs\win32\udns\libudns.2010.vcxproj", "{4043FC6A-9A30-4577-8AD5-9B233C9575D8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_enum", "src\mod\applications\mod_enum\mod_enum.2010.vcxproj", "{71A967D5-0E99-4CEF-A587-98836EE6F2EF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_odbc", "src\mod\languages\mod_spidermonkey\mod_spidermonkey_odbc.2010.vcxproj", "{0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xml_curl", "src\mod\xml_int\mod_xml_curl\mod_xml_curl.2010.vcxproj", "{AB91A099-7690-4ECF-8994-E458F4EA1ED4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_en", "src\mod\say\mod_say_en\mod_say_en.2010.vcxproj", "{988CACF7-3FCB-4992-BE69-77872AE67DC8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "portaudio", "libs\portaudio\build\msvc\portaudio.2010.vcxproj", "{0A18A071-125E-442F-AFF7-A3F68ABECF99}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xml_cdr", "src\mod\xml_int\mod_xml_cdr\mod_xml_cdr.2010.vcxproj", "{08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_amr", "src\mod\codecs\mod_amr\mod_amr.2010.vcxproj", "{8DEB383C-4091-4F42-A56F-C9E46D552D79}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_h26x", "src\mod\codecs\mod_h26x\mod_h26x.2010.vcxproj", "{2C3C2423-234B-4772-8899-D3B137E5CA35}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_esf", "src\mod\applications\mod_esf\mod_esf.2010.vcxproj", "{3850D93A-5F24-4922-BC1C-74D08C37C256}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_local_stream", "src\mod\formats\mod_local_stream\mod_local_stream.2010.vcxproj", "{2CA40887-1622-46A1-A7F9-17FD7E7E545B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_socket", "src\mod\languages\mod_spidermonkey\mod_spidermonkey_socket.2010.vcxproj", "{028C7278-05D7-4E18-82FE-BE231B844F41}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_voicemail", "src\mod\applications\mod_voicemail\mod_voicemail.2010.vcxproj", "{D7F1E3F2-A3F4-474C-8555-15122571AF52}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_de", "src\mod\say\mod_say_de\mod_say_de.2010.vcxproj", "{5BC072DB-3826-48EA-AF34-FE32AA01E83B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_es", "src\mod\say\mod_say_es\mod_say_es.2010.vcxproj", "{FA429E98-8B03-45E6-A096-A4BC5E821DE4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_fr", "src\mod\say\mod_say_fr\mod_say_fr.2010.vcxproj", "{06E3A538-AB32-44F2-B477-755FF9CB5D37}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_it", "src\mod\say\mod_say_it\mod_say_it.2010.vcxproj", "{6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_nl", "src\mod\say\mod_say_nl\mod_say_nl.2010.vcxproj", "{A4B122CF-5196-476B-8C0E-D8BD59AC3C14}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_fifo", "src\mod\applications\mod_fifo\mod_fifo.2010.vcxproj", "{75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_db", "src\mod\applications\mod_db\mod_db.2010.vcxproj", "{F6A33240-8F29-48BD-98F0-826995911799}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_expr", "src\mod\applications\mod_expr\mod_expr.2010.vcxproj", "{65A6273D-FCAB-4C55-B09E-65100141A5D4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dialplan_asterisk", "src\mod\dialplans\mod_dialplan_asterisk\mod_dialplan_asterisk.2010.vcxproj", "{E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_logfile", "src\mod\loggers\mod_logfile\mod_logfile.2010.vcxproj", "{D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_cdr_csv", "src\mod\event_handlers\mod_cdr_csv\mod_cdr_csv.2010.vcxproj", "{44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_tone_stream", "src\mod\formats\mod_tone_stream\mod_tone_stream.2010.vcxproj", "{6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_fsv", "src\mod\applications\mod_fsv\mod_fsv.2010.vcxproj", "{E3246D17-E29B-4AB5-962A-C69B0C5837BB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_curl", "src\mod\languages\mod_spidermonkey\mod_spidermonkey_curl.2010.vcxproj", "{36E854E3-CE12-4348-A125-CCF3F9D74813}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_lua", "src\mod\languages\mod_lua\mod_lua.2010.vcxproj", "{7B077E7F-1BE7-4291-AB86-55E527B25CAC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "abyss", "libs\xmlrpc-c\Windows\abyss.2010.vcxproj", "{D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlrpc", "libs\xmlrpc-c\Windows\xmlrpc.2010.vcxproj", "{CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlparse", "libs\xmlrpc-c\Windows\xmlparse.2010.vcxproj", "{0D108721-EAE8-4BAF-8102-D8960EC93647}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmltok", "libs\xmlrpc-c\Windows\xmltok.2010.vcxproj", "{B535402E-38D2-4D54-8360-423ACBD17192}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download sphinxbase", "libs\win32\Download sphinxbase.2010.vcxproj", "{4F92B672-DADB-4047-8D6A-4BB3796733FD}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download sphinxmodel", "libs\win32\Download sphinxmodel.2010.vcxproj", "{2DEE4895-1134-439C-B688-52203E57D878}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download pocketsphinx", "libs\win32\Download pocketsphinx.2010.vcxproj", "{AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sphinxbase", "libs\win32\sphinxbase\sphinxbase.2010.vcxproj", "{2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pocketsphinx", "libs\win32\pocketsphinx\pocketsphinx.2010.vcxproj", "{94001A0E-A837-445C-8004-F918F10D0226}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_pocketsphinx", "src\mod\asr_tts\mod_pocketsphinx\mod_pocketsphinx.2010.vcxproj", "{2286DA73-9FC5-45BC-A508-85994C3317AB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 8khzsound", "libs\win32\Download 8khz Sounds.2010.vcxproj", "{3CE1DC99-8246-4DB1-A709-74F19F08EC67}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 16khzsound", "libs\win32\Download 16khz Sounds.2010.vcxproj", "{87A1FE3D-F410-4C8E-9591-8C625985BC70}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "8khz", "libs\win32\Sound_Files\8khz.2010.vcxproj", "{7A8D8174-B355-4114-AFC1-04777CB9DE0A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "16khz", "libs\win32\Sound_Files\16khz.2010.vcxproj", "{7EB71250-F002-4ED8-92CA-CA218114537A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 32khzsound", "libs\win32\Dowload 32khz Sounds.2010.vcxproj", "{6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "32khz", "libs\win32\Sound_Files\32khz.2010.vcxproj", "{464AAB78-5489-4916-BE51-BF8D61822311}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flite", "libs\win32\flite\flite.2010.vcxproj", "{0AD1177E-1FD8-4643-9391-431467A11084}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_flite", "src\mod\asr_tts\mod_flite\mod_flite.2010.vcxproj", "{66444AEE-554C-11DD-A9F0-8C5D56D89593}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download FLITE", "libs\win32\Download FLITE.2010.vcxproj", "{D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download LAME", "libs\win32\Download LAME.2010.vcxproj", "{D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download LIBSHOUT", "libs\win32\Download LIBSHOUT.2010.vcxproj", "{D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download OGG", "libs\win32\Download OGG.2010.vcxproj", "{D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmp3lame", "libs\win32\libmp3lame\libmp3lame.2010.vcxproj", "{E316772F-5D8F-4F2A-8F71-094C3E859D34}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libshout", "libs\win32\libshout\libshout.vcxproj", "{D3D8B329-20BE-475E-9E83-653CEA0E0EF5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_shout", "src\mod\formats\mod_shout\mod_shout.vcxproj", "{38FE0559-9910-43A8-9E45-3E5004C27692}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libogg", "libs\win32\libogg\libogg.2010.vcxproj", "{0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_snom", "src\mod\applications\mod_snom\mod_snom.2010.vcxproj", "{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_zh", "src\mod\say\mod_say_zh\mod_say_zh.2010.vcxproj", "{B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_managed", "src\mod\languages\mod_managed\mod_managed.2010.vcxproj", "{7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FreeSWITCH.Managed", "src\mod\languages\mod_managed\managed\FreeSWITCH.Managed.2010.csproj", "{834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download mpg123", "libs\win32\Download mpg123.2010.vcxproj", "{E796E337-DE78-4303-8614-9A590862EE95}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmpg123", "libs\win32\mpg123\libmpg123.2010.vcxproj", "{419C8F80-D858-4B48-A25C-AF4007608137}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_loopback", "src\mod\endpoints\mod_loopback\mod_loopback.2010.vcxproj", "{B3F424EC-3D8F-417C-B244-3919D5E1A577}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_vmd", "src\mod\applications\mod_vmd\mod_vmd.2010.vcxproj", "{14E4A972-9CFB-436D-B0A5-4943F3F80D47}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libg722_1", "libs\win32\libg722_1\libg722_1.vcxproj", "{1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_siren", "src\mod\codecs\mod_siren\mod_siren.2010.vcxproj", "{0B6C905B-142E-4999-B39D-92FF7951E921}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "esl", "libs\esl\src\esl.2010.vcxproj", "{CF405366-9558-4AE8-90EF-5E21B51CCB4E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fs_cli", "libs\esl\fs_cli.2010.vcxproj", "{D2FB8043-D208-4AEE-8F18-3B5857C871B9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_easyroute", "src\mod\applications\mod_easyroute\mod_easyroute.2010.vcxproj", "{329FD5B0-EF28-4606-86D0-F6EA21CF8E36}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_lcr", "src\mod\applications\mod_lcr\mod_lcr.2010.vcxproj", "{1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtiff", "libs\spandsp\src\libtiff.2010.vcxproj", "{401A40CD-5DB4-4E34-AC68-FA99E9FAC014}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspandsp", "libs\spandsp\src\libspandsp.2010.vcxproj", "{1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspeex", "libs\speex\win32\VS2008\libspeex\libspeex.vcxproj", "{E972C52F-9E85-4D65-B19C-031E511E9DB4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspeexdsp", "libs\speex\win32\VS2008\libspeexdsp\libspeexdsp.vcxproj", "{03207781-0D1C-4DB3-A71D-45C608F28DBD}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libilbc", "libs\ilbc\libilbc.2010.vcxproj", "{9A5DDF08-C88C-4A35-B7F6-D605228446BD}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lua51", "src\mod\languages\mod_lua\lua\lua.2010.vcxproj", "{D0B36172-CD76-454A-9B89-990025266C2A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_opal", "src\mod\endpoints\mod_opal\mod_opal_2010.vcxproj", "{05C9FB27-480E-4D53-B3B7-6338E2526666}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_skinny", "src\mod\endpoints\mod_skinny\mod_skinny_2010.vcxproj", "{CC1DD008-9406-448D-A0AD-33C3186CFADB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_at_dictionary", "libs\spandsp\src\msvc\make_at_dictionary.2010.vcxproj", "{DEE932AB-5911-4700-9EEB-8C7090A0A330}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_modem_filter", "libs\spandsp\src\msvc\make_modem_filter.2010.vcxproj", "{329A6FA0-0FCC-4435-A950-E670AEFA9838}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_skel", "src\mod\applications\mod_skel\mod_skel.2010.vcxproj", "{11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_skypopen", "src\mod\endpoints\mod_skypopen\mod_skypopen.2010.vcxproj", "{C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 32khz music", "libs\win32\Dowload 32khz music.2010.vcxproj", "{1F0A8A77-E661-418F-BB92-82172AE43803}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 8khz music", "libs\win32\Download 8khz music.2010.vcxproj", "{4F5C9D55-98EF-4256-8311-32D7BD360406}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 16khz music", "libs\win32\Download 16khz music.2010.vcxproj", "{E10571C4-E7F4-4608-B5F2-B22E7EB95400}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "8khz music", "libs\win32\Sound_Files\8khzmusic.2010.vcxproj", "{D1ABE208-6442-4FB4-9AAD-1677E41BC870}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "16khz music", "libs\win32\Sound_Files\16khzmusic.2010.vcxproj", "{BA599D0A-4310-4505-91DA-6A6447B3E289}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "32khz music", "libs\win32\Sound_Files\32khzmusic.2010.vcxproj", "{EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_file_string", "src\mod\formats\mod_file_string\mod_file_string.2010.vcxproj", "{70564D74-199A-4452-9C60-19ED5F242F0D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_nibblebill", "src\mod\applications\mod_nibblebill\mod_nibblebill.2010.vcxproj", "{3C977801-FE88-48F2-83D3-FA2EBFF6688E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_ru", "src\mod\say\mod_say_ru\mod_say_ru.2010.vcxproj", "{0382E8FD-CFDC-41C0-8B03-792C7C84FC31}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_valet_parking", "src\mod\applications\mod_valet_parking\mod_valet_parking.2010.vcxproj", "{432DB165-1EB2-4781-A9C0-71E62610B20A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbroadvoice", "libs\broadvoice\src\libbroadvoice.2010.vcxproj", "{CF70F278-3364-4395-A2E1-23501C9B8AD2}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_bv", "src\mod\codecs\mod_bv\mod_bv.2010.vcxproj", "{D5C87B19-150D-4EF3-A671-96589BD2D14A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aprtoolkit", "libs\unimrcp\libs\apr-toolkit\aprtoolkit.2010.vcxproj", "{13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mpf", "libs\unimrcp\libs\mpf\mpf.2010.vcxproj", "{B5A00BFA-6083-4FAE-A097-71642D6473B5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcp", "libs\unimrcp\libs\mrcp\mrcp.2010.vcxproj", "{1C320193-46A6-4B34-9C56-8AB584FC1B56}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpclient", "libs\unimrcp\libs\mrcp-client\mrcpclient.2010.vcxproj", "{72782932-37CC-46AE-8C7F-9A7B1A6EE108}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpsignaling", "libs\unimrcp\libs\mrcp-signaling\mrcpsignaling.2010.vcxproj", "{12A49562-BAB9-43A3-A21D-15B60BBB4C31}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpv2transport", "libs\unimrcp\libs\mrcpv2-transport\mrcpv2transport.2010.vcxproj", "{A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unirtsp", "libs\unimrcp\libs\uni-rtsp\unirtsp.2010.vcxproj", "{504B3154-7A4F-459D-9877-B951021C3F1F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpsofiasip", "libs\unimrcp\modules\mrcp-sofiasip\mrcpsofiasip.2010.vcxproj", "{746F3632-5BB2-4570-9453-31D6D58A7D8E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpunirtsp", "libs\unimrcp\modules\mrcp-unirtsp\mrcpunirtsp.2010.vcxproj", "{DEB01ACB-D65F-4A62-AED9-58C1054499E9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_unimrcp", "src\mod\asr_tts\mod_unimrcp\mod_unimrcp.2010.vcxproj", "{D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download CELT", "libs\win32\Download CELT.vcxproj", "{FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcelt", "libs\win32\celt\libcelt.vcxproj", "{ABB71A76-42B0-47A4-973A-42E3D920C6FD}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_celt", "src\mod\codecs\mod_celt\mod_celt.vcxproj", "{4D418176-3B33-47E6-A63E-01BA34ADD21C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FSComm", "fscomm\FSComm.2010.vcxproj", "{7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_curl", "src\mod\applications\mod_curl\mod_curl.2010.vcxproj", "{EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download JSON", "libs\win32\Download JSON.2010.vcxproj", "{B808178B-82F0-4CF4-A2B1-921939FA24D0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libjson", "libs\win32\json\libjson.2010.vcxproj", "{9778F1C0-09BC-4698-8EBC-BD982247209A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_silk", "src\mod\codecs\mod_silk\mod_silk.2010.vcxproj", "{AFA983D6-4569-4F88-BA94-555ED00FD9A8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Silk_FIX", "libs\silk\src\Silk_FIX.2010.vcxproj", "{56B91D01-9150-4BBF-AFA1-5B68AB991B76}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_avmd", "src\mod\applications\mod_avmd\mod_avmd.2010.vcxproj", "{990BAA76-89D3-4E38-8479-C7B28784EFC8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spandsp", "src\mod\applications\mod_spandsp\mod_spandsp.2010.vcxproj", "{1E21AFE0-6FDB-41D2-942D-863607C24B91}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_hash", "src\mod\applications\mod_hash\mod_hash.2010.vcxproj", "{2E250296-0C08-4342-9C8A-BCBDD0E7DF65}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + All|Win32 = All|Win32 + All|x64 = All|x64 + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.All|Win32.ActiveCfg = Release|x64 + {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.All|x64.ActiveCfg = Release|x64 + {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.All|x64.Build.0 = Release|x64 + {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|Win32.ActiveCfg = Debug|Win32 + {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|Win32.Build.0 = Debug|Win32 + {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|x64.ActiveCfg = Debug|x64 + {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|x64.Build.0 = Debug|x64 + {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|Win32.ActiveCfg = Release|Win32 + {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|Win32.Build.0 = Release|Win32 + {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|x64.ActiveCfg = Release|x64 + {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|x64.Build.0 = Release|x64 + {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.All|Win32.ActiveCfg = Release|x64 + {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.All|x64.ActiveCfg = Release|x64 + {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.All|x64.Build.0 = Release|x64 + {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|Win32.ActiveCfg = Debug|Win32 + {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|Win32.Build.0 = Debug|Win32 + {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|x64.ActiveCfg = Debug|x64 + {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|x64.Build.0 = Debug|x64 + {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|Win32.ActiveCfg = Release|Win32 + {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|Win32.Build.0 = Release|Win32 + {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|x64.ActiveCfg = Release|x64 + {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|x64.Build.0 = Release|x64 + {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.All|Win32.ActiveCfg = Release Passthrough|x64 + {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.All|x64.ActiveCfg = Release Passthrough|x64 + {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.All|x64.Build.0 = Release Passthrough|x64 + {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32 + {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|Win32.Build.0 = Debug Passthrough|Win32 + {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|x64.ActiveCfg = Debug Passthrough|x64 + {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|x64.Build.0 = Debug Passthrough|x64 + {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|Win32.ActiveCfg = Release Passthrough|Win32 + {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|Win32.Build.0 = Release Passthrough|Win32 + {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|x64.ActiveCfg = Release Passthrough|x64 + {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|x64.Build.0 = Release Passthrough|x64 + {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.All|Win32.ActiveCfg = Release|x64 + {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.All|x64.ActiveCfg = Release|x64 + {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.All|x64.Build.0 = Release|x64 + {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|Win32.ActiveCfg = Debug|Win32 + {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|Win32.Build.0 = Debug|Win32 + {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|x64.ActiveCfg = Debug|x64 + {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|x64.Build.0 = Debug|x64 + {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|Win32.ActiveCfg = Release|Win32 + {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|Win32.Build.0 = Release|Win32 + {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|x64.ActiveCfg = Release|x64 + {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|x64.Build.0 = Release|x64 + {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.All|Win32.ActiveCfg = Release|x64 + {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.All|x64.ActiveCfg = Release|x64 + {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.All|x64.Build.0 = Release|x64 + {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Win32.ActiveCfg = Debug|Win32 + {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Win32.Build.0 = Debug|Win32 + {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|x64.ActiveCfg = Debug|x64 + {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|x64.Build.0 = Debug|x64 + {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Win32.ActiveCfg = Release|Win32 + {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Win32.Build.0 = Release|Win32 + {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|x64.ActiveCfg = Release|x64 + {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|x64.Build.0 = Release|x64 + {5580D60E-0F77-4716-9CD4-B8E5986FA375}.All|Win32.ActiveCfg = Release|x64 + {5580D60E-0F77-4716-9CD4-B8E5986FA375}.All|x64.ActiveCfg = Release|x64 + {5580D60E-0F77-4716-9CD4-B8E5986FA375}.All|x64.Build.0 = Release|x64 + {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|Win32.ActiveCfg = Debug|Win32 + {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|Win32.Build.0 = Debug|Win32 + {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|x64.ActiveCfg = Debug|x64 + {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|x64.Build.0 = Debug|x64 + {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|Win32.ActiveCfg = Release|Win32 + {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|Win32.Build.0 = Release|Win32 + {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|x64.ActiveCfg = Release|x64 + {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|x64.Build.0 = Release|x64 + {1A1FF289-4FD6-4285-A422-D31DD67A4723}.All|Win32.ActiveCfg = Release|Win32 + {1A1FF289-4FD6-4285-A422-D31DD67A4723}.All|x64.ActiveCfg = Release|Win32 + {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|Win32.ActiveCfg = Debug|Win32 + {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|x64.ActiveCfg = Debug|Win32 + {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|Win32.ActiveCfg = Release|Win32 + {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|x64.ActiveCfg = Release|Win32 + {07113B25-D3AF-4E04-BA77-4CD1171F022C}.All|Win32.ActiveCfg = Release|x64 + {07113B25-D3AF-4E04-BA77-4CD1171F022C}.All|x64.ActiveCfg = Release|x64 + {07113B25-D3AF-4E04-BA77-4CD1171F022C}.All|x64.Build.0 = Release|x64 + {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|Win32.ActiveCfg = Debug|Win32 + {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|Win32.Build.0 = Debug|Win32 + {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|x64.ActiveCfg = Debug|x64 + {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|x64.Build.0 = Debug|x64 + {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|Win32.ActiveCfg = Release|Win32 + {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|Win32.Build.0 = Release|Win32 + {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|x64.ActiveCfg = Release|x64 + {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|x64.Build.0 = Release|x64 + {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.All|Win32.ActiveCfg = Release MS-LDAP|x64 + {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.All|x64.ActiveCfg = Release MS-LDAP|x64 + {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.All|x64.Build.0 = Release MS-LDAP|x64 + {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|Win32.ActiveCfg = Debug MS-LDAP|Win32 + {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|Win32.Build.0 = Debug MS-LDAP|Win32 + {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|x64.ActiveCfg = Debug MS-LDAP|x64 + {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|x64.Build.0 = Debug MS-LDAP|x64 + {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|Win32.ActiveCfg = Release MS-LDAP|Win32 + {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|Win32.Build.0 = Release MS-LDAP|Win32 + {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|x64.ActiveCfg = Release MS-LDAP|x64 + {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|x64.Build.0 = Release MS-LDAP|x64 + {A27CCA23-1541-4337-81A4-F0A6413078A0}.All|Win32.ActiveCfg = Release|x64 + {A27CCA23-1541-4337-81A4-F0A6413078A0}.All|x64.ActiveCfg = Release|x64 + {A27CCA23-1541-4337-81A4-F0A6413078A0}.All|x64.Build.0 = Release|x64 + {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|Win32.ActiveCfg = Debug|Win32 + {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|Win32.Build.0 = Debug|Win32 + {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|x64.ActiveCfg = Debug|x64 + {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|x64.Build.0 = Debug|x64 + {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|Win32.ActiveCfg = Release|Win32 + {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|Win32.Build.0 = Release|Win32 + {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|x64.ActiveCfg = Release|x64 + {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|x64.Build.0 = Release|x64 + {784113EF-44D9-4949-835D-7065D3C7AD08}.All|Win32.ActiveCfg = Release|x64 + {784113EF-44D9-4949-835D-7065D3C7AD08}.All|x64.ActiveCfg = Release|x64 + {784113EF-44D9-4949-835D-7065D3C7AD08}.All|x64.Build.0 = Release|x64 + {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|Win32.ActiveCfg = Debug|Win32 + {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|Win32.Build.0 = Debug|Win32 + {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|x64.ActiveCfg = Debug|x64 + {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|x64.Build.0 = Debug|x64 + {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|Win32.ActiveCfg = Release|Win32 + {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|Win32.Build.0 = Release|Win32 + {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|x64.ActiveCfg = Release|x64 + {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|x64.Build.0 = Release|x64 + {89385C74-5860-4174-9CAF-A39E7C48909C}.All|Win32.ActiveCfg = Release|x64 + {89385C74-5860-4174-9CAF-A39E7C48909C}.All|x64.ActiveCfg = Release|x64 + {89385C74-5860-4174-9CAF-A39E7C48909C}.All|x64.Build.0 = Release|x64 + {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|Win32.ActiveCfg = Debug|Win32 + {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|Win32.Build.0 = Debug|Win32 + {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|x64.ActiveCfg = Debug|x64 + {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|x64.Build.0 = Debug|x64 + {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|Win32.ActiveCfg = Release|Win32 + {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|Win32.Build.0 = Release|Win32 + {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|x64.ActiveCfg = Release|x64 + {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|x64.Build.0 = Release|x64 + {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.All|Win32.ActiveCfg = Release|x64 + {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.All|x64.ActiveCfg = Release|x64 + {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.All|x64.Build.0 = Release|x64 + {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|Win32.ActiveCfg = Debug|Win32 + {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|Win32.Build.0 = Debug|Win32 + {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|x64.ActiveCfg = Debug|x64 + {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|x64.Build.0 = Debug|x64 + {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|Win32.ActiveCfg = Release|Win32 + {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|Win32.Build.0 = Release|Win32 + {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|x64.ActiveCfg = Release|x64 + {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|x64.Build.0 = Release|x64 + {692F6330-4D87-4C82-81DF-40DB5892636E}.All|Win32.ActiveCfg = Release|x64 + {692F6330-4D87-4C82-81DF-40DB5892636E}.All|x64.ActiveCfg = Release|x64 + {692F6330-4D87-4C82-81DF-40DB5892636E}.All|x64.Build.0 = Release|x64 + {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|Win32.ActiveCfg = Debug|Win32 + {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|x64.ActiveCfg = Debug|x64 + {692F6330-4D87-4C82-81DF-40DB5892636E}.Release|Win32.ActiveCfg = Release|Win32 + {692F6330-4D87-4C82-81DF-40DB5892636E}.Release|x64.ActiveCfg = Release|x64 + {D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|Win32.ActiveCfg = Release|x64 + {D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|x64.ActiveCfg = Release|x64 + {D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|x64.Build.0 = Release|x64 + {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|Win32.ActiveCfg = Debug|Win32 + {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|Win32.Build.0 = Debug|Win32 + {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|x64.ActiveCfg = Debug|x64 + {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|x64.Build.0 = Debug|x64 + {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|Win32.ActiveCfg = Release|Win32 + {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|Win32.Build.0 = Release|Win32 + {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|x64.ActiveCfg = Release|x64 + {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|x64.Build.0 = Release|x64 + {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.All|Win32.ActiveCfg = Release|x64 + {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.All|x64.ActiveCfg = Release|x64 + {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.All|x64.Build.0 = Release|x64 + {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Win32.ActiveCfg = Debug|Win32 + {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Win32.Build.0 = Debug|Win32 + {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|x64.ActiveCfg = Debug|x64 + {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|x64.Build.0 = Debug|x64 + {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Win32.ActiveCfg = Release|Win32 + {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Win32.Build.0 = Release|Win32 + {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|x64.ActiveCfg = Release|x64 + {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|x64.Build.0 = Release|x64 + {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.All|Win32.ActiveCfg = Release|x64 + {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.All|x64.ActiveCfg = Release|x64 + {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.All|x64.Build.0 = Release|x64 + {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|Win32.ActiveCfg = Debug|Win32 + {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|Win32.Build.0 = Debug|Win32 + {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|x64.ActiveCfg = Debug|x64 + {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|x64.Build.0 = Debug|x64 + {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|Win32.ActiveCfg = Release|Win32 + {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|Win32.Build.0 = Release|Win32 + {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|x64.ActiveCfg = Release|x64 + {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|x64.Build.0 = Release|x64 + {1C453396-D912-4213-89FD-9B489162B7B5}.All|Win32.ActiveCfg = Release|x64 + {1C453396-D912-4213-89FD-9B489162B7B5}.All|x64.ActiveCfg = Release|x64 + {1C453396-D912-4213-89FD-9B489162B7B5}.All|x64.Build.0 = Release|x64 + {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|Win32.ActiveCfg = Debug|Win32 + {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|Win32.Build.0 = Debug|Win32 + {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|x64.ActiveCfg = Debug|x64 + {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|x64.Build.0 = Debug|x64 + {1C453396-D912-4213-89FD-9B489162B7B5}.Release|Win32.ActiveCfg = Release|Win32 + {1C453396-D912-4213-89FD-9B489162B7B5}.Release|Win32.Build.0 = Release|Win32 + {1C453396-D912-4213-89FD-9B489162B7B5}.Release|x64.ActiveCfg = Release|x64 + {1C453396-D912-4213-89FD-9B489162B7B5}.Release|x64.Build.0 = Release|x64 + {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.All|Win32.ActiveCfg = Release|x64 + {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.All|x64.ActiveCfg = Release|x64 + {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.All|x64.Build.0 = Release|x64 + {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|Win32.ActiveCfg = Debug|Win32 + {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|Win32.Build.0 = Debug|Win32 + {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|x64.ActiveCfg = Debug|x64 + {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|x64.Build.0 = Debug|x64 + {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Win32.ActiveCfg = Release|Win32 + {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Win32.Build.0 = Release|Win32 + {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|x64.ActiveCfg = Release|x64 + {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|x64.Build.0 = Release|x64 + {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|Win32.ActiveCfg = Release|x64 + {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|x64.ActiveCfg = Release|x64 + {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|x64.Build.0 = Release|x64 + {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Win32.ActiveCfg = Debug|Win32 + {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Win32.Build.0 = Debug|Win32 + {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|x64.ActiveCfg = Debug|x64 + {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|x64.Build.0 = Debug|x64 + {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Win32.ActiveCfg = Release|Win32 + {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Win32.Build.0 = Release|Win32 + {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|x64.ActiveCfg = Release|x64 + {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|x64.Build.0 = Release|x64 + {C24FB505-05D7-4319-8485-7540B44C8603}.All|Win32.ActiveCfg = Release|x64 + {C24FB505-05D7-4319-8485-7540B44C8603}.All|x64.ActiveCfg = Release|x64 + {C24FB505-05D7-4319-8485-7540B44C8603}.All|x64.Build.0 = Release|x64 + {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|Win32.ActiveCfg = Debug|Win32 + {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|Win32.Build.0 = Debug|Win32 + {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|x64.ActiveCfg = Debug|x64 + {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|x64.Build.0 = Debug|x64 + {C24FB505-05D7-4319-8485-7540B44C8603}.Release|Win32.ActiveCfg = Release|Win32 + {C24FB505-05D7-4319-8485-7540B44C8603}.Release|Win32.Build.0 = Release|Win32 + {C24FB505-05D7-4319-8485-7540B44C8603}.Release|x64.ActiveCfg = Release|x64 + {C24FB505-05D7-4319-8485-7540B44C8603}.Release|x64.Build.0 = Release|x64 + {B5881A85-FE70-4F64-8607-2CAAE52669C6}.All|Win32.ActiveCfg = Release|x64 + {B5881A85-FE70-4F64-8607-2CAAE52669C6}.All|x64.ActiveCfg = Release|x64 + {B5881A85-FE70-4F64-8607-2CAAE52669C6}.All|x64.Build.0 = Release|x64 + {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|Win32.ActiveCfg = Debug|Win32 + {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|Win32.Build.0 = Debug|Win32 + {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|x64.ActiveCfg = Debug|x64 + {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|x64.Build.0 = Debug|x64 + {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|Win32.ActiveCfg = Release|Win32 + {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|Win32.Build.0 = Release|Win32 + {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|x64.ActiveCfg = Release|x64 + {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|x64.Build.0 = Release|x64 + {05515420-16DE-4E63-BE73-85BE85BA5142}.All|Win32.ActiveCfg = Release|x64 + {05515420-16DE-4E63-BE73-85BE85BA5142}.All|x64.ActiveCfg = Release|x64 + {05515420-16DE-4E63-BE73-85BE85BA5142}.All|x64.Build.0 = Release|x64 + {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|Win32.ActiveCfg = Debug|Win32 + {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|Win32.Build.0 = Debug|Win32 + {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|x64.ActiveCfg = Debug|x64 + {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|x64.Build.0 = Debug|x64 + {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|Win32.ActiveCfg = Release|Win32 + {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|Win32.Build.0 = Release|Win32 + {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|x64.ActiveCfg = Release|x64 + {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|x64.Build.0 = Release|x64 + {1906D736-08BD-4EE1-924F-B536249B9A54}.All|Win32.ActiveCfg = Release DLL|x64 + {1906D736-08BD-4EE1-924F-B536249B9A54}.All|x64.ActiveCfg = Release DLL|x64 + {1906D736-08BD-4EE1-924F-B536249B9A54}.All|x64.Build.0 = Release DLL|x64 + {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.ActiveCfg = Debug|Win32 + {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.Build.0 = Debug|Win32 + {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|x64.ActiveCfg = Debug|x64 + {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|x64.Build.0 = Debug|x64 + {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Win32.ActiveCfg = Release|Win32 + {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Win32.Build.0 = Release|Win32 + {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|x64.ActiveCfg = Release|x64 + {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|x64.Build.0 = Release|x64 + {EEF031CB-FED8-451E-A471-91EC8D4F6750}.All|Win32.ActiveCfg = Release Dll|x64 + {EEF031CB-FED8-451E-A471-91EC8D4F6750}.All|x64.ActiveCfg = Release Dll|x64 + {EEF031CB-FED8-451E-A471-91EC8D4F6750}.All|x64.Build.0 = Release Dll|x64 + {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Win32.ActiveCfg = Debug|Win32 + {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Win32.Build.0 = Debug|Win32 + {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|x64.ActiveCfg = Debug|x64 + {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|x64.Build.0 = Debug|x64 + {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Win32.ActiveCfg = Release|Win32 + {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Win32.Build.0 = Release|Win32 + {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|x64.ActiveCfg = Release|x64 + {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|x64.Build.0 = Release|x64 + {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.All|Win32.ActiveCfg = Release DLL|x64 + {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.All|x64.ActiveCfg = Release DLL|x64 + {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.All|x64.Build.0 = Release DLL|x64 + {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|Win32.ActiveCfg = Debug|Win32 + {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|Win32.Build.0 = Debug|Win32 + {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|x64.ActiveCfg = Debug|x64 + {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|x64.Build.0 = Debug|x64 + {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|Win32.ActiveCfg = Release|Win32 + {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|Win32.Build.0 = Release|Win32 + {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|x64.ActiveCfg = Release|x64 + {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|x64.Build.0 = Release|x64 + {8D04B550-D240-4A44-8A18-35DA3F7038D9}.All|Win32.ActiveCfg = Release DLL|x64 + {8D04B550-D240-4A44-8A18-35DA3F7038D9}.All|x64.ActiveCfg = Release DLL|x64 + {8D04B550-D240-4A44-8A18-35DA3F7038D9}.All|x64.Build.0 = Release DLL|x64 + {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|Win32.ActiveCfg = Debug|Win32 + {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|Win32.Build.0 = Debug|Win32 + {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|x64.ActiveCfg = Debug|x64 + {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|x64.Build.0 = Debug|x64 + {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|Win32.ActiveCfg = Release|Win32 + {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|Win32.Build.0 = Release|Win32 + {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|x64.ActiveCfg = Release|x64 + {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|x64.Build.0 = Release|x64 + {1CED5987-A529-46DC-B30F-870D85FF9C94}.All|Win32.ActiveCfg = Release|x64 + {1CED5987-A529-46DC-B30F-870D85FF9C94}.All|x64.ActiveCfg = Release|x64 + {1CED5987-A529-46DC-B30F-870D85FF9C94}.All|x64.Build.0 = Release|x64 + {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Win32.ActiveCfg = Debug|Win32 + {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Win32.Build.0 = Debug|Win32 + {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|x64.ActiveCfg = Debug|x64 + {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|x64.Build.0 = Debug|x64 + {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.ActiveCfg = Release|Win32 + {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.Build.0 = Release|Win32 + {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|x64.ActiveCfg = Release|x64 + {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|x64.Build.0 = Release|x64 + {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.All|Win32.ActiveCfg = Release|x64 + {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.All|x64.ActiveCfg = Release|x64 + {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.All|x64.Build.0 = Release|x64 + {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|Win32.ActiveCfg = Debug|Win32 + {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|Win32.Build.0 = Debug|Win32 + {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|x64.ActiveCfg = Debug|x64 + {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|x64.Build.0 = Debug|x64 + {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.ActiveCfg = Release|Win32 + {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.Build.0 = Release|Win32 + {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64.ActiveCfg = Release|x64 + {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64.Build.0 = Release|x64 + {F057DA7F-79E5-4B00-845C-EF446EF055E3}.All|Win32.ActiveCfg = Release|x64 + {F057DA7F-79E5-4B00-845C-EF446EF055E3}.All|x64.ActiveCfg = Release|x64 + {F057DA7F-79E5-4B00-845C-EF446EF055E3}.All|x64.Build.0 = Release|x64 + {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.ActiveCfg = Debug|Win32 + {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.Build.0 = Debug|Win32 + {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|x64.ActiveCfg = Debug|x64 + {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|x64.Build.0 = Debug|x64 + {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Win32.ActiveCfg = Release|Win32 + {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Win32.Build.0 = Release|Win32 + {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|x64.ActiveCfg = Release|x64 + {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|x64.Build.0 = Release|x64 + {E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|Win32.ActiveCfg = Release|x64 + {E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|x64.ActiveCfg = Release|x64 + {E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|x64.Build.0 = Release|x64 + {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Win32.ActiveCfg = Debug|Win32 + {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Win32.Build.0 = Debug|Win32 + {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|x64.ActiveCfg = Debug|x64 + {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|x64.Build.0 = Debug|x64 + {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Win32.ActiveCfg = Release|Win32 + {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Win32.Build.0 = Release|Win32 + {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|x64.ActiveCfg = Release|x64 + {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|x64.Build.0 = Release|x64 + {3D0370CA-BED2-4657-A475-32375CBCB6E4}.All|Win32.ActiveCfg = Release|x64 + {3D0370CA-BED2-4657-A475-32375CBCB6E4}.All|x64.ActiveCfg = Release|x64 + {3D0370CA-BED2-4657-A475-32375CBCB6E4}.All|x64.Build.0 = Release|x64 + {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|Win32.ActiveCfg = Debug|Win32 + {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|Win32.Build.0 = Debug|Win32 + {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|x64.ActiveCfg = Debug|x64 + {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|x64.Build.0 = Debug|x64 + {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|Win32.ActiveCfg = Release|Win32 + {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|Win32.Build.0 = Release|Win32 + {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|x64.ActiveCfg = Release|x64 + {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|x64.Build.0 = Release|x64 + {87EE9DA4-DE1E-4448-8324-183C98DCA588}.All|Win32.ActiveCfg = Debug|x64 + {87EE9DA4-DE1E-4448-8324-183C98DCA588}.All|x64.ActiveCfg = Debug|x64 + {87EE9DA4-DE1E-4448-8324-183C98DCA588}.All|x64.Build.0 = Debug|x64 + {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|Win32.ActiveCfg = Debug|Win32 + {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|Win32.Build.0 = Debug|Win32 + {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|x64.ActiveCfg = Debug|x64 + {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|x64.Build.0 = Debug|x64 + {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|Win32.ActiveCfg = Release|Win32 + {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|Win32.Build.0 = Release|Win32 + {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|x64.ActiveCfg = Release|x64 + {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|x64.Build.0 = Release|x64 + {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.All|Win32.ActiveCfg = Debug|x64 + {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.All|x64.ActiveCfg = Debug|x64 + {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.All|x64.Build.0 = Debug|x64 + {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Win32.ActiveCfg = Debug|Win32 + {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Win32.Build.0 = Debug|Win32 + {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|x64.ActiveCfg = Debug|x64 + {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|x64.Build.0 = Debug|x64 + {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Win32.ActiveCfg = Release|Win32 + {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Win32.Build.0 = Release|Win32 + {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|x64.ActiveCfg = Release|x64 + {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|x64.Build.0 = Release|x64 + {204FA0DE-305D-4414-AE2E-F195A23F390D}.All|Win32.ActiveCfg = Debug|x64 + {204FA0DE-305D-4414-AE2E-F195A23F390D}.All|x64.ActiveCfg = Debug|x64 + {204FA0DE-305D-4414-AE2E-F195A23F390D}.All|x64.Build.0 = Debug|x64 + {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|Win32.ActiveCfg = Debug|Win32 + {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|Win32.Build.0 = Debug|Win32 + {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|x64.ActiveCfg = Debug|x64 + {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|x64.Build.0 = Debug|x64 + {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|Win32.ActiveCfg = Release|Win32 + {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|Win32.Build.0 = Release|Win32 + {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|x64.ActiveCfg = Release|x64 + {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|x64.Build.0 = Release|x64 + {0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|Win32.ActiveCfg = Release|x64 + {0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x64.ActiveCfg = Release|x64 + {0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x64.Build.0 = Release|x64 + {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|Win32.ActiveCfg = Debug|Win32 + {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|Win32.Build.0 = Debug|Win32 + {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|x64.ActiveCfg = Debug|x64 + {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|x64.Build.0 = Debug|x64 + {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|Win32.ActiveCfg = Release|Win32 + {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|Win32.Build.0 = Release|Win32 + {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|x64.ActiveCfg = Release|x64 + {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|x64.Build.0 = Release|x64 + {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.All|Win32.ActiveCfg = Release|x64 + {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.All|x64.ActiveCfg = Release|x64 + {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.All|x64.Build.0 = Release|x64 + {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|Win32.ActiveCfg = Debug|Win32 + {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|Win32.Build.0 = Debug|Win32 + {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|x64.ActiveCfg = Debug|x64 + {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|x64.Build.0 = Debug|x64 + {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|Win32.ActiveCfg = Release|Win32 + {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|Win32.Build.0 = Release|Win32 + {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|x64.ActiveCfg = Release|x64 + {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|x64.Build.0 = Release|x64 + {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|Win32.ActiveCfg = Release|Win32 + {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|Win32.Build.0 = Release|Win32 + {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|x64.ActiveCfg = Release|Win32 + {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|x64.Build.0 = Release|Win32 + {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|Win32.ActiveCfg = Debug|Win32 + {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|Win32.Build.0 = Debug|Win32 + {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|x64.ActiveCfg = Debug|Win32 + {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|x64.Build.0 = Debug|Win32 + {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Win32.ActiveCfg = Release|Win32 + {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Win32.Build.0 = Release|Win32 + {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|x64.ActiveCfg = Release|Win32 + {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|x64.Build.0 = Release|Win32 + {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.All|Win32.ActiveCfg = Release DLL|x64 + {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.All|x64.ActiveCfg = Release DLL|x64 + {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.All|x64.Build.0 = Release DLL|x64 + {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Win32.ActiveCfg = Debug DLL|Win32 + {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Win32.Build.0 = Debug DLL|Win32 + {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|x64.ActiveCfg = Debug DLL|x64 + {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|x64.Build.0 = Debug DLL|x64 + {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Win32.ActiveCfg = Release DLL|Win32 + {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Win32.Build.0 = Release DLL|Win32 + {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|x64.ActiveCfg = Release DLL|x64 + {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|x64.Build.0 = Release DLL|x64 + {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.All|Win32.ActiveCfg = Release Passthrough|x64 + {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.All|x64.ActiveCfg = Release Passthrough|x64 + {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.All|x64.Build.0 = Release Passthrough|x64 + {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32 + {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|Win32.Build.0 = Debug Passthrough|Win32 + {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|x64.ActiveCfg = Debug Passthrough|x64 + {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|x64.Build.0 = Debug Passthrough|x64 + {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|Win32.ActiveCfg = Release Passthrough|Win32 + {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|Win32.Build.0 = Release Passthrough|Win32 + {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|x64.ActiveCfg = Release Passthrough|x64 + {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|x64.Build.0 = Release Passthrough|x64 + {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.All|Win32.ActiveCfg = Release|x64 + {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.All|x64.ActiveCfg = Release|x64 + {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.All|x64.Build.0 = Release|x64 + {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|Win32.ActiveCfg = Debug|Win32 + {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|Win32.Build.0 = Debug|Win32 + {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|x64.ActiveCfg = Debug|x64 + {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|x64.Build.0 = Debug|x64 + {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|Win32.ActiveCfg = Release|Win32 + {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|Win32.Build.0 = Release|Win32 + {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|x64.ActiveCfg = Release|x64 + {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|x64.Build.0 = Release|x64 + {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.All|Win32.ActiveCfg = Release|x64 + {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.All|x64.ActiveCfg = Release|x64 + {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.All|x64.Build.0 = Release|x64 + {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|Win32.ActiveCfg = Debug|Win32 + {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|Win32.Build.0 = Debug|Win32 + {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|x64.ActiveCfg = Debug|x64 + {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|x64.Build.0 = Debug|x64 + {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|Win32.ActiveCfg = Release|Win32 + {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|Win32.Build.0 = Release|Win32 + {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|x64.ActiveCfg = Release|x64 + {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|x64.Build.0 = Release|x64 + {8F992C49-6C51-412F-B2A3-34EAB708EB65}.All|Win32.ActiveCfg = Release|x64 + {8F992C49-6C51-412F-B2A3-34EAB708EB65}.All|x64.ActiveCfg = Release|x64 + {8F992C49-6C51-412F-B2A3-34EAB708EB65}.All|x64.Build.0 = Release|x64 + {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|Win32.ActiveCfg = Debug|Win32 + {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|Win32.Build.0 = Debug|Win32 + {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|x64.ActiveCfg = Debug|x64 + {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|x64.Build.0 = Debug|x64 + {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|Win32.ActiveCfg = Release|Win32 + {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|Win32.Build.0 = Release|Win32 + {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|x64.ActiveCfg = Release|x64 + {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|x64.Build.0 = Release|x64 + {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.All|Win32.ActiveCfg = Release|x64 + {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.All|x64.ActiveCfg = Release|x64 + {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.All|x64.Build.0 = Release|x64 + {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug|Win32.ActiveCfg = Debug|Win32 + {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug|Win32.Build.0 = Debug|Win32 + {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug|x64.ActiveCfg = Debug|x64 + {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug|x64.Build.0 = Debug|x64 + {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release|Win32.ActiveCfg = Release|Win32 + {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release|Win32.Build.0 = Release|Win32 + {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release|x64.ActiveCfg = Release|x64 + {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release|x64.Build.0 = Release|x64 + {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.All|Win32.ActiveCfg = Release|x64 + {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.All|x64.ActiveCfg = Release|x64 + {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.All|x64.Build.0 = Release|x64 + {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|Win32.ActiveCfg = Debug|Win32 + {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|Win32.Build.0 = Debug|Win32 + {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|x64.ActiveCfg = Debug|x64 + {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|x64.Build.0 = Debug|x64 + {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|Win32.ActiveCfg = Release|Win32 + {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|Win32.Build.0 = Release|Win32 + {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|x64.ActiveCfg = Release|x64 + {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|x64.Build.0 = Release|x64 + {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.All|Win32.ActiveCfg = Release|x64 + {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.All|x64.ActiveCfg = Release|x64 + {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.All|x64.Build.0 = Release|x64 + {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|Win32.ActiveCfg = Debug|Win32 + {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|Win32.Build.0 = Debug|Win32 + {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|x64.ActiveCfg = Debug|x64 + {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|x64.Build.0 = Debug|x64 + {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|Win32.ActiveCfg = Release|Win32 + {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|Win32.Build.0 = Release|Win32 + {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|x64.ActiveCfg = Release|x64 + {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|x64.Build.0 = Release|x64 + {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.All|Win32.ActiveCfg = Release|x64 + {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.All|x64.ActiveCfg = Release|x64 + {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.All|x64.Build.0 = Release|x64 + {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|Win32.ActiveCfg = Debug|Win32 + {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|Win32.Build.0 = Debug|Win32 + {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|x64.ActiveCfg = Debug|x64 + {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|x64.Build.0 = Debug|x64 + {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|Win32.ActiveCfg = Release|Win32 + {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|Win32.Build.0 = Release|Win32 + {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|x64.ActiveCfg = Release|x64 + {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|x64.Build.0 = Release|x64 + {988CACF7-3FCB-4992-BE69-77872AE67DC8}.All|Win32.ActiveCfg = Release|x64 + {988CACF7-3FCB-4992-BE69-77872AE67DC8}.All|x64.ActiveCfg = Release|x64 + {988CACF7-3FCB-4992-BE69-77872AE67DC8}.All|x64.Build.0 = Release|x64 + {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|Win32.ActiveCfg = Debug|Win32 + {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|Win32.Build.0 = Debug|Win32 + {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|x64.ActiveCfg = Debug|x64 + {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|x64.Build.0 = Debug|x64 + {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|Win32.ActiveCfg = Release|Win32 + {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|Win32.Build.0 = Release|Win32 + {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|x64.ActiveCfg = Release|x64 + {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|x64.Build.0 = Release|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|Win32.ActiveCfg = Release DirectSound|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64.ActiveCfg = Release DirectSound|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64.Build.0 = Release DirectSound|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.Build.0 = Debug|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release|Win32 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release|x64 + {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.Build.0 = Release|x64 + {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|Win32.ActiveCfg = Release|x64 + {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64.ActiveCfg = Release|x64 + {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64.Build.0 = Release|x64 + {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|Win32.ActiveCfg = Debug|Win32 + {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|Win32.Build.0 = Debug|Win32 + {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|x64.ActiveCfg = Debug|x64 + {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|x64.Build.0 = Debug|x64 + {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|Win32.ActiveCfg = Release|Win32 + {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|Win32.Build.0 = Release|Win32 + {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|x64.ActiveCfg = Release|x64 + {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|x64.Build.0 = Release|x64 + {8DEB383C-4091-4F42-A56F-C9E46D552D79}.All|Win32.ActiveCfg = Release Passthrough|x64 + {8DEB383C-4091-4F42-A56F-C9E46D552D79}.All|x64.ActiveCfg = Release Passthrough|x64 + {8DEB383C-4091-4F42-A56F-C9E46D552D79}.All|x64.Build.0 = Release Passthrough|x64 + {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32 + {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|Win32.Build.0 = Debug Passthrough|Win32 + {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|x64.ActiveCfg = Debug Passthrough|x64 + {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|x64.Build.0 = Debug Passthrough|x64 + {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|Win32.ActiveCfg = Release Passthrough|Win32 + {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|Win32.Build.0 = Release Passthrough|Win32 + {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|x64.ActiveCfg = Release Passthrough|x64 + {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|x64.Build.0 = Release Passthrough|x64 + {2C3C2423-234B-4772-8899-D3B137E5CA35}.All|Win32.ActiveCfg = Release|x64 + {2C3C2423-234B-4772-8899-D3B137E5CA35}.All|x64.ActiveCfg = Release|x64 + {2C3C2423-234B-4772-8899-D3B137E5CA35}.All|x64.Build.0 = Release|x64 + {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|Win32.ActiveCfg = Debug|Win32 + {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|Win32.Build.0 = Debug|Win32 + {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|x64.ActiveCfg = Debug|x64 + {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|x64.Build.0 = Debug|x64 + {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|Win32.ActiveCfg = Release|Win32 + {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|Win32.Build.0 = Release|Win32 + {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|x64.ActiveCfg = Release|x64 + {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|x64.Build.0 = Release|x64 + {3850D93A-5F24-4922-BC1C-74D08C37C256}.All|Win32.ActiveCfg = Release|x64 + {3850D93A-5F24-4922-BC1C-74D08C37C256}.All|x64.ActiveCfg = Release|x64 + {3850D93A-5F24-4922-BC1C-74D08C37C256}.All|x64.Build.0 = Release|x64 + {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|Win32.ActiveCfg = Debug|Win32 + {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|Win32.Build.0 = Debug|Win32 + {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|x64.ActiveCfg = Debug|x64 + {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|x64.Build.0 = Debug|x64 + {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|Win32.ActiveCfg = Release|Win32 + {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|Win32.Build.0 = Release|Win32 + {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|x64.ActiveCfg = Release|x64 + {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|x64.Build.0 = Release|x64 + {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.All|Win32.ActiveCfg = Release|x64 + {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.All|x64.ActiveCfg = Release|x64 + {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.All|x64.Build.0 = Release|x64 + {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|Win32.ActiveCfg = Debug|Win32 + {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|Win32.Build.0 = Debug|Win32 + {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|x64.ActiveCfg = Debug|x64 + {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|x64.Build.0 = Debug|x64 + {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|Win32.ActiveCfg = Release|Win32 + {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|Win32.Build.0 = Release|Win32 + {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|x64.ActiveCfg = Release|x64 + {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|x64.Build.0 = Release|x64 + {028C7278-05D7-4E18-82FE-BE231B844F41}.All|Win32.ActiveCfg = Release|x64 + {028C7278-05D7-4E18-82FE-BE231B844F41}.All|x64.ActiveCfg = Release|x64 + {028C7278-05D7-4E18-82FE-BE231B844F41}.All|x64.Build.0 = Release|x64 + {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|Win32.ActiveCfg = Debug|Win32 + {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|Win32.Build.0 = Debug|Win32 + {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|x64.ActiveCfg = Debug|x64 + {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|x64.Build.0 = Debug|x64 + {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|Win32.ActiveCfg = Release|Win32 + {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|Win32.Build.0 = Release|Win32 + {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|x64.ActiveCfg = Release|x64 + {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|x64.Build.0 = Release|x64 + {D7F1E3F2-A3F4-474C-8555-15122571AF52}.All|Win32.ActiveCfg = Release|x64 + {D7F1E3F2-A3F4-474C-8555-15122571AF52}.All|x64.ActiveCfg = Release|x64 + {D7F1E3F2-A3F4-474C-8555-15122571AF52}.All|x64.Build.0 = Release|x64 + {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|Win32.ActiveCfg = Debug|Win32 + {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|Win32.Build.0 = Debug|Win32 + {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|x64.ActiveCfg = Debug|x64 + {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|x64.Build.0 = Debug|x64 + {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|Win32.ActiveCfg = Release|Win32 + {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|Win32.Build.0 = Release|Win32 + {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|x64.ActiveCfg = Release|x64 + {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|x64.Build.0 = Release|x64 + {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.All|Win32.ActiveCfg = Release|x64 + {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.All|x64.ActiveCfg = Release|x64 + {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.All|x64.Build.0 = Release|x64 + {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|Win32.ActiveCfg = Debug|Win32 + {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|Win32.Build.0 = Debug|Win32 + {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|x64.ActiveCfg = Debug|x64 + {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|x64.Build.0 = Debug|x64 + {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|Win32.ActiveCfg = Release|Win32 + {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|Win32.Build.0 = Release|Win32 + {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|x64.ActiveCfg = Release|x64 + {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|x64.Build.0 = Release|x64 + {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.All|Win32.ActiveCfg = Release|x64 + {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.All|x64.ActiveCfg = Release|x64 + {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.All|x64.Build.0 = Release|x64 + {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|Win32.ActiveCfg = Debug|Win32 + {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|Win32.Build.0 = Debug|Win32 + {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|x64.ActiveCfg = Debug|x64 + {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|x64.Build.0 = Debug|x64 + {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|Win32.ActiveCfg = Release|Win32 + {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|Win32.Build.0 = Release|Win32 + {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|x64.ActiveCfg = Release|x64 + {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|x64.Build.0 = Release|x64 + {06E3A538-AB32-44F2-B477-755FF9CB5D37}.All|Win32.ActiveCfg = Release|x64 + {06E3A538-AB32-44F2-B477-755FF9CB5D37}.All|x64.ActiveCfg = Release|x64 + {06E3A538-AB32-44F2-B477-755FF9CB5D37}.All|x64.Build.0 = Release|x64 + {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|Win32.ActiveCfg = Debug|Win32 + {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|Win32.Build.0 = Debug|Win32 + {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|x64.ActiveCfg = Debug|x64 + {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|x64.Build.0 = Debug|x64 + {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|Win32.ActiveCfg = Release|Win32 + {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|Win32.Build.0 = Release|Win32 + {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|x64.ActiveCfg = Release|x64 + {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|x64.Build.0 = Release|x64 + {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.All|Win32.ActiveCfg = Release|x64 + {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.All|x64.ActiveCfg = Release|x64 + {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.All|x64.Build.0 = Release|x64 + {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|Win32.ActiveCfg = Debug|Win32 + {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|Win32.Build.0 = Debug|Win32 + {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|x64.ActiveCfg = Debug|x64 + {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|x64.Build.0 = Debug|x64 + {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|Win32.ActiveCfg = Release|Win32 + {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|Win32.Build.0 = Release|Win32 + {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|x64.ActiveCfg = Release|x64 + {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|x64.Build.0 = Release|x64 + {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.All|Win32.ActiveCfg = Release|x64 + {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.All|x64.ActiveCfg = Release|x64 + {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.All|x64.Build.0 = Release|x64 + {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|Win32.ActiveCfg = Debug|Win32 + {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|Win32.Build.0 = Debug|Win32 + {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|x64.ActiveCfg = Debug|x64 + {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|x64.Build.0 = Debug|x64 + {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|Win32.ActiveCfg = Release|Win32 + {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|Win32.Build.0 = Release|Win32 + {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|x64.ActiveCfg = Release|x64 + {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|x64.Build.0 = Release|x64 + {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.All|Win32.ActiveCfg = Release|x64 + {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.All|x64.ActiveCfg = Release|x64 + {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.All|x64.Build.0 = Release|x64 + {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|Win32.ActiveCfg = Debug|Win32 + {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|Win32.Build.0 = Debug|Win32 + {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|x64.ActiveCfg = Debug|x64 + {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|x64.Build.0 = Debug|x64 + {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|Win32.ActiveCfg = Release|Win32 + {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|Win32.Build.0 = Release|Win32 + {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|x64.ActiveCfg = Release|x64 + {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|x64.Build.0 = Release|x64 + {F6A33240-8F29-48BD-98F0-826995911799}.All|Win32.ActiveCfg = Release|x64 + {F6A33240-8F29-48BD-98F0-826995911799}.All|x64.ActiveCfg = Release|x64 + {F6A33240-8F29-48BD-98F0-826995911799}.All|x64.Build.0 = Release|x64 + {F6A33240-8F29-48BD-98F0-826995911799}.Debug|Win32.ActiveCfg = Debug|Win32 + {F6A33240-8F29-48BD-98F0-826995911799}.Debug|Win32.Build.0 = Debug|Win32 + {F6A33240-8F29-48BD-98F0-826995911799}.Debug|x64.ActiveCfg = Debug|x64 + {F6A33240-8F29-48BD-98F0-826995911799}.Debug|x64.Build.0 = Debug|x64 + {F6A33240-8F29-48BD-98F0-826995911799}.Release|Win32.ActiveCfg = Release|Win32 + {F6A33240-8F29-48BD-98F0-826995911799}.Release|Win32.Build.0 = Release|Win32 + {F6A33240-8F29-48BD-98F0-826995911799}.Release|x64.ActiveCfg = Release|x64 + {F6A33240-8F29-48BD-98F0-826995911799}.Release|x64.Build.0 = Release|x64 + {65A6273D-FCAB-4C55-B09E-65100141A5D4}.All|Win32.ActiveCfg = Release|x64 + {65A6273D-FCAB-4C55-B09E-65100141A5D4}.All|x64.ActiveCfg = Release|x64 + {65A6273D-FCAB-4C55-B09E-65100141A5D4}.All|x64.Build.0 = Release|x64 + {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|Win32.ActiveCfg = Debug|Win32 + {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|Win32.Build.0 = Debug|Win32 + {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|x64.ActiveCfg = Debug|x64 + {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|x64.Build.0 = Debug|x64 + {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|Win32.ActiveCfg = Release|Win32 + {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|Win32.Build.0 = Release|Win32 + {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|x64.ActiveCfg = Release|x64 + {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|x64.Build.0 = Release|x64 + {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.All|Win32.ActiveCfg = Release|x64 + {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.All|x64.ActiveCfg = Release|x64 + {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.All|x64.Build.0 = Release|x64 + {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|Win32.ActiveCfg = Debug|Win32 + {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|Win32.Build.0 = Debug|Win32 + {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|x64.ActiveCfg = Debug|x64 + {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|x64.Build.0 = Debug|x64 + {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|Win32.ActiveCfg = Release|Win32 + {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|Win32.Build.0 = Release|Win32 + {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|x64.ActiveCfg = Release|x64 + {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|x64.Build.0 = Release|x64 + {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.All|Win32.ActiveCfg = Release|x64 + {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.All|x64.ActiveCfg = Release|x64 + {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.All|x64.Build.0 = Release|x64 + {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|Win32.ActiveCfg = Debug|Win32 + {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|Win32.Build.0 = Debug|Win32 + {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|x64.ActiveCfg = Debug|x64 + {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|x64.Build.0 = Debug|x64 + {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|Win32.ActiveCfg = Release|Win32 + {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|Win32.Build.0 = Release|Win32 + {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|x64.ActiveCfg = Release|x64 + {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|x64.Build.0 = Release|x64 + {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.All|Win32.ActiveCfg = Release|x64 + {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.All|x64.ActiveCfg = Release|x64 + {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.All|x64.Build.0 = Release|x64 + {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|Win32.ActiveCfg = Debug|Win32 + {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|Win32.Build.0 = Debug|Win32 + {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|x64.ActiveCfg = Debug|x64 + {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|x64.Build.0 = Debug|x64 + {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|Win32.ActiveCfg = Release|Win32 + {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|Win32.Build.0 = Release|Win32 + {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|x64.ActiveCfg = Release|x64 + {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|x64.Build.0 = Release|x64 + {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.All|Win32.ActiveCfg = Release|x64 + {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.All|x64.ActiveCfg = Release|x64 + {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.All|x64.Build.0 = Release|x64 + {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|Win32.ActiveCfg = Debug|Win32 + {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|Win32.Build.0 = Debug|Win32 + {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|x64.ActiveCfg = Debug|x64 + {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|x64.Build.0 = Debug|x64 + {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|Win32.ActiveCfg = Release|Win32 + {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|Win32.Build.0 = Release|Win32 + {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|x64.ActiveCfg = Release|x64 + {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|x64.Build.0 = Release|x64 + {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.All|Win32.ActiveCfg = Release|x64 + {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.All|x64.ActiveCfg = Release|x64 + {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.All|x64.Build.0 = Release|x64 + {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|Win32.ActiveCfg = Debug|Win32 + {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|Win32.Build.0 = Debug|Win32 + {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|x64.ActiveCfg = Debug|x64 + {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|x64.Build.0 = Debug|x64 + {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|Win32.ActiveCfg = Release|Win32 + {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|Win32.Build.0 = Release|Win32 + {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|x64.ActiveCfg = Release|x64 + {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|x64.Build.0 = Release|x64 + {36E854E3-CE12-4348-A125-CCF3F9D74813}.All|Win32.ActiveCfg = Release|x64 + {36E854E3-CE12-4348-A125-CCF3F9D74813}.All|x64.ActiveCfg = Release|x64 + {36E854E3-CE12-4348-A125-CCF3F9D74813}.All|x64.Build.0 = Release|x64 + {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|Win32.ActiveCfg = Debug|Win32 + {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|Win32.Build.0 = Debug|Win32 + {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|x64.ActiveCfg = Debug|x64 + {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|x64.Build.0 = Debug|x64 + {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|Win32.ActiveCfg = Release|Win32 + {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|Win32.Build.0 = Release|Win32 + {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|x64.ActiveCfg = Release|x64 + {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|x64.Build.0 = Release|x64 + {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.All|Win32.ActiveCfg = Release|x64 + {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.All|x64.ActiveCfg = Release|x64 + {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.All|x64.Build.0 = Release|x64 + {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|Win32.ActiveCfg = Debug|Win32 + {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|Win32.Build.0 = Debug|Win32 + {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|x64.ActiveCfg = Debug|x64 + {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|x64.Build.0 = Debug|x64 + {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|Win32.ActiveCfg = Release|Win32 + {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|Win32.Build.0 = Release|Win32 + {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|x64.ActiveCfg = Release|x64 + {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|x64.Build.0 = Release|x64 + {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|Win32.ActiveCfg = Release|x64 + {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|x64.ActiveCfg = Release|x64 + {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|x64.Build.0 = Release|x64 + {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|Win32.ActiveCfg = Debug|Win32 + {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|Win32.Build.0 = Debug|Win32 + {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|x64.ActiveCfg = Debug|x64 + {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|x64.Build.0 = Debug|x64 + {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|Win32.ActiveCfg = Release|Win32 + {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|Win32.Build.0 = Release|Win32 + {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|x64.ActiveCfg = Release|x64 + {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|x64.Build.0 = Release|x64 + {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|Win32.ActiveCfg = Release|x64 + {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|x64.ActiveCfg = Release|x64 + {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|x64.Build.0 = Release|x64 + {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|Win32.ActiveCfg = Debug|Win32 + {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|Win32.Build.0 = Debug|Win32 + {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|x64.ActiveCfg = Debug|x64 + {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|x64.Build.0 = Debug|x64 + {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|Win32.ActiveCfg = Release|Win32 + {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|Win32.Build.0 = Release|Win32 + {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|x64.ActiveCfg = Release|x64 + {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|x64.Build.0 = Release|x64 + {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|Win32.ActiveCfg = Debug|x64 + {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|x64.ActiveCfg = Debug|x64 + {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|x64.Build.0 = Debug|x64 + {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|Win32.ActiveCfg = Debug|Win32 + {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|Win32.Build.0 = Debug|Win32 + {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|x64.ActiveCfg = Debug|x64 + {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|x64.Build.0 = Debug|x64 + {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Win32.ActiveCfg = Release|Win32 + {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Win32.Build.0 = Release|Win32 + {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x64.ActiveCfg = Release|x64 + {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x64.Build.0 = Release|x64 + {B535402E-38D2-4D54-8360-423ACBD17192}.All|Win32.ActiveCfg = Release|x64 + {B535402E-38D2-4D54-8360-423ACBD17192}.All|x64.ActiveCfg = Release|x64 + {B535402E-38D2-4D54-8360-423ACBD17192}.All|x64.Build.0 = Release|x64 + {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|Win32.ActiveCfg = Debug|Win32 + {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|Win32.Build.0 = Debug|Win32 + {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|x64.ActiveCfg = Debug|x64 + {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|x64.Build.0 = Debug|x64 + {B535402E-38D2-4D54-8360-423ACBD17192}.Release|Win32.ActiveCfg = Release|Win32 + {B535402E-38D2-4D54-8360-423ACBD17192}.Release|Win32.Build.0 = Release|Win32 + {B535402E-38D2-4D54-8360-423ACBD17192}.Release|x64.ActiveCfg = Release|x64 + {B535402E-38D2-4D54-8360-423ACBD17192}.Release|x64.Build.0 = Release|x64 + {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|Win32.ActiveCfg = Release|Win32 + {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|Win32.Build.0 = Release|Win32 + {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|x64.ActiveCfg = Release|Win32 + {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|x64.Build.0 = Release|Win32 + {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|Win32.ActiveCfg = Debug|Win32 + {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|Win32.Build.0 = Debug|Win32 + {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|x64.ActiveCfg = Debug|Win32 + {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|x64.Build.0 = Debug|Win32 + {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|Win32.ActiveCfg = Release|Win32 + {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|Win32.Build.0 = Release|Win32 + {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|x64.ActiveCfg = Release|Win32 + {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|x64.Build.0 = Release|Win32 + {2DEE4895-1134-439C-B688-52203E57D878}.All|Win32.ActiveCfg = Release|Win32 + {2DEE4895-1134-439C-B688-52203E57D878}.All|Win32.Build.0 = Release|Win32 + {2DEE4895-1134-439C-B688-52203E57D878}.All|x64.ActiveCfg = Release|Win32 + {2DEE4895-1134-439C-B688-52203E57D878}.All|x64.Build.0 = Release|Win32 + {2DEE4895-1134-439C-B688-52203E57D878}.Debug|Win32.ActiveCfg = Debug|Win32 + {2DEE4895-1134-439C-B688-52203E57D878}.Debug|Win32.Build.0 = Debug|Win32 + {2DEE4895-1134-439C-B688-52203E57D878}.Debug|x64.ActiveCfg = Debug|Win32 + {2DEE4895-1134-439C-B688-52203E57D878}.Debug|x64.Build.0 = Debug|Win32 + {2DEE4895-1134-439C-B688-52203E57D878}.Release|Win32.ActiveCfg = Release|Win32 + {2DEE4895-1134-439C-B688-52203E57D878}.Release|Win32.Build.0 = Release|Win32 + {2DEE4895-1134-439C-B688-52203E57D878}.Release|x64.ActiveCfg = Release|Win32 + {2DEE4895-1134-439C-B688-52203E57D878}.Release|x64.Build.0 = Release|Win32 + {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|Win32.ActiveCfg = Release|Win32 + {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|Win32.Build.0 = Release|Win32 + {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|x64.ActiveCfg = Release|Win32 + {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|x64.Build.0 = Release|Win32 + {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|Win32.ActiveCfg = Debug|Win32 + {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|Win32.Build.0 = Debug|Win32 + {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|x64.ActiveCfg = Debug|Win32 + {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|x64.Build.0 = Debug|Win32 + {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|Win32.ActiveCfg = Release|Win32 + {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|Win32.Build.0 = Release|Win32 + {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|x64.ActiveCfg = Release|Win32 + {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|x64.Build.0 = Release|Win32 + {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.All|Win32.ActiveCfg = Debug|x64 + {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.All|x64.ActiveCfg = Debug|x64 + {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.All|x64.Build.0 = Debug|x64 + {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|Win32.ActiveCfg = Debug|Win32 + {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|Win32.Build.0 = Debug|Win32 + {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|x64.ActiveCfg = Debug|x64 + {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|x64.Build.0 = Debug|x64 + {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|Win32.ActiveCfg = Release|Win32 + {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|Win32.Build.0 = Release|Win32 + {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|x64.ActiveCfg = Release|x64 + {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|x64.Build.0 = Release|x64 + {94001A0E-A837-445C-8004-F918F10D0226}.All|Win32.ActiveCfg = Debug|x64 + {94001A0E-A837-445C-8004-F918F10D0226}.All|x64.ActiveCfg = Debug|x64 + {94001A0E-A837-445C-8004-F918F10D0226}.All|x64.Build.0 = Debug|x64 + {94001A0E-A837-445C-8004-F918F10D0226}.Debug|Win32.ActiveCfg = Debug|Win32 + {94001A0E-A837-445C-8004-F918F10D0226}.Debug|Win32.Build.0 = Debug|Win32 + {94001A0E-A837-445C-8004-F918F10D0226}.Debug|x64.ActiveCfg = Debug|x64 + {94001A0E-A837-445C-8004-F918F10D0226}.Debug|x64.Build.0 = Debug|x64 + {94001A0E-A837-445C-8004-F918F10D0226}.Release|Win32.ActiveCfg = Release|Win32 + {94001A0E-A837-445C-8004-F918F10D0226}.Release|Win32.Build.0 = Release|Win32 + {94001A0E-A837-445C-8004-F918F10D0226}.Release|x64.ActiveCfg = Release|x64 + {94001A0E-A837-445C-8004-F918F10D0226}.Release|x64.Build.0 = Release|x64 + {2286DA73-9FC5-45BC-A508-85994C3317AB}.All|Win32.ActiveCfg = Release|x64 + {2286DA73-9FC5-45BC-A508-85994C3317AB}.All|x64.ActiveCfg = Release|x64 + {2286DA73-9FC5-45BC-A508-85994C3317AB}.All|x64.Build.0 = Release|x64 + {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|Win32.ActiveCfg = Debug|Win32 + {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|Win32.Build.0 = Debug|Win32 + {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|x64.ActiveCfg = Debug|x64 + {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|x64.Build.0 = Debug|x64 + {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|Win32.ActiveCfg = Release|Win32 + {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|Win32.Build.0 = Release|Win32 + {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|x64.ActiveCfg = Release|x64 + {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|x64.Build.0 = Release|x64 + {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|Win32.ActiveCfg = Release|Win32 + {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|Win32.Build.0 = Release|Win32 + {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|x64.ActiveCfg = Release|Win32 + {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|x64.Build.0 = Release|Win32 + {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|Win32.ActiveCfg = Debug|Win32 + {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|Win32.Build.0 = Debug|Win32 + {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|x64.ActiveCfg = Debug|Win32 + {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|x64.Build.0 = Debug|Win32 + {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|Win32.ActiveCfg = Release|Win32 + {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|Win32.Build.0 = Release|Win32 + {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|x64.ActiveCfg = Release|Win32 + {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|x64.Build.0 = Release|Win32 + {87A1FE3D-F410-4C8E-9591-8C625985BC70}.All|Win32.ActiveCfg = Release|Win32 + {87A1FE3D-F410-4C8E-9591-8C625985BC70}.All|x64.ActiveCfg = Release|Win32 + {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug|Win32.ActiveCfg = Debug|Win32 + {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug|x64.ActiveCfg = Debug|Win32 + {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release|Win32.ActiveCfg = Release|Win32 + {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release|x64.ActiveCfg = Release|Win32 + {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|Win32.ActiveCfg = Release|Win32 + {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|Win32.Build.0 = Release|Win32 + {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|x64.ActiveCfg = Release|Win32 + {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|x64.Build.0 = Release|Win32 + {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|Win32.ActiveCfg = Debug|Win32 + {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|Win32.Build.0 = Debug|Win32 + {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|x64.ActiveCfg = Debug|Win32 + {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|x64.Build.0 = Debug|Win32 + {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|Win32.ActiveCfg = Release|Win32 + {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|Win32.Build.0 = Release|Win32 + {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|x64.ActiveCfg = Release|Win32 + {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|x64.Build.0 = Release|Win32 + {7EB71250-F002-4ED8-92CA-CA218114537A}.All|Win32.ActiveCfg = Release|Win32 + {7EB71250-F002-4ED8-92CA-CA218114537A}.All|x64.ActiveCfg = Release|Win32 + {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|Win32.ActiveCfg = Debug|Win32 + {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|x64.ActiveCfg = Debug|Win32 + {7EB71250-F002-4ED8-92CA-CA218114537A}.Release|Win32.ActiveCfg = Release|Win32 + {7EB71250-F002-4ED8-92CA-CA218114537A}.Release|x64.ActiveCfg = Release|Win32 + {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.All|Win32.ActiveCfg = Release|Win32 + {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.All|x64.ActiveCfg = Release|Win32 + {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug|Win32.ActiveCfg = Debug|Win32 + {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug|x64.ActiveCfg = Debug|Win32 + {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release|Win32.ActiveCfg = Release|Win32 + {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release|x64.ActiveCfg = Release|Win32 + {464AAB78-5489-4916-BE51-BF8D61822311}.All|Win32.ActiveCfg = Release|Win32 + {464AAB78-5489-4916-BE51-BF8D61822311}.All|x64.ActiveCfg = Release|Win32 + {464AAB78-5489-4916-BE51-BF8D61822311}.Debug|Win32.ActiveCfg = Debug|Win32 + {464AAB78-5489-4916-BE51-BF8D61822311}.Debug|x64.ActiveCfg = Debug|Win32 + {464AAB78-5489-4916-BE51-BF8D61822311}.Release|Win32.ActiveCfg = Release|Win32 + {464AAB78-5489-4916-BE51-BF8D61822311}.Release|x64.ActiveCfg = Release|Win32 + {0AD1177E-1FD8-4643-9391-431467A11084}.All|Win32.ActiveCfg = Release|x64 + {0AD1177E-1FD8-4643-9391-431467A11084}.All|x64.ActiveCfg = Release|x64 + {0AD1177E-1FD8-4643-9391-431467A11084}.All|x64.Build.0 = Release|x64 + {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|Win32.ActiveCfg = Debug|Win32 + {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|Win32.Build.0 = Debug|Win32 + {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|x64.ActiveCfg = Debug|x64 + {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|x64.Build.0 = Debug|x64 + {0AD1177E-1FD8-4643-9391-431467A11084}.Release|Win32.ActiveCfg = Release|Win32 + {0AD1177E-1FD8-4643-9391-431467A11084}.Release|Win32.Build.0 = Release|Win32 + {0AD1177E-1FD8-4643-9391-431467A11084}.Release|x64.ActiveCfg = Release|x64 + {0AD1177E-1FD8-4643-9391-431467A11084}.Release|x64.Build.0 = Release|x64 + {66444AEE-554C-11DD-A9F0-8C5D56D89593}.All|Win32.ActiveCfg = Release Static|x64 + {66444AEE-554C-11DD-A9F0-8C5D56D89593}.All|x64.ActiveCfg = Release Static|x64 + {66444AEE-554C-11DD-A9F0-8C5D56D89593}.All|x64.Build.0 = Release Static|x64 + {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|Win32.ActiveCfg = Debug|Win32 + {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|x64.ActiveCfg = Debug|x64 + {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|Win32.ActiveCfg = Release|Win32 + {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|x64.ActiveCfg = Release|x64 + {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|Win32.ActiveCfg = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|Win32.Build.0 = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|x64.ActiveCfg = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|x64.Build.0 = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32 + {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|Win32.Build.0 = Debug|Win32 + {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|x64.ActiveCfg = Debug|Win32 + {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|x64.Build.0 = Debug|Win32 + {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|Win32.ActiveCfg = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|Win32.Build.0 = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|x64.ActiveCfg = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|x64.Build.0 = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|Win32.ActiveCfg = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|Win32.Build.0 = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|x64.ActiveCfg = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|x64.Build.0 = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|Win32.Build.0 = Debug|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|x64.ActiveCfg = Debug|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|x64.Build.0 = Debug|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|Win32.ActiveCfg = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|Win32.Build.0 = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|x64.ActiveCfg = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|x64.Build.0 = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|Win32.ActiveCfg = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|Win32.Build.0 = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|x64.ActiveCfg = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|x64.Build.0 = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|Win32.Build.0 = Debug|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|x64.ActiveCfg = Debug|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|x64.Build.0 = Debug|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|Win32.ActiveCfg = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|Win32.Build.0 = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|x64.ActiveCfg = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|x64.Build.0 = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|Win32.ActiveCfg = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|Win32.Build.0 = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|x64.ActiveCfg = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|x64.Build.0 = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|Win32.Build.0 = Debug|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|x64.ActiveCfg = Debug|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|x64.Build.0 = Debug|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|Win32.ActiveCfg = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|Win32.Build.0 = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|x64.ActiveCfg = Release|Win32 + {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|x64.Build.0 = Release|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.All|Win32.ActiveCfg = Debug|x64 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.All|x64.ActiveCfg = Debug|x64 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.All|x64.Build.0 = Debug|x64 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|Win32.ActiveCfg = Debug|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|Win32.Build.0 = Debug|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|x64.ActiveCfg = Debug|x64 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|x64.Build.0 = Debug|x64 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|Win32.ActiveCfg = Release|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|Win32.Build.0 = Release|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|x64.ActiveCfg = Release|x64 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|x64.Build.0 = Release|x64 + {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.All|Win32.ActiveCfg = Debug|x64 + {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.All|x64.ActiveCfg = Debug|x64 + {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.All|x64.Build.0 = Debug|x64 + {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|Win32.ActiveCfg = Debug|Win32 + {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|Win32.Build.0 = Debug|Win32 + {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|x64.ActiveCfg = Debug|x64 + {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|x64.Build.0 = Debug|x64 + {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|Win32.ActiveCfg = Release|Win32 + {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|Win32.Build.0 = Release|Win32 + {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|x64.ActiveCfg = Release|x64 + {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|x64.Build.0 = Release|x64 + {38FE0559-9910-43A8-9E45-3E5004C27692}.All|Win32.ActiveCfg = Release|x64 + {38FE0559-9910-43A8-9E45-3E5004C27692}.All|x64.ActiveCfg = Release|x64 + {38FE0559-9910-43A8-9E45-3E5004C27692}.All|x64.Build.0 = Release|x64 + {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|Win32.ActiveCfg = Debug|Win32 + {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|Win32.Build.0 = Debug|Win32 + {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|x64.ActiveCfg = Debug|x64 + {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|x64.Build.0 = Debug|x64 + {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|Win32.ActiveCfg = Release|Win32 + {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|Win32.Build.0 = Release|Win32 + {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|x64.ActiveCfg = Release|x64 + {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|x64.Build.0 = Release|x64 + {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.All|Win32.ActiveCfg = Debug|x64 + {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.All|x64.ActiveCfg = Debug|x64 + {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.All|x64.Build.0 = Debug|x64 + {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|Win32.ActiveCfg = Debug|Win32 + {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|Win32.Build.0 = Debug|Win32 + {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|x64.ActiveCfg = Debug|x64 + {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|x64.Build.0 = Debug|x64 + {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|Win32.ActiveCfg = Release|Win32 + {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|Win32.Build.0 = Release|Win32 + {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|x64.ActiveCfg = Release|x64 + {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|x64.Build.0 = Release|x64 + {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.All|Win32.ActiveCfg = Release|x64 + {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.All|x64.ActiveCfg = Release|x64 + {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.All|x64.Build.0 = Release|x64 + {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|Win32.ActiveCfg = Debug|Win32 + {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|Win32.Build.0 = Debug|Win32 + {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|x64.ActiveCfg = Debug|x64 + {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|x64.Build.0 = Debug|x64 + {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Win32.ActiveCfg = Release|Win32 + {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Win32.Build.0 = Release|Win32 + {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|x64.ActiveCfg = Release|x64 + {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|x64.Build.0 = Release|x64 + {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.All|Win32.ActiveCfg = Release|x64 + {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.All|x64.ActiveCfg = Release|x64 + {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.All|x64.Build.0 = Release|x64 + {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|Win32.ActiveCfg = Debug|Win32 + {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|Win32.Build.0 = Debug|Win32 + {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|x64.ActiveCfg = Debug|x64 + {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|x64.Build.0 = Debug|x64 + {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|Win32.ActiveCfg = Release|Win32 + {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|Win32.Build.0 = Release|Win32 + {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|x64.ActiveCfg = Release|x64 + {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|x64.Build.0 = Release|x64 + {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.All|Win32.ActiveCfg = Release_Mono|x64 + {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.All|x64.ActiveCfg = Release_Mono|x64 + {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.All|x64.Build.0 = Release_Mono|x64 + {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|Win32.ActiveCfg = Debug_CLR|Win32 + {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|Win32.Build.0 = Debug_CLR|Win32 + {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|x64.ActiveCfg = Debug_CLR|x64 + {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|x64.Build.0 = Debug_CLR|x64 + {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|Win32.ActiveCfg = Release_CLR|Win32 + {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|Win32.Build.0 = Release_CLR|Win32 + {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|x64.ActiveCfg = Release_CLR|x64 + {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|x64.Build.0 = Release_CLR|x64 + {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.All|Win32.ActiveCfg = Release|Any CPU + {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.All|x64.ActiveCfg = Release|Any CPU + {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|Win32.ActiveCfg = Debug|Any CPU + {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|Win32.Build.0 = Debug|Any CPU + {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|x64.ActiveCfg = Debug|Any CPU + {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|Win32.ActiveCfg = Release|Any CPU + {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|Win32.Build.0 = Release|Any CPU + {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|x64.ActiveCfg = Release|Any CPU + {E796E337-DE78-4303-8614-9A590862EE95}.All|Win32.ActiveCfg = Release|Win32 + {E796E337-DE78-4303-8614-9A590862EE95}.All|Win32.Build.0 = Release|Win32 + {E796E337-DE78-4303-8614-9A590862EE95}.All|x64.ActiveCfg = Release|Win32 + {E796E337-DE78-4303-8614-9A590862EE95}.All|x64.Build.0 = Release|Win32 + {E796E337-DE78-4303-8614-9A590862EE95}.Debug|Win32.ActiveCfg = Debug|Win32 + {E796E337-DE78-4303-8614-9A590862EE95}.Debug|Win32.Build.0 = Debug|Win32 + {E796E337-DE78-4303-8614-9A590862EE95}.Debug|x64.ActiveCfg = Debug|Win32 + {E796E337-DE78-4303-8614-9A590862EE95}.Debug|x64.Build.0 = Debug|Win32 + {E796E337-DE78-4303-8614-9A590862EE95}.Release|Win32.ActiveCfg = Release|Win32 + {E796E337-DE78-4303-8614-9A590862EE95}.Release|Win32.Build.0 = Release|Win32 + {E796E337-DE78-4303-8614-9A590862EE95}.Release|x64.ActiveCfg = Release|Win32 + {E796E337-DE78-4303-8614-9A590862EE95}.Release|x64.Build.0 = Release|Win32 + {419C8F80-D858-4B48-A25C-AF4007608137}.All|Win32.ActiveCfg = Release|x64 + {419C8F80-D858-4B48-A25C-AF4007608137}.All|x64.ActiveCfg = Release|x64 + {419C8F80-D858-4B48-A25C-AF4007608137}.All|x64.Build.0 = Release|x64 + {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|Win32.ActiveCfg = Debug|Win32 + {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|Win32.Build.0 = Debug|Win32 + {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|x64.ActiveCfg = Debug|x64 + {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|x64.Build.0 = Debug|x64 + {419C8F80-D858-4B48-A25C-AF4007608137}.Release|Win32.ActiveCfg = Release|Win32 + {419C8F80-D858-4B48-A25C-AF4007608137}.Release|Win32.Build.0 = Release|Win32 + {419C8F80-D858-4B48-A25C-AF4007608137}.Release|x64.ActiveCfg = Release|x64 + {419C8F80-D858-4B48-A25C-AF4007608137}.Release|x64.Build.0 = Release|x64 + {B3F424EC-3D8F-417C-B244-3919D5E1A577}.All|Win32.ActiveCfg = Release|x64 + {B3F424EC-3D8F-417C-B244-3919D5E1A577}.All|x64.ActiveCfg = Release|x64 + {B3F424EC-3D8F-417C-B244-3919D5E1A577}.All|x64.Build.0 = Release|x64 + {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|Win32.ActiveCfg = Debug|Win32 + {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|Win32.Build.0 = Debug|Win32 + {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|x64.ActiveCfg = Debug|x64 + {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|x64.Build.0 = Debug|x64 + {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|Win32.ActiveCfg = Release|Win32 + {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|Win32.Build.0 = Release|Win32 + {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|x64.ActiveCfg = Release|x64 + {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|x64.Build.0 = Release|x64 + {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.All|Win32.ActiveCfg = Release|x64 + {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.All|x64.ActiveCfg = Release|x64 + {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.All|x64.Build.0 = Release|x64 + {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|Win32.ActiveCfg = Debug|Win32 + {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|Win32.Build.0 = Debug|Win32 + {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|x64.ActiveCfg = Debug|x64 + {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|x64.Build.0 = Debug|x64 + {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|Win32.ActiveCfg = Release|Win32 + {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|Win32.Build.0 = Release|Win32 + {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|x64.ActiveCfg = Release|x64 + {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|x64.Build.0 = Release|x64 + {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.All|Win32.ActiveCfg = Release|x64 + {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.All|x64.ActiveCfg = Release|x64 + {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.All|x64.Build.0 = Release|x64 + {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|Win32.ActiveCfg = Debug|Win32 + {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|Win32.Build.0 = Debug|Win32 + {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|x64.ActiveCfg = Debug|x64 + {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|x64.Build.0 = Debug|x64 + {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|Win32.ActiveCfg = Release|Win32 + {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|Win32.Build.0 = Release|Win32 + {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|x64.ActiveCfg = Release|x64 + {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|x64.Build.0 = Release|x64 + {0B6C905B-142E-4999-B39D-92FF7951E921}.All|Win32.ActiveCfg = Release|x64 + {0B6C905B-142E-4999-B39D-92FF7951E921}.All|x64.ActiveCfg = Release|x64 + {0B6C905B-142E-4999-B39D-92FF7951E921}.All|x64.Build.0 = Release|x64 + {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|Win32.ActiveCfg = Debug|Win32 + {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|Win32.Build.0 = Debug|Win32 + {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|x64.ActiveCfg = Debug|x64 + {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|x64.Build.0 = Debug|x64 + {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|Win32.ActiveCfg = Release|Win32 + {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|Win32.Build.0 = Release|Win32 + {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|x64.ActiveCfg = Release|x64 + {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|x64.Build.0 = Release|x64 + {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.All|Win32.ActiveCfg = Release|x64 + {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.All|x64.ActiveCfg = Release|x64 + {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.All|x64.Build.0 = Release|x64 + {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|Win32.ActiveCfg = Debug|Win32 + {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|Win32.Build.0 = Debug|Win32 + {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|x64.ActiveCfg = Debug|x64 + {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|x64.Build.0 = Debug|x64 + {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|Win32.ActiveCfg = Release|Win32 + {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|Win32.Build.0 = Release|Win32 + {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|x64.ActiveCfg = Release|x64 + {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|x64.Build.0 = Release|x64 + {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.All|Win32.ActiveCfg = Release|x64 + {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.All|x64.ActiveCfg = Release|x64 + {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.All|x64.Build.0 = Release|x64 + {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|Win32.ActiveCfg = Debug|Win32 + {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|Win32.Build.0 = Debug|Win32 + {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|x64.ActiveCfg = Debug|x64 + {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|x64.Build.0 = Debug|x64 + {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|Win32.ActiveCfg = Release|Win32 + {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|Win32.Build.0 = Release|Win32 + {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|x64.ActiveCfg = Release|x64 + {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|x64.Build.0 = Release|x64 + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.All|Win32.ActiveCfg = Release|x64 + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.All|x64.ActiveCfg = Release|x64 + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.All|x64.Build.0 = Release|x64 + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|Win32.ActiveCfg = Debug|Win32 + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|Win32.Build.0 = Debug|Win32 + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|x64.ActiveCfg = Debug|x64 + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|x64.Build.0 = Debug|x64 + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|Win32.ActiveCfg = Release|Win32 + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|Win32.Build.0 = Release|Win32 + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|x64.ActiveCfg = Release|x64 + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|x64.Build.0 = Release|x64 + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.All|Win32.ActiveCfg = Release|x64 + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.All|x64.ActiveCfg = Release|x64 + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.All|x64.Build.0 = Release|x64 + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|Win32.ActiveCfg = Debug|Win32 + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|Win32.Build.0 = Debug|Win32 + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|x64.ActiveCfg = Debug|x64 + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|x64.Build.0 = Debug|x64 + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|Win32.ActiveCfg = Release|Win32 + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|Win32.Build.0 = Release|Win32 + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|x64.ActiveCfg = Release|x64 + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|x64.Build.0 = Release|x64 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.All|Win32.ActiveCfg = Release|x64 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.All|x64.ActiveCfg = Release|x64 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.All|x64.Build.0 = Release|x64 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|Win32.ActiveCfg = Debug|Win32 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|Win32.Build.0 = Debug|Win32 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|x64.ActiveCfg = Debug|x64 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|x64.Build.0 = Debug|x64 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|Win32.ActiveCfg = Release|Win32 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|Win32.Build.0 = Release|Win32 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|x64.ActiveCfg = Release|x64 + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|x64.Build.0 = Release|x64 + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.All|Win32.ActiveCfg = Release|x64 + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.All|x64.ActiveCfg = Release|x64 + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.All|x64.Build.0 = Release|x64 + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|Win32.ActiveCfg = Debug|Win32 + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|Win32.Build.0 = Debug|Win32 + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|x64.ActiveCfg = Debug|x64 + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|x64.Build.0 = Debug|x64 + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|Win32.ActiveCfg = Release|Win32 + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|Win32.Build.0 = Release|Win32 + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|x64.ActiveCfg = Release|x64 + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|x64.Build.0 = Release|x64 + {E972C52F-9E85-4D65-B19C-031E511E9DB4}.All|Win32.ActiveCfg = Release_WM5_PPC_ARM|x64 + {E972C52F-9E85-4D65-B19C-031E511E9DB4}.All|x64.ActiveCfg = Release_WM5_PPC_ARM|x64 + {E972C52F-9E85-4D65-B19C-031E511E9DB4}.All|x64.Build.0 = Release_WM5_PPC_ARM|x64 + {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Debug|Win32.ActiveCfg = Debug|Win32 + {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Debug|Win32.Build.0 = Debug|Win32 + {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Debug|x64.ActiveCfg = Debug|x64 + {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Debug|x64.Build.0 = Debug|x64 + {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Release|Win32.ActiveCfg = Release|Win32 + {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Release|Win32.Build.0 = Release|Win32 + {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Release|x64.ActiveCfg = Release|x64 + {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Release|x64.Build.0 = Release|x64 + {03207781-0D1C-4DB3-A71D-45C608F28DBD}.All|Win32.ActiveCfg = Release_Static_SSE|x64 + {03207781-0D1C-4DB3-A71D-45C608F28DBD}.All|x64.ActiveCfg = Release_Static_SSE|x64 + {03207781-0D1C-4DB3-A71D-45C608F28DBD}.All|x64.Build.0 = Release_Static_SSE|x64 + {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Debug|Win32.ActiveCfg = Debug|Win32 + {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Debug|Win32.Build.0 = Debug|Win32 + {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Debug|x64.ActiveCfg = Debug|x64 + {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Debug|x64.Build.0 = Debug|x64 + {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Release|Win32.ActiveCfg = Release|Win32 + {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Release|Win32.Build.0 = Release|Win32 + {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Release|x64.ActiveCfg = Release|x64 + {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Release|x64.Build.0 = Release|x64 + {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.All|Win32.ActiveCfg = Release|x64 + {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.All|x64.ActiveCfg = Release|x64 + {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.All|x64.Build.0 = Release|x64 + {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Debug|Win32.ActiveCfg = Debug|Win32 + {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Debug|Win32.Build.0 = Debug|Win32 + {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Debug|x64.ActiveCfg = Debug|x64 + {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Debug|x64.Build.0 = Debug|x64 + {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Release|Win32.ActiveCfg = Release|Win32 + {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Release|Win32.Build.0 = Release|Win32 + {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Release|x64.ActiveCfg = Release|x64 + {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Release|x64.Build.0 = Release|x64 + {D0B36172-CD76-454A-9B89-990025266C2A}.All|Win32.ActiveCfg = Release|x64 + {D0B36172-CD76-454A-9B89-990025266C2A}.All|x64.ActiveCfg = Release|x64 + {D0B36172-CD76-454A-9B89-990025266C2A}.All|x64.Build.0 = Release|x64 + {D0B36172-CD76-454A-9B89-990025266C2A}.Debug|Win32.ActiveCfg = Debug|Win32 + {D0B36172-CD76-454A-9B89-990025266C2A}.Debug|Win32.Build.0 = Debug|Win32 + {D0B36172-CD76-454A-9B89-990025266C2A}.Debug|x64.ActiveCfg = Debug|x64 + {D0B36172-CD76-454A-9B89-990025266C2A}.Debug|x64.Build.0 = Debug|x64 + {D0B36172-CD76-454A-9B89-990025266C2A}.Release|Win32.ActiveCfg = Release|Win32 + {D0B36172-CD76-454A-9B89-990025266C2A}.Release|Win32.Build.0 = Release|Win32 + {D0B36172-CD76-454A-9B89-990025266C2A}.Release|x64.ActiveCfg = Release|x64 + {D0B36172-CD76-454A-9B89-990025266C2A}.Release|x64.Build.0 = Release|x64 + {05C9FB27-480E-4D53-B3B7-6338E2526666}.All|Win32.ActiveCfg = Release|Win32 + {05C9FB27-480E-4D53-B3B7-6338E2526666}.All|Win32.Build.0 = Release|Win32 + {05C9FB27-480E-4D53-B3B7-6338E2526666}.All|x64.ActiveCfg = Release|Win32 + {05C9FB27-480E-4D53-B3B7-6338E2526666}.Debug|Win32.ActiveCfg = Debug|Win32 + {05C9FB27-480E-4D53-B3B7-6338E2526666}.Debug|x64.ActiveCfg = Debug|Win32 + {05C9FB27-480E-4D53-B3B7-6338E2526666}.Release|Win32.ActiveCfg = Release|Win32 + {05C9FB27-480E-4D53-B3B7-6338E2526666}.Release|x64.ActiveCfg = Release|Win32 + {CC1DD008-9406-448D-A0AD-33C3186CFADB}.All|Win32.ActiveCfg = Release|Win32 + {CC1DD008-9406-448D-A0AD-33C3186CFADB}.All|x64.ActiveCfg = Release|Win32 + {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Debug|Win32.ActiveCfg = Debug|Win32 + {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Debug|x64.ActiveCfg = Debug|Win32 + {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Release|Win32.ActiveCfg = Release|Win32 + {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Release|x64.ActiveCfg = Release|Win32 + {DEE932AB-5911-4700-9EEB-8C7090A0A330}.All|Win32.ActiveCfg = All|Win32 + {DEE932AB-5911-4700-9EEB-8C7090A0A330}.All|Win32.Build.0 = All|Win32 + {DEE932AB-5911-4700-9EEB-8C7090A0A330}.All|x64.ActiveCfg = All|Win32 + {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Debug|Win32.ActiveCfg = All|Win32 + {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Debug|Win32.Build.0 = All|Win32 + {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Debug|x64.ActiveCfg = All|Win32 + {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Debug|x64.Build.0 = All|Win32 + {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Release|Win32.ActiveCfg = All|Win32 + {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Release|Win32.Build.0 = All|Win32 + {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Release|x64.ActiveCfg = All|Win32 + {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Release|x64.Build.0 = All|Win32 + {329A6FA0-0FCC-4435-A950-E670AEFA9838}.All|Win32.ActiveCfg = All|Win32 + {329A6FA0-0FCC-4435-A950-E670AEFA9838}.All|Win32.Build.0 = All|Win32 + {329A6FA0-0FCC-4435-A950-E670AEFA9838}.All|x64.ActiveCfg = All|Win32 + {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Debug|Win32.ActiveCfg = All|Win32 + {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Debug|Win32.Build.0 = All|Win32 + {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Debug|x64.ActiveCfg = All|Win32 + {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Debug|x64.Build.0 = All|Win32 + {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Release|Win32.ActiveCfg = All|Win32 + {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Release|Win32.Build.0 = All|Win32 + {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Release|x64.ActiveCfg = All|Win32 + {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Release|x64.Build.0 = All|Win32 + {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.All|Win32.ActiveCfg = Release|x64 + {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.All|x64.ActiveCfg = Release|x64 + {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.All|x64.Build.0 = Release|x64 + {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Debug|Win32.ActiveCfg = Debug|Win32 + {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Debug|x64.ActiveCfg = Debug|x64 + {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Release|Win32.ActiveCfg = Release|Win32 + {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Release|x64.ActiveCfg = Release|x64 + {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.All|Win32.ActiveCfg = Release|Win32 + {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.All|Win32.Build.0 = Release|Win32 + {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.All|x64.ActiveCfg = Release|Win32 + {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Debug|Win32.ActiveCfg = Debug|Win32 + {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Debug|x64.ActiveCfg = Debug|Win32 + {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Release|Win32.ActiveCfg = Release|Win32 + {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Release|x64.ActiveCfg = Release|Win32 + {1F0A8A77-E661-418F-BB92-82172AE43803}.All|Win32.ActiveCfg = Release|Win32 + {1F0A8A77-E661-418F-BB92-82172AE43803}.All|x64.ActiveCfg = Release|Win32 + {1F0A8A77-E661-418F-BB92-82172AE43803}.Debug|Win32.ActiveCfg = Debug|Win32 + {1F0A8A77-E661-418F-BB92-82172AE43803}.Debug|x64.ActiveCfg = Debug|Win32 + {1F0A8A77-E661-418F-BB92-82172AE43803}.Release|Win32.ActiveCfg = Release|Win32 + {1F0A8A77-E661-418F-BB92-82172AE43803}.Release|x64.ActiveCfg = Release|Win32 + {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|Win32.ActiveCfg = Release|Win32 + {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|Win32.Build.0 = Release|Win32 + {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|x64.ActiveCfg = Release|Win32 + {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|x64.Build.0 = Release|Win32 + {4F5C9D55-98EF-4256-8311-32D7BD360406}.Debug|Win32.ActiveCfg = Debug|Win32 + {4F5C9D55-98EF-4256-8311-32D7BD360406}.Debug|Win32.Build.0 = Debug|Win32 + {4F5C9D55-98EF-4256-8311-32D7BD360406}.Debug|x64.ActiveCfg = Debug|Win32 + {4F5C9D55-98EF-4256-8311-32D7BD360406}.Debug|x64.Build.0 = Debug|Win32 + {4F5C9D55-98EF-4256-8311-32D7BD360406}.Release|Win32.ActiveCfg = Release|Win32 + {4F5C9D55-98EF-4256-8311-32D7BD360406}.Release|Win32.Build.0 = Release|Win32 + {4F5C9D55-98EF-4256-8311-32D7BD360406}.Release|x64.ActiveCfg = Release|Win32 + {4F5C9D55-98EF-4256-8311-32D7BD360406}.Release|x64.Build.0 = Release|Win32 + {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.All|Win32.ActiveCfg = Release|Win32 + {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.All|x64.ActiveCfg = Release|Win32 + {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Debug|Win32.ActiveCfg = Debug|Win32 + {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Debug|x64.ActiveCfg = Debug|Win32 + {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Release|Win32.ActiveCfg = Release|Win32 + {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Release|x64.ActiveCfg = Release|Win32 + {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|Win32.ActiveCfg = Release|Win32 + {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|Win32.Build.0 = Release|Win32 + {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|x64.ActiveCfg = Release|Win32 + {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|x64.Build.0 = Release|Win32 + {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|Win32.ActiveCfg = Debug|Win32 + {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|Win32.Build.0 = Debug|Win32 + {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|x64.ActiveCfg = Debug|Win32 + {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|x64.Build.0 = Debug|Win32 + {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|Win32.ActiveCfg = Release|Win32 + {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|Win32.Build.0 = Release|Win32 + {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|x64.ActiveCfg = Release|Win32 + {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|x64.Build.0 = Release|Win32 + {BA599D0A-4310-4505-91DA-6A6447B3E289}.All|Win32.ActiveCfg = Release|Win32 + {BA599D0A-4310-4505-91DA-6A6447B3E289}.All|x64.ActiveCfg = Release|Win32 + {BA599D0A-4310-4505-91DA-6A6447B3E289}.Debug|Win32.ActiveCfg = Debug|Win32 + {BA599D0A-4310-4505-91DA-6A6447B3E289}.Debug|x64.ActiveCfg = Debug|Win32 + {BA599D0A-4310-4505-91DA-6A6447B3E289}.Release|Win32.ActiveCfg = Release|Win32 + {BA599D0A-4310-4505-91DA-6A6447B3E289}.Release|x64.ActiveCfg = Release|Win32 + {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.All|Win32.ActiveCfg = Release|Win32 + {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.All|x64.ActiveCfg = Release|Win32 + {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Debug|Win32.ActiveCfg = Debug|Win32 + {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Debug|x64.ActiveCfg = Debug|Win32 + {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Release|Win32.ActiveCfg = Release|Win32 + {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Release|x64.ActiveCfg = Release|Win32 + {70564D74-199A-4452-9C60-19ED5F242F0D}.All|Win32.ActiveCfg = Release|x64 + {70564D74-199A-4452-9C60-19ED5F242F0D}.All|x64.ActiveCfg = Release|x64 + {70564D74-199A-4452-9C60-19ED5F242F0D}.All|x64.Build.0 = Release|x64 + {70564D74-199A-4452-9C60-19ED5F242F0D}.Debug|Win32.ActiveCfg = Debug|Win32 + {70564D74-199A-4452-9C60-19ED5F242F0D}.Debug|Win32.Build.0 = Debug|Win32 + {70564D74-199A-4452-9C60-19ED5F242F0D}.Debug|x64.ActiveCfg = Debug|x64 + {70564D74-199A-4452-9C60-19ED5F242F0D}.Debug|x64.Build.0 = Debug|x64 + {70564D74-199A-4452-9C60-19ED5F242F0D}.Release|Win32.ActiveCfg = Release|Win32 + {70564D74-199A-4452-9C60-19ED5F242F0D}.Release|Win32.Build.0 = Release|Win32 + {70564D74-199A-4452-9C60-19ED5F242F0D}.Release|x64.ActiveCfg = Release|x64 + {70564D74-199A-4452-9C60-19ED5F242F0D}.Release|x64.Build.0 = Release|x64 + {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.All|Win32.ActiveCfg = Release|x64 + {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.All|x64.ActiveCfg = Release|x64 + {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.All|x64.Build.0 = Release|x64 + {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Debug|Win32.ActiveCfg = Debug|Win32 + {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Debug|Win32.Build.0 = Debug|Win32 + {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Debug|x64.ActiveCfg = Debug|x64 + {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Debug|x64.Build.0 = Debug|x64 + {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Release|Win32.ActiveCfg = Release|Win32 + {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Release|Win32.Build.0 = Release|Win32 + {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Release|x64.ActiveCfg = Release|x64 + {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Release|x64.Build.0 = Release|x64 + {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|Win32.ActiveCfg = Release|x64 + {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|Win32.Build.0 = Release|x64 + {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|x64.ActiveCfg = Release|x64 + {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|x64.Build.0 = Release|x64 + {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Debug|Win32.ActiveCfg = Debug|Win32 + {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Debug|Win32.Build.0 = Debug|Win32 + {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Debug|x64.ActiveCfg = Debug|x64 + {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Debug|x64.Build.0 = Debug|x64 + {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Release|Win32.ActiveCfg = Release|Win32 + {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Release|Win32.Build.0 = Release|Win32 + {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Release|x64.ActiveCfg = Release|x64 + {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Release|x64.Build.0 = Release|x64 + {432DB165-1EB2-4781-A9C0-71E62610B20A}.All|Win32.ActiveCfg = Release|x64 + {432DB165-1EB2-4781-A9C0-71E62610B20A}.All|x64.ActiveCfg = Release|x64 + {432DB165-1EB2-4781-A9C0-71E62610B20A}.Debug|Win32.ActiveCfg = Debug|Win32 + {432DB165-1EB2-4781-A9C0-71E62610B20A}.Debug|Win32.Build.0 = Debug|Win32 + {432DB165-1EB2-4781-A9C0-71E62610B20A}.Debug|x64.ActiveCfg = Debug|x64 + {432DB165-1EB2-4781-A9C0-71E62610B20A}.Debug|x64.Build.0 = Debug|x64 + {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|Win32.ActiveCfg = Release|Win32 + {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|Win32.Build.0 = Release|Win32 + {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|x64.ActiveCfg = Release|x64 + {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|x64.Build.0 = Release|x64 + {CF70F278-3364-4395-A2E1-23501C9B8AD2}.All|Win32.ActiveCfg = Release|Win32 + {CF70F278-3364-4395-A2E1-23501C9B8AD2}.All|Win32.Build.0 = Release|Win32 + {CF70F278-3364-4395-A2E1-23501C9B8AD2}.All|x64.ActiveCfg = Release|Win32 + {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Win32.ActiveCfg = Debug|Win32 + {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Win32.Build.0 = Debug|Win32 + {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|x64.ActiveCfg = Debug|x64 + {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|x64.Build.0 = Debug|x64 + {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Win32.ActiveCfg = Release|Win32 + {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Win32.Build.0 = Release|Win32 + {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|x64.ActiveCfg = Release|x64 + {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|x64.Build.0 = Release|x64 + {D5C87B19-150D-4EF3-A671-96589BD2D14A}.All|Win32.ActiveCfg = Release|x64 + {D5C87B19-150D-4EF3-A671-96589BD2D14A}.All|x64.ActiveCfg = Release|x64 + {D5C87B19-150D-4EF3-A671-96589BD2D14A}.All|x64.Build.0 = Release|x64 + {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Debug|Win32.ActiveCfg = Debug|Win32 + {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Debug|Win32.Build.0 = Debug|Win32 + {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Debug|x64.ActiveCfg = Debug|x64 + {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Debug|x64.Build.0 = Debug|x64 + {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|Win32.ActiveCfg = Release|Win32 + {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|Win32.Build.0 = Release|Win32 + {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|x64.ActiveCfg = Release|x64 + {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|x64.Build.0 = Release|x64 + {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.All|Win32.ActiveCfg = Release|Win32 + {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.All|Win32.Build.0 = Release|Win32 + {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.All|x64.ActiveCfg = Release|Win32 + {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Win32.ActiveCfg = Debug|Win32 + {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Win32.Build.0 = Debug|Win32 + {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|x64.ActiveCfg = Debug|x64 + {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|x64.Build.0 = Debug|x64 + {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Win32.ActiveCfg = Release|Win32 + {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Win32.Build.0 = Release|Win32 + {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|x64.ActiveCfg = Release|x64 + {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|x64.Build.0 = Release|x64 + {B5A00BFA-6083-4FAE-A097-71642D6473B5}.All|Win32.ActiveCfg = Release|Win32 + {B5A00BFA-6083-4FAE-A097-71642D6473B5}.All|Win32.Build.0 = Release|Win32 + {B5A00BFA-6083-4FAE-A097-71642D6473B5}.All|x64.ActiveCfg = Release|Win32 + {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|Win32.ActiveCfg = Debug|Win32 + {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|Win32.Build.0 = Debug|Win32 + {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|x64.ActiveCfg = Debug|x64 + {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|x64.Build.0 = Debug|x64 + {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|Win32.ActiveCfg = Release|Win32 + {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|Win32.Build.0 = Release|Win32 + {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|x64.ActiveCfg = Release|x64 + {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|x64.Build.0 = Release|x64 + {1C320193-46A6-4B34-9C56-8AB584FC1B56}.All|Win32.ActiveCfg = Release|Win32 + {1C320193-46A6-4B34-9C56-8AB584FC1B56}.All|Win32.Build.0 = Release|Win32 + {1C320193-46A6-4B34-9C56-8AB584FC1B56}.All|x64.ActiveCfg = Release|Win32 + {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|Win32.ActiveCfg = Debug|Win32 + {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|Win32.Build.0 = Debug|Win32 + {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|x64.ActiveCfg = Debug|x64 + {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|x64.Build.0 = Debug|x64 + {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|Win32.ActiveCfg = Release|Win32 + {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|Win32.Build.0 = Release|Win32 + {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|x64.ActiveCfg = Release|x64 + {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|x64.Build.0 = Release|x64 + {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.All|Win32.ActiveCfg = Release|Win32 + {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.All|Win32.Build.0 = Release|Win32 + {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.All|x64.ActiveCfg = Release|Win32 + {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|Win32.ActiveCfg = Debug|Win32 + {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|Win32.Build.0 = Debug|Win32 + {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|x64.ActiveCfg = Debug|x64 + {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|x64.Build.0 = Debug|x64 + {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|Win32.ActiveCfg = Release|Win32 + {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|Win32.Build.0 = Release|Win32 + {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|x64.ActiveCfg = Release|x64 + {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|x64.Build.0 = Release|x64 + {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.All|Win32.ActiveCfg = Release|Win32 + {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.All|Win32.Build.0 = Release|Win32 + {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.All|x64.ActiveCfg = Release|Win32 + {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|Win32.ActiveCfg = Debug|Win32 + {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|Win32.Build.0 = Debug|Win32 + {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|x64.ActiveCfg = Debug|x64 + {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|x64.Build.0 = Debug|x64 + {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|Win32.ActiveCfg = Release|Win32 + {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|Win32.Build.0 = Release|Win32 + {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|x64.ActiveCfg = Release|x64 + {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|x64.Build.0 = Release|x64 + {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.All|Win32.ActiveCfg = Release|Win32 + {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.All|Win32.Build.0 = Release|Win32 + {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.All|x64.ActiveCfg = Release|Win32 + {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|Win32.ActiveCfg = Debug|Win32 + {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|Win32.Build.0 = Debug|Win32 + {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|x64.ActiveCfg = Debug|x64 + {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|x64.Build.0 = Debug|x64 + {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|Win32.ActiveCfg = Release|Win32 + {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|Win32.Build.0 = Release|Win32 + {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|x64.ActiveCfg = Release|x64 + {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|x64.Build.0 = Release|x64 + {504B3154-7A4F-459D-9877-B951021C3F1F}.All|Win32.ActiveCfg = Release|Win32 + {504B3154-7A4F-459D-9877-B951021C3F1F}.All|Win32.Build.0 = Release|Win32 + {504B3154-7A4F-459D-9877-B951021C3F1F}.All|x64.ActiveCfg = Release|Win32 + {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|Win32.ActiveCfg = Debug|Win32 + {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|Win32.Build.0 = Debug|Win32 + {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|x64.ActiveCfg = Debug|x64 + {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|x64.Build.0 = Debug|x64 + {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|Win32.ActiveCfg = Release|Win32 + {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|Win32.Build.0 = Release|Win32 + {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|x64.ActiveCfg = Release|x64 + {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|x64.Build.0 = Release|x64 + {746F3632-5BB2-4570-9453-31D6D58A7D8E}.All|Win32.ActiveCfg = Release|Win32 + {746F3632-5BB2-4570-9453-31D6D58A7D8E}.All|Win32.Build.0 = Release|Win32 + {746F3632-5BB2-4570-9453-31D6D58A7D8E}.All|x64.ActiveCfg = Release|Win32 + {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|Win32.ActiveCfg = Debug|Win32 + {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|Win32.Build.0 = Debug|Win32 + {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|x64.ActiveCfg = Debug|x64 + {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|x64.Build.0 = Debug|x64 + {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|Win32.ActiveCfg = Release|Win32 + {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|Win32.Build.0 = Release|Win32 + {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|x64.ActiveCfg = Release|x64 + {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|x64.Build.0 = Release|x64 + {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.All|Win32.ActiveCfg = Release|Win32 + {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.All|Win32.Build.0 = Release|Win32 + {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.All|x64.ActiveCfg = Release|Win32 + {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|Win32.ActiveCfg = Debug|Win32 + {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|Win32.Build.0 = Debug|Win32 + {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|x64.ActiveCfg = Debug|x64 + {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|x64.Build.0 = Debug|x64 + {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|Win32.ActiveCfg = Release|Win32 + {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|Win32.Build.0 = Release|Win32 + {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|x64.ActiveCfg = Release|x64 + {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|x64.Build.0 = Release|x64 + {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.All|Win32.ActiveCfg = Release|x64 + {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.All|x64.ActiveCfg = Release|x64 + {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.All|x64.Build.0 = Release|x64 + {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|Win32.ActiveCfg = Debug|Win32 + {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|Win32.Build.0 = Debug|Win32 + {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|x64.ActiveCfg = Debug|x64 + {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|x64.Build.0 = Debug|x64 + {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|Win32.ActiveCfg = Release|Win32 + {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|Win32.Build.0 = Release|Win32 + {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|x64.ActiveCfg = Release|x64 + {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|x64.Build.0 = Release|x64 + {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.All|Win32.ActiveCfg = Release|Win32 + {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.All|Win32.Build.0 = Release|Win32 + {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.All|x64.ActiveCfg = Release|Win32 + {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Debug|Win32.ActiveCfg = Debug|Win32 + {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Debug|Win32.Build.0 = Debug|Win32 + {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Debug|x64.ActiveCfg = Debug|Win32 + {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Debug|x64.Build.0 = Debug|Win32 + {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Release|Win32.ActiveCfg = Release|Win32 + {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Release|Win32.Build.0 = Release|Win32 + {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Release|x64.ActiveCfg = Release|Win32 + {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Release|x64.Build.0 = Release|Win32 + {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.All|Win32.ActiveCfg = Release|x64 + {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.All|x64.ActiveCfg = Release|x64 + {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.All|x64.Build.0 = Release|x64 + {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Debug|Win32.ActiveCfg = Debug|Win32 + {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Debug|Win32.Build.0 = Debug|Win32 + {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Debug|x64.ActiveCfg = Debug|x64 + {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Debug|x64.Build.0 = Debug|x64 + {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Release|Win32.ActiveCfg = Release|Win32 + {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Release|Win32.Build.0 = Release|Win32 + {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Release|x64.ActiveCfg = Release|x64 + {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Release|x64.Build.0 = Release|x64 + {4D418176-3B33-47E6-A63E-01BA34ADD21C}.All|Win32.ActiveCfg = Release Passthrough|x64 + {4D418176-3B33-47E6-A63E-01BA34ADD21C}.All|x64.ActiveCfg = Release Passthrough|x64 + {4D418176-3B33-47E6-A63E-01BA34ADD21C}.All|x64.Build.0 = Release Passthrough|x64 + {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Debug|Win32.ActiveCfg = Debug|Win32 + {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Debug|Win32.Build.0 = Debug|Win32 + {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Debug|x64.ActiveCfg = Debug|x64 + {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Debug|x64.Build.0 = Debug|x64 + {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Release|Win32.ActiveCfg = Release|Win32 + {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Release|Win32.Build.0 = Release|Win32 + {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Release|x64.ActiveCfg = Release|x64 + {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Release|x64.Build.0 = Release|x64 + {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.All|Win32.ActiveCfg = Release|Win32 + {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.All|Win32.Build.0 = Release|Win32 + {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.All|x64.ActiveCfg = Release|Win32 + {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Debug|Win32.ActiveCfg = Debug|Win32 + {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Debug|x64.ActiveCfg = Debug|Win32 + {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Release|Win32.ActiveCfg = Release|Win32 + {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Release|x64.ActiveCfg = Release|Win32 + {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.All|Win32.ActiveCfg = Release|x64 + {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.All|x64.ActiveCfg = Release|x64 + {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.All|x64.Build.0 = Release|x64 + {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|Win32.ActiveCfg = Debug|Win32 + {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|Win32.Build.0 = Debug|Win32 + {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|x64.ActiveCfg = Debug|x64 + {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|x64.Build.0 = Debug|x64 + {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|Win32.ActiveCfg = Release|Win32 + {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|Win32.Build.0 = Release|Win32 + {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|x64.ActiveCfg = Release|x64 + {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|x64.Build.0 = Release|x64 + {B808178B-82F0-4CF4-A2B1-921939FA24D0}.All|Win32.ActiveCfg = Release|Win32 + {B808178B-82F0-4CF4-A2B1-921939FA24D0}.All|Win32.Build.0 = Release|Win32 + {B808178B-82F0-4CF4-A2B1-921939FA24D0}.All|x64.ActiveCfg = Release|Win32 + {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|Win32.ActiveCfg = Debug|Win32 + {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|Win32.Build.0 = Debug|Win32 + {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|x64.ActiveCfg = Debug|Win32 + {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|x64.Build.0 = Debug|Win32 + {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|Win32.ActiveCfg = Release|Win32 + {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|Win32.Build.0 = Release|Win32 + {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|x64.ActiveCfg = Release|Win32 + {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|x64.Build.0 = Release|Win32 + {9778F1C0-09BC-4698-8EBC-BD982247209A}.All|Win32.ActiveCfg = Release|x64 + {9778F1C0-09BC-4698-8EBC-BD982247209A}.All|x64.ActiveCfg = Release|x64 + {9778F1C0-09BC-4698-8EBC-BD982247209A}.All|x64.Build.0 = Release|x64 + {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|Win32.ActiveCfg = Debug|Win32 + {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|Win32.Build.0 = Debug|Win32 + {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|x64.ActiveCfg = Debug|x64 + {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|x64.Build.0 = Debug|x64 + {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|Win32.ActiveCfg = Release|Win32 + {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|Win32.Build.0 = Release|Win32 + {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|x64.ActiveCfg = Release|x64 + {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|x64.Build.0 = Release|x64 + {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.All|Win32.ActiveCfg = Release|x64 + {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.All|x64.ActiveCfg = Release|x64 + {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.All|x64.Build.0 = Release|x64 + {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Debug|Win32.ActiveCfg = Debug|Win32 + {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Debug|Win32.Build.0 = Debug|Win32 + {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Debug|x64.ActiveCfg = Debug|x64 + {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Debug|x64.Build.0 = Debug|x64 + {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Release|Win32.ActiveCfg = Release|Win32 + {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Release|Win32.Build.0 = Release|Win32 + {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Release|x64.ActiveCfg = Release|x64 + {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Release|x64.Build.0 = Release|x64 + {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.All|Win32.ActiveCfg = Release|Win32 + {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.All|Win32.Build.0 = Release|Win32 + {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.All|x64.ActiveCfg = Release|Win32 + {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Debug|Win32.ActiveCfg = Debug|Win32 + {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Debug|Win32.Build.0 = Debug|Win32 + {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Debug|x64.ActiveCfg = Debug|x64 + {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Debug|x64.Build.0 = Debug|x64 + {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Release|Win32.ActiveCfg = Release|Win32 + {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Release|Win32.Build.0 = Release|Win32 + {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Release|x64.ActiveCfg = Release|x64 + {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Release|x64.Build.0 = Release|x64 + {990BAA76-89D3-4E38-8479-C7B28784EFC8}.All|Win32.ActiveCfg = Release|Win32 + {990BAA76-89D3-4E38-8479-C7B28784EFC8}.All|Win32.Build.0 = Release|Win32 + {990BAA76-89D3-4E38-8479-C7B28784EFC8}.All|x64.ActiveCfg = Release|Win32 + {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Debug|Win32.ActiveCfg = Debug|Win32 + {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Debug|Win32.Build.0 = Debug|Win32 + {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Debug|x64.ActiveCfg = Debug|x64 + {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Debug|x64.Build.0 = Debug|x64 + {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Release|Win32.ActiveCfg = Release|Win32 + {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Release|Win32.Build.0 = Release|Win32 + {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Release|x64.ActiveCfg = Release|x64 + {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Release|x64.Build.0 = Release|x64 + {1E21AFE0-6FDB-41D2-942D-863607C24B91}.All|Win32.ActiveCfg = Release|x64 + {1E21AFE0-6FDB-41D2-942D-863607C24B91}.All|x64.ActiveCfg = Release|x64 + {1E21AFE0-6FDB-41D2-942D-863607C24B91}.All|x64.Build.0 = Release|x64 + {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Debug|Win32.ActiveCfg = Debug|Win32 + {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Debug|Win32.Build.0 = Debug|Win32 + {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Debug|x64.ActiveCfg = Debug|x64 + {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Debug|x64.Build.0 = Debug|x64 + {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Release|Win32.ActiveCfg = Release|Win32 + {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Release|Win32.Build.0 = Release|Win32 + {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Release|x64.ActiveCfg = Release|x64 + {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Release|x64.Build.0 = Release|x64 + {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.All|Win32.ActiveCfg = Release|x64 + {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.All|x64.ActiveCfg = Release|x64 + {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.All|x64.Build.0 = Release|x64 + {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Debug|Win32.ActiveCfg = Debug|Win32 + {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Debug|Win32.Build.0 = Debug|Win32 + {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Debug|x64.ActiveCfg = Debug|x64 + {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Debug|x64.Build.0 = Debug|x64 + {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Release|Win32.ActiveCfg = Release|Win32 + {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Release|Win32.Build.0 = Release|Win32 + {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Release|x64.ActiveCfg = Release|x64 + {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0} = {F881ADA2-2F1A-4046-9FEB-191D9422D781} + {5580D60E-0F77-4716-9CD4-B8E5986FA375} = {F881ADA2-2F1A-4046-9FEB-191D9422D781} + {D3EC0AFF-76FC-4210-A825-9A17410660A3} = {F881ADA2-2F1A-4046-9FEB-191D9422D781} + {FEA1EEF7-876F-48DE-88BF-C0E3E606D758} = {F881ADA2-2F1A-4046-9FEB-191D9422D781} + {8DEB383C-4091-4F42-A56F-C9E46D552D79} = {F881ADA2-2F1A-4046-9FEB-191D9422D781} + {2C3C2423-234B-4772-8899-D3B137E5CA35} = {F881ADA2-2F1A-4046-9FEB-191D9422D781} + {0B6C905B-142E-4999-B39D-92FF7951E921} = {F881ADA2-2F1A-4046-9FEB-191D9422D781} + {D5C87B19-150D-4EF3-A671-96589BD2D14A} = {F881ADA2-2F1A-4046-9FEB-191D9422D781} + {4D418176-3B33-47E6-A63E-01BA34ADD21C} = {F881ADA2-2F1A-4046-9FEB-191D9422D781} + {AFA983D6-4569-4F88-BA94-555ED00FD9A8} = {F881ADA2-2F1A-4046-9FEB-191D9422D781} + {5FD31A25-5D83-4794-8BEE-904DAD84CE71} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C} + {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C} + {0DF3ABD0-DDC0-4265-B778-07C66780979B} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C} + {B3F424EC-3D8F-417C-B244-3919D5E1A577} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C} + {05C9FB27-480E-4D53-B3B7-6338E2526666} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C} + {CC1DD008-9406-448D-A0AD-33C3186CFADB} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C} + {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C} + {30A5B29C-983E-4580-9FD0-D647CCDCC7EB} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {C24FB505-05D7-4319-8485-7540B44C8603} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {B5881A85-FE70-4F64-8607-2CAAE52669C6} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {71A967D5-0E99-4CEF-A587-98836EE6F2EF} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {3850D93A-5F24-4922-BC1C-74D08C37C256} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {D7F1E3F2-A3F4-474C-8555-15122571AF52} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {F6A33240-8F29-48BD-98F0-826995911799} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {65A6273D-FCAB-4C55-B09E-65100141A5D4} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {E3246D17-E29B-4AB5-962A-C69B0C5837BB} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {14E4A972-9CFB-436D-B0A5-4943F3F80D47} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {3C977801-FE88-48F2-83D3-FA2EBFF6688E} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {432DB165-1EB2-4781-A9C0-71E62610B20A} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {990BAA76-89D3-4E38-8479-C7B28784EFC8} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {1E21AFE0-6FDB-41D2-942D-863607C24B91} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {2E250296-0C08-4342-9C8A-BCBDD0E7DF65} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} + {07113B25-D3AF-4E04-BA77-4CD1171F022C} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4} + {A27CCA23-1541-4337-81A4-F0A6413078A0} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4} + {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4} + {784113EF-44D9-4949-835D-7065D3C7AD08} = {9ADF1E48-2F5C-4ED7-A893-596259FABFE0} + {05515420-16DE-4E63-BE73-85BE85BA5142} = {9ADF1E48-2F5C-4ED7-A893-596259FABFE0} + {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E} = {9ADF1E48-2F5C-4ED7-A893-596259FABFE0} + {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6} = {A5A27244-AD24-46E5-B01B-840CD296C91D} + {9254C4B0-6F60-42B6-BB3A-36D63FC001C7} = {A5A27244-AD24-46E5-B01B-840CD296C91D} + {2CA40887-1622-46A1-A7F9-17FD7E7E545B} = {A5A27244-AD24-46E5-B01B-840CD296C91D} + {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52} = {A5A27244-AD24-46E5-B01B-840CD296C91D} + {38FE0559-9910-43A8-9E45-3E5004C27692} = {A5A27244-AD24-46E5-B01B-840CD296C91D} + {70564D74-199A-4452-9C60-19ED5F242F0D} = {A5A27244-AD24-46E5-B01B-840CD296C91D} + {CBD81696-EFB4-4D2F-8451-1B8DAA86155A} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {62F27B1A-C919-4A70-8478-51F178F3B18F} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {89385C74-5860-4174-9CAF-A39E7C48909C} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {1906D736-08BD-4EE1-924F-B536249B9A54} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {8D04B550-D240-4A44-8A18-35DA3F7038D9} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {1CED5987-A529-46DC-B30F-870D85FF9C94} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {E727E8F6-935D-46FE-8B0E-37834748A0E3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {3D0370CA-BED2-4657-A475-32375CBCB6E4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {155844C3-EC5F-407F-97A4-A2DDADED9B2F} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {204FA0DE-305D-4414-AE2E-F195A23F390D} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {70A49BC2-7500-41D0-B75D-EDCC5BE987A0} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {4043FC6A-9A30-4577-8AD5-9B233C9575D8} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {0A18A071-125E-442F-AFF7-A3F68ABECF99} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {0D108721-EAE8-4BAF-8102-D8960EC93647} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {B535402E-38D2-4D54-8360-423ACBD17192} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {94001A0E-A837-445C-8004-F918F10D0226} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {0AD1177E-1FD8-4643-9391-431467A11084} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {E316772F-5D8F-4F2A-8F71-094C3E859D34} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {D3D8B329-20BE-475E-9E83-653CEA0E0EF5} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {419C8F80-D858-4B48-A25C-AF4007608137} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {CF405366-9558-4AE8-90EF-5E21B51CCB4E} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {401A40CD-5DB4-4E34-AC68-FA99E9FAC014} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {E972C52F-9E85-4D65-B19C-031E511E9DB4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {03207781-0D1C-4DB3-A71D-45C608F28DBD} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {9A5DDF08-C88C-4A35-B7F6-D605228446BD} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {D0B36172-CD76-454A-9B89-990025266C2A} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {DEE932AB-5911-4700-9EEB-8C7090A0A330} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {329A6FA0-0FCC-4435-A950-E670AEFA9838} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {CF70F278-3364-4395-A2E1-23501C9B8AD2} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {ABB71A76-42B0-47A4-973A-42E3D920C6FD} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {9778F1C0-09BC-4698-8EBC-BD982247209A} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {56B91D01-9150-4BBF-AFA1-5B68AB991B76} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {EC3E5C7F-EE09-47E2-80FE-546363D14A98} = {B8F5B47B-8568-46EB-B320-64C17D2A98BC} + {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {0C808854-54D1-4230-BFF5-77B5FD905000} + {ACFFF684-4D19-4D48-AF12-88EA1D778BDF} = {0C808854-54D1-4230-BFF5-77B5FD905000} + {8F992C49-6C51-412F-B2A3-34EAB708EB65} = {0C808854-54D1-4230-BFF5-77B5FD905000} + {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF} = {0C808854-54D1-4230-BFF5-77B5FD905000} + {028C7278-05D7-4E18-82FE-BE231B844F41} = {0C808854-54D1-4230-BFF5-77B5FD905000} + {36E854E3-CE12-4348-A125-CCF3F9D74813} = {0C808854-54D1-4230-BFF5-77B5FD905000} + {7B077E7F-1BE7-4291-AB86-55E527B25CAC} = {0C808854-54D1-4230-BFF5-77B5FD905000} + {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E} = {0C808854-54D1-4230-BFF5-77B5FD905000} + {692F6330-4D87-4C82-81DF-40DB5892636E} = {4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0} + {2286DA73-9FC5-45BC-A508-85994C3317AB} = {4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0} + {66444AEE-554C-11DD-A9F0-8C5D56D89593} = {4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0} + {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD} = {4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0} + {1C453396-D912-4213-89FD-9B489162B7B5} = {A7AB4405-FDB7-4853-9FBB-1516B1C3D80A} + {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909} = {A7AB4405-FDB7-4853-9FBB-1516B1C3D80A} + {CBEC7225-0C21-4DA8-978E-1F158F8AD950} = {F69A4A6B-9360-4EBB-A280-22AA3C455AC5} + {AB91A099-7690-4ECF-8994-E458F4EA1ED4} = {F69A4A6B-9360-4EBB-A280-22AA3C455AC5} + {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836} = {F69A4A6B-9360-4EBB-A280-22AA3C455AC5} + {1A1FF289-4FD6-4285-A422-D31DD67A4723} = {CBD81696-EFB4-4D2F-8451-1B8DAA86155A} + {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A} = {C120A020-773F-4EA3-923F-B67AF28B750D} + {4F92B672-DADB-4047-8D6A-4BB3796733FD} = {C120A020-773F-4EA3-923F-B67AF28B750D} + {2DEE4895-1134-439C-B688-52203E57D878} = {C120A020-773F-4EA3-923F-B67AF28B750D} + {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E} = {C120A020-773F-4EA3-923F-B67AF28B750D} + {3CE1DC99-8246-4DB1-A709-74F19F08EC67} = {C120A020-773F-4EA3-923F-B67AF28B750D} + {87A1FE3D-F410-4C8E-9591-8C625985BC70} = {C120A020-773F-4EA3-923F-B67AF28B750D} + {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F} = {C120A020-773F-4EA3-923F-B67AF28B750D} + {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B} = {C120A020-773F-4EA3-923F-B67AF28B750D} + {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B} = {C120A020-773F-4EA3-923F-B67AF28B750D} + {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B} = {C120A020-773F-4EA3-923F-B67AF28B750D} + {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B} = {C120A020-773F-4EA3-923F-B67AF28B750D} + {E796E337-DE78-4303-8614-9A590862EE95} = {C120A020-773F-4EA3-923F-B67AF28B750D} + {1F0A8A77-E661-418F-BB92-82172AE43803} = {C120A020-773F-4EA3-923F-B67AF28B750D} + {4F5C9D55-98EF-4256-8311-32D7BD360406} = {C120A020-773F-4EA3-923F-B67AF28B750D} + {E10571C4-E7F4-4608-B5F2-B22E7EB95400} = {C120A020-773F-4EA3-923F-B67AF28B750D} + {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19} = {C120A020-773F-4EA3-923F-B67AF28B750D} + {B808178B-82F0-4CF4-A2B1-921939FA24D0} = {C120A020-773F-4EA3-923F-B67AF28B750D} + {988CACF7-3FCB-4992-BE69-77872AE67DC8} = {6CD61A1D-797C-470A-BE08-8C31B68BB336} + {5BC072DB-3826-48EA-AF34-FE32AA01E83B} = {6CD61A1D-797C-470A-BE08-8C31B68BB336} + {FA429E98-8B03-45E6-A096-A4BC5E821DE4} = {6CD61A1D-797C-470A-BE08-8C31B68BB336} + {06E3A538-AB32-44F2-B477-755FF9CB5D37} = {6CD61A1D-797C-470A-BE08-8C31B68BB336} + {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05} = {6CD61A1D-797C-470A-BE08-8C31B68BB336} + {A4B122CF-5196-476B-8C0E-D8BD59AC3C14} = {6CD61A1D-797C-470A-BE08-8C31B68BB336} + {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E} = {6CD61A1D-797C-470A-BE08-8C31B68BB336} + {0382E8FD-CFDC-41C0-8B03-792C7C84FC31} = {6CD61A1D-797C-470A-BE08-8C31B68BB336} + {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0} = {57D119DC-484F-420F-B9E9-8589FD9A8DF8} + {7BFD517E-7F8F-4A40-A78E-8D3632738227} = {57D119DC-484F-420F-B9E9-8589FD9A8DF8} + {6374D55C-FABE-4A02-9CF1-4145308A56C5} = {57D119DC-484F-420F-B9E9-8589FD9A8DF8} + {3C90CCF0-2CDD-4A7A-ACFF-208C1E271692} = {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0} + {C7E2382E-2C22-4D18-BF93-80C6A1FFA7AC} = {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0} + {FC71C66E-E268-4EAD-B1F5-F008DC382E83} = {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0} + {8E2E8798-8B6F-4A55-8E4F-4E6FDE40ED26} = {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0} + {09455AA9-C243-4F16-A1A1-A016881A2765} = {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0} + {8D29085B-952D-4594-9BB9-5781CE552D0A} = {7BFD517E-7F8F-4A40-A78E-8D3632738227} + {23874F4B-C0AF-4587-9F7E-DB0F06DE8CB4} = {7BFD517E-7F8F-4A40-A78E-8D3632738227} + {19ED97F6-30D8-4FCE-AE1D-8B7FCB170D40} = {7BFD517E-7F8F-4A40-A78E-8D3632738227} + {99E79D76-FCFC-466B-965B-273CCACF99B0} = {7BFD517E-7F8F-4A40-A78E-8D3632738227} + {8FADAC7F-CA9E-49D9-B957-A5F5605D238C} = {7BFD517E-7F8F-4A40-A78E-8D3632738227} + {4833F8E3-ABBF-4260-9DB1-B34015676CFC} = {6374D55C-FABE-4A02-9CF1-4145308A56C5} + {D44DD429-FE98-42AA-B5B7-4B4EBE33AEFD} = {6374D55C-FABE-4A02-9CF1-4145308A56C5} + {471110C9-A7ED-4966-98E1-8EA667BF0EEA} = {6374D55C-FABE-4A02-9CF1-4145308A56C5} + {4DF5199E-F7F5-4347-97DD-22078FCDB371} = {6374D55C-FABE-4A02-9CF1-4145308A56C5} + {B487BEBE-4A5C-434F-8D30-39465412F84F} = {6374D55C-FABE-4A02-9CF1-4145308A56C5} + {CDE9B06A-3C27-4987-8FAE-DF1006BC705D} = {DB1024A8-41BF-4AD7-9AE6-13202230D1F3} + {57199684-EC63-4A60-9DC6-11815AF6B413} = {09455AA9-C243-4F16-A1A1-A016881A2765} + {2DED4BA2-D6B0-4064-BB2A-76DE3AA49E7C} = {09455AA9-C243-4F16-A1A1-A016881A2765} + {D4A12E4C-DBDA-4614-BA26-3425AE9F60F5} = {09455AA9-C243-4F16-A1A1-A016881A2765} + {765EF1B9-5027-4820-BC37-A44466A51631} = {57199684-EC63-4A60-9DC6-11815AF6B413} + {713E4747-1126-40B1-BD84-58F9A7745423} = {57199684-EC63-4A60-9DC6-11815AF6B413} + {D3E5C8ED-3A6A-4FEA-92A2-48A0BA865358} = {2DED4BA2-D6B0-4064-BB2A-76DE3AA49E7C} + {CC3E7F48-2590-49CB-AD8B-BE3650F55462} = {2DED4BA2-D6B0-4064-BB2A-76DE3AA49E7C} + {F1B71990-EB04-4EB5-B28A-BC3EB6F7E843} = {D4A12E4C-DBDA-4614-BA26-3425AE9F60F5} + {3DAF028C-AB5B-4183-A01B-DCC43F5A87F0} = {D4A12E4C-DBDA-4614-BA26-3425AE9F60F5} + {2003189F-0E69-4FF7-A11D-3BFB3F03D558} = {B487BEBE-4A5C-434F-8D30-39465412F84F} + {C8EA69FA-365E-4897-9BB0-08022509E18B} = {B487BEBE-4A5C-434F-8D30-39465412F84F} + {1240C217-6674-43C1-B099-B0290D84F28B} = {B487BEBE-4A5C-434F-8D30-39465412F84F} + {03517B06-98A1-46DD-9347-BFFFED7DD8A4} = {2003189F-0E69-4FF7-A11D-3BFB3F03D558} + {1D339A14-FFC2-4F6E-BEF2-D5D6DF14AC88} = {2003189F-0E69-4FF7-A11D-3BFB3F03D558} + {B4C6D0B5-5F39-4546-820D-4BCAA6C3E301} = {C8EA69FA-365E-4897-9BB0-08022509E18B} + {3041F86C-51D4-4D9E-8A00-91BA4B7C51D4} = {C8EA69FA-365E-4897-9BB0-08022509E18B} + {DFE96A6E-5C9A-4C74-959A-9C485A7AD95C} = {1240C217-6674-43C1-B099-B0290D84F28B} + {80A4CA5C-7208-4134-8EFD-C147B03C8AA1} = {1240C217-6674-43C1-B099-B0290D84F28B} + {58A56014-DEA7-4172-8C26-BAD8D499A1E8} = {8FADAC7F-CA9E-49D9-B957-A5F5605D238C} + {EB577858-8284-4DEA-ADDA-DD046BCA0126} = {8FADAC7F-CA9E-49D9-B957-A5F5605D238C} + {89A94241-1DA6-44E8-A685-AED1E665C2AD} = {8FADAC7F-CA9E-49D9-B957-A5F5605D238C} + {2D74F635-AB18-43B3-A87E-A71F3EA24DDB} = {58A56014-DEA7-4172-8C26-BAD8D499A1E8} + {A721E646-07E9-4E16-A92D-B97F654B2BAC} = {58A56014-DEA7-4172-8C26-BAD8D499A1E8} + {50331CA0-7038-4341-B92D-C34E1601EFF0} = {EB577858-8284-4DEA-ADDA-DD046BCA0126} + {FC0DB2A2-B1A3-426E-9E37-BE28FE8FE01B} = {EB577858-8284-4DEA-ADDA-DD046BCA0126} + {91C6DEDE-CE4A-47D1-A84B-3E828F82E2B0} = {89A94241-1DA6-44E8-A685-AED1E665C2AD} + {8F5A511B-F716-4D07-9657-55B9E4F1D3E9} = {89A94241-1DA6-44E8-A685-AED1E665C2AD} + {7A8D8174-B355-4114-AFC1-04777CB9DE0A} = {4F227C26-768F-46A3-8684-1D08A46FB374} + {7EB71250-F002-4ED8-92CA-CA218114537A} = {4F227C26-768F-46A3-8684-1D08A46FB374} + {464AAB78-5489-4916-BE51-BF8D61822311} = {4F227C26-768F-46A3-8684-1D08A46FB374} + {D1ABE208-6442-4FB4-9AAD-1677E41BC870} = {4F227C26-768F-46A3-8684-1D08A46FB374} + {BA599D0A-4310-4505-91DA-6A6447B3E289} = {4F227C26-768F-46A3-8684-1D08A46FB374} + {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959} = {4F227C26-768F-46A3-8684-1D08A46FB374} + {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2} = {62F27B1A-C919-4A70-8478-51F178F3B18F} + {B5A00BFA-6083-4FAE-A097-71642D6473B5} = {62F27B1A-C919-4A70-8478-51F178F3B18F} + {1C320193-46A6-4B34-9C56-8AB584FC1B56} = {62F27B1A-C919-4A70-8478-51F178F3B18F} + {72782932-37CC-46AE-8C7F-9A7B1A6EE108} = {62F27B1A-C919-4A70-8478-51F178F3B18F} + {12A49562-BAB9-43A3-A21D-15B60BBB4C31} = {62F27B1A-C919-4A70-8478-51F178F3B18F} + {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA} = {62F27B1A-C919-4A70-8478-51F178F3B18F} + {504B3154-7A4F-459D-9877-B951021C3F1F} = {62F27B1A-C919-4A70-8478-51F178F3B18F} + {746F3632-5BB2-4570-9453-31D6D58A7D8E} = {62F27B1A-C919-4A70-8478-51F178F3B18F} + {DEB01ACB-D65F-4A62-AED9-58C1054499E9} = {62F27B1A-C919-4A70-8478-51F178F3B18F} + EndGlobalSection +EndGlobal diff --git a/Makefile.am b/Makefile.am index 2ef6175cac..a26346277a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -169,7 +169,7 @@ library_include_HEADERS = \ src/include/switch_xml.h \ src/include/switch_xml_config.h \ src/include/switch_cpp.h \ - src/include/switch_json.h\ + src/include/switch_json.h \ libs/libteletone/src/libteletone_detect.h \ libs/libteletone/src/libteletone_generate.h \ libs/libteletone/src/libteletone.h \ @@ -232,8 +232,8 @@ libfreeswitch_la_SOURCES = \ src/switch_limit.c \ src/g711.c \ src/switch_pcm.c \ - src/switch_profile.c\ - src/switch_json.c\ + src/switch_profile.c \ + src/switch_json.c \ libs/stfu/stfu.c \ libs/libteletone/src/libteletone_detect.c \ libs/libteletone/src/libteletone_generate.c \ diff --git a/conf/autoload_configs/sangoma_codec.conf.xml b/conf/autoload_configs/sangoma_codec.conf.xml index 9176a41d3a..da4b8ed643 100644 --- a/conf/autoload_configs/sangoma_codec.conf.xml +++ b/conf/autoload_configs/sangoma_codec.conf.xml @@ -5,13 +5,13 @@ Comma separated list of codecs to register with FreeSWITCH, by default (if this parameter is not set) all available codecs are registered. Valid codec values are: PCMU,PCMA,L16,G729,G726-32,GSM - + --> diff --git a/conf/autoload_configs/switch.conf.xml b/conf/autoload_configs/switch.conf.xml index 03bc993372..e1f89f88ac 100644 --- a/conf/autoload_configs/switch.conf.xml +++ b/conf/autoload_configs/switch.conf.xml @@ -49,7 +49,7 @@ - Donot change mailer-app-args. + Do not change mailer-app-args. You will also need to download a sendmail clone for Windows (msmtp). This version works without issue: http://msmtp.sourceforge.net/index.html. Download and copy the .exe to %winddir%\system32. You'll need to create a small config file for smtp credentials (host name, authentication, tls, etc.) in @@ -66,7 +66,7 @@ # Set a default account account default : provider - ################################### + ################################### --> diff --git a/conf/dialplan/default.xml b/conf/dialplan/default.xml index f5a8f24d1a..42c84added 100644 --- a/conf/dialplan/default.xml +++ b/conf/dialplan/default.xml @@ -397,7 +397,7 @@ - + @@ -412,7 +412,7 @@ - + diff --git a/conf/ivr_menus/demo_ivr.xml b/conf/ivr_menus/demo_ivr.xml index 5cb03ded93..d9aefaadb5 100644 --- a/conf/ivr_menus/demo_ivr.xml +++ b/conf/ivr_menus/demo_ivr.xml @@ -21,7 +21,7 @@ - + diff --git a/conf/sip_profiles/internal.xml b/conf/sip_profiles/internal.xml index dd1595d5ba..dd0dda153f 100644 --- a/conf/sip_profiles/internal.xml +++ b/conf/sip_profiles/internal.xml @@ -59,6 +59,10 @@ + + + + diff --git a/conf/yaml/extensions.yaml b/conf/yaml/extensions.yaml index d6ccdf0f65..f74fcf2e3d 100644 --- a/conf/yaml/extensions.yaml +++ b/conf/yaml/extensions.yaml @@ -1,4 +1,4 @@ default: - ${destination_number} =~ (9999): + ${destination_number} =~ (9664): set: foo=bar playback: ${hold_music} diff --git a/docs/docs.2010.vcxproj b/docs/docs.2010.vcxproj new file mode 100644 index 0000000000..1d29b8c6c7 --- /dev/null +++ b/docs/docs.2010.vcxproj @@ -0,0 +1,121 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + docs + {1A1FF289-4FD6-4285-A422-D31DD67A4723} + docs + + + + StaticLibrary + + + StaticLibrary + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + + + + + + + + + + + + %(Inputs) + %(Outputs) + + + ..\src\include; ..\libs\include;%(AdditionalIncludeDirectories) + WIN32;%(PreprocessorDefinitions) + + + + + + + + + + + + + + + + + + + + + + + + + + + %(Inputs) + %(Outputs) + + + ..\src\include; ..\libs\include;%(AdditionalIncludeDirectories) + WIN32;%(PreprocessorDefinitions) + + + + + + + + + + + + + + + + + doxygen %(FullPath) + + ..\src\include\switch.h;..\src\include\switch_apr.h;..\src\include\switch_buffer.h;..\src\include\switch_caller.h;..\src\include\switch_channel.h;..\src\include\switch_config.h;..\src\include\switch_console.h;..\src\include\switch_core.h;..\src\include\switch_event.h;..\src\include\switch_frame.h;..\src\include\switch_loadable_module.h;..\src\include\switch_module_interface.h;..\src\include\switch_mutex.h;..\src\include\switch_platform.h;..\src\include\switch_resample.h;..\src\include\switch_sqlite.h;..\src\include\switch_types.h;..\src\include\switch_utils.h;%(AdditionalInputs) + html/index.html;%(Outputs) + doxygen %(FullPath) + + ..\src\include\switch.h;..\src\include\switch_apr.h;..\src\include\switch_buffer.h;..\src\include\switch_caller.h;..\src\include\switch_channel.h;..\src\include\switch_config.h;..\src\include\switch_console.h;..\src\include\switch_core.h;..\src\include\switch_event.h;..\src\include\switch_frame.h;..\src\include\switch_loadable_module.h;..\src\include\switch_module_interface.h;..\src\include\switch_mutex.h;..\src\include\switch_platform.h;..\src\include\switch_resample.h;..\src\include\switch_sqlite.h;..\src\include\switch_types.h;..\src\include\switch_utils.h;%(AdditionalInputs) + html/index.html;%(Outputs) + + + + + + \ No newline at end of file diff --git a/fscomm/FSComm.2010.vcxproj b/fscomm/FSComm.2010.vcxproj new file mode 100644 index 0000000000..decbf15a18 --- /dev/null +++ b/fscomm/FSComm.2010.vcxproj @@ -0,0 +1,539 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + FSComm + {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E} + FSComm + Qt4VSv1.0 + + + + Application + false + + + Application + false + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + .\ + debug\ + true + .\ + release\ + true + false + + + + 0 + Unsigned + None + + + -Zm200 -w34100 -w34189 -w34100 -w34189 %(AdditionalOptions) + Disabled + $(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include;.;$(QTDIR)\include\ActiveQt;debug;$(QTDIR)\mkspecs\win32-msvc2008;..\src\include;$(QTDIR)\include\QtXml;%(AdditionalIncludeDirectories) + _WINDOWS;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_DLL;QT_GUI_LIB;QT_CORE_LIB;QT_THREAD_SUPPORT;%(PreprocessorDefinitions) + false + false + Sync + MultiThreadedDebugDLL + false + false + true + + + $(IntDir) + $(IntDir) + Level3 + true + ProgramDatabase + + + _WINDOWS;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_DLL;QT_GUI_LIB;QT_CORE_LIB;QT_THREAD_SUPPORT;_DEBUG;%(PreprocessorDefinitions) + + + "/MANIFESTDEPENDENCY:type=%27win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27 processorArchitecture=%27*%27" "/MANIFESTDEPENDENCY:type=%27win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27 processorArchitecture=%27*%27" %(AdditionalOptions) + $(QTDIR)\lib\qtmaind.lib;$(QTDIR)\lib\QtGuid4.lib;$(QTDIR)\lib\QtCored4.lib;$(QTDIR)\lib\QtXml4.lib;%(AdditionalDependencies) + debug\FSComm.exe + true + $(QTDIR)\lib;%(AdditionalLibraryDirectories) + true + + + Windows + + + + + + + 0 + Unsigned + None + + + -Zm200 -w34100 -w34189 -w34100 -w34189 %(AdditionalOptions) + MaxSpeed + $(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include;.;$(QTDIR)\include\ActiveQt;release;$(QTDIR)\mkspecs\win32-msvc2008;..\src\include;$(QTDIR)\include\QtXml;%(AdditionalIncludeDirectories) + QT_NO_DEBUG;NDEBUG;_WINDOWS;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_DLL;QT_NO_DEBUG;QT_GUI_LIB;QT_CORE_LIB;QT_THREAD_SUPPORT;NDEBUG;%(PreprocessorDefinitions) + false + false + Sync + MultiThreadedDLL + false + false + true + + + $(IntDir) + $(IntDir) + Level3 + true + + + + + QT_NO_DEBUG;NDEBUG;_WINDOWS;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_DLL;QT_NO_DEBUG;QT_GUI_LIB;QT_CORE_LIB;QT_THREAD_SUPPORT;%(PreprocessorDefinitions) + + + "/MANIFESTDEPENDENCY:type=%27win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27 processorArchitecture=%27*%27" "/MANIFESTDEPENDENCY:type=%27win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27 processorArchitecture=%27*%27" %(AdditionalOptions) + $(QTDIR)\lib\qtmain.lib;$(QTDIR)\lib\QtGui4.lib;$(QTDIR)\lib\QtCore4.lib;$(QTDIR)\lib\QtXml4.lib;%(AdditionalDependencies) + release\FSComm.exe + true + $(QTDIR)\lib;%(AdditionalLibraryDirectories) + false + + + Windows + + + + + + + + + + + + + + + + + + + + + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + + + + MOC accountdialog.h + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile debug\moc_accountdialog.cpp +$(QTDIR)\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QTDIR)\include\QtCore" -I"$(QTDIR)\include\QtGui" -I"$(QTDIR)\include" -I"." -I"$(QTDIR)\include\ActiveQt" -I"debug" -I"." -I$(QTDIR)\mkspecs\win32-msvc2008 -D_MSC_VER=1500 -DWIN32 preferences\accountdialog.h -o debug\moc_accountdialog.cpp + + Rem;accountdialog.h;%(AdditionalInputs) + debug\moc_accountdialog.cpp;%(Outputs) + MOC accountdialog.h + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile release\moc_accountdialog.cpp +$(QTDIR)\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QTDIR)\include\QtCore" -I"$(QTDIR)\include\QtGui" -I"$(QTDIR)\include" -I"." -I"$(QTDIR)\include\ActiveQt" -I"release" -I"." -I$(QTDIR)\mkspecs\win32-msvc2008 -D_MSC_VER=1500 -DWIN32 preferences\accountdialog.h -o release\moc_accountdialog.cpp + + Rem;accountdialog.h;%(AdditionalInputs) + release\moc_accountdialog.cpp;%(Outputs) + + + + + MOC codecwidget.h + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile debug\moc_codecwidget.cpp +$(QTDIR)\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QTDIR)\include\QtCore" -I"$(QTDIR)\include\QtGui" -I"$(QTDIR)\include" -I"." -I"$(QTDIR)\include\ActiveQt" -I"debug" -I"." -I$(QTDIR)\mkspecs\win32-msvc2008 -D_MSC_VER=1500 -DWIN32 widgets\codecwidget.h -o debug\moc_codecwidget.cpp + + Rem;codecwidget.h;%(AdditionalInputs) + debug\moc_codecwidget.cpp;%(Outputs) + MOC prefportaudio.h + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile release\moc_codecwidget.cpp +$(QTDIR)\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QTDIR)\include\QtCore" -I"$(QTDIR)\include\QtGui" -I"$(QTDIR)\include" -I"." -I"$(QTDIR)\include\ActiveQt" -I"release" -I"." -I$(QTDIR)\mkspecs\win32-msvc2008 -D_MSC_VER=1500 -DWIN32 widgets\codecwidget.h -o release\moc_codecwidget.cpp + + Rem;codecwidget.h;%(AdditionalInputs) + release\moc_codecwidget.cpp;%(Outputs) + + + MOC consolewindow.h + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile debug\moc_consolewindow.cpp +$(QTDIR)\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QTDIR)\include\QtCore" -I"$(QTDIR)\include\QtGui" -I"$(QTDIR)\include" -I"." -I"$(QTDIR)\include\ActiveQt" -I"debug" -I"." -I$(QTDIR)\mkspecs\win32-msvc2008 -D_MSC_VER=1500 -DWIN32 debugtools\consolewindow.h -o debug\moc_consolewindow.cpp + + Rem;consolewindow.h;%(AdditionalInputs) + debug\moc_consolewindow.cpp;%(Outputs) + MOC consolewindow.h + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile release\moc_consolewindow.cpp +$(QTDIR)\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QTDIR)\include\QtCore" -I"$(QTDIR)\include\QtGui" -I"$(QTDIR)\include" -I"." -I"$(QTDIR)\include\ActiveQt" -I"release" -I"." -I$(QTDIR)\mkspecs\win32-msvc2008 -D_MSC_VER=1500 -DWIN32 debugtools\consolewindow.h -o release\moc_consolewindow.cpp + + Rem;consolewindow.h;%(AdditionalInputs) + release\moc_consolewindow.cpp;%(Outputs) + + + MOC fshost.h + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile debug\moc_fshost.cpp +$(QTDIR)\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QTDIR)\include\QtCore" -I"$(QTDIR)\include\QtGui" -I"$(QTDIR)\include" -I"." -I"$(QTDIR)\include\ActiveQt" -I"debug" -I"." -I$(QTDIR)\mkspecs\win32-msvc2008 -D_MSC_VER=1500 -DWIN32 fshost.h -o debug\moc_fshost.cpp + + Rem;fshost.h;%(AdditionalInputs) + debug\moc_fshost.cpp;%(Outputs) + MOC fshost.h + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile release\moc_fshost.cpp +$(QTDIR)\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QTDIR)\include\QtCore" -I"$(QTDIR)\include\QtGui" -I"$(QTDIR)\include" -I"." -I"$(QTDIR)\include\ActiveQt" -I"release" -I"." -I$(QTDIR)\mkspecs\win32-msvc2008 -D_MSC_VER=1500 -DWIN32 fshost.h -o release\moc_fshost.cpp + + Rem;fshost.h;%(AdditionalInputs) + release\moc_fshost.cpp;%(Outputs) + + + MOC mainwindow.h + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile debug\moc_mainwindow.cpp +$(QTDIR)\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QTDIR)\include\QtCore" -I"$(QTDIR)\include\QtGui" -I"$(QTDIR)\include" -I"." -I"$(QTDIR)\include\ActiveQt" -I"debug" -I"." -I$(QTDIR)\mkspecs\win32-msvc2008 -D_MSC_VER=1500 -DWIN32 mainwindow.h -o debug\moc_mainwindow.cpp + + Rem;mainwindow.h;%(AdditionalInputs) + debug\moc_mainwindow.cpp;%(Outputs) + MOC mainwindow.h + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile release\moc_mainwindow.cpp +$(QTDIR)\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QTDIR)\include\QtCore" -I"$(QTDIR)\include\QtGui" -I"$(QTDIR)\include" -I"." -I"$(QTDIR)\include\ActiveQt" -I"release" -I"." -I$(QTDIR)\mkspecs\win32-msvc2008 -D_MSC_VER=1500 -DWIN32 mainwindow.h -o release\moc_mainwindow.cpp + + Rem;mainwindow.h;%(AdditionalInputs) + release\moc_mainwindow.cpp;%(Outputs) + + + + MOC prefaccounts.h + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile debug\moc_prefaccounts.cpp +$(QTDIR)\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QTDIR)\include\QtCore" -I"$(QTDIR)\include\QtGui" -I"$(QTDIR)\include" -I"." -I"$(QTDIR)\include\ActiveQt" -I"debug" -I"." -I$(QTDIR)\mkspecs\win32-msvc2008 -D_MSC_VER=1500 -DWIN32 preferences\prefaccounts.h -o debug\moc_prefaccounts.cpp + + Rem;prefaccounts.h;%(AdditionalInputs) + debug\moc_prefaccounts.cpp;%(Outputs) + MOC prefaccounts.h + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile release\moc_prefaccounts.cpp +$(QTDIR)\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QTDIR)\include\QtCore" -I"$(QTDIR)\include\QtGui" -I"$(QTDIR)\include" -I"." -I"$(QTDIR)\include\ActiveQt" -I"release" -I"." -I$(QTDIR)\mkspecs\win32-msvc2008 -D_MSC_VER=1500 -DWIN32 preferences\prefaccounts.h -o release\moc_prefaccounts.cpp + + Rem;prefaccounts.h;%(AdditionalInputs) + release\moc_prefaccounts.cpp;%(Outputs) + + + MOC prefdialog.h + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile debug\moc_prefdialog.cpp +$(QTDIR)\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QTDIR)\include\QtCore" -I"$(QTDIR)\include\QtGui" -I"$(QTDIR)\include" -I"." -I"$(QTDIR)\include\ActiveQt" -I"debug" -I"." -I$(QTDIR)\mkspecs\win32-msvc2008 -D_MSC_VER=1500 -DWIN32 preferences\prefdialog.h -o debug\moc_prefdialog.cpp + + Rem;prefdialog.h;%(AdditionalInputs) + debug\moc_prefdialog.cpp;%(Outputs) + MOC prefdialog.h + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile release\moc_prefdialog.cpp +$(QTDIR)\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QTDIR)\include\QtCore" -I"$(QTDIR)\include\QtGui" -I"$(QTDIR)\include" -I"." -I"$(QTDIR)\include\ActiveQt" -I"release" -I"." -I$(QTDIR)\mkspecs\win32-msvc2008 -D_MSC_VER=1500 -DWIN32 preferences\prefdialog.h -o release\moc_prefdialog.cpp + + Rem;prefdialog.h;%(AdditionalInputs) + release\moc_prefdialog.cpp;%(Outputs) + + + MOC prefportaudio.h + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile debug\moc_prefportaudio.cpp +$(QTDIR)\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QTDIR)\include\QtCore" -I"$(QTDIR)\include\QtGui" -I"$(QTDIR)\include" -I"." -I"$(QTDIR)\include\ActiveQt" -I"debug" -I"." -I$(QTDIR)\mkspecs\win32-msvc2008 -D_MSC_VER=1500 -DWIN32 preferences\prefportaudio.h -o debug\moc_prefportaudio.cpp + + Rem;prefportaudio.h;%(AdditionalInputs) + debug\moc_prefportaudio.cpp;%(Outputs) + MOC prefportaudio.h + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile release\moc_prefportaudio.cpp +$(QTDIR)\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QTDIR)\include\QtCore" -I"$(QTDIR)\include\QtGui" -I"$(QTDIR)\include" -I"." -I"$(QTDIR)\include\ActiveQt" -I"release" -I"." -I$(QTDIR)\mkspecs\win32-msvc2008 -D_MSC_VER=1500 -DWIN32 preferences\prefportaudio.h -o release\moc_prefportaudio.cpp + + Rem;prefportaudio.h;%(AdditionalInputs) + release\moc_prefportaudio.cpp;%(Outputs) + + + MOC prefsofia.h + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile debug\moc_prefsofia.cpp +$(QTDIR)\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QTDIR)\include\QtCore" -I"$(QTDIR)\include\QtGui" -I"$(QTDIR)\include" -I"." -I"$(QTDIR)\include\ActiveQt" -I"debug" -I"." -I$(QTDIR)\mkspecs\win32-msvc2008 -D_MSC_VER=1500 -DWIN32 preferences\prefsofia.h -o debug\moc_prefsofia.cpp + + Rem;prefsofia.h;%(AdditionalInputs) + debug\moc_prefsofia.cpp;%(Outputs) + MOC prefportaudio.h + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile release\moc_prefsofia.cpp +$(QTDIR)\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QTDIR)\include\QtCore" -I"$(QTDIR)\include\QtGui" -I"$(QTDIR)\include" -I"." -I"$(QTDIR)\include\ActiveQt" -I"release" -I"." -I$(QTDIR)\mkspecs\win32-msvc2008 -D_MSC_VER=1500 -DWIN32 preferences\prefsofia.h -o release\moc_prefsofia.cpp + + Rem;prefsofia.h;%(AdditionalInputs) + release\moc_prefsofia.cpp;%(Outputs) + + + MOC sortfilterproxymodel.h + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile debug\moc_sortfilterproxymodel.cpp +$(QTDIR)\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QTDIR)\include\QtCore" -I"$(QTDIR)\include\QtGui" -I"$(QTDIR)\include" -I"." -I"$(QTDIR)\include\ActiveQt" -I"debug" -I"." -I$(QTDIR)\mkspecs\win32-msvc2008 -D_MSC_VER=1500 -DWIN32 debugtools\sortfilterproxymodel.h -o debug\moc_sortfilterproxymodel.cpp + + Rem;sortfilterproxymodel.h;%(AdditionalInputs) + debug\moc_sortfilterproxymodel.cpp;%(Outputs) + MOC sortfilterproxymodel.h + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile release\moc_sortfilterproxymodel.cpp +$(QTDIR)\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QTDIR)\include\QtCore" -I"$(QTDIR)\include\QtGui" -I"$(QTDIR)\include" -I"." -I"$(QTDIR)\include\ActiveQt" -I"release" -I"." -I$(QTDIR)\mkspecs\win32-msvc2008 -D_MSC_VER=1500 -DWIN32 debugtools\sortfilterproxymodel.h -o release\moc_sortfilterproxymodel.cpp + + Rem;sortfilterproxymodel.h;%(AdditionalInputs) + release\moc_sortfilterproxymodel.cpp;%(Outputs) + + + MOC statedebugdialog.h + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile debug\moc_statedebugdialog.cpp +$(QTDIR)\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QTDIR)\include\QtCore" -I"$(QTDIR)\include\QtGui" -I"$(QTDIR)\include" -I"." -I"$(QTDIR)\include\ActiveQt" -I"debug" -I"." -I$(QTDIR)\mkspecs\win32-msvc2008 -D_MSC_VER=1500 -DWIN32 debugtools\statedebugdialog.h -o debug\moc_statedebugdialog.cpp + + Rem;statedebugdialog.h;%(AdditionalInputs) + debug\moc_statedebugdialog.cpp;%(Outputs) + MOC prefportaudio.h + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile release\moc_statedebugdialog.cpp +$(QTDIR)\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"$(QTDIR)\include\QtCore" -I"$(QTDIR)\include\QtGui" -I"$(QTDIR)\include" -I"." -I"$(QTDIR)\include\ActiveQt" -I"release" -I"." -I$(QTDIR)\mkspecs\win32-msvc2008 -D_MSC_VER=1500 -DWIN32 debugtools\statedebugdialog.h -o release\moc_statedebugdialog.cpp + + Rem;statedebugdialog.h;%(AdditionalInputs) + release\moc_statedebugdialog.cpp;%(Outputs) + + + + + + + + + + + UIC accountdialog.ui + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile .\ui_accountdialog.h +$(QTDIR)\bin\uic.exe preferences\accountdialog.ui -o ui_accountdialog.h + + Rem;accountdialog.ui;%(AdditionalInputs) + ui_accountdialog.h;%(Outputs) + UIC accountdialog.ui + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile .\ui_accountdialog.h +$(QTDIR)\bin\uic.exe preferences\accountdialog.ui -o ui_accountdialog.h + + Rem;accountdialog.ui;%(AdditionalInputs) + ui_accountdialog.h;%(Outputs) + + + UIC codecwidget.ui + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile .\ui_codecwidget.h +$(QTDIR)\bin\uic.exe widgets\codecwidget.ui -o ui_codecwidget.h + + Rem;codecwidgets.ui;%(AdditionalInputs) + ui_codecwidget.h;%(Outputs) + UIC codecwidget.ui + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile .\ui_codecwidget.h +$(QTDIR)\bin\uic.exe widgets\codecwidget.ui -o ui_codecwidget.h + + Rem;codecwidget.ui;%(AdditionalInputs) + ui_codecwidget.h;%(Outputs) + + + UIC consolewindow.ui + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile .\ui_consolewindow.h +$(QTDIR)\bin\uic.exe debugtools\consolewindow.ui -o ui_consolewindow.h + + Rem;consolewindow.ui;%(AdditionalInputs) + ui_consolewindow.h;%(Outputs) + UIC accountdialog.ui + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile .\ui_consolewindow.h +$(QTDIR)\bin\uic.exe debugtools\consolewindow.ui -o ui_consolewindow.h + + Rem;accountdialog.ui;%(AdditionalInputs) + ui_consolewindow.h;%(Outputs) + + + UIC mainwindow.ui + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile .\ui_mainwindow.h +$(QTDIR)\bin\uic.exe mainwindow.ui -o ui_mainwindow.h + + Rem;mainwindow.ui;%(AdditionalInputs) + ui_mainwindow.h;%(Outputs) + UIC mainwindow.ui + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile .\ui_mainwindow.h +$(QTDIR)\bin\uic.exe mainwindow.ui -o ui_mainwindow.h + + Rem;mainwindow.ui;%(AdditionalInputs) + ui_mainwindow.h;%(Outputs) + + + UIC prefdialog.ui + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile .\ui_prefdialog.h +$(QTDIR)\bin\uic.exe preferences\prefdialog.ui -o ui_prefdialog.h + + Rem;prefdialog.ui;%(AdditionalInputs) + ui_prefdialog.h;%(Outputs) + UIC prefdialog.ui + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile .\ui_prefdialog.h +$(QTDIR)\bin\uic.exe preferences\prefdialog.ui -o ui_prefdialog.h + + Rem;prefdialog.ui;%(AdditionalInputs) + ui_prefdialog.h;%(Outputs) + + + UIC statedebugdialog.ui + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile .\ui_statedebugdialog.h +$(QTDIR)\bin\uic.exe debugtools\statedebugdialog.ui -o ui_statedebugdialog.h + + Rem;statedebugdialog.ui;%(AdditionalInputs) + ui_statedebugdialog.h;%(Outputs) + UIC statedebugdialog.ui + Rem IncrediBuild_AllowRemote +Rem IncrediBuild_OutputFile .\ui_statedebugdialog.h +$(QTDIR)\bin\uic.exe debugtools\statedebugdialog.ui -o ui_statedebugdialog.h + + Rem;statedebugdialog.ui;%(AdditionalInputs) + ui_statedebugdialog.h;%(Outputs) + + + + + + + + + RCC resources.qrc + $(QTDIR)\bin\rcc.exe -name resources resources.qrc -o debug\qrc_resources.cpp + + $(QTDIR)\bin\rcc.exe;conf\accounts\example.xml;conf\event_socket.conf.xml;conf\freeswitch.xml;conf\portaudio.conf.xml;resources.qrc;resources\pref_audio.gif;resources\pref_sip.png;resources\splash.png;%(AdditionalInputs) + debug\qrc_resources.cpp;%(Outputs) + RCC resources.qrc + $(QTDIR)\bin\rcc.exe -name resources resources.qrc -o release\qrc_resources.cpp + + $(QTDIR)\bin\rcc.exe;conf\accounts\example.xml;conf\event_socket.conf.xml;conf\freeswitch.xml;conf\portaudio.conf.xml;resources.qrc;resources\pref_audio.gif;resources\pref_sip.png;resources\splash.png;%(AdditionalInputs) + release\qrc_resources.cpp;%(Outputs) + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/libs/broadvoice/src/libbroadvoice.2010.vcxproj b/libs/broadvoice/src/libbroadvoice.2010.vcxproj new file mode 100644 index 0000000000..e5b584a381 --- /dev/null +++ b/libs/broadvoice/src/libbroadvoice.2010.vcxproj @@ -0,0 +1,227 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + libbroadvoice + {CF70F278-3364-4395-A2E1-23501C9B8AD2} + libbroadvoice + Win32Proj + + + + DynamicLibrary + Unicode + true + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + true + + + DynamicLibrary + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(PlatformName)\$(Configuration)\ + $(Configuration)\ + true + $(SolutionDir)$(PlatformName)\$(Configuration)\ + $(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + + + + Disabled + .; .\floating\common; .\floating\bv16; .\floating\bv32; .\broadvoice; .\msvc;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;BROADVOICE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_TGMATH_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level4 + EditAndContinue + CompileAsC + + + true + Windows + false + + + MachineX86 + + + + + .; .\floating\common; .\floating\bv16; .\floating\bv32; .\broadvoice; .\msvc;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;BROADVOICE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_TGMATH_H;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level4 + ProgramDatabase + + + true + Windows + true + true + false + + + MachineX86 + + + + + X64 + + + Disabled + .; .\floating\common; .\floating\bv16; .\floating\bv32; .\broadvoice; .\msvc;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;BROADVOICE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_TGMATH_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level4 + ProgramDatabase + CompileAsC + + + true + Windows + false + + + MachineX64 + + + + + X64 + + + .; .\floating\common; .\floating\bv16; .\floating\bv32; .\broadvoice; .\msvc;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;BROADVOICE_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_TGMATH_H;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level4 + ProgramDatabase + + + true + Windows + true + true + false + + + MachineX64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/esl/fs_cli.2010.vcxproj b/libs/esl/fs_cli.2010.vcxproj new file mode 100644 index 0000000000..948b5ca70f --- /dev/null +++ b/libs/esl/fs_cli.2010.vcxproj @@ -0,0 +1,215 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + fs_cli + {D2FB8043-D208-4AEE-8F18-3B5857C871B9} + fs_cli + Win32Proj + + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(PlatformName)\$(Configuration)\ + $(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + $(SolutionDir)$(PlatformName)\$(Configuration)\ + $(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + + + + $(IntDir)BuildLog $(ProjectName).htm + + + Disabled + $(ProjectDir)getopt;$(ProjectDir)src/include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ESL_DECLARE_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level4 + true + ProgramDatabase + 4100;6053;4706;%(DisableSpecificWarnings) + + + Ws2_32.lib;%(AdditionalDependencies) + $(OutDir);%(AdditionalLibraryDirectories) + true + $(OutDir)fs_cli.pdb + Console + true + + + MachineX86 + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + X64 + + + Disabled + $(ProjectDir)getopt;$(ProjectDir)src/include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ESL_DECLARE_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level4 + true + ProgramDatabase + 4100;6053;4706;%(DisableSpecificWarnings) + + + Ws2_32.lib;%(AdditionalDependencies) + $(OutDir);%(AdditionalLibraryDirectories) + true + $(OutDir)fs_cli.pdb + Console + true + + + MachineX64 + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + $(ProjectDir)getopt;$(ProjectDir)src/include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ESL_DECLARE_STATIC;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level4 + true + ProgramDatabase + 4100;6053;4706;%(DisableSpecificWarnings) + + + Ws2_32.lib;%(AdditionalDependencies) + $(OutDir);%(AdditionalLibraryDirectories) + true + $(OutDir)fs_cli.pdb + Console + true + true + true + + + MachineX86 + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + X64 + + + $(ProjectDir)getopt;$(ProjectDir)src/include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ESL_DECLARE_STATIC;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level4 + true + ProgramDatabase + 4100;6053;4706;%(DisableSpecificWarnings) + + + Ws2_32.lib;%(AdditionalDependencies) + $(OutDir);%(AdditionalLibraryDirectories) + true + $(OutDir)fs_cli.pdb + Console + true + true + true + + + MachineX64 + + + + + + + + + + + + {cf405366-9558-4ae8-90ef-5e21b51ccb4e} + false + + + + + + \ No newline at end of file diff --git a/libs/esl/src/esl.2010.vcxproj b/libs/esl/src/esl.2010.vcxproj new file mode 100644 index 0000000000..ed7b6ea890 --- /dev/null +++ b/libs/esl/src/esl.2010.vcxproj @@ -0,0 +1,158 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + esl + {CF405366-9558-4AE8-90EF-5E21B51CCB4E} + esl + Win32Proj + + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + + + + Disabled + include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;ESL_DECLARE_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level4 + true + ProgramDatabase + 4706;4100;%(DisableSpecificWarnings) + true + + + + + X64 + + + Disabled + include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;ESL_DECLARE_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level4 + false + ProgramDatabase + 4706;4100;%(DisableSpecificWarnings) + true + + + + + include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;ESL_DECLARE_STATIC;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level4 + true + ProgramDatabase + 4706;4100;%(DisableSpecificWarnings) + true + + + + + X64 + + + include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;ESL_DECLARE_STATIC;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level4 + false + ProgramDatabase + 4706;4100;%(DisableSpecificWarnings) + true + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/freetdm/Makefile.am b/libs/freetdm/Makefile.am index c86d00203e..1c878e6cb4 100644 --- a/libs/freetdm/Makefile.am +++ b/libs/freetdm/Makefile.am @@ -257,6 +257,25 @@ ftmod_sangoma_ss7_la_LDFLAGS = -module -avoid-version -lsng_ss7 ftmod_sangoma_ss7_la_LIBADD = $(MYLIB) endif +if SNGISDN +ftmod_sangoma_isdn_la_SOURCES = $(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.c \ + $(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c \ + $(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cntrl.c \ + $(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_trace.c \ + $(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_support.c \ + $(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cntrl.c \ + $(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cfg.c \ + $(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_in.c \ + $(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_out.c + + +ftmod_sangoma_isdn_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS) +ftmod_sangoma_isdn_la_LDFLAGS = -module -avoid-version -lsng_isdn +ftmod_sangoma_isdn_la_LIBADD = $(MYLIB) +endif + + + if OPENR2 ftmod_r2_la_SOURCES = $(SRC)/ftmod/ftmod_r2/ftmod_r2.c ftmod_r2_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS) @@ -264,7 +283,6 @@ ftmod_r2_la_LDFLAGS = -module -avoid-version -lopenr2 ftmod_r2_la_LIBADD = $(MYLIB) endif - dox doxygen: cd docs && doxygen $(FT_SRCDIR)/docs/Doxygen.conf diff --git a/libs/freetdm/configure.ac b/libs/freetdm/configure.ac index cad37c3705..567be44587 100644 --- a/libs/freetdm/configure.ac +++ b/libs/freetdm/configure.ac @@ -173,6 +173,9 @@ AM_CONDITIONAL([LIBPRI],[test "${enable_libpri}" = "yes"]) AC_CHECK_LIB([sng_ss7], [sng_isup_init], [have_sng_ss7="yes"]) AM_CONDITIONAL([SNGSS7],[test "${have_sng_ss7}" = "yes"]) +AC_CHECK_LIB([sng_isdn], [sng_isdn_init], [have_sng_isdn="yes"]) +AM_CONDITIONAL([SNGISDN],[test "${have_sng_isdn}" = "yes"]) + AC_CHECK_LIB([openr2], [openr2_context_set_io_type], [have_openr2="yes"]) AM_CONDITIONAL([OPENR2],[test "${have_openr2}" = "yes"]) diff --git a/libs/freetdm/mod_freetdm/mod_freetdm.c b/libs/freetdm/mod_freetdm/mod_freetdm.c index 268ee0da60..6224c7aea0 100755 --- a/libs/freetdm/mod_freetdm/mod_freetdm.c +++ b/libs/freetdm/mod_freetdm/mod_freetdm.c @@ -973,6 +973,9 @@ static switch_status_t channel_receive_message(switch_core_session_t *session, s ftdm_channel_command(tech_pvt->ftdmchan, FTDM_COMMAND_SET_PRE_BUFFER_SIZE, &tmp); } } + if ((var = switch_channel_get_variable(channel, "freetdm_disable_dtmf"))) { + ftdm_channel_command(tech_pvt->ftdmchan, FTDM_COMMAND_DISABLE_DTMF_DETECT, NULL); + } } break; case SWITCH_MESSAGE_INDICATE_UUID_CHANGE: @@ -1134,6 +1137,80 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi direction = FTDM_BOTTOM_UP; chan_id = 0; } + + if (session && globals.sip_headers) { + switch_channel_t *channel = switch_core_session_get_channel(session); + const char *sipvar; + sipvar = switch_channel_get_variable(channel, "sip_h_X-FreeTDM-CallerName"); + if (sipvar) { + ftdm_set_string(caller_data.cid_name, sipvar); + } + + sipvar = switch_channel_get_variable(channel, "sip_h_X-FreeTDM-CallerNumber"); + if (sipvar) { + ftdm_set_string(caller_data.cid_num.digits, sipvar); + } + + sipvar = switch_channel_get_variable(channel, "sip_h_X-FreeTDM-ANI"); + if (sipvar) { + ftdm_set_string(caller_data.ani.digits, sipvar); + } + + sipvar = switch_channel_get_variable(channel, "sip_h_X-FreeTDM-ANI-TON"); + if (sipvar) { + caller_data.ani.type = atoi(sipvar); + } + + sipvar = switch_channel_get_variable(channel, "sip_h_X-FreeTDM-ANI-Plan"); + if (sipvar) { + caller_data.ani.plan = atoi(sipvar); + } + + sipvar = switch_channel_get_variable(channel, "sip_h_X-FreeTDM-ANI2"); + if (sipvar) { + ftdm_set_string(caller_data.aniII, sipvar); + } + + sipvar = switch_channel_get_variable(channel, "sip_h_X-FreeTDM-DNIS"); + if (sipvar) { + ftdm_set_string(caller_data.dnis.digits, sipvar); + } + + sipvar = switch_channel_get_variable(channel, "sip_h_X-FreeTDM-DNIS-TON"); + if (sipvar) { + caller_data.dnis.type = atoi(sipvar); + } + + sipvar = switch_channel_get_variable(channel, "sip_h_X-FreeTDM-DNIS-Plan"); + if (sipvar) { + caller_data.dnis.plan = atoi(sipvar); + } + + sipvar = switch_channel_get_variable(channel, "sip_h_X-FreeTDM-RDNIS"); + if (sipvar) { + ftdm_set_string(caller_data.rdnis.digits, sipvar); + } + + sipvar = switch_channel_get_variable(channel, "sip_h_X-FreeTDM-RDNIS-TON"); + if (sipvar) { + caller_data.rdnis.type = atoi(sipvar); + } + + sipvar = switch_channel_get_variable(channel, "sip_h_X-FreeTDM-RDNIS-Plan"); + if (sipvar) { + caller_data.rdnis.plan = atoi(sipvar); + } + + sipvar = switch_channel_get_variable(channel, "sip_h_X-FreeTDM-Screen"); + if (sipvar) { + caller_data.screen = atoi(sipvar); + } + + sipvar = switch_channel_get_variable(channel, "sip_h_X-FreeTDM-Presentation"); + if (sipvar) { + caller_data.pres = atoi(sipvar); + } + } if (switch_test_flag(outbound_profile, SWITCH_CPF_SCREEN)) { caller_data.screen = 1; @@ -1369,6 +1446,25 @@ ftdm_status_t ftdm_channel_from_event(ftdm_sigmsg_t *sigmsg, switch_core_session switch_channel_set_variable(channel, "sip_h_X-FreeTDM-SpanName", ftdm_channel_get_span_name(sigmsg->channel)); switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-SpanNumber", "%d", spanid); switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-ChanNumber", "%d", chanid); + + switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-CallerName", "%s", channel_caller_data->cid_name); + switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-CallerNumber", "%s", channel_caller_data->cid_num.digits); + + switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-ANI", "%s", channel_caller_data->ani.digits); + switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-ANI-TON", "%d", channel_caller_data->ani.type); + switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-ANI-Plan", "%d", channel_caller_data->ani.plan); + switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-ANI2", "%s", channel_caller_data->aniII); + + switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-DNIS", "%s", channel_caller_data->dnis.digits); + switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-DNIS-TON", "%s", channel_caller_data->dnis.type); + switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-DNIS-Plan", "%s", channel_caller_data->dnis.plan); + + switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-RDNIS", "%s", channel_caller_data->rdnis.digits); + switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-RDNIS-TON", "%d", channel_caller_data->rdnis.type); + switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-RDNIS-Plan", "%d", channel_caller_data->rdnis.plan); + + switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-Screen", "%d", channel_caller_data->screen); + switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-Presentation", "%d", channel_caller_data->pres); } if (channel_caller_data->raw_data_len) { switch_channel_set_variable_printf(channel, "freetdm_custom_call_data", "%s", channel_caller_data->raw_data); @@ -1452,6 +1548,24 @@ static FIO_SIGNAL_CB_FUNCTION(on_common_signal) return FTDM_BREAK; } +static void ftdm_enable_channel_dtmf(ftdm_channel_t *fchan, switch_channel_t *channel) +{ + if (channel) { + const char *var; + if ((var = switch_channel_get_variable(channel, "freetdm_disable_dtmf"))) { + if (switch_true(var)) { + ftdm_channel_command(fchan, FTDM_COMMAND_DISABLE_DTMF_DETECT, NULL); + ftdm_log(FTDM_LOG_INFO, "DTMF detection disabled in channel %d:%d\n", ftdm_channel_get_span_id(fchan), ftdm_channel_get_id(fchan)); + return; + } + } + /* the variable is not present or has a negative value then proceed to enable DTMF ... */ + } + if (ftdm_channel_command(fchan, FTDM_COMMAND_ENABLE_DTMF_DETECT, NULL) != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_ERROR, "Failed to enable DTMF detection in channel %d:%d\n", ftdm_channel_get_span_id(fchan), ftdm_channel_get_id(fchan)); + } +} + static FIO_SIGNAL_CB_FUNCTION(on_fxo_signal) { switch_core_session_t *session = NULL; @@ -1497,6 +1611,7 @@ static FIO_SIGNAL_CB_FUNCTION(on_fxo_signal) if ((session = ftdm_channel_get_session(sigmsg->channel, 0))) { channel = switch_core_session_get_channel(session); switch_channel_mark_answered(channel); + ftdm_enable_channel_dtmf(sigmsg->channel, channel); switch_core_session_rwunlock(session); } } @@ -1541,6 +1656,7 @@ static FIO_SIGNAL_CB_FUNCTION(on_fxs_signal) if ((session = ftdm_channel_get_session(sigmsg->channel, 0))) { channel = switch_core_session_get_channel(session); switch_channel_mark_answered(channel); + ftdm_enable_channel_dtmf(sigmsg->channel, channel); switch_core_session_rwunlock(session); } } @@ -1837,12 +1953,9 @@ static FIO_SIGNAL_CB_FUNCTION(on_r2_signal) case FTDM_SIGEVENT_UP: { if ((session = ftdm_channel_get_session(sigmsg->channel, 0))) { - ftdm_tone_type_t tt = FTDM_TONE_DTMF; channel = switch_core_session_get_channel(session); switch_channel_mark_answered(channel); - if (ftdm_channel_command(sigmsg->channel, FTDM_COMMAND_ENABLE_DTMF_DETECT, &tt) != FTDM_SUCCESS) { - ftdm_log(FTDM_LOG_ERROR, "Failed to enable DTMF detection in R2 channel %d:%d\n", spanid, chanid); - } + ftdm_enable_channel_dtmf(sigmsg->channel, channel); switch_core_session_rwunlock(session); } } @@ -1879,12 +1992,7 @@ static FIO_SIGNAL_CB_FUNCTION(on_clear_channel_signal) switch(sigmsg->event_id) { case FTDM_SIGEVENT_START: { - ftdm_tone_type_t tt = FTDM_TONE_DTMF; - - if (ftdm_channel_command(sigmsg->channel, FTDM_COMMAND_ENABLE_DTMF_DETECT, &tt) != FTDM_SUCCESS) { - ftdm_log(FTDM_LOG_ERROR, "TONE ERROR\n"); - } - + ftdm_enable_channel_dtmf(sigmsg->channel, NULL); return ftdm_channel_from_event(sigmsg, &session); } break; @@ -1905,12 +2013,9 @@ static FIO_SIGNAL_CB_FUNCTION(on_clear_channel_signal) case FTDM_SIGEVENT_UP: { if ((session = ftdm_channel_get_session(sigmsg->channel, 0))) { - ftdm_tone_type_t tt = FTDM_TONE_DTMF; channel = switch_core_session_get_channel(session); switch_channel_mark_answered(channel); - if (ftdm_channel_command(sigmsg->channel, FTDM_COMMAND_ENABLE_DTMF_DETECT, &tt) != FTDM_SUCCESS) { - ftdm_log(FTDM_LOG_ERROR, "TONE ERROR\n"); - } + ftdm_enable_channel_dtmf(sigmsg->channel, channel); switch_core_session_rwunlock(session); } else { const char *uuid = ftdm_channel_get_uuid(sigmsg->channel, 0); @@ -2161,6 +2266,47 @@ static ftdm_conf_node_t *get_ss7_config_node(switch_xml_t cfg, const char *confn return rootnode; } +static int add_profile_parameters(switch_xml_t cfg, const char *profname, ftdm_conf_parameter_t *parameters, int len) +{ + switch_xml_t profnode, profile, param; + int paramindex = 0; + + profnode = switch_xml_child(cfg, "config_profiles"); + if (!profnode) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "cannot find profile '%s', there is no 'config_profiles' XML section\n", profname); + return 0; + } + + /* search the profile */ + for (profile = switch_xml_child(profnode, "profile"); profile; profile = profile->next) { + char *name = (char *) switch_xml_attr(profile, "name"); + if (!name) { + continue; + } + if (!strcasecmp(name, profname)) { + break; + } + } + + if (!profile) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "failed to find profile '%s'\n", profname); + return 0; + } + + for (param = switch_xml_child(profile, "param"); param; param = param->next) { + char *var = (char *) switch_xml_attr_soft(param, "name"); + char *val = (char *) switch_xml_attr_soft(param, "value"); + if (!var || !val) { + continue; + } + parameters[paramindex].var = var; + parameters[paramindex].val = val; + paramindex++; + } + + return paramindex; +} + static switch_status_t load_config(void) { const char *cf = "freetdm.conf"; @@ -2198,6 +2344,97 @@ static switch_status_t load_config(void) } } + if ((spans = switch_xml_child(cfg, "sangoma_isdn_spans"))) { + for (myspan = switch_xml_child(spans, "span"); myspan; myspan = myspan->next) { + ftdm_status_t zstatus = FTDM_FAIL; + const char *context = "default"; + const char *dialplan = "XML"; + ftdm_conf_parameter_t spanparameters[30]; + char *id = (char *) switch_xml_attr(myspan, "id"); + char *name = (char *) switch_xml_attr(myspan, "name"); + char *configname = (char *) switch_xml_attr(myspan, "cfgprofile"); + ftdm_span_t *span = NULL; + uint32_t span_id = 0; + unsigned paramindex = 0; + + if (!name && !id) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "sangoma isdn span missing required attribute 'id' or 'name', skipping ...\n"); + continue; + } + + if (!configname) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "sangoma isdn span missing required attribute, skipping ...\n"); + continue; + } + + if (name) { + zstatus = ftdm_span_find_by_name(name, &span); + } else { + if (switch_is_number(id)) { + span_id = atoi(id); + zstatus = ftdm_span_find(span_id, &span); + } + + if (zstatus != FTDM_SUCCESS) { + zstatus = ftdm_span_find_by_name(id, &span); + } + } + + if (zstatus != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_ERROR, "Error finding FreeTDM span id:%s name:%s\n", switch_str_nil(id), switch_str_nil(name)); + continue; + } + + if (!span_id) { + span_id = ftdm_span_get_id(span); + } + + memset(spanparameters, 0, sizeof(spanparameters)); + paramindex = 0; + + if (configname) { + paramindex = add_profile_parameters(cfg, configname, spanparameters, ftdm_array_len(spanparameters)); + if (paramindex) { + ftdm_log(FTDM_LOG_DEBUG, "Added %d parameters from profile %s for span %d\n", paramindex, configname, span_id); + } + } + + for (param = switch_xml_child(myspan, "param"); param; param = param->next) { + char *var = (char *) switch_xml_attr_soft(param, "name"); + char *val = (char *) switch_xml_attr_soft(param, "value"); + + if (ftdm_array_len(spanparameters) == paramindex) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Too many parameters for ss7 span, ignoring any parameter after %s\n", var); + break; + } + + if (!strcasecmp(var, "context")) { + context = val; + } else if (!strcasecmp(var, "dialplan")) { + dialplan = val; + } else { + spanparameters[paramindex].var = var; + spanparameters[paramindex].val = val; + paramindex++; + } + } + + if (ftdm_configure_span_signaling(span, + "sangoma_isdn", + on_clear_channel_signal, + spanparameters) != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_ERROR, "Error configuring Sangoma ISDN FreeTDM span %d\n", span_id); + continue; + } + SPAN_CONFIG[span_id].span = span; + switch_copy_string(SPAN_CONFIG[span_id].context, context, sizeof(SPAN_CONFIG[span_id].context)); + switch_copy_string(SPAN_CONFIG[span_id].dialplan, dialplan, sizeof(SPAN_CONFIG[span_id].dialplan)); + switch_copy_string(SPAN_CONFIG[span_id].type, "Sangoma (ISDN)", sizeof(SPAN_CONFIG[span_id].type)); + ftdm_log(FTDM_LOG_DEBUG, "Configured Sangoma ISDN FreeTDM span %d\n", span_id); + ftdm_span_start(span); + } + } + switch_core_hash_init(&globals.ss7_configs, module_pool); if ((spans = switch_xml_child(cfg, "sangoma_ss7_spans"))) { for (myspan = switch_xml_child(spans, "span"); myspan; myspan = myspan->next) { @@ -2984,7 +3221,7 @@ static switch_status_t load_config(void) /* start all boost spans now that we're done configuring. Unfortunately at this point boost modules have the limitation * of needing all spans to be configured before starting them */ - for ( ; i < boosti; i++) { + for (i=0 ; i < boosti; i++) { boost_span = boost_spans[i]; ftdm_log(FTDM_LOG_DEBUG, "Starting boost span %d\n", ftdm_span_get_id(boost_span)); if (ftdm_span_start(boost_span) == FTDM_FAIL) { @@ -3422,6 +3659,7 @@ SWITCH_STANDARD_API(ft_function) char tracepath[255]; unsigned i = 0; uint32_t chan_id = 0; + uint32_t span_id = 0; uint32_t chan_count = 0; ftdm_span_t *span = NULL; ftdm_channel_t *chan = NULL; @@ -3442,18 +3680,19 @@ SWITCH_STANDARD_API(ft_function) goto end; } } + span_id = ftdm_span_get_id(span); if (chan_id) { chan = ftdm_span_get_channel(span, chan_id); - snprintf(tracepath, sizeof(tracepath), "%s-in-c%d", argv[1], chan_id); + snprintf(tracepath, sizeof(tracepath), "%s-in-s%dc%d", argv[1], span_id, chan_id); ftdm_channel_command(chan, FTDM_COMMAND_TRACE_INPUT, tracepath); - snprintf(tracepath, sizeof(tracepath), "%s-out-c%d", argv[1], chan_id); + snprintf(tracepath, sizeof(tracepath), "%s-out-s%dc%d", argv[1], span_id, chan_id); ftdm_channel_command(chan, FTDM_COMMAND_TRACE_OUTPUT, tracepath); } else { for (i = 1; i <= chan_count; i++) { chan = ftdm_span_get_channel(span, i); - snprintf(tracepath, sizeof(tracepath), "%s-in-c%d", argv[1], i); + snprintf(tracepath, sizeof(tracepath), "%s-in-s%dc%d", argv[1], span_id, i); ftdm_channel_command(chan, FTDM_COMMAND_TRACE_INPUT, tracepath); - snprintf(tracepath, sizeof(tracepath), "%s-out-c%d", argv[1], i); + snprintf(tracepath, sizeof(tracepath), "%s-out-s%dc%d", argv[1], span_id, i); ftdm_channel_command(chan, FTDM_COMMAND_TRACE_OUTPUT, tracepath); } } diff --git a/libs/freetdm/src/ftdm_io.c b/libs/freetdm/src/ftdm_io.c index abcb3d6fb2..d813fa5a48 100644 --- a/libs/freetdm/src/ftdm_io.c +++ b/libs/freetdm/src/ftdm_io.c @@ -2252,9 +2252,9 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_command(ftdm_channel_t *ftdmchan, ftdm_co close(ftdmchan->fds[FTDM_READ_TRACE_INDEX]); ftdmchan->fds[FTDM_READ_TRACE_INDEX] = -1; } - if (ftdmchan->fds[FTDM_READ_TRACE_INDEX] > 0) { - close(ftdmchan->fds[FTDM_READ_TRACE_INDEX]); - ftdmchan->fds[FTDM_READ_TRACE_INDEX] = -1; + if (ftdmchan->fds[FTDM_WRITE_TRACE_INDEX] > 0) { + close(ftdmchan->fds[FTDM_WRITE_TRACE_INDEX]); + ftdmchan->fds[FTDM_WRITE_TRACE_INDEX] = -1; } GOTO_STATUS(done, FTDM_SUCCESS); } @@ -2911,16 +2911,22 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_read(ftdm_channel_t *ftdmchan, void *data if (!ftdm_test_flag(ftdmchan, FTDM_CHANNEL_OPEN)) { snprintf(ftdmchan->last_error, sizeof(ftdmchan->last_error), "channel not open"); + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_WARNING, "cannot read from channel that is not open\n"); return FTDM_FAIL; } if (!ftdmchan->fio->read) { snprintf(ftdmchan->last_error, sizeof(ftdmchan->last_error), "method not implemented"); + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_ERROR, "read method not implemented\n"); return FTDM_FAIL; } status = ftdm_raw_read(ftdmchan, data, datalen); + if (status != FTDM_SUCCESS) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_WARNING, "raw I/O read filed\n"); + } + if (status == FTDM_SUCCESS) { if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_USE_RX_GAIN) && (ftdmchan->native_codec == FTDM_CODEC_ALAW || ftdmchan->native_codec == FTDM_CODEC_ULAW)) { @@ -2947,6 +2953,7 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_read(ftdm_channel_t *ftdmchan, void *data status = codec_func(data, max, datalen); } else { snprintf(ftdmchan->last_error, sizeof(ftdmchan->last_error), "codec error!"); + ftdm_log_chan(ftdmchan, FTDM_LOG_ERROR, "no codec function to perform transcoding from %d to %d\n", ftdmchan->native_codec, ftdmchan->effective_codec); status = FTDM_FAIL; } } @@ -2979,6 +2986,7 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_read(ftdm_channel_t *ftdmchan, void *data *sln++ = alaw_to_linear(*lp++); } else { snprintf(ftdmchan->last_error, sizeof(ftdmchan->last_error), "codec error!"); + ftdm_log_chan(ftdmchan, FTDM_LOG_ERROR, "invalid effective codec %d\n", ftdmchan->effective_codec); return FTDM_FAIL; } } diff --git a/libs/freetdm/src/ftdm_sched.c b/libs/freetdm/src/ftdm_sched.c index fc9fe60446..5aacc202bf 100644 --- a/libs/freetdm/src/ftdm_sched.c +++ b/libs/freetdm/src/ftdm_sched.c @@ -128,8 +128,16 @@ FT_DECLARE(ftdm_status_t) ftdm_sched_free_run(ftdm_sched_t *sched) ftdm_status_t status = FTDM_FAIL; ftdm_assert_return(sched != NULL, FTDM_EINVAL, "invalid pointer\n"); + ftdm_mutex_lock(sched->mutex); + ftdm_mutex_lock(sched_globals.mutex); + if (sched->freerun) { + ftdm_log(FTDM_LOG_ERROR, "Schedule %s is already running in free run\n", sched->name); + goto done; + } + sched->freerun = 1; + if (sched_globals.running == FTDM_FALSE) { ftdm_log(FTDM_LOG_NOTICE, "Launching main schedule thread\n"); status = ftdm_thread_create_detached(run_main_schedule, NULL); @@ -154,6 +162,8 @@ FT_DECLARE(ftdm_status_t) ftdm_sched_free_run(ftdm_sched_t *sched) done: ftdm_mutex_unlock(sched_globals.mutex); + + ftdm_mutex_unlock(sched->mutex); return status; } diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.c b/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.c index 9716a8c9bd..fc83ab507b 100644 --- a/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.c +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.c @@ -1218,11 +1218,12 @@ static void handle_incoming_digit(sangomabc_connection_t *mcon, ftdm_span_t *spa static ftdm_channel_t* event_process_states(ftdm_span_t *span, sangomabc_short_event_t *event) { ftdm_channel_t *ftdmchan = NULL; + ftdm_sangoma_boost_data_t *signal_data = span->signal_data; switch (event->event_id) { case SIGBOOST_EVENT_CALL_START_NACK: case SIGBOOST_EVENT_CALL_START_NACK_ACK: - if (event->call_setup_id) { + if (event->call_setup_id && !signal_data->sigmod) { return NULL; } //if event->span and event->chan is valid, fall-through @@ -1238,8 +1239,8 @@ static ftdm_channel_t* event_process_states(ftdm_span_t *span, sangomabc_short_e case SIGBOOST_EVENT_CALL_RELEASED: if (!(ftdmchan = find_ftdmchan(span, (sangomabc_short_event_t*)event, 1))) { ftdm_log(FTDM_LOG_CRIT, "could not find channel %d:%d to process pending state changes!\n", - BOOST_EVENT_SPAN(((ftdm_sangoma_boost_data_t*)(span->signal_data))->sigmod, event), - BOOST_EVENT_CHAN(((ftdm_sangoma_boost_data_t*)(span->signal_data))->sigmod, event)); + BOOST_EVENT_SPAN(signal_data->sigmod, event), + BOOST_EVENT_CHAN(signal_data->sigmod, event)); return NULL; } break; @@ -1353,14 +1354,22 @@ static int parse_sangoma_event(ftdm_span_t *span, sangomabc_connection_t *mcon, * \brief Handler for channel state change * \param ftdmchan Channel to handle */ -static __inline__ void state_advance(ftdm_channel_t *ftdmchan) +static __inline__ ftdm_status_t state_advance(ftdm_channel_t *ftdmchan) { - ftdm_sangoma_boost_data_t *sangoma_boost_data = ftdmchan->span->signal_data; sangomabc_connection_t *mcon = &sangoma_boost_data->mcon; ftdm_sigmsg_t sig; ftdm_status_t status; + + if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_STATE_CHANGE)) { + ftdm_clear_flag(ftdmchan, FTDM_CHANNEL_STATE_CHANGE); + } else { + return FTDM_SUCCESS; + } + + ftdm_assert_return(ftdmchan->last_state != ftdmchan->state, FTDM_FAIL, "Channel state already processed\n"); + ftdm_log(FTDM_LOG_DEBUG, "%d:%d PROCESSING STATE [%s]\n", ftdmchan->span_id, ftdmchan->chan_id, ftdm_channel_state2str(ftdmchan->state)); memset(&sig, 0, sizeof(sig)); @@ -1455,7 +1464,7 @@ static __inline__ void state_advance(ftdm_channel_t *ftdmchan) BOOST_CHAN(ftdmchan), 0, SIGBOOST_EVENT_CALL_START_ACK, - 0, 0); + 0, SIGBOOST_PROGRESS_RING); } } } @@ -1618,14 +1627,14 @@ static __inline__ void state_advance(ftdm_channel_t *ftdmchan) default: break; } + ftdm_channel_complete_state(ftdmchan); + return FTDM_SUCCESS; } static __inline__ void advance_chan_states(ftdm_channel_t *ftdmchan) { while (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_STATE_CHANGE)) { - ftdm_clear_flag(ftdmchan, FTDM_CHANNEL_STATE_CHANGE); state_advance(ftdmchan); - ftdm_channel_complete_state(ftdmchan); } } @@ -1664,7 +1673,6 @@ static __inline__ void check_state(ftdm_span_t *span) ftdm_set_state(span->channels[j], FTDM_CHANNEL_STATE_RESTART); } state_advance(span->channels[j]); - ftdm_channel_complete_state(span->channels[j]); ftdm_mutex_unlock(span->channels[j]->mutex); } } @@ -1674,11 +1682,7 @@ static __inline__ void check_state(ftdm_span_t *span) * but without taking the chan out of the queue, so check th * flag before advancing the state */ ftdm_mutex_lock(ftdmchan->mutex); - if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_STATE_CHANGE)) { - ftdm_clear_flag(ftdmchan, FTDM_CHANNEL_STATE_CHANGE); - state_advance(ftdmchan); - ftdm_channel_complete_state(ftdmchan); - } + state_advance(ftdmchan); ftdm_mutex_unlock(ftdmchan->mutex); } } diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.c b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.c new file mode 100644 index 0000000000..1872d4adab --- /dev/null +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.c @@ -0,0 +1,1071 @@ +/* + * Copyright (c) 2010, Sangoma Technologies + * David Yat Sin + * Moises Silva + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of the original author; nor the names of any contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "ftmod_sangoma_isdn.h" + +static void *ftdm_sangoma_isdn_run(ftdm_thread_t *me, void *obj); +static void ftdm_sangoma_isdn_process_state_change(ftdm_channel_t *ftdmchan); + +static ftdm_status_t ftdm_sangoma_isdn_stop(ftdm_span_t *span); +static ftdm_status_t ftdm_sangoma_isdn_start(ftdm_span_t *span); + +static ftdm_io_interface_t g_sngisdn_io_interface; +static sng_isdn_event_interface_t g_sngisdn_event_interface; + +ftdm_sngisdn_data_t g_sngisdn_data; + +extern ftdm_status_t sng_isdn_activate_trace(ftdm_span_t *span, sngisdn_tracetype_t trace_opt); + +ftdm_state_map_t sangoma_isdn_state_map = { + { + { + ZSD_INBOUND, + ZSM_UNACCEPTABLE, + {FTDM_ANY_STATE, FTDM_END}, + {FTDM_CHANNEL_STATE_RESTART, FTDM_CHANNEL_STATE_SUSPENDED, FTDM_END} + }, + { + ZSD_INBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_RESTART, FTDM_END}, + {FTDM_CHANNEL_STATE_DOWN, FTDM_CHANNEL_STATE_TERMINATING, FTDM_CHANNEL_STATE_HANGUP, FTDM_END} + }, + { + ZSD_INBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_CANCEL, FTDM_END}, + {FTDM_CHANNEL_STATE_HANGUP, FTDM_END} + }, + { + ZSD_INBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_SUSPENDED, FTDM_END}, + {FTDM_CHANNEL_STATE_DOWN, FTDM_CHANNEL_STATE_COLLECT, FTDM_CHANNEL_STATE_RING, FTDM_CHANNEL_STATE_DIALING, + FTDM_CHANNEL_STATE_RESTART, FTDM_CHANNEL_STATE_PROGRESS, FTDM_CHANNEL_STATE_PROGRESS_MEDIA, FTDM_CHANNEL_STATE_UP, + FTDM_CHANNEL_STATE_TERMINATING, FTDM_CHANNEL_STATE_CANCEL, FTDM_CHANNEL_STATE_HANGUP, FTDM_CHANNEL_STATE_HANGUP_COMPLETE, FTDM_END} + }, + { + ZSD_INBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_DOWN, FTDM_END}, + {FTDM_CHANNEL_STATE_COLLECT, FTDM_CHANNEL_STATE_IN_LOOP, FTDM_END} + }, + { + ZSD_INBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_COLLECT, FTDM_END}, + {FTDM_CHANNEL_STATE_RING, FTDM_CHANNEL_STATE_CANCEL, FTDM_CHANNEL_STATE_IN_LOOP, FTDM_END} + }, + { + ZSD_INBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_IN_LOOP, FTDM_END}, + {FTDM_CHANNEL_STATE_COLLECT, FTDM_CHANNEL_STATE_DOWN, FTDM_END} + }, + { + ZSD_INBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_RING, FTDM_END}, + {FTDM_CHANNEL_STATE_TERMINATING, FTDM_CHANNEL_STATE_HANGUP, FTDM_CHANNEL_STATE_PROGRESS, FTDM_END} + }, + { + ZSD_INBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_PROGRESS, FTDM_END}, + {FTDM_CHANNEL_STATE_TERMINATING, FTDM_CHANNEL_STATE_HANGUP, FTDM_CHANNEL_STATE_PROGRESS_MEDIA, FTDM_END}, + }, + { + ZSD_INBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_PROGRESS_MEDIA, FTDM_END}, + {FTDM_CHANNEL_STATE_TERMINATING, FTDM_CHANNEL_STATE_HANGUP, FTDM_CHANNEL_STATE_UP, FTDM_END}, + }, + { + ZSD_INBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_UP, FTDM_END}, + {FTDM_CHANNEL_STATE_HANGUP, FTDM_CHANNEL_STATE_TERMINATING, FTDM_END}, + }, + { + ZSD_INBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_TERMINATING, FTDM_END}, + {FTDM_CHANNEL_STATE_HANGUP, FTDM_END}, + }, + { + ZSD_INBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_HANGUP, FTDM_END}, + {FTDM_CHANNEL_STATE_HANGUP_COMPLETE, FTDM_END}, + }, + { + ZSD_INBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_HANGUP_COMPLETE, FTDM_END}, + {FTDM_CHANNEL_STATE_DOWN, FTDM_END}, + }, + /**************************************************************************/ + { + ZSD_OUTBOUND, + ZSM_UNACCEPTABLE, + {FTDM_ANY_STATE, FTDM_END}, + {FTDM_CHANNEL_STATE_RESTART, FTDM_CHANNEL_STATE_SUSPENDED, FTDM_CHANNEL_STATE_TERMINATING, FTDM_END} + }, + { + ZSD_OUTBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_RESTART, FTDM_END}, + {FTDM_CHANNEL_STATE_DOWN, FTDM_CHANNEL_STATE_TERMINATING, FTDM_CHANNEL_STATE_HANGUP, FTDM_END} + }, + { + ZSD_OUTBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_CANCEL, FTDM_END}, + {FTDM_CHANNEL_STATE_HANGUP, FTDM_END} + }, + { + ZSD_OUTBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_SUSPENDED, FTDM_END}, + {FTDM_CHANNEL_STATE_DOWN, FTDM_CHANNEL_STATE_COLLECT, FTDM_CHANNEL_STATE_RING, FTDM_CHANNEL_STATE_DIALING, + FTDM_CHANNEL_STATE_RESTART, FTDM_CHANNEL_STATE_PROGRESS, FTDM_CHANNEL_STATE_PROGRESS_MEDIA, FTDM_CHANNEL_STATE_UP, + FTDM_CHANNEL_STATE_TERMINATING, FTDM_CHANNEL_STATE_CANCEL, FTDM_CHANNEL_STATE_HANGUP, FTDM_CHANNEL_STATE_HANGUP_COMPLETE, FTDM_END} + }, + { + ZSD_OUTBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_DOWN, FTDM_END}, + {FTDM_CHANNEL_STATE_DIALING, FTDM_END} + }, + { + ZSD_OUTBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_DIALING, FTDM_END}, + {FTDM_CHANNEL_STATE_TERMINATING, FTDM_CHANNEL_STATE_HANGUP, FTDM_CHANNEL_STATE_PROGRESS, FTDM_CHANNEL_STATE_DOWN, FTDM_END} + }, + { + ZSD_OUTBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_PROGRESS, FTDM_END}, + {FTDM_CHANNEL_STATE_TERMINATING, FTDM_CHANNEL_STATE_HANGUP, FTDM_CHANNEL_STATE_PROGRESS_MEDIA, FTDM_CHANNEL_STATE_UP, FTDM_END}, + }, + { + ZSD_OUTBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_PROGRESS_MEDIA, FTDM_END}, + {FTDM_CHANNEL_STATE_TERMINATING, FTDM_CHANNEL_STATE_HANGUP, FTDM_CHANNEL_STATE_UP, FTDM_END}, + }, + { + ZSD_OUTBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_UP, FTDM_END}, + {FTDM_CHANNEL_STATE_HANGUP, FTDM_CHANNEL_STATE_TERMINATING, FTDM_END}, + }, + { + ZSD_OUTBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_TERMINATING, FTDM_END}, + {FTDM_CHANNEL_STATE_HANGUP, FTDM_END}, + }, + { + ZSD_OUTBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_HANGUP, FTDM_END}, + {FTDM_CHANNEL_STATE_HANGUP_COMPLETE, FTDM_END}, + }, + { + ZSD_OUTBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_HANGUP_COMPLETE, FTDM_END}, + {FTDM_CHANNEL_STATE_DOWN, FTDM_END}, + } + } +}; + +static void *ftdm_sangoma_isdn_run(ftdm_thread_t *me, void *obj) +{ + ftdm_interrupt_t *ftdm_sangoma_isdn_int = NULL; + ftdm_span_t *span = (ftdm_span_t *) obj; + ftdm_channel_t *ftdmchan = NULL; + + ftdm_log(FTDM_LOG_INFO, "ftmod_sangoma_isdn monitor thread for span=%u started.\n", span->span_id); + + /* set IN_THREAD flag so that we know this thread is running */ + ftdm_set_flag(span, FTDM_SPAN_IN_THREAD); + + /* get an interrupt queue for this span */ + if (ftdm_queue_get_interrupt(span->pendingchans, &ftdm_sangoma_isdn_int) != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_CRIT, "%s:Failed to get a ftdm_interrupt for span = %s!\n", span->name); + goto ftdm_sangoma_isdn_run_exit; + } + + while (ftdm_running() && !(ftdm_test_flag(span, FTDM_SPAN_STOP_THREAD))) { + + /* find out why we returned from the interrupt queue */ + switch ((ftdm_interrupt_wait(ftdm_sangoma_isdn_int, 100))) { + case FTDM_SUCCESS: /* there was a state change on the span */ + /* process all pending state changes */ + while ((ftdmchan = ftdm_queue_dequeue(span->pendingchans))) { + /* double check that this channel has a state change pending */ + if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_STATE_CHANGE)) { + ftdm_sangoma_isdn_process_state_change(ftdmchan); + } else { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_ERROR, "reported state change but state change flag not set\n"); + } + } + + break; + + case FTDM_TIMEOUT: + /* twiddle */ + break; + + case FTDM_FAIL: + ftdm_log(FTDM_LOG_ERROR,"ftdm_interrupt_wait returned error!\non span = %s\n", span->name); + break; + + default: + ftdm_log(FTDM_LOG_ERROR,"ftdm_interrupt_wait returned with unknown code on span = %s\n", span->name); + break; + + } + + } + + /* clear the IN_THREAD flag so that we know the thread is done */ + ftdm_clear_flag(span, FTDM_SPAN_IN_THREAD); + + ftdm_log(FTDM_LOG_INFO, "ftmod_sangoma_isdn monitor thread for span %s stopping.\n", span->name); + + return NULL; + +ftdm_sangoma_isdn_run_exit: + + /* clear the IN_THREAD flag so that we know the thread is done */ + ftdm_clear_flag(span, FTDM_SPAN_IN_THREAD); + + ftdm_log(FTDM_LOG_INFO, "ftmod_sangoma_isdn monitor thread for span %s stopping due to error.\n", span->name); + + return NULL; +} + +/******************************************************************************/ +static void ftdm_sangoma_isdn_process_state_change(ftdm_channel_t *ftdmchan) +{ + ftdm_sigmsg_t sigev; + ftdm_signaling_status_t status; + sngisdn_chan_data_t *sngisdn_info = ftdmchan->call_data; + + memset(&sigev, 0, sizeof(sigev)); + + sigev.chan_id = ftdmchan->chan_id; + sigev.span_id = ftdmchan->span_id; + sigev.channel = ftdmchan; + + /*first lock the channel*/ + ftdm_mutex_lock(ftdmchan->mutex); + + /*clear the state change flag...since we might be setting a new state*/ + ftdm_clear_flag(ftdmchan, FTDM_CHANNEL_STATE_CHANGE); + + ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "processing state change to %s\n", ftdm_channel_state2str(ftdmchan->state)); + + switch (ftdmchan->state) { + + case FTDM_CHANNEL_STATE_COLLECT: /* SETUP received but wating on digits */ + { + if (ftdmchan->last_state == FTDM_CHANNEL_STATE_SUSPENDED) { + + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "re-entering state from processing block/unblock request - do nothing\n"); + break; + } + + /* TODO: Overlap receive not implemented yet - cannot do it the same way as PRI requires sending complete bit */ + + /* Go straight to ring state for now */ + + /*now go to the RING state*/ + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_RING); + } + break; + case FTDM_CHANNEL_STATE_RING: /* incoming call request */ + { + ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Sending incoming call from %s to %s to FTDM core\n", ftdmchan->caller_data.ani.digits, ftdmchan->caller_data.dnis.digits); + + /* we have enough information to inform FTDM of the call*/ + sigev.event_id = FTDM_SIGEVENT_START; + ftdm_span_send_signal(ftdmchan->span, &sigev); + } + break; + + case FTDM_CHANNEL_STATE_DIALING: /* outgoing call request */ + { + if (ftdmchan->last_state == FTDM_CHANNEL_STATE_SUSPENDED) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "re-entering state from processing block/unblock request ... do nothing \n"); + break; + } + sngisdn_snd_setup(ftdmchan); + } + break; + case FTDM_CHANNEL_STATE_PROGRESS: + { + if (ftdmchan->last_state == FTDM_CHANNEL_STATE_SUSPENDED) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "re-entering state from processing block/unblock request ... do nothing \n"); + break; + } + + /*check if the channel is inbound or outbound*/ + if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_OUTBOUND)) { + /*OUTBOUND...so we were told by the line of this so noifiy the user*/ + sigev.event_id = FTDM_SIGEVENT_PROGRESS; + ftdm_span_send_signal(ftdmchan->span, &sigev); + } else { + sngisdn_snd_proceed(ftdmchan); + } + } + break; + + case FTDM_CHANNEL_STATE_PROGRESS_MEDIA: + { + if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_OUTBOUND)) { + sigev.event_id = FTDM_SIGEVENT_PROGRESS_MEDIA; + ftdm_span_send_signal(ftdmchan->span, &sigev); + } else { + sngisdn_snd_progress(ftdmchan); + } + } + break; + + case FTDM_CHANNEL_STATE_UP: /* call is answered */ + { + if (ftdmchan->last_state == FTDM_CHANNEL_STATE_SUSPENDED) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "re-entering state from processing block/unblock request ... do nothing \n"); + break; + } + + if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_OUTBOUND)) { + if (ftdmchan->span->trunk_type == FTDM_TRUNK_BRI_PTMP && + ((sngisdn_span_data_t*)ftdmchan->span->signal_data)->signalling == SNGISDN_SIGNALING_NET) { + /* Assign the call to a specific equipment */ + sngisdn_snd_con_complete(ftdmchan); + } + } + + /* check if the channel is inbound or outbound */ + if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_OUTBOUND)) { + /* OUTBOUND ... so we were told by the line that the other side answered */ + sigev.event_id = FTDM_SIGEVENT_UP; + ftdm_span_send_signal(ftdmchan->span, &sigev); + } else { + /* INBOUND ... so FS told us it just answered ... tell the stack */ + sngisdn_snd_connect(ftdmchan); + } + } + break; + + case FTDM_CHANNEL_STATE_CANCEL: + { + if (ftdmchan->last_state == FTDM_CHANNEL_STATE_SUSPENDED) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "re-entering state from processing block/unblock request ... do nothing \n"); + break; + } + + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Hanging up call before informing user!\n"); + + /* Send a release complete */ + sngisdn_snd_release(ftdmchan); + /*now go to the HANGUP complete state*/ + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_HANGUP_COMPLETE); + } + break; + + case FTDM_CHANNEL_STATE_TERMINATING: /* call is hung up by the remote end */ + { + if (ftdmchan->last_state == FTDM_CHANNEL_STATE_SUSPENDED) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "re-entering state from processing block/unblock request ... do nothing \n"); + break; + } + + /* this state is set when the line is hanging up */ + sigev.event_id = FTDM_SIGEVENT_STOP; + ftdm_span_send_signal(ftdmchan->span, &sigev); + } + break; + + case FTDM_CHANNEL_STATE_HANGUP: /* call is hung up locally */ + { + if (ftdmchan->last_state == FTDM_CHANNEL_STATE_SUSPENDED) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "re-entering state from processing block/unblock request ... do nothing \n"); + break; + } + + if (ftdm_test_flag(sngisdn_info, FLAG_REMOTE_REL)) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Acknowledging remote hangup\n"); + sngisdn_snd_release(ftdmchan); + } else if (ftdm_test_flag(sngisdn_info, FLAG_REMOTE_ABORT)) { + /* Do not send any messages to remote switch as they aborted */ + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Clearing local states from remote abort\n"); + } else { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Hanging up call upon local request!\n"); + + /* set the flag to indicate this hangup is started from the local side */ + ftdm_set_flag(sngisdn_info, FLAG_LOCAL_REL); + + /* If we never sent ack to incoming call, we need to send release instead of disconnect */ + if (ftdmchan->last_state == FTDM_CHANNEL_STATE_RING) { + ftdm_set_flag(sngisdn_info, FLAG_LOCAL_ABORT); + sngisdn_snd_release(ftdmchan); + } else { + sngisdn_snd_disconnect(ftdmchan); + } + + } + + /* now go to the HANGUP complete state */ + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_HANGUP_COMPLETE); + } + break; + + case FTDM_CHANNEL_STATE_HANGUP_COMPLETE: + { + if (ftdmchan->last_state == FTDM_CHANNEL_STATE_SUSPENDED) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "re-entering state from processing block/unblock request ... do nothing \n"); + break; + } + + if (ftdm_test_flag(sngisdn_info, FLAG_REMOTE_REL)) { + if (sngisdn_test_flag(sngisdn_info, FLAG_RESET_TX)) { + /* go to RESTART State until RSCa is received */ + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_RESTART); + } + /* Do nothing as we will receive a RELEASE COMPLETE from remote switch */ + } else if (ftdm_test_flag(sngisdn_info, FLAG_REMOTE_ABORT) || + ftdm_test_flag(sngisdn_info, FLAG_LOCAL_ABORT)) { + /* If the remote side aborted, we will not get anymore message for this call */ + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_DOWN); + } else { + /* twiddle, waiting on remote confirmation before moving to down */ + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Completing locally requested hangup\n"); + } + } + break; + + case FTDM_CHANNEL_STATE_DOWN: /* the call is finished and removed */ + { + if (ftdmchan->last_state == FTDM_CHANNEL_STATE_SUSPENDED) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "re-entering state from processing block/unblock request ... do nothing \n"); + break; + } + + /* check if there is a reset response that needs to be sent */ + if (sngisdn_test_flag(sngisdn_info, FLAG_RESET_RX)) { + /* send a RLC */ + sngisdn_snd_release(ftdmchan); + + /* inform Ftdm that the "sig" is up now for this channel */ + status = FTDM_SIG_STATE_UP; + sigev.event_id = FTDM_SIGEVENT_SIGSTATUS_CHANGED; + sigev.raw_data = &status; + ftdm_span_send_signal(ftdmchan->span, &sigev); + } + + /* check if we got the reset response */ + if (sngisdn_test_flag(sngisdn_info, FLAG_RESET_TX)) { + /* inform Ftdm that the "sig" is up now for this channel */ + status = FTDM_SIG_STATE_UP; + sigev.event_id = FTDM_SIGEVENT_SIGSTATUS_CHANGED; + sigev.raw_data = &status; + ftdm_span_send_signal(ftdmchan->span, &sigev); + } + + /* check if the circuit has the glare flag up */ + if (sngisdn_test_flag(sngisdn_info, FLAG_GLARE)) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Glare flag is up....spoofing incoming call\n"); + /* clear all the call specific data */ + clear_call_data(sngisdn_info); + + /* close the channel */ + if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_OPEN)) { + ftdm_channel_t *close_chan = ftdmchan; + /* close the channel */ + ftdm_channel_close(&close_chan); + } + + /* spoof an incoming call */ + sngisdn_rcv_con_ind(sngisdn_info->glare.suId, + sngisdn_info->glare.suInstId, + sngisdn_info->glare.spInstId, + &sngisdn_info->glare.setup, + sngisdn_info->glare.dChan, + sngisdn_info->glare.ces); + + } else { + /* clear all of the call specific data store in the channel structure */ + clear_call_data(sngisdn_info); + + if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_OPEN)) { + ftdm_channel_t *close_chan = ftdmchan; + /* close the channel */ + ftdm_channel_close(&close_chan); + } + } + } + break; + case FTDM_CHANNEL_STATE_RESTART: + { +#if 0 + /* TODO: Go through channel restart call states. They do not make sense when running ISDN */ + + if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_INUSE)) { + /* bring the call down first...then process the rest of the reset */ + switch (ftdmchan->last_state) { + /******************************************************************/ + case(FTDM_CHANNEL_STATE_TERMINATING): + case(FTDM_CHANNEL_STATE_HANGUP): + case(FTDM_CHANNEL_STATE_HANGUP_COMPLETE): + /* go back to the last state after taking care of the rest of the restart state */ + ftdm_set_state_locked(ftdmchan, ftdmchan->last_state); + break; + /******************************************************************/ + default: + /* KONRAD: find out what the cause code should be */ + ftdmchan->caller_data.hangup_cause = 41; + + /* change the state to terminatting, it will throw us back here + * once the call is done + */ + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_TERMINATING); + break; + /******************************************************************/ + } + } else { + + /* check if this an incoming RSC */ + if (sngisdn_test_flag(sngisdn_info, FLAG_RESET_RX)) { + /* go to a down state to clear the channel and send RSCa */ + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_DOWN); + } /* if (sngisdn_test_flag(sngisdn_info, FLAG_RESET_RX)) */ + } /* if (inuse) */ + + /* check if this is an outgoing RSC */ + if (sngisdn_test_flag(sngisdn_info, FLAG_RESET_TX)) { + + /* make sure we aren't coming from hanging up a call */ + if (ftdmchan->last_state != FTDM_CHANNEL_STATE_HANGUP_COMPLETE) { + /* send a reset request */ + sngisdn_snd_reset(ftdmchan); + } + + /* don't change to the DOWN state as we need to wait for the RSCa */ + } /* if (sngisdn_test_flag(sngisdn_info, FLAG_RESET_TX)) */ + + /* send a sig event to the core to disable the channel */ + status = FTDM_SIG_STATE_DOWN; + sigev.event_id = FTDM_SIGEVENT_SIGSTATUS_CHANGED; + sigev.raw_data = &status; + ftdm_span_send_signal(ftdmchan->span, &sigev); +#endif + } + + break; + case FTDM_CHANNEL_STATE_SUSPENDED: + { + if (sngisdn_test_flag(sngisdn_info, FLAG_INFID_PAUSED)) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "processing PAUSE\n"); + /* bring the channel signaling status to down */ + status = FTDM_SIG_STATE_DOWN; + sigev.event_id = FTDM_SIGEVENT_SIGSTATUS_CHANGED; + sigev.raw_data = &status; + ftdm_span_send_signal(ftdmchan->span, &sigev); + + /* check the last state and return to it to allow the call to finish */ + ftdm_set_state_locked(ftdmchan, ftdmchan->last_state); + } + if (sngisdn_test_flag(sngisdn_info, FLAG_INFID_RESUME)) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "processing RESUME\n"); + + /* we just resumed...throw the channel into reset */ + sngisdn_set_flag(sngisdn_info, FLAG_RESET_TX); + + /* clear the resume flag */ + sngisdn_clear_flag(sngisdn_info, FLAG_INFID_RESUME); + + /* go to restart state */ + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_RESTART); + } + +#if 0 + /* CHECK the equivalent for ISDN */ + if (sngisdn_test_flag(sngisdn_info, FLAG_CKT_MN_BLOCK_RX)) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "processing MN_BLOCK_RX\n"); + + /* bring the channel signaling status to down */ + status = FTDM_SIG_STATE_DOWN; + sigev.event_id = FTDM_SIGEVENT_SIGSTATUS_CHANGED; + sigev.raw_data = &status; + ftdm_span_send_signal(ftdmchan->span, &sigev); + + /* send a BLA */ + + ft_to_sngss7_bla(ftdmchan); + + /* check the last state and return to it to allow the call to finish */ + ftdm_set_state_locked(ftdmchan, ftdmchan->last_state); + } + if (sngisdn_test_flag(sngisdn_info, FLAG_CKT_MN_UNBLK_RX)) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "processing MN_UNBLK_RX\n"); + /* bring the channel signaling status to up */ + status = FTDM_SIG_STATE_UP; + sigev.event_id = FTDM_SIGEVENT_SIGSTATUS_CHANGED; + sigev.raw_data = &status; + ftdm_span_send_signal(ftdmchan->span, &sigev); + + /* clear the unblock flag */ + sngisdn_clear_flag(sngisdn_info, FLAG_CKT_MN_UNBLK_RX); + + /* send a uba */ + ft_to_sngss7_uba(ftdmchan); + + /* check the last state and return to it to allow the call to finish */ + ftdm_set_state_locked(ftdmchan, ftdmchan->last_state); + } + /**********************************************************************/ + if (sngisdn_test_flag(sngisdn_info, FLAG_CKT_MN_BLOCK_TX)) { + ftdm_log_chan_msg(ftdm_chan, FTDM_LOG_DEBUG, "processing MN_BLOCK_TX\n"); + /* bring the channel signaling status to down */ + status = FTDM_SIG_STATE_DOWN; + sigev.event_id = FTDM_SIGEVENT_SIGSTATUS_CHANGED; + sigev.raw_data = &status; + ftdm_span_send_signal(ftdmchan->span, &sigev); + + /* send a blo */ + ft_to_sngss7_blo(ftdmchan); + + /* check the last state and return to it to allow the call to finish */ + ftdm_set_state_locked(ftdmchan, ftdmchan->last_state); + } + if (sngisdn_test_flag(sngisdn_info, FLAG_CKT_MN_UNBLK_TX)) { + ftdm_log_chan_msg(ftdm_chan, FTDM_LOG_DEBUG, "processing MN_UNBLOCK_TX\n"); + /* bring the channel signaling status to up */ + status = FTDM_SIG_STATE_UP; + sigev.event_id = FTDM_SIGEVENT_SIGSTATUS_CHANGED; + sigev.raw_data = &status; + ftdm_span_send_signal(ftdmchan->span, &sigev); + + /* clear the unblock flag */ + sngisdn_clear_flag(sngisdn_info, FLAG_CKT_MN_UNBLK_TX); + + /* send a ubl */ + ft_to_sngss7_ubl(ftdmchan); + + /* check the last state and return to it to allow the call to finish */ + ftdm_set_state_locked(ftdmchan, ftdmchan->last_state); + } +#endif + } + break; + default: + { + ftdm_log_chan(ftdmchan, FTDM_LOG_CRIT, "unsngisdn_rcvd state %s\n", ftdm_channel_state2str(ftdmchan->state)); + } + break; + + } + + ftdm_mutex_unlock(ftdmchan->mutex); + return; +} + +static FIO_CHANNEL_OUTGOING_CALL_FUNCTION(ftdm_sangoma_isdn_outgoing_call) +{ + sngisdn_chan_data_t *sngisdn_info; + int c; + + /* lock the channel while we check whether it is availble */ + ftdm_mutex_lock(ftdmchan->mutex); + + switch (ftdmchan->state) { + + case FTDM_CHANNEL_STATE_DOWN: + { + ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_DIALING); + + /* unlock the channel */ + ftdm_mutex_unlock(ftdmchan->mutex); + + /* now we have to wait for either the stack to reject the call because of + * glare or for the network to acknowledge the call */ + c = 0; + + while (c < 100) { + + /* lock the channel while we check whether it is availble */ + ftdm_mutex_lock(ftdmchan->mutex); + + /* extract the sngisdn_chan_data structure */ + sngisdn_info = (sngisdn_chan_data_t *)ftdmchan->call_data; + + if (ftdm_test_flag(sngisdn_info, FLAG_GLARE)) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_WARNING, "Glare detected\n"); + goto outgoing_glare; + } + + switch (ftdmchan->state) { + case FTDM_CHANNEL_STATE_DIALING: + break; + case FTDM_CHANNEL_STATE_PROGRESS: + case FTDM_CHANNEL_STATE_PROGRESS_MEDIA: + case FTDM_CHANNEL_STATE_UP: + { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Outgoing call request successful\n"); + goto outgoing_successful; + } + break; + case FTDM_CHANNEL_STATE_TERMINATING: + case FTDM_CHANNEL_STATE_HANGUP_COMPLETE: + case FTDM_CHANNEL_STATE_DOWN: + { + /* Remote switch aborted this call */ + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Outgoing call request failed\n"); + goto outgoing_successful; + } + break; + default: + { + ftdm_log_chan(ftdmchan, FTDM_LOG_CRIT, "Channel in invalid state (%s)\n", ftdm_channel_state2str(ftdmchan->state)); + goto outgoing_glare; + } + break; + } + + /* unlock the channel */ + ftdm_mutex_unlock(ftdmchan->mutex); + + /* sleep for a bit to let the state change */ + ftdm_sleep(10); + + /* increment the timeout counter */ + c++; + } + + /* only way we can get here is if we are still in STATE_DIALING. We did not get a glare, so exit thread and wait for PROCEED/PROGRESS/ALERT/CONNECT or RELEASE from remote switch */ + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Timeout waiting for outgoing call to be accepted by network, returning success anyways\n"); + + /* consider the call good .... for now */ + goto outgoing_successful; + } + break; + + default: + { + /* the channel is already used...this can't be, end the request */ + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_WARNING, "Outgoing call requested channel in already in use\n"); + goto outgoing_glare; + } + break; + } + + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "WE SHOULD NOT BE HERE!!!!\n"); + + ftdm_mutex_unlock(ftdmchan->mutex); + return FTDM_FAIL; + +outgoing_glare: + ftdm_mutex_unlock(ftdmchan->mutex); + return FTDM_BREAK; + +outgoing_successful: + ftdm_mutex_unlock(ftdmchan->mutex); + return FTDM_SUCCESS; +} + +static FIO_CHANNEL_GET_SIG_STATUS_FUNCTION(ftdm_sangoma_isdn_get_sig_status) +{ + if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_SIG_UP)) { + *status = FTDM_SIG_STATE_UP; + } else { + *status = FTDM_SIG_STATE_DOWN; + } + + return FTDM_SUCCESS; +} + +static FIO_CHANNEL_SET_SIG_STATUS_FUNCTION(ftdm_sangoma_isdn_set_sig_status) +{ + ftdm_log(FTDM_LOG_ERROR,"Cannot set channel status in this module\n"); + return FTDM_NOTIMPL; +} + +static ftdm_status_t ftdm_sangoma_isdn_start(ftdm_span_t *span) +{ + ftdm_log(FTDM_LOG_INFO,"Starting span %s:%u.\n",span->name,span->span_id); + if (sng_isdn_stack_activate(span) != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_CRIT, "Failed to activate span %s\n", span->name); + return FTDM_FAIL; + } + /* clear the monitor thread stop flag */ + ftdm_clear_flag(span, FTDM_SPAN_STOP_THREAD); + ftdm_clear_flag(span, FTDM_SPAN_IN_THREAD); + + /*start the span monitor thread*/ + if (ftdm_thread_create_detached(ftdm_sangoma_isdn_run, span) != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_CRIT,"Failed to start Sangoma ISDN Span Monitor Thread!\n"); + return FTDM_FAIL; + } + + ftdm_log(FTDM_LOG_DEBUG,"Finished starting span %s\n", span->name); + return FTDM_SUCCESS; +} + +static ftdm_status_t ftdm_sangoma_isdn_stop(ftdm_span_t *span) +{ + unsigned i; + ftdm_log(FTDM_LOG_INFO, "Stopping span %s\n", span->name); + + /* throw the STOP_THREAD flag to signal monitor thread stop */ + ftdm_set_flag(span, FTDM_SPAN_STOP_THREAD); + + /* wait for the thread to stop */ + while (ftdm_test_flag(span, FTDM_SPAN_IN_THREAD)) { + ftdm_log(FTDM_LOG_DEBUG, "Waiting for monitor thread to end for span %s\n", span->name); + ftdm_sleep(10); + } + + /* FIXME: deconfigure any circuits, links, attached to this span */ + /* TODO: confirm with Moy whether we should start channels at 1 or 0 */ + for (i=1;i<=span->chan_count;i++) { + ftdm_safe_free(span->channels[i]->call_data); + } + ftdm_safe_free(span->signal_data); + + ftdm_log(FTDM_LOG_DEBUG, "Finished stopping span %s\n", span->name); + + return FTDM_SUCCESS; +} + +static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_sangoma_isdn_span_config) +{ + sngisdn_span_data_t *span_data; + + ftdm_log(FTDM_LOG_INFO, "Configuring ftmod_sangoma_isdn span = %s\n", span->name); + + span_data = ftdm_calloc(1, sizeof(sngisdn_span_data_t)); + span_data->ftdm_span = span; + span->signal_data = span_data; + + unsigned i; + for (i=1;i <= span->chan_count; i++) { + sngisdn_chan_data_t *chan_data = ftdm_calloc(1, sizeof(sngisdn_chan_data_t)); + chan_data->ftdmchan = span->channels[i]; + span->channels[i]->call_data = chan_data; + } + + if (ftmod_isdn_parse_cfg(ftdm_parameters, span) != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_ERROR, "Failed to parse configuration\n"); + return FTDM_FAIL; + } + + if (sng_isdn_stack_cfg(span) != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_CRIT, "Sangoma ISDN Stack configuration failed\n"); + return FTDM_FAIL; + } + + + span->start = ftdm_sangoma_isdn_start; + span->stop = ftdm_sangoma_isdn_stop; + span->signal_type = FTDM_SIGTYPE_ISDN; +#if 0 + span->signal_data = NULL; +#endif + span->outgoing_call = ftdm_sangoma_isdn_outgoing_call; + span->channel_request = NULL; + span->signal_cb = sig_cb; + span->get_channel_sig_status = ftdm_sangoma_isdn_get_sig_status; + span->set_channel_sig_status = ftdm_sangoma_isdn_set_sig_status; + span->state_map = &sangoma_isdn_state_map; + ftdm_set_flag(span, FTDM_SPAN_USE_CHAN_QUEUE); + + ftdm_log(FTDM_LOG_INFO, "Finished configuring ftmod_sangoma_isdn span = %s\n", span->name); + return FTDM_SUCCESS; +} + +static FIO_SIG_LOAD_FUNCTION(ftdm_sangoma_isdn_init) +{ + unsigned i; + ftdm_log(FTDM_LOG_INFO, "Loading ftmod_sangoma_isdn...\n"); + + memset(&g_sngisdn_data, 0, sizeof(g_sngisdn_data)); + + /* set callbacks */ + g_sngisdn_event_interface.cc.sng_con_ind = sngisdn_rcv_con_ind; + g_sngisdn_event_interface.cc.sng_con_cfm = sngisdn_rcv_con_cfm; + g_sngisdn_event_interface.cc.sng_cnst_ind = sngisdn_rcv_cnst_ind; + g_sngisdn_event_interface.cc.sng_disc_ind = sngisdn_rcv_disc_ind; + g_sngisdn_event_interface.cc.sng_rel_ind = sngisdn_rcv_rel_ind; + g_sngisdn_event_interface.cc.sng_dat_ind = sngisdn_rcv_dat_ind; + g_sngisdn_event_interface.cc.sng_sshl_ind = sngisdn_rcv_sshl_ind; + g_sngisdn_event_interface.cc.sng_sshl_cfm = sngisdn_rcv_sshl_cfm; + g_sngisdn_event_interface.cc.sng_rmrt_ind = sngisdn_rcv_rmrt_ind; + g_sngisdn_event_interface.cc.sng_rmrt_cfm = sngisdn_rcv_rmrt_cfm; + g_sngisdn_event_interface.cc.sng_flc_ind = sngisdn_rcv_flc_ind; + g_sngisdn_event_interface.cc.sng_fac_ind = sngisdn_rcv_fac_ind; + g_sngisdn_event_interface.cc.sng_sta_cfm = sngisdn_rcv_sta_cfm; + g_sngisdn_event_interface.cc.sng_srv_ind = sngisdn_rcv_srv_ind; + g_sngisdn_event_interface.cc.sng_srv_ind = sngisdn_rcv_srv_cfm; + g_sngisdn_event_interface.cc.sng_rst_ind = sngisdn_rcv_rst_cfm; + g_sngisdn_event_interface.cc.sng_rst_ind = sngisdn_rcv_rst_ind; + g_sngisdn_event_interface.cc.sng_rst_cfm = sngisdn_rcv_rst_cfm; + + g_sngisdn_event_interface.lg.sng_log = sngisdn_rcv_sng_log; + g_sngisdn_event_interface.sta.sng_phy_sta_ind = sngisdn_rcv_phy_ind; + g_sngisdn_event_interface.sta.sng_q921_sta_ind = sngisdn_rcv_q921_ind; + g_sngisdn_event_interface.sta.sng_q921_trc_ind = sngisdn_rcv_q921_trace; + g_sngisdn_event_interface.sta.sng_q931_sta_ind = sngisdn_rcv_q931_ind; + g_sngisdn_event_interface.sta.sng_q931_trc_ind = sngisdn_rcv_q931_trace; + g_sngisdn_event_interface.sta.sng_cc_sta_ind = sngisdn_rcv_cc_ind; + + for(i=1;i<=MAX_VARIANTS;i++) { + ftdm_mutex_create(&g_sngisdn_data.ccs[i].request_mutex); + } + /* initalize sng_isdn library */ + sng_isdn_init(&g_sngisdn_event_interface); + + /* crash on assert fail */ + ftdm_global_set_crash_policy(FTDM_CRASH_ON_ASSERT); + return FTDM_SUCCESS; +} + +static FIO_SIG_UNLOAD_FUNCTION(ftdm_sangoma_isdn_unload) +{ + unsigned i; + ftdm_log(FTDM_LOG_INFO, "Starting ftmod_sangoma_isdn unload...\n"); + + sng_isdn_free(); + + for(i=1;i<=MAX_VARIANTS;i++) { + ftdm_mutex_destroy(&g_sngisdn_data.ccs[i].request_mutex); + } + + ftdm_log(FTDM_LOG_INFO, "Finished ftmod_sangoma_isdn unload!\n"); + return FTDM_SUCCESS; +} + +static FIO_API_FUNCTION(ftdm_sangoma_isdn_api) +{ + ftdm_status_t status = FTDM_SUCCESS; + char *mycmd = NULL, *argv[10] = { 0 }; + int argc = 0; + + if (data) { + mycmd = ftdm_strdup(data); + argc = ftdm_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); + } + + /*ftdm_log(FTDM_LOG_DEBUG, "Sangoma argc:%d argv[0]:%s argv[1]:%s argv[2]:%s \n", argc, argv[0], argv[1], argv[2]);*/ + if (argc <= 0) { + ftdm_log(FTDM_LOG_ERROR, "No parameters provided\n"); + goto done; + } + + if (!strcasecmp(argv[0], "trace")) { + char *trace_opt; + + ftdm_span_t *span; + + if (argc < 3) { + ftdm_log(FTDM_LOG_ERROR, "Usage: ftdm sangoma_isdn trace \n"); + status = FTDM_FAIL; + goto done; + } + trace_opt = argv[1]; + + status = ftdm_span_find_by_name(argv[2], &span); + if (FTDM_SUCCESS != status) { + stream->write_function(stream, "-ERR failed to find span by name %s\n", argv[2]); + goto done; + } + if (!strcasecmp(trace_opt, "q921")) { + sng_isdn_activate_trace(span, SNGISDN_TRACE_Q921); + } else if (!strcasecmp(trace_opt, "q931")) { + sng_isdn_activate_trace(span, SNGISDN_TRACE_Q931); + } else if (!strcasecmp(trace_opt, "disable")) { + sng_isdn_activate_trace(span, SNGISDN_TRACE_DISABLE); + } else { + stream->write_function(stream, "-ERR invalid trace option \n"); + } + } +done: + ftdm_safe_free(mycmd); + return status; +} + +static FIO_IO_LOAD_FUNCTION(ftdm_sangoma_isdn_io_init) +{ + memset(&g_sngisdn_io_interface, 0, sizeof(g_sngisdn_io_interface)); + + g_sngisdn_io_interface.name = "sangoma_isdn"; + g_sngisdn_io_interface.api = ftdm_sangoma_isdn_api; + + *fio = &g_sngisdn_io_interface; + + return FTDM_SUCCESS; +} + +ftdm_module_t ftdm_module = +{ + "sangoma_isdn", /* char name[256]; */ + ftdm_sangoma_isdn_io_init, /* fio_io_load_t */ + NULL, /* fio_io_unload_t */ + ftdm_sangoma_isdn_init, /* fio_sig_load_t */ + NULL, /* fio_sig_configure_t */ + ftdm_sangoma_isdn_unload, /* fio_sig_unload_t */ + ftdm_sangoma_isdn_span_config /* fio_configure_span_signaling_t */ +}; + + +/* For Emacs: + * Local Variables: + * mode:c + * indent-tabs-mode:t + * tab-width:4 + * c-basic-offset:4 + * End: + * For VIM: + * vim:set softtabstop=4 shiftwidth=4 tabstop=4: + */ + +/******************************************************************************/ + + diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.h b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.h new file mode 100644 index 0000000000..d3877defd3 --- /dev/null +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.h @@ -0,0 +1,259 @@ +/* + * Copyright (c) 2010, Sangoma Technologies + * David Yat Sin + * Moises Silva + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of the original author; nor the names of any contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __FTMOD_SNG_ISDN_H__ +#define __FTMOD_SNG_ISDN_H__ + +#include +#include +#include +#include +#include +#include + +#include "private/ftdm_core.h" + +#include + +#define MAX_SPANS_PER_NFAS_LINK 8 /* TODO: Confirm this value */ +#define NUM_E1_CHANNELS_PER_SPAN 32 +#define NUM_T1_CHANNELS_PER_SPAN 24 +#define NUM_BRI_CHANNELS_PER_SPAN 2 + +/* Should never have DEBUG_MODE defined when used in production */ +#if 0 +#undef DEBUG_MODE +#define FORCE_SEFGAULT +#else +#define DEBUG_MODE +#define FORCE_SEGFAULT *(int *) 0 = 0; +#endif + +/* TODO: rename all *_cc_* to *_an_* */ + +typedef struct sngisdn_glare_data { + int16_t suId; + uint32_t suInstId; + uint32_t spInstId; + int16_t dChan; + ConEvnt setup; + uint8_t ces; +}sngisdn_glare_data_t; + + +/* Channel specific data */ +typedef struct sngisdn_chan_data { + ftdm_channel_t *ftdmchan; + uint32_t flags; + uint8_t ces; /* not used for now */ + uint8_t dchan_id; + uint32_t suInstId; /* instance ID generated locally */ + uint32_t spInstId; /* instance ID generated by stack */ + + uint8_t globalFlg; + sngisdn_glare_data_t glare; +} sngisdn_chan_data_t; + +/* Span specific data */ +typedef struct sngisdn_span_data { + ftdm_span_t *ftdm_span; + uint8_t link_id; + uint8_t switchtype; + uint8_t signalling; /* SNGISDN_SIGNALING_CPE or SNGISDN_SIGNALING_NET */ + uint8_t cc_id; + uint8_t dchan_id; + uint8_t span_id; + uint8_t tei; + uint8_t keep_link_up; + uint8_t trace_flags; +} sngisdn_span_data_t; + +/* dchan_data can have more than 1 span when running NFAS */ +typedef struct sngisdn_dchan_data { + uint8_t num_spans; + sngisdn_span_data_t *spans[MAX_L1_LINKS+1]; + uint16_t num_chans; + /* worst case for number of channel is when using NFAS, and NFAS is only used on T1, + so we can use MAX_SPANS_PER_NFAS_LINK*NUM_T1_CHANNELS_PER_SPAN instead of + MAX_SPANS_PER_NFAS_LINK*NUM_E1_CHANNELS_PER_SPAN + */ + /* Never seen NFAS on E1 yet, so use NUM_T1_CHANNELS_PER_SPAN */ + /* b-channels are arranged by physical id's not logical */ + sngisdn_chan_data_t *channels[MAX_SPANS_PER_NFAS_LINK*NUM_T1_CHANNELS_PER_SPAN]; +}sngisdn_dchan_data_t; + +typedef struct sngisdn_cc { + /* TODO: use flags instead of config_done and activation_done */ + uint8_t config_done; + uint8_t activation_done; + uint8_t switchtype; + ftdm_trunk_type_t trunktype; + uint32_t last_suInstId; + ftdm_mutex_t *request_mutex; + sngisdn_chan_data_t *active_spInstIds[MAX_INSTID]; + sngisdn_chan_data_t *active_suInstIds[MAX_INSTID]; +}sngisdn_cc_t; + +/* Global sngisdn data */ +typedef struct ftdm_sngisdn_data { + uint8_t gen_config_done; + uint8_t num_cc; /* 1 ent per switchtype */ + struct sngisdn_cc ccs[MAX_VARIANTS+1]; + uint8_t num_dchan; + sngisdn_dchan_data_t dchans[MAX_L1_LINKS+1]; +}ftdm_sngisdn_data_t; + +typedef enum { + FLAG_RESET_RX = (1 << 0), + FLAG_RESET_TX = (1 << 1), + FLAG_REMOTE_REL = (1 << 2), + FLAG_LOCAL_REL = (1 << 3), + FLAG_REMOTE_ABORT = (1 << 4), + FLAG_LOCAL_ABORT = (1 << 4), + FLAG_GLARE = (1 << 5), + FLAG_INFID_RESUME = (1 << 17), + FLAG_INFID_PAUSED = (1 << 18), + FLAG_CKT_MN_BLOCK_RX = (1 << 19), + FLAG_CKT_MN_BLOCK_TX = (1 << 20), + FLAG_CKT_MN_UNBLK_RX = (1 << 21), + FLAG_CKT_MN_UNBLK_TX = (1 << 22), + FLAG_GRP_HW_BLOCK_RX = (1 << 23), + FLAG_GRP_HW_BLOCK_TX = (1 << 24), + FLAG_GRP_MN_BLOCK_RX = (1 << 25), + FLAG_GRP_MN_BLOCK_TX = (1 << 28), + FLAG_GRP_HW_UNBLK_RX = (1 << 27), + FLAG_GRP_HW_UNBLK_TX = (1 << 28), + FLAG_GRP_MN_UNBLK_RX = (1 << 29), + FLAG_GRP_MN_UNBLK_TX = (1 << 30) +} sngisdn_flag_t; + + +typedef enum { + SNGISDN_SWITCH_INVALID = 0, /* invalid */ + SNGISDN_SWITCH_NI2 , /* national isdn-2 */ + SNGISDN_SWITCH_5ESS, /* att 5ess */ + SNGISDN_SWITCH_4ESS, /* att 4ess */ + SNGISDN_SWITCH_DMS100, /* nt dms100 */ + SNGISDN_SWITCH_EUROISDN,/* etsi */ + SNGISDN_SWITCH_QSIG, /* etsi qsig */ + SNGISDN_SWITCH_INSNET, /* int - net */ +} sngisdn_switchtype_t; + +typedef enum { + SNGISDN_SIGNALING_INVALID = 0, /* invalid */ + SNGISDN_SIGNALING_CPE , /* customer side emulation */ + SNGISDN_SIGNALING_NET, /* network side emulation */ +} sngisdn_signalingtype_t; + +typedef enum { + SNGISDN_TRACE_DISABLE = 0, + SNGISDN_TRACE_Q921 = 1, + SNGISDN_TRACE_Q931 = 2, +} sngisdn_tracetype_t; + + +#define sngisdn_set_flag(obj, flag) ((obj)->flags |= (flag)) +#define sngisdn_clear_flag(obj, flag) ((obj)->flags &= ~(flag)) +#define sngisdn_test_flag(obj, flag) ((obj)->flags & flag) + +#define sngisdn_set_trace_flag(obj, flag) ((obj)->trace_flags |= (flag)) +#define sngisdn_clear_trace_flag(obj, flag) ((obj)->trace_flags &= ~(flag)) +#define sngisdn_test_trace_flag(obj, flag) ((obj)->trace_flags & flag) + +/* TODO implement these 2 functions */ +#define ISDN_FUNC_TRACE_ENTER(a) +#define ISDN_FUNC_TRACE_EXIT(a) + +/* Configuration functions */ +ftdm_status_t ftmod_isdn_parse_cfg(ftdm_conf_parameter_t *ftdm_parameters, ftdm_span_t *span); + +/* Support functions */ +uint32_t get_unique_suInstId(uint8_t cc_id); +void clear_call_data(sngisdn_chan_data_t *sngisdn_info); +void stack_hdr_init(Header *hdr); +void stack_pst_init(Pst *pst); +ftdm_status_t get_ftdmchan_by_spInstId(uint8_t cc_id, uint32_t spInstId, sngisdn_chan_data_t **sngisdn_data); +ftdm_status_t get_ftdmchan_by_suInstId(uint8_t cc_id, uint32_t suInstId, sngisdn_chan_data_t **sngisdn_data); + +ftdm_status_t check_for_state_change(ftdm_channel_t *ftdmchan); + +/* Outbound Call Control functions */ +void sngisdn_snd_setup(ftdm_channel_t *ftdmchan); +void sngisdn_snd_proceed(ftdm_channel_t *ftdmchan); +void sngisdn_snd_progress(ftdm_channel_t *ftdmchan); +void sngisdn_snd_alert(ftdm_channel_t *ftdmchan); +void sngisdn_snd_connect(ftdm_channel_t *ftdmchan); +void sngisdn_snd_disconnect(ftdm_channel_t *ftdmchan); +void sngisdn_snd_release(ftdm_channel_t *ftdmchan); +void sngisdn_snd_reset(ftdm_channel_t *ftdmchan); +void sngisdn_snd_con_complete(ftdm_channel_t *ftdmchan); + +/* Inbound Call Control functions */ +void sngisdn_rcv_con_ind (signed short suId, uint32_t suInstId, uint32_t spInstId, ConEvnt *conEvnt, signed short dChan, uint8_t ces); +void sngisdn_rcv_con_cfm (signed short suId, uint32_t suInstId, uint32_t spInstId, CnStEvnt *cnStEvnt, signed short dChan, uint8_t ces); +void sngisdn_rcv_cnst_ind (signed short suId, uint32_t suInstId, uint32_t spInstId, CnStEvnt *cnStEvnt, uint8_t evntType, signed short dChan, uint8_t ces); +void sngisdn_rcv_disc_ind (signed short suId, uint32_t suInstId, uint32_t spInstId, DiscEvnt *discEvnt); +void sngisdn_rcv_rel_ind (signed short suId, uint32_t suInstId, uint32_t spInstId, RelEvnt *relEvnt); +void sngisdn_rcv_dat_ind (signed short suId, uint32_t suInstId, uint32_t spInstId, InfoEvnt *infoEvnt); +void sngisdn_rcv_sshl_ind (signed short suId, uint32_t suInstId, uint32_t spInstId, SsHlEvnt *ssHlEvnt, uint8_t action); +void sngisdn_rcv_sshl_cfm (signed short suId, uint32_t suInstId, uint32_t spInstId, SsHlEvnt *ssHlEvnt, uint8_t action); +void sngisdn_rcv_rmrt_ind (signed short suId, uint32_t suInstId, uint32_t spInstId, RmRtEvnt *rmRtEvnt, uint8_t action); +void sngisdn_rcv_rmrt_cfm (signed short suId, uint32_t suInstId, uint32_t spInstId, RmRtEvnt *rmRtEvnt, uint8_t action); +void sngisdn_rcv_flc_ind (signed short suId, uint32_t suInstId, uint32_t spInstId, StaEvnt *staEvnt); +void sngisdn_rcv_fac_ind (signed short suId, uint32_t suInstId, uint32_t spInstId, FacEvnt *facEvnt, uint8_t evntType, signed short dChan, uint8_t ces); +void sngisdn_rcv_sta_cfm ( signed short suId, uint32_t suInstId, uint32_t spInstId, StaEvnt *staEvnt); +void sngisdn_rcv_srv_ind ( signed short suId, Srv *srvEvnt, signed short dChan, uint8_t ces); +void sngisdn_rcv_srv_cfm ( signed short suId, Srv *srvEvnt, signed short dChan, uint8_t ces); +void sngisdn_rcv_rst_cfm ( signed short suId, Rst *rstEvnt, signed short dChan, uint8_t ces, uint8_t evtType); +void sngisdn_rcv_rst_ind ( signed short suId, Rst *rstEvnt, signed short dChan, uint8_t ces, uint8_t evtType); + + +void sngisdn_rcv_phy_ind(SuId suId, Reason reason); +void sngisdn_rcv_q921_ind(BdMngmt *status); +void sngisdn_rcv_q921_trace(BdMngmt *trc, Buffer *mBuf); +void sngisdn_rcv_q931_ind(InMngmt *status); +void sngisdn_rcv_q931_trace(InMngmt *trc, Buffer *mBuf); +void sngisdn_rcv_cc_ind(CcMngmt *status); +void sngisdn_rcv_sng_log(uint8_t level, char *fmt,...); + +void handle_sng_log(uint8_t level, char *fmt,...); +void sngisdn_set_span_sig_status(ftdm_span_t *ftdmspan, ftdm_signaling_status_t status); + +/* Stack management functions */ +ftdm_status_t sng_isdn_stack_cfg(ftdm_span_t *span); +ftdm_status_t sng_isdn_stack_activate(ftdm_span_t *span); + + +#endif /* __FTMOD_SNG_ISDN_H__ */ + diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c new file mode 100644 index 0000000000..d0254fd714 --- /dev/null +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c @@ -0,0 +1,219 @@ +/* + * Copyright (c) 2010, Sangoma Technologies + * David Yat Sin + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of the original author; nor the names of any contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************/ + +#include "ftmod_sangoma_isdn.h" + +ftdm_status_t parse_switchtype(const char* switch_name, ftdm_span_t *span); +ftdm_status_t parse_signalling(const char* signalling, ftdm_span_t *span); + +extern ftdm_sngisdn_data_t g_sngisdn_data; + +ftdm_status_t parse_switchtype(const char* switch_name, ftdm_span_t *span) +{ + unsigned i; + + sngisdn_dchan_data_t *dchan_data; + sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*) span->signal_data; + switch(span->trunk_type) { + case FTDM_TRUNK_T1: + if (!strcasecmp(switch_name, "ni2")) { + signal_data->switchtype = SNGISDN_SWITCH_NI2; + } else if (!strcasecmp(switch_name, "5ess")) { + signal_data->switchtype = SNGISDN_SWITCH_5ESS; + } else if (!strcasecmp(switch_name, "4ess")) { + signal_data->switchtype = SNGISDN_SWITCH_4ESS; + } else if (!strcasecmp(switch_name, "dms100")) { + signal_data->switchtype = SNGISDN_SWITCH_DMS100; + } else { + ftdm_log(FTDM_LOG_ERROR, "%s:Unsupported switchtype %s for trunktype:%s\n", span->name, switch_name, ftdm_trunk_type2str(span->trunk_type)); + return FTDM_FAIL; + } + break; + case FTDM_TRUNK_E1: + if (!strcasecmp(switch_name, "euroisdn") || strcasecmp(switch_name, "etsi")) { + signal_data->switchtype = SNGISDN_SWITCH_EUROISDN; + } else if (!strcasecmp(switch_name, "qsig")) { + signal_data->switchtype = SNGISDN_SWITCH_QSIG; + } else { + ftdm_log(FTDM_LOG_ERROR, "%s:Unsupported switchtype %s for trunktype:%s\n", span->name, switch_name, ftdm_trunk_type2str(span->trunk_type)); + return FTDM_FAIL; + } + break; + case FTDM_TRUNK_BRI: + case FTDM_TRUNK_BRI_PTMP: + if (!strcasecmp(switch_name, "euroisdn") || + !strcasecmp(switch_name, "etsi")) { + signal_data->switchtype = SNGISDN_SWITCH_EUROISDN; + } else if (!strcasecmp(switch_name, "insnet") || + !strcasecmp(switch_name, "ntt")) { + signal_data->switchtype = SNGISDN_SWITCH_INSNET; + } else { + ftdm_log(FTDM_LOG_ERROR, "%s:Unsupported switchtype %s for trunktype:%s\n", span->name, switch_name, ftdm_trunk_type2str(span->trunk_type)); + return FTDM_FAIL; + } + /* can be > 1 for some BRI variants */ + break; + default: + ftdm_log(FTDM_LOG_ERROR, "%s:Unsupported trunktype:%s\n", span->name, switch_name, ftdm_trunk_type2str(span->trunk_type)); + return FTDM_FAIL; + } + /* see if we have profile with this switch_type already */ + for (i=1; i <= g_sngisdn_data.num_cc; i++) { + if (g_sngisdn_data.ccs[i].switchtype == signal_data->switchtype && + g_sngisdn_data.ccs[i].trunktype == span->trunk_type) { + break; + } + } + /* need to create a new switch_type */ + if (i > g_sngisdn_data.num_cc) { + g_sngisdn_data.num_cc++; + g_sngisdn_data.ccs[i].switchtype = signal_data->switchtype; + g_sngisdn_data.ccs[i].trunktype = span->trunk_type; + ftdm_log(FTDM_LOG_DEBUG, "%s: New switchtype:%s cc_id:%u\n", span->name, switch_name, i); + } + + /* add this span to its ent_cc */ + signal_data->cc_id = i; + + /* create a new dchan */ /* for NFAS - no-dchan on b-channels only links */ + g_sngisdn_data.num_dchan++; + signal_data->dchan_id = g_sngisdn_data.num_dchan; + + dchan_data = &g_sngisdn_data.dchans[signal_data->dchan_id]; + dchan_data->num_spans++; + + signal_data->span_id = dchan_data->num_spans; + dchan_data->spans[signal_data->span_id] = signal_data; + + ftdm_log(FTDM_LOG_DEBUG, "%s: cc_id:%d dchan_id:%d span_id:%d\n", span->name, signal_data->cc_id, signal_data->dchan_id, signal_data->span_id); + + /* Add the channels to the span */ + for (i=1;i<=span->chan_count;i++) { + unsigned chan_id; + ftdm_channel_t *ftdmchan = span->channels[i]; + /* NFAS is not supported on E1, so span_id will always be 1 for E1 so this will work for E1 as well */ + chan_id = ((signal_data->span_id-1)*NUM_T1_CHANNELS_PER_SPAN)+ftdmchan->physical_chan_id; + dchan_data->channels[chan_id] = (sngisdn_chan_data_t*)ftdmchan->call_data; + dchan_data->num_chans++; + } + return FTDM_SUCCESS; +} + +ftdm_status_t parse_signalling(const char* signalling, ftdm_span_t *span) +{ + sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*) span->signal_data; + if (!strcasecmp(signalling, "net") || + !strcasecmp(signalling, "pri_net")|| + !strcasecmp(signalling, "bri_net")) { + + signal_data->signalling = SNGISDN_SIGNALING_NET; + } else if (!strcasecmp(signalling, "cpe") || + !strcasecmp(signalling, "pri_cpe")|| + !strcasecmp(signalling, "bri_cpe")) { + + signal_data->signalling = SNGISDN_SIGNALING_CPE; + } else { + ftdm_log(FTDM_LOG_ERROR, "Unsupported signalling %s\n", signalling); + return FTDM_FAIL; + } + return FTDM_SUCCESS; +} + +ftdm_status_t ftmod_isdn_parse_cfg(ftdm_conf_parameter_t *ftdm_parameters, ftdm_span_t *span) +{ + unsigned paramindex; + const char *var, *val; + sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*) span->signal_data; + /* Set defaults here */ + signal_data->keep_link_up = 1; + signal_data->tei = 0; + + + for (paramindex = 0; ftdm_parameters[paramindex].var; paramindex++) { + ftdm_log(FTDM_LOG_DEBUG, "Sangoma ISDN key=value, %s=%s\n", ftdm_parameters[paramindex].var, ftdm_parameters[paramindex].val); + var = ftdm_parameters[paramindex].var; + val = ftdm_parameters[paramindex].val; + + if (!strcasecmp(var, "switchtype")) { + if (parse_switchtype(val, span) != FTDM_SUCCESS) { + return FTDM_FAIL; + } + } else if (!strcasecmp(var, "signalling")) { + if (parse_signalling(val, span) != FTDM_SUCCESS) { + return FTDM_FAIL; + } + } else if (!strcasecmp(var, "tei")) { + uint8_t tei = atoi(val); + if (tei > 127) { + ftdm_log(FTDM_LOG_ERROR, "Invalid TEI %d, valid values are (0-127)", tei); + return FTDM_FAIL; + } + signal_data->tei = tei; + } else if (!strcasecmp(var, "keep_link_up")) { + if (!strcasecmp(val, "yes")) { + signal_data->keep_link_up = 1; + } else if (!strcasecmp(val, "no")) { + signal_data->keep_link_up = 0; + } else { + ftdm_log(FTDM_LOG_ERROR, "Invalid keep_link_up value, valid values are (yes/no)"); + return FTDM_FAIL; + } + } else { + ftdm_log(FTDM_LOG_WARNING, "Ignoring unknown parameter %s\n", ftdm_parameters[paramindex].var); + } + } + signal_data->link_id = span->span_id; + if (signal_data->switchtype == SNGISDN_SWITCH_INVALID) { + ftdm_log(FTDM_LOG_ERROR, "%s: switchtype not specified", span->name); + return FTDM_FAIL; + } + if (signal_data->signalling == SNGISDN_SIGNALING_INVALID) { + ftdm_log(FTDM_LOG_ERROR, "%s: signalling not specified", span->name); + return FTDM_FAIL; + } + return FTDM_SUCCESS; +} + + +/******************************************************************************/ +/* For Emacs: + * Local Variables: + * mode:c + * indent-tabs-mode:t + * tab-width:4 + * c-basic-offset:4 + * End: + * For VIM: + * vim:set softtabstop=4 shiftwidth=4 tabstop=4: + */ diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cntrl.c b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cntrl.c new file mode 100644 index 0000000000..5299c91b44 --- /dev/null +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cntrl.c @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2010, Sangoma Technologies + * David Yat Sin + + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of the original author; nor the names of any contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************/ + +#include "ftmod_sangoma_isdn.h" + + +void sngisdn_set_chan_sig_status(ftdm_channel_t *ftdmchan, ftdm_signaling_status_t status); + +void sngisdn_set_chan_sig_status(ftdm_channel_t *ftdmchan, ftdm_signaling_status_t status) +{ + ftdm_sigmsg_t sig; + ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Signalling link status changed to %s\n", ftdm_signaling_status2str(status)); + + memset(&sig, 0, sizeof(sig)); + sig.chan_id = ftdmchan->chan_id; + sig.span_id = ftdmchan->span_id; + sig.channel = ftdmchan; + sig.event_id = FTDM_SIGEVENT_SIGSTATUS_CHANGED; + sig.raw_data = &status; + ftdm_span_send_signal(ftdmchan->span, &sig); + return; +} + + + +void sngisdn_set_span_sig_status(ftdm_span_t *ftdmspan, ftdm_signaling_status_t status) +{ + unsigned i; + /* TODO: use channel iterator once it is implemented */ + + for (i=1;i<=ftdmspan->chan_count;i++) { + sngisdn_set_chan_sig_status(ftdmspan->channels[i], status); + } + return; +} + + + + + +/* For Emacs: + * Local Variables: + * mode:c + * indent-tabs-mode:t + * tab-width:4 + * c-basic-offset:4 + * End: + * For VIM: + * vim:set softtabstop=4 shiftwidth=4 tabstop=4: + */ + +/******************************************************************************/ + diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cfg.c b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cfg.c new file mode 100644 index 0000000000..c44228d033 --- /dev/null +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cfg.c @@ -0,0 +1,1035 @@ +/* + * Copyright (c) 2010, Sangoma Technologies + * David Yat Sin + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of the original author; nor the names of any contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "ftmod_sangoma_isdn.h" + +extern ftdm_sngisdn_data_t g_sngisdn_data; + +uint8_t sng_isdn_stack_switchtype(sngisdn_switchtype_t switchtype); + +ftdm_status_t sng_isdn_cfg_phy(ftdm_span_t *span); +ftdm_status_t sng_isdn_cfg_q921(ftdm_span_t *span); +ftdm_status_t sng_isdn_cfg_q931(ftdm_span_t *span); +ftdm_status_t sng_isdn_cfg_cc(ftdm_span_t *span); + +ftdm_status_t sng_isdn_stack_cfg_phy_gen(void); +ftdm_status_t sng_isdn_stack_cfg_q921_gen(void); +ftdm_status_t sng_isdn_stack_cfg_q931_gen(void); +ftdm_status_t sng_isdn_stack_cfg_cc_gen(void); + + +ftdm_status_t sng_isdn_stack_cfg_phy_psap(ftdm_span_t *span); +ftdm_status_t sng_isdn_stack_cfg_q921_msap(ftdm_span_t *span); +ftdm_status_t sng_isdn_stack_cfg_q921_dlsap(ftdm_span_t *span, uint8_t management); +ftdm_status_t sng_isdn_stack_cfg_q931_tsap(ftdm_span_t *span); +ftdm_status_t sng_isdn_stack_cfg_q931_dlsap(ftdm_span_t *span); +ftdm_status_t sng_isdn_stack_cfg_q931_lce(ftdm_span_t *span); + +ftdm_status_t sng_isdn_stack_cfg_cc_sap(ftdm_span_t *span); + +ftdm_status_t sng_isdn_stack_cfg(ftdm_span_t *span) +{ + sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*)span->signal_data; + + if (!g_sngisdn_data.gen_config_done) { + g_sngisdn_data.gen_config_done = 1; + ftdm_log(FTDM_LOG_DEBUG, "Starting general stack configuration\n"); + if(sng_isdn_stack_cfg_phy_gen()!= FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_CRIT, "Failed general physical configuration\n"); + return FTDM_FAIL; + } + ftdm_log(FTDM_LOG_DEBUG, "General stack physical done\n"); + + if(sng_isdn_stack_cfg_q921_gen()!= FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_CRIT, "Failed general q921 configuration\n"); + return FTDM_FAIL; + } + ftdm_log(FTDM_LOG_DEBUG, "General stack q921 done\n"); + + if(sng_isdn_stack_cfg_q931_gen()!= FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_CRIT, "Failed general q921 configuration\n"); + return FTDM_FAIL; + } + ftdm_log(FTDM_LOG_DEBUG, "General stack q931 done\n"); + + if(sng_isdn_stack_cfg_cc_gen()!= FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_CRIT, "Failed general CC configuration\n"); + return FTDM_FAIL; + } + ftdm_log(FTDM_LOG_DEBUG, "General stack CC done\n"); + ftdm_log(FTDM_LOG_INFO, "General stack configuration done\n"); + } + + /* TODO: for NFAS, should only call these function for spans with d-chans */ + if (sng_isdn_stack_cfg_phy_psap(span) != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_ERROR, "%s:phy_psap configuration failed\n", span->name); + return FTDM_FAIL; + } + ftdm_log(FTDM_LOG_DEBUG, "%s:phy_psap configuration done\n", span->name); + + if (sng_isdn_stack_cfg_q921_msap(span) != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_ERROR, "%s:q921_msap configuration failed\n", span->name); + return FTDM_FAIL; + } + ftdm_log(FTDM_LOG_DEBUG, "%s:q921_msap configuration done\n", span->name); + + if (sng_isdn_stack_cfg_q921_dlsap(span, 0) != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_ERROR, "%s:q921_dlsap configuration failed\n", span->name); + return FTDM_FAIL; + } + ftdm_log(FTDM_LOG_DEBUG, "%s:q921_dlsap configuration done\n", span->name); + + if (span->trunk_type == FTDM_TRUNK_BRI_PTMP) { + if (sng_isdn_stack_cfg_q921_dlsap(span, 1) != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_ERROR, "%s:q921_dlsap management configuration failed\n", span->name); + return FTDM_FAIL; + } + ftdm_log(FTDM_LOG_DEBUG, "%s:q921_dlsap management configuration done\n", span->name); + } + + + if (sng_isdn_stack_cfg_q931_dlsap(span) != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_ERROR, "%s:q931_dlsap configuration failed\n", span->name); + return FTDM_FAIL; + } + ftdm_log(FTDM_LOG_DEBUG, "%s:q931_dlsap configuration done\n", span->name); + + if (sng_isdn_stack_cfg_q931_lce(span) != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_ERROR, "%s:q931_lce configuration failed\n", span->name); + return FTDM_FAIL; + } + ftdm_log(FTDM_LOG_DEBUG, "%s:q931_lce configuration done\n", span->name); + + if (!g_sngisdn_data.ccs[signal_data->cc_id].config_done) { + g_sngisdn_data.ccs[signal_data->cc_id].config_done = 1; + /* if BRI, need to configure dlsap_mgmt */ + if (sng_isdn_stack_cfg_q931_tsap(span) != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_ERROR, "%s:q931_tsap configuration failed\n", span->name); + return FTDM_FAIL; + } + ftdm_log(FTDM_LOG_DEBUG, "%s:q931_tsap configuration done\n", span->name); + + if (sng_isdn_stack_cfg_cc_sap(span) != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_ERROR, "%s:cc_sap configuration failed\n", span->name); + return FTDM_FAIL; + } + ftdm_log(FTDM_LOG_DEBUG, "%s:cc_sap configuration done\n", span->name); + } + + ftdm_log(FTDM_LOG_INFO, "%s:stack configuration done\n", span->name); + return FTDM_SUCCESS; +} + + + +ftdm_status_t sng_isdn_stack_cfg_phy_gen(void) +{ + /*local variables*/ + L1Mngmt cfg; /*configuration structure*/ + Pst pst; /*post structure*/ + + /* initalize the post structure */ + stack_pst_init(&pst); + + /* insert the destination Entity */ + pst.dstEnt = ENTL1; + + /*clear the configuration structure*/ + memset(&cfg, 0, sizeof(cfg)); + + /*fill in some general sections of the header*/ + stack_hdr_init(&cfg.hdr); + + /*fill in the specific fields of the header*/ + cfg.hdr.msgType = TCFG; + cfg.hdr.entId.ent = ENTL1; + cfg.hdr.entId.inst = S_INST; + cfg.hdr.elmId.elmnt = STGEN; + + stack_pst_init(&cfg.t.cfg.s.l1Gen.sm ); + cfg.t.cfg.s.l1Gen.sm.srcEnt = ENTL1; + cfg.t.cfg.s.l1Gen.sm.dstEnt = ENTSM; + + cfg.t.cfg.s.l1Gen.nmbLnks = MAX_L1_LINKS+1; + cfg.t.cfg.s.l1Gen.poolTrUpper = POOL_UP_TR; /* upper pool threshold */ + cfg.t.cfg.s.l1Gen.poolTrLower = POOL_LW_TR; /* lower pool threshold */ + + if (sng_isdn_phy_config(&pst, &cfg)) { + return FTDM_FAIL; + } + return FTDM_SUCCESS; +} + +ftdm_status_t sng_isdn_stack_cfg_phy_psap(ftdm_span_t *span) +{ + /*local variables*/ + L1Mngmt cfg; /*configuration structure*/ + Pst pst; /*post structure*/ + + sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*)span->signal_data; + + /* initalize the post structure */ + stack_pst_init(&pst); + + /* insert the destination Entity */ + pst.dstEnt = ENTL1; + + /*clear the configuration structure*/ + memset(&cfg, 0, sizeof(cfg)); + + /*fill in some general sections of the header*/ + stack_hdr_init(&cfg.hdr); + + /*fill in the specific fields of the header*/ + cfg.hdr.msgType = TCFG; + cfg.hdr.entId.ent = ENTL1; + cfg.hdr.entId.inst = S_INST; + cfg.hdr.elmId.elmnt = STPSAP; + + cfg.hdr.elmId.elmntInst1 = signal_data->link_id; + + cfg.t.cfg.s.l1PSAP.span = span->channels[1]->physical_span_id; + switch(span->trunk_type) { + case FTDM_TRUNK_E1: + cfg.t.cfg.s.l1PSAP.chan = 16; + cfg.t.cfg.s.l1PSAP.type = SNG_LINKTYPE_PRI; + break; + case FTDM_TRUNK_T1: + case FTDM_TRUNK_J1: + cfg.t.cfg.s.l1PSAP.chan = 24; + cfg.t.cfg.s.l1PSAP.type = SNG_LINKTYPE_PRI; + break; + case FTDM_TRUNK_BRI: + case FTDM_TRUNK_BRI_PTMP: + cfg.t.cfg.s.l1PSAP.chan = 3; + cfg.t.cfg.s.l1PSAP.type = SNG_LINKTYPE_BRI; + break; + default: + ftdm_log(FTDM_LOG_ERROR, "%s:Unsupported trunk type %d\n", span->name, span->trunk_type); + return FTDM_FAIL; + } + cfg.t.cfg.s.l1PSAP.spId = signal_data->link_id; + + if (sng_isdn_phy_config(&pst, &cfg)) { + return FTDM_FAIL; + } + return FTDM_SUCCESS; +} + + +ftdm_status_t sng_isdn_stack_cfg_q921_gen(void) +{ + BdMngmt cfg; + Pst pst; + + /* initalize the post structure */ + stack_pst_init(&pst); + /* insert the destination Entity */ + pst.dstEnt = ENTLD; + + /*clear the configuration structure*/ + memset(&cfg, 0, sizeof(cfg)); + /*fill in some general sections of the header*/ + stack_hdr_init(&cfg.hdr); + + cfg.hdr.msgType = TCFG; + cfg.hdr.entId.ent = ENTLD; + cfg.hdr.entId.inst = S_INST; + cfg.hdr.elmId.elmnt = STGEN; + /* fill in the Gen Conf structures internal pst struct */ + + stack_pst_init(&cfg.t.cfg.s.bdGen.sm); + + cfg.t.cfg.s.bdGen.sm.dstEnt = ENTSM; /* entity */ + + cfg.t.cfg.s.bdGen.nmbPLnks = MAX_L1_LINKS+1; + cfg.t.cfg.s.bdGen.nmbLDLnks = MAX_L1_LINKS+1; /* Not used in LAPD */ + cfg.t.cfg.s.bdGen.nmbDLCs = MAX_L1_LINKS+1; + cfg.t.cfg.s.bdGen.nmbDLCs = MAX_TEIS_PER_LINK*(MAX_L1_LINKS+1); + cfg.t.cfg.s.bdGen.nmbASPLnks = MAX_L1_LINKS+1; + +#ifdef LAPD_3_4 + cfg.t.cfg.s.bdGen.timeRes = 10; /* timer resolution */ +#endif + cfg.t.cfg.s.bdGen.poolTrUpper = POOL_UP_TR; /* upper pool threshold */ + cfg.t.cfg.s.bdGen.poolTrLower = POOL_LW_TR; /* lower pool threshold */ + + if (sng_isdn_q921_config(&pst, &cfg)) { + return FTDM_FAIL; + } + return FTDM_SUCCESS; +} + +ftdm_status_t sng_isdn_stack_cfg_q921_msap(ftdm_span_t *span) +{ + BdMngmt cfg; + Pst pst; + + sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*)span->signal_data; + + /* initalize the post structure */ + stack_pst_init(&pst); + /* insert the destination Entity */ + pst.dstEnt = ENTLD; + + /*clear the configuration structure*/ + memset(&cfg, 0, sizeof(cfg)); + /*fill in some general sections of the header*/ + stack_hdr_init(&cfg.hdr); + + cfg.hdr.msgType = TCFG; + cfg.hdr.entId.ent = ENTLD; + cfg.hdr.entId.inst = S_INST; + cfg.hdr.elmId.elmnt = STMSAP; + + cfg.t.cfg.s.bdMSAP.lnkNmb = signal_data->link_id; + + cfg.t.cfg.s.bdMSAP.maxOutsFrms = 2; /* MAC window */ + cfg.t.cfg.s.bdMSAP.tQUpperTrs = 16; /* Tx Queue Upper Threshold */ + cfg.t.cfg.s.bdMSAP.tQLowerTrs = 8; /* Tx Queue Lower Threshold */ + cfg.t.cfg.s.bdMSAP.selector = 0; /* Selector 0 */ + /* TODO: check if bdMSAP parameters can be initialized by calling stack_pst_init */ + cfg.t.cfg.s.bdMSAP.mem.region = S_REG; /* Memory region */ + cfg.t.cfg.s.bdMSAP.mem.pool = S_POOL; /* Memory pool */ + cfg.t.cfg.s.bdMSAP.prior = PRIOR0; /* Priority */ + cfg.t.cfg.s.bdMSAP.route = RTESPEC; /* Route */ + cfg.t.cfg.s.bdMSAP.dstProcId = SFndProcId(); /* destination proc id */ + cfg.t.cfg.s.bdMSAP.dstEnt = ENTL1; /* entity */ + cfg.t.cfg.s.bdMSAP.dstInst = S_INST; /* instance */ + cfg.t.cfg.s.bdMSAP.t201Tmr = 5; /* T201 */ + cfg.t.cfg.s.bdMSAP.t202Tmr = 200; /* T202 */ + cfg.t.cfg.s.bdMSAP.bndRetryCnt = 2; /* bind retry counter */ + cfg.t.cfg.s.bdMSAP.tIntTmr = 200; /* bind retry timer */ + cfg.t.cfg.s.bdMSAP.n202 = 3; /* N202 */ + cfg.t.cfg.s.bdMSAP.lowTei = 64; /* Lowest dynamic TEI */ + + if (span->trunk_type == FTDM_TRUNK_BRI_PTMP && + signal_data->signalling == SNGISDN_SIGNALING_NET) { + cfg.t.cfg.s.bdMSAP.kpL1Up = FALSE; /* flag to keep l1 up or not */ + } else { + cfg.t.cfg.s.bdMSAP.kpL1Up = TRUE; /* flag to keep l1 up or not */ + } + + cfg.t.cfg.s.bdMSAP.type = sng_isdn_stack_switchtype(signal_data->switchtype); + + if (span->trunk_type == FTDM_TRUNK_BRI_PTMP) { + cfg.t.cfg.s.bdMSAP.teiChkTmr = 20; /* Tei check timer */ + } else { + cfg.t.cfg.s.bdMSAP.teiChkTmr = 0; /* Tei check timer */ + } + + if (signal_data->signalling == SNGISDN_SIGNALING_NET) { + cfg.t.cfg.s.bdMSAP.logInt = 1; /* logical interface = 0 = user, 1= network */ + cfg.t.cfg.s.bdMSAP.setUpArb = PASSIVE; /* set up arbitration */ + } else { + cfg.t.cfg.s.bdMSAP.logInt = 0; /* logical interface = 0 = user, 1= network */ + cfg.t.cfg.s.bdMSAP.setUpArb = ACTIVE; /* set up arbitration */ + } + + + if (sng_isdn_q921_config(&pst, &cfg)) { + return FTDM_FAIL; + } + return FTDM_SUCCESS; +} + +ftdm_status_t sng_isdn_stack_cfg_q921_dlsap(ftdm_span_t *span, uint8_t management) +{ + BdMngmt cfg; + Pst pst; + + sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*)span->signal_data; + /* initalize the post structure */ + stack_pst_init(&pst); + /* insert the destination Entity */ + pst.dstEnt = ENTLD; + + /*clear the configuration structure*/ + memset(&cfg, 0, sizeof(cfg)); + /*fill in some general sections of the header*/ + stack_hdr_init(&cfg.hdr); + + /*fill in the specific fields of the header*/ + cfg.hdr.msgType = TCFG; + cfg.hdr.entId.ent = ENTLD; + cfg.hdr.entId.inst = S_INST; + cfg.hdr.elmId.elmnt = STDLSAP; + + cfg.t.cfg.s.bdDLSAP.lnkNmb = signal_data->link_id; + + cfg.t.cfg.s.bdDLSAP.n201 = 1028; /* n201 */ + cfg.t.cfg.s.bdDLSAP.k = 7; /* k */ + cfg.t.cfg.s.bdDLSAP.n200 = 3; /* n200 */ + cfg.t.cfg.s.bdDLSAP.congTmr = 300; /* congestion timer */ + cfg.t.cfg.s.bdDLSAP.t200Tmr = 1; /* t1 changed from 25 */ + cfg.t.cfg.s.bdDLSAP.t203Tmr = 3; /* t3 changed from 50 */ + cfg.t.cfg.s.bdDLSAP.mod = 128; /* modulo */ + cfg.t.cfg.s.bdDLSAP.selector = 0; /* Selector 0 */ + cfg.t.cfg.s.bdDLSAP.mem.region = S_REG; /* Memory region */ + cfg.t.cfg.s.bdDLSAP.mem.pool = S_POOL; /* Memory pool */ + cfg.t.cfg.s.bdDLSAP.prior = PRIOR0; /* Priority */ + cfg.t.cfg.s.bdDLSAP.route = RTESPEC; /* Route */ + + if (management) { + cfg.t.cfg.s.bdDLSAP.sapi = MNGMT_SAPI; + cfg.t.cfg.s.bdDLSAP.teiAss = NON_AUTOMATIC; /* static tei assignment */ + cfg.t.cfg.s.bdDLSAP.noOfDlc = 1; + cfg.t.cfg.s.bdDLSAP.tei[0] = 0x7f; + } else { + cfg.t.cfg.s.bdDLSAP.sapi = Q930_SAPI; + if (span->trunk_type == FTDM_TRUNK_BRI_PTMP) { + if (signal_data->signalling == SNGISDN_SIGNALING_NET) { + cfg.t.cfg.s.bdDLSAP.teiAss = AUTOMATIC; + cfg.t.cfg.s.bdDLSAP.noOfDlc = 8; + + cfg.t.cfg.s.bdDLSAP.tei[0] = 64; + cfg.t.cfg.s.bdDLSAP.tei[1] = 65; + cfg.t.cfg.s.bdDLSAP.tei[2] = 66; + cfg.t.cfg.s.bdDLSAP.tei[3] = 67; + cfg.t.cfg.s.bdDLSAP.tei[4] = 68; + cfg.t.cfg.s.bdDLSAP.tei[5] = 69; + cfg.t.cfg.s.bdDLSAP.tei[6] = 70; + cfg.t.cfg.s.bdDLSAP.tei[7] = 71; + } else { + cfg.t.cfg.s.bdDLSAP.teiAss = AUTOMATIC; + cfg.t.cfg.s.bdDLSAP.noOfDlc = 1; + } + } else { + /* Point to point configs */ + cfg.t.cfg.s.bdDLSAP.teiAss = NON_AUTOMATIC; + cfg.t.cfg.s.bdDLSAP.noOfDlc = 1; + cfg.t.cfg.s.bdDLSAP.tei[0] = signal_data->tei; + } + } + + if (sng_isdn_q921_config(&pst, &cfg)) { + return FTDM_FAIL; + } + return FTDM_SUCCESS; +} + +ftdm_status_t sng_isdn_stack_cfg_q931_gen(void) +{ + InMngmt cfg; + Pst pst; + + /* initalize the post structure */ + stack_pst_init(&pst); + + /* insert the destination Entity */ + pst.dstEnt = ENTIN; + + /*clear the configuration structure*/ + memset(&cfg, 0, sizeof(cfg)); + + /*fill in some general sections of the header*/ + stack_hdr_init(&cfg.hdr); + + /*fill in the specific fields of the header*/ + cfg.hdr.msgType = TCFG; + cfg.hdr.entId.ent = ENTIN; + cfg.hdr.entId.inst = S_INST; + cfg.hdr.elmId.elmnt = STGEN; + + /* fill in the Gen Conf structures internal pst struct */ + stack_pst_init(&cfg.t.cfg.s.inGen.sm); + + cfg.t.cfg.s.inGen.nmbSaps = MAX_VARIANTS+1; /* Total number of variants supported */ + + cfg.t.cfg.s.inGen.nmbLnks = MAX_L1_LINKS+1; /* number of Data Link SAPs */ + cfg.t.cfg.s.inGen.nmbSigLnks = MAX_L1_LINKS+1; + + /* number of CESs */ + cfg.t.cfg.s.inGen.nmbCes = (MAX_L1_LINKS+1)*MAX_NUM_CES_PER_LINK; + /* number of global Call References can have 2 per channel when using HOLD/RESUME */ + cfg.t.cfg.s.inGen.nmbCalRef = MAX_NUM_CALLS; + /* number of bearer channels */ + cfg.t.cfg.s.inGen.nmbBearer = NUM_E1_CHANNELS_PER_SPAN*(MAX_L1_LINKS+1); + /* maximum number of routing entries */ + cfg.t.cfg.s.inGen.nmbRouts = 0; + /* number of profiles */ + cfg.t.cfg.s.inGen.nmbProfiles = 0; + /* upper pool threshold */ + cfg.t.cfg.s.inGen.poolTrUpper = INGEN_POOL_UP_TR; + /* time resolution */ + cfg.t.cfg.s.inGen.timeRes = 10; + + cfg.t.cfg.s.inGen.sm.dstEnt = ENTSM; + + if (sng_isdn_q931_config(&pst, &cfg)) { + return FTDM_FAIL; + } + return FTDM_SUCCESS; +} + +/* Link between CC and q931 */ +ftdm_status_t sng_isdn_stack_cfg_q931_tsap(ftdm_span_t *span) +{ + InMngmt cfg; + Pst pst; + unsigned i; + sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*)span->signal_data; + /* initalize the post structure */ + stack_pst_init(&pst); + + /* insert the destination Entity */ + pst.dstEnt = ENTIN; + + /*clear the configuration structure*/ + memset(&cfg, 0, sizeof(cfg)); + + /*fill in some general sections of the header*/ + stack_hdr_init(&cfg.hdr); + + /*fill in the specific fields of the header*/ + cfg.hdr.msgType = TCFG; + cfg.hdr.entId.ent = ENTIN; + cfg.hdr.entId.inst = S_INST; + cfg.hdr.elmId.elmnt = STTSAP; + + cfg.t.cfg.s.inTSAP.sapId = signal_data->cc_id; + + cfg.t.cfg.s.inTSAP.prior = PRIOR0; + cfg.t.cfg.s.inTSAP.route = RTESPEC; + + cfg.t.cfg.s.inTSAP.swtch = sng_isdn_stack_switchtype(signal_data->switchtype); + cfg.t.cfg.s.inTSAP.useSubAdr = 0; /* call routing on subaddress */ + cfg.t.cfg.s.inTSAP.adrPref = 0; /* use of prefix for int'l calls */ + cfg.t.cfg.s.inTSAP.nmbPrefDig = 0; /* number of digits used for prefix */ + + for (i = 0; i < IN_MAXPREFDIG; i++) + cfg.t.cfg.s.inTSAP.prefix[i] = 0; /* address prefix */ + + cfg.t.cfg.s.inTSAP.keyPad = 0; + cfg.t.cfg.s.inTSAP.wcRout = 0; + + for (i = 0; i < ADRLEN; i++) + cfg.t.cfg.s.inTSAP.wcMask[i] = 0; /* address prefix */ + + cfg.t.cfg.s.inTSAP.sidIns = FALSE; /* SID insertion Flag */ + cfg.t.cfg.s.inTSAP.sid.length = 0; /* SID */ + cfg.t.cfg.s.inTSAP.sidTon = 0; /* SID Type of Number */ + cfg.t.cfg.s.inTSAP.sidNPlan = 0; /* SID Numbering Plan */ + cfg.t.cfg.s.inTSAP.callId.len = 0; /* Default Call Identity */ + cfg.t.cfg.s.inTSAP.minAdrDig = 0; /* Minimum number of address digits */ + cfg.t.cfg.s.inTSAP.comptChck = FALSE; /* Validate compatibility */ + cfg.t.cfg.s.inTSAP.nmbApplProf = 0; /* Number of application profiles */ + cfg.t.cfg.s.inTSAP.profNmb[0] = 0; /* Application profiles */ + cfg.t.cfg.s.inTSAP.mem.region = S_REG; + cfg.t.cfg.s.inTSAP.mem.pool = S_POOL; + cfg.t.cfg.s.inTSAP.selector = 0; + + + if (sng_isdn_q931_config(&pst, &cfg)) { + return FTDM_FAIL; + } + return FTDM_SUCCESS; +} + +ftdm_status_t sng_isdn_stack_cfg_q931_dlsap(ftdm_span_t *span) +{ + InMngmt cfg; + Pst pst; + + unsigned i; + sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*)span->signal_data; + /* initalize the post structure */ + stack_pst_init(&pst); + + /* insert the destination Entity */ + pst.dstEnt = ENTIN; + + /*clear the configuration structure*/ + memset(&cfg, 0, sizeof(cfg)); + + /*fill in some general sections of the header*/ + stack_hdr_init(&cfg.hdr); + + /*fill in the specific fields of the header*/ + cfg.hdr.msgType = TCFG; + cfg.hdr.entId.ent = ENTIN; + cfg.hdr.entId.inst = S_INST; + cfg.hdr.elmId.elmnt = STDLSAP; + + cfg.hdr.response.selector=0; + + cfg.t.cfg.s.inDLSAP.sapId = signal_data->link_id; + cfg.t.cfg.s.inDLSAP.spId = signal_data->link_id; + cfg.t.cfg.s.inDLSAP.swtch = sng_isdn_stack_switchtype(signal_data->switchtype); + + cfg.t.cfg.s.inDLSAP.n201 = 1024; + cfg.t.cfg.s.inDLSAP.nmbRst = 2; + cfg.t.cfg.s.inDLSAP.tCbCfg = TRUE; + + cfg.t.cfg.s.inDLSAP.tCbId = signal_data->cc_id; + + /* TODO : NFAS configuration */ + cfg.t.cfg.s.inDLSAP.nfasInt = FALSE; /* pass this later */ + + if (!cfg.t.cfg.s.inDLSAP.nfasInt) { + cfg.t.cfg.s.inDLSAP.intId = 0; + cfg.t.cfg.s.inDLSAP.sigInt = 0; + cfg.t.cfg.s.inDLSAP.bupInt = 0; + cfg.t.cfg.s.inDLSAP.nmbNfasInt = 0; + cfg.t.cfg.s.inDLSAP.buIntPr = FALSE; + + for (i = 0; i < IN_MAX_NMB_INTRFS; i++) + cfg.t.cfg.s.inDLSAP.ctldInt[i] = IN_INT_NOT_CFGD; + + } else { + /* Need to get these parameters from NFAS */ + cfg.t.cfg.s.inDLSAP.intId = 0; + cfg.t.cfg.s.inDLSAP.sigInt = 0; + cfg.t.cfg.s.inDLSAP.bupInt = 1; + cfg.t.cfg.s.inDLSAP.nmbNfasInt = 2; + cfg.t.cfg.s.inDLSAP.buIntPr = 1; + + for (i = 0; i < IN_MAX_NMB_INTRFS; i++) + cfg.t.cfg.s.inDLSAP.ctldInt[i] = IN_INT_NOT_CFGD; + + /* For primary and backup interfaces, need to initialize this array */ + cfg.t.cfg.s.inDLSAP.ctldInt[0] = 0; /* This is primary if for NFAS */ + cfg.t.cfg.s.inDLSAP.ctldInt[1] = 1; + } + + cfg.t.cfg.s.inDLSAP.numRstInd = 255; + cfg.t.cfg.s.inDLSAP.ackOpt = TRUE; + cfg.t.cfg.s.inDLSAP.relOpt = TRUE; +#ifdef ISDN_SRV + cfg.t.cfg.s.inDLSAP.bcas = FALSE; + cfg.t.cfg.s.inDLSAP.maxBSrvCnt = 2; + cfg.t.cfg.s.inDLSAP.maxDSrvCnt = 2; +#endif /* ISDN_SRV */ + + if (signal_data->signalling == SNGISDN_SIGNALING_NET) { + cfg.t.cfg.s.inDLSAP.intType = NETWORK; + cfg.t.cfg.s.inDLSAP.clrGlr = FALSE; /* in case of glare, do not clear local call */ + cfg.t.cfg.s.inDLSAP.statEnqOpt = TRUE; + if (span->trunk_type == FTDM_TRUNK_BRI || + span->trunk_type == FTDM_TRUNK_BRI_PTMP) { + cfg.t.cfg.s.inDLSAP.rstOpt = FALSE; + } else { + cfg.t.cfg.s.inDLSAP.rstOpt = TRUE; + } + } else { + cfg.t.cfg.s.inDLSAP.intType = USER; + cfg.t.cfg.s.inDLSAP.clrGlr = TRUE; /* in case of glare, clear local call */ + cfg.t.cfg.s.inDLSAP.statEnqOpt = FALSE; + cfg.t.cfg.s.inDLSAP.rstOpt = FALSE; + } + + for (i = 0; i < IN_MAXBCHNL; i++) + { + cfg.t.cfg.s.inDLSAP.bProf[i].profNmb = 0; + cfg.t.cfg.s.inDLSAP.bProf[i].valid = FALSE; + cfg.t.cfg.s.inDLSAP.bProf[i].state = IN_PROV_AVAIL; + } + + if (span->trunk_type == FTDM_TRUNK_BRI_PTMP && + signal_data->signalling == SNGISDN_SIGNALING_NET) { + cfg.t.cfg.s.inDLSAP.nmbCes = MAX_NUM_CES_PER_LINK; + } else { + cfg.t.cfg.s.inDLSAP.nmbCes=1; + } + + cfg.t.cfg.s.inDLSAP.useSubAdr = 0; /* call routing on subaddress */ + cfg.t.cfg.s.inDLSAP.adrPref = 0; /* use of prefix for international calls */ + cfg.t.cfg.s.inDLSAP.nmbPrefDig = 0; /* number of digits used for prefix */ + for (i = 0; i < IN_MAXPREFDIG; i++) + cfg.t.cfg.s.inDLSAP.prefix[i] = 0; /* address prefix */ + cfg.t.cfg.s.inDLSAP.keyPad = 0; + cfg.t.cfg.s.inDLSAP.wcRout = 0; + for (i = 0; i < ADRLEN; i++) + cfg.t.cfg.s.inDLSAP.wcMask[i] = 0; /* address prefix */ + + cfg.t.cfg.s.inDLSAP.sidIns = FALSE; /* SID insertion flag */ + cfg.t.cfg.s.inDLSAP.sid.length = 0; /* SID */ + cfg.t.cfg.s.inDLSAP.sidTon = 0; /* SID Type of Number */ + cfg.t.cfg.s.inDLSAP.sidNPlan = 0; /* SID Numbering Plan */ + cfg.t.cfg.s.inDLSAP.sidPresInd = FALSE; /* SID Presentation Indicator */ + cfg.t.cfg.s.inDLSAP.minAdrDig = 0; /* minimum number of address digits */ + cfg.t.cfg.s.inDLSAP.srvOpt = FALSE; + cfg.t.cfg.s.inDLSAP.callId.len = 0; /* default call id */ + cfg.t.cfg.s.inDLSAP.redirSubsc = FALSE; /* subscription to call redirection */ + cfg.t.cfg.s.inDLSAP.redirAdr.eh.pres = NOTPRSNT; /* redirAdr Numbering Plan */ + cfg.t.cfg.s.inDLSAP.forwSubsc = FALSE; /* programmed forwarding subscription */ + cfg.t.cfg.s.inDLSAP.cndSubsc = TRUE; /* calling adddress delivery service subscription */ + + /* TODO: Fill in these timers with proper values - eventually pass them */ + cfg.t.cfg.s.inDLSAP.tmr.t301.enb = FALSE; + cfg.t.cfg.s.inDLSAP.tmr.t301.val = 35; + cfg.t.cfg.s.inDLSAP.tmr.t302.enb = FALSE; + cfg.t.cfg.s.inDLSAP.tmr.t302.val = 35; + cfg.t.cfg.s.inDLSAP.tmr.t303.enb = FALSE; + cfg.t.cfg.s.inDLSAP.tmr.t303.val = 35; + cfg.t.cfg.s.inDLSAP.tmr.t304.enb = TRUE; + cfg.t.cfg.s.inDLSAP.tmr.t304.val = 35; + cfg.t.cfg.s.inDLSAP.tmr.t305.enb = TRUE; + cfg.t.cfg.s.inDLSAP.tmr.t305.val = 35; + cfg.t.cfg.s.inDLSAP.tmr.t306.enb = FALSE; + cfg.t.cfg.s.inDLSAP.tmr.t306.val = 35; + cfg.t.cfg.s.inDLSAP.tmr.t307.enb = FALSE; + cfg.t.cfg.s.inDLSAP.tmr.t307.val = 35; + cfg.t.cfg.s.inDLSAP.tmr.t308.enb = TRUE; + cfg.t.cfg.s.inDLSAP.tmr.t308.val = 35; + cfg.t.cfg.s.inDLSAP.tmr.t310.enb = FALSE; + cfg.t.cfg.s.inDLSAP.tmr.t310.val = 35; + cfg.t.cfg.s.inDLSAP.tmr.t312.enb = FALSE; + cfg.t.cfg.s.inDLSAP.tmr.t312.val = 35; + cfg.t.cfg.s.inDLSAP.tmr.t313.enb = TRUE; + cfg.t.cfg.s.inDLSAP.tmr.t313.val = 35; + cfg.t.cfg.s.inDLSAP.tmr.t316.enb = TRUE; + cfg.t.cfg.s.inDLSAP.tmr.t316.val = 35; + cfg.t.cfg.s.inDLSAP.tmr.t316c.enb = TRUE; + cfg.t.cfg.s.inDLSAP.tmr.t316c.val = 35; + cfg.t.cfg.s.inDLSAP.tmr.t318.enb = FALSE; + cfg.t.cfg.s.inDLSAP.tmr.t318.val = 35; + cfg.t.cfg.s.inDLSAP.tmr.t319.enb = FALSE; + cfg.t.cfg.s.inDLSAP.tmr.t319.val = 35; + cfg.t.cfg.s.inDLSAP.tmr.t322.enb = TRUE; + cfg.t.cfg.s.inDLSAP.tmr.t322.val = 35; + cfg.t.cfg.s.inDLSAP.tmr.t332.enb = FALSE; + cfg.t.cfg.s.inDLSAP.tmr.t332.val = 35; + cfg.t.cfg.s.inDLSAP.tmr.tRst.enb = TRUE; + cfg.t.cfg.s.inDLSAP.tmr.tRst.val = 8; + cfg.t.cfg.s.inDLSAP.tmr.tAns.enb = FALSE; /* non-standard timer */ + cfg.t.cfg.s.inDLSAP.tmr.t396.enb = FALSE; /* non-standard timer */ + cfg.t.cfg.s.inDLSAP.tmr.t397.enb = TRUE; /* non-standard timer */ + cfg.t.cfg.s.inDLSAP.tmr.tProg.enb= TRUE; + cfg.t.cfg.s.inDLSAP.tmr.tProg.val= 35; +#ifdef NI2 +#ifdef NI2_TREST + cfg.t.cfg.s.inDLSAP.tmr.tRest.enb= FALSE; + cfg.t.cfg.s.inDLSAP.tmr.tRest.val= 35; /* tRest timer for NI2 */ +#endif /* NI2_TREST */ +#endif /* NI2 */ + + cfg.t.cfg.s.inDLSAP.dstEnt = ENTLD; + cfg.t.cfg.s.inDLSAP.dstInst = S_INST; + cfg.t.cfg.s.inDLSAP.dstProcId = SFndProcId(); + cfg.t.cfg.s.inDLSAP.prior = PRIOR0; + cfg.t.cfg.s.inDLSAP.route = RTESPEC; + cfg.t.cfg.s.inDLSAP.selector = 0; + cfg.t.cfg.s.inDLSAP.mem.region = S_REG; + cfg.t.cfg.s.inDLSAP.mem.pool = S_POOL; + + switch (span->trunk_type) { + case FTDM_TRUNK_E1: + cfg.t.cfg.s.inDLSAP.dChannelNum = 16; + cfg.t.cfg.s.inDLSAP.nmbBearChan = NUM_E1_CHANNELS_PER_SPAN; + cfg.t.cfg.s.inDLSAP.firstBChanNum = 0; + cfg.t.cfg.s.inDLSAP.callRefLen = 2; + cfg.t.cfg.s.inDLSAP.teiAlloc = IN_STATIC; + cfg.t.cfg.s.inDLSAP.intCfg = IN_INTCFG_PTPT; + break; + case FTDM_TRUNK_T1: + case FTDM_TRUNK_J1: + /* if NFAS, could be 0 if no signalling */ + cfg.t.cfg.s.inDLSAP.dChannelNum = 24; + cfg.t.cfg.s.inDLSAP.nmbBearChan = NUM_T1_CHANNELS_PER_SPAN; + cfg.t.cfg.s.inDLSAP.firstBChanNum = 1; + cfg.t.cfg.s.inDLSAP.callRefLen = 2; + cfg.t.cfg.s.inDLSAP.teiAlloc = IN_STATIC; + cfg.t.cfg.s.inDLSAP.intCfg = IN_INTCFG_PTPT; + break; + case FTDM_TRUNK_BRI: + cfg.t.cfg.s.inDLSAP.dChannelNum = 0; /* Unused for BRI */ + cfg.t.cfg.s.inDLSAP.nmbBearChan = NUM_BRI_CHANNELS_PER_SPAN; + cfg.t.cfg.s.inDLSAP.firstBChanNum = 1; + cfg.t.cfg.s.inDLSAP.callRefLen = 1; + cfg.t.cfg.s.inDLSAP.teiAlloc = IN_STATIC; + cfg.t.cfg.s.inDLSAP.intCfg = IN_INTCFG_PTPT; + break; + case FTDM_TRUNK_BRI_PTMP: + cfg.t.cfg.s.inDLSAP.dChannelNum = 0; /* Unused for BRI */ + cfg.t.cfg.s.inDLSAP.nmbBearChan = NUM_BRI_CHANNELS_PER_SPAN; + cfg.t.cfg.s.inDLSAP.firstBChanNum = 1; + cfg.t.cfg.s.inDLSAP.callRefLen = 1; + cfg.t.cfg.s.inDLSAP.teiAlloc = IN_DYNAMIC; + cfg.t.cfg.s.inDLSAP.intCfg = IN_INTCFG_MULTI; + break; + default: + ftdm_log(FTDM_LOG_ERROR, "%s: Unsupported trunk_type\n", span->name); + return FTDM_FAIL; + } + + if (sng_isdn_q931_config(&pst, &cfg)) { + return FTDM_FAIL; + } + return FTDM_SUCCESS; +} + +ftdm_status_t sng_isdn_stack_cfg_q931_lce(ftdm_span_t *span) +{ + InMngmt cfg; + Pst pst; + uint8_t i; + uint8_t numCes=1; + + sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*)span->signal_data; + if (span->trunk_type == FTDM_TRUNK_BRI_PTMP && signal_data->signalling == SNGISDN_SIGNALING_NET) { + numCes = 8; + } + /* initalize the post structure */ + stack_pst_init(&pst); + + /* insert the destination Entity */ + pst.dstEnt = ENTIN; + + /*clear the configuration structure*/ + memset(&cfg, 0, sizeof(cfg)); + + /*fill in some general sections of the header*/ + stack_hdr_init(&cfg.hdr); + + /*fill in the specific fields of the header*/ + cfg.hdr.msgType = TCFG; + cfg.hdr.entId.ent = ENTIN; + cfg.hdr.entId.inst = S_INST; + cfg.hdr.elmId.elmnt = STDLC; + + cfg.hdr.response.selector=0; + + cfg.t.cfg.s.inLCe.sapId = signal_data->link_id; + + + cfg.t.cfg.s.inLCe.lnkUpDwnInd = TRUE; + cfg.t.cfg.s.inLCe.tCon.enb = TRUE; + cfg.t.cfg.s.inLCe.tCon.val = 35; + cfg.t.cfg.s.inLCe.tDisc.enb = TRUE; + cfg.t.cfg.s.inLCe.tDisc.val = 35; + cfg.t.cfg.s.inLCe.t314.enb = FALSE; /* if segmentation enabled, set to TRUE */ + cfg.t.cfg.s.inLCe.t314.val = 35; + + cfg.t.cfg.s.inLCe.t332i.enb = FALSE; /* set to TRUE for NFAS */ + +#ifdef NFAS + cfg.t.cfg.s.inLCe.t332i.val = 35; +#else + cfg.t.cfg.s.inLCe.t332i.val = 0; +#endif + +#if (ISDN_NI1 || ISDN_NT || ISDN_ATT) + cfg.t.cfg.s.inLCe.tSpid.enb = TRUE; + cfg.t.cfg.s.inLCe.tSpid.val = 5; + + /* In case we want to support BRI - NORTH America, we will need to configure 8 spid's per CES */ + cfg.t.cfg.s.inLCe.spid.pres = NOTPRSNT; + cfg.t.cfg.s.inLCe.spid.len = 0; +#endif + cfg.t.cfg.s.inLCe.tRstAck.enb = TRUE; + cfg.t.cfg.s.inLCe.tRstAck.val = 10; + + + cfg.t.cfg.s.inLCe.usid = 0; + cfg.t.cfg.s.inLCe.tid = 0; + + for(i=0;isignal_data; + + /* initalize the post structure */ + stack_pst_init(&pst); + + /* insert the destination Entity */ + pst.dstEnt = ENTCC; + + /*clear the configuration structure*/ + memset(&cfg, 0, sizeof(cfg)); + + /*fill in some general sections of the header*/ + stack_hdr_init(&cfg.hdr); + + /*fill in the specific fields of the header*/ + cfg.hdr.msgType = TCFG; + cfg.hdr.entId.ent = ENTCC; + cfg.hdr.entId.inst = S_INST; + cfg.hdr.elmId.elmnt = STTSAP; + + cfg.t.cfg.s.ccISAP.pst.srcProcId = SFndProcId(); + cfg.t.cfg.s.ccISAP.pst.srcEnt = ENTCC; + cfg.t.cfg.s.ccISAP.pst.srcInst = S_INST; + cfg.t.cfg.s.ccISAP.pst.dstEnt = ENTIN; + cfg.t.cfg.s.ccISAP.pst.dstInst = S_INST; + cfg.t.cfg.s.ccISAP.pst.dstProcId = SFndProcId(); + + cfg.t.cfg.s.ccISAP.pst.prior = PRIOR0; + cfg.t.cfg.s.ccISAP.pst.route = RTESPEC; + cfg.t.cfg.s.ccISAP.pst.region = S_REG; + cfg.t.cfg.s.ccISAP.pst.pool = S_POOL; + cfg.t.cfg.s.ccISAP.pst.selector = 0; + + cfg.t.cfg.s.ccISAP.suId = signal_data->cc_id; + cfg.t.cfg.s.ccISAP.spId = signal_data->cc_id; + + cfg.t.cfg.s.ccISAP.swtch = sng_isdn_stack_switchtype(signal_data->switchtype); + cfg.t.cfg.s.ccISAP.sapType = SNG_SAP_TYPE_ISDN; + + if (sng_isdn_cc_config(&pst, &cfg)) { + return FTDM_FAIL; + } + return FTDM_SUCCESS; +} + +/* TODO: see if we can move this to inside the library */ +void stack_pst_init(Pst *pst) +{ + memset(pst, 0, sizeof(Pst)); + /*fill in the post structure*/ + pst->dstProcId = SFndProcId(); + pst->dstInst = S_INST; + + pst->srcProcId = SFndProcId(); + pst->srcEnt = ENTSM; + pst->srcInst = S_INST; + + pst->prior = PRIOR0; + pst->route = RTESPEC; + pst->region = S_REG; + pst->pool = S_POOL; + pst->selector = 0; + return; +} + + + +void stack_hdr_init(Header *hdr) +{ + hdr->msgType = 0; + hdr->msgLen = 0; + hdr->entId.ent = 0; + hdr->entId.inst = 0; + hdr->elmId.elmnt = 0; + hdr->elmId.elmntInst1 = 0; + hdr->elmId.elmntInst2 = 0; + hdr->elmId.elmntInst3 = 0; + hdr->seqNmb = 0; + hdr->version = 0; + hdr->response.prior = PRIOR0; + hdr->response.route = RTESPEC; + hdr->response.mem.region = S_REG; + hdr->response.mem.pool = S_POOL; + hdr->transId = 0; + hdr->response.selector = 0; + return; +} + +uint8_t sng_isdn_stack_switchtype(sngisdn_switchtype_t switchtype) +{ + switch (switchtype) { + case SNGISDN_SWITCH_NI2: + return SW_NI2; + case SNGISDN_SWITCH_5ESS: + return SW_ATT5EP; + case SNGISDN_SWITCH_4ESS: + return SW_ATT4E; + case SNGISDN_SWITCH_DMS100: + return SW_NTDMS100P; + case SNGISDN_SWITCH_EUROISDN: + return SW_ETSI; + case SNGISDN_SWITCH_QSIG: + return SW_QSIG; + case SNGISDN_SWITCH_INSNET: + return SW_QSIG; + case SNGISDN_SWITCH_INVALID: + ftdm_log(FTDM_LOG_ERROR, "%s:Invalid switchtype:%d\n", switchtype); + break; + } + return 0; +} + +/* For Emacs: + * Local Variables: + * mode:c + * indent-tabs-mode:t + * tab-width:4 + * c-basic-offset:4 + * End: + * For VIM: + * vim:set softtabstop=4 shiftwidth=4 tabstop=4: + */ + +/******************************************************************************/ diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cntrl.c b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cntrl.c new file mode 100644 index 0000000000..d02314a82f --- /dev/null +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cntrl.c @@ -0,0 +1,316 @@ +/* + * Copyright (c) 2010, Sangoma Technologies + * David Yat Sin + * Moises Silva + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of the original author; nor the names of any contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "ftmod_sangoma_isdn.h" + +void stack_resp_hdr_init(Header *hdr); + +ftdm_status_t sng_isdn_activate_phy(ftdm_span_t *span); +ftdm_status_t sng_isdn_activate_q921(ftdm_span_t *span); +ftdm_status_t sng_isdn_activate_q931(ftdm_span_t *span); +ftdm_status_t sng_isdn_activate_cc(ftdm_span_t *span); +ftdm_status_t sng_isdn_activate_trace(ftdm_span_t *span, sngisdn_tracetype_t trace_opt); + +ftdm_status_t sng_isdn_cntrl_q931(ftdm_span_t *span, uint8_t action, uint8_t subaction); +ftdm_status_t sng_isdn_cntrl_q921(ftdm_span_t *span, uint8_t action, uint8_t subaction); + +extern ftdm_sngisdn_data_t g_sngisdn_data; + + +ftdm_status_t sng_isdn_stack_activate(ftdm_span_t *span) +{ + sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*)span->signal_data; + + if (sng_isdn_activate_q921(span) != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_CRIT, "%s:Failed to activate stack q921\n", span->name); + return FTDM_FAIL; + } + ftdm_log(FTDM_LOG_DEBUG, "%s:Stack q921 activated\n", span->name); + if (!g_sngisdn_data.ccs[signal_data->cc_id].activation_done) { + g_sngisdn_data.ccs[signal_data->cc_id].activation_done = 1; + if (sng_isdn_activate_cc(span) != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_CRIT, "%s:Failed to activate stack CC\n", span->name); + return FTDM_FAIL; + } + ftdm_log(FTDM_LOG_DEBUG, "%s:Stack CC activated\n", span->name); + } + + if (sng_isdn_activate_q931(span) != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_CRIT, "%s:Failed to activate stack q931\n", span->name); + return FTDM_FAIL; + } + ftdm_log(FTDM_LOG_DEBUG, "%s:Stack q931 activated\n", span->name); + + ftdm_log(FTDM_LOG_INFO, "%s:Stack activated\n",span->name); + return FTDM_SUCCESS; +} + + +ftdm_status_t sng_isdn_activate_phy(ftdm_span_t *span) +{ + L1Mngmt cntrl; + Pst pst; + + ftdm_log(FTDM_LOG_ERROR, "%s:PHY control not implemented\n", span->name); + return FTDM_SUCCESS; + /* TODO: phy cntrl not implemented yet */ + + sng_isdn_phy_cntrl(&pst, &cntrl); + return FTDM_SUCCESS; +} + + +ftdm_status_t sng_isdn_activate_q921(ftdm_span_t *span) +{ + ftdm_status_t status; + status = sng_isdn_cntrl_q921(span, ABND_ENA, NOTUSED); + + /* Try to find an alternative for this */ + /* LAPD will call LdUiDatBndCfm before it received a LdLiMacBndCfm from L1, + so we need to give some time before activating q931, as q931 will send a + LdUiDatConReq when activated, and this requires the Mac SAP to be already + bound first */ + + if (status == FTDM_SUCCESS) { + ftdm_sleep(500); + } + return status; +} + +ftdm_status_t sng_isdn_activate_q931(ftdm_span_t *span) +{ + /* TODO: remove this function later, just call sng_isdn_cntrl_q931 directly */ + return sng_isdn_cntrl_q931(span, ABND_ENA, SAELMNT); +} + +ftdm_status_t sng_isdn_activate_cc(ftdm_span_t *span) +{ + CcMngmt cntrl;; + Pst pst; + + sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*)span->signal_data; + + /* initalize the post structure */ + stack_pst_init(&pst); + + /* insert the destination Entity */ + pst.dstEnt = ENTCC; + + /* initalize the control structure */ + memset(&cntrl, 0, sizeof(cntrl)); + + /* initalize the control header */ + stack_hdr_init(&cntrl.hdr); + + cntrl.hdr.msgType = TCNTRL; /* configuration */ + cntrl.hdr.entId.ent = ENTCC; /* entity */ + cntrl.hdr.entId.inst = S_INST; /* instance */ + cntrl.hdr.elmId.elmnt = STTSAP; /* physical sap */ + + cntrl.t.cntrl.action = ABND_ENA; + cntrl.t.cntrl.subAction = SAELMNT; + + cntrl.t.cntrl.sapId = signal_data->cc_id; + if (sng_isdn_cc_cntrl(&pst, &cntrl)) { + return FTDM_FAIL; + } + return FTDM_SUCCESS; +} + +ftdm_status_t sng_isdn_activate_trace(ftdm_span_t *span, sngisdn_tracetype_t trace_opt) +{ + sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*)span->signal_data; + switch (trace_opt) { + case SNGISDN_TRACE_DISABLE: + if (sngisdn_test_trace_flag(signal_data, SNGISDN_TRACE_Q921)) { + ftdm_log(FTDM_LOG_INFO, "s%d Disabling q921 trace\n", signal_data->link_id); + sngisdn_clear_trace_flag(signal_data, SNGISDN_TRACE_Q921); + + if (sng_isdn_cntrl_q921(span, ADISIMM, SAELMNT) != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_ERROR, "s%d Failed to disable q921 trace\n"); + } + } + if (sngisdn_test_trace_flag(signal_data, SNGISDN_TRACE_Q931)) { + ftdm_log(FTDM_LOG_INFO, "s%d Disabling q931 trace\n", signal_data->link_id); + sngisdn_clear_trace_flag(signal_data, SNGISDN_TRACE_Q931); + + if (sng_isdn_cntrl_q931(span, ADISIMM, SATRC) != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_ERROR, "s%d Failed to disable q931 trace\n"); + } + } + break; + case SNGISDN_TRACE_Q921: + if (!sngisdn_test_trace_flag(signal_data, SNGISDN_TRACE_Q921)) { + ftdm_log(FTDM_LOG_INFO, "s%d Enabling q921 trace\n", signal_data->link_id); + sngisdn_set_trace_flag(signal_data, SNGISDN_TRACE_Q921); + + if (sng_isdn_cntrl_q921(span, AENA, SATRC) != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_ERROR, "s%d Failed to enable q921 trace\n"); + } + } + break; + case SNGISDN_TRACE_Q931: + if (!sngisdn_test_trace_flag(signal_data, SNGISDN_TRACE_Q931)) { + ftdm_log(FTDM_LOG_INFO, "s%d Enabling q931 trace\n", signal_data->link_id); + sngisdn_set_trace_flag(signal_data, SNGISDN_TRACE_Q931); + + if (sng_isdn_cntrl_q931(span, AENA, SATRC) != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_ERROR, "s%d Failed to enable q931 trace\n"); + } + } + break; + } + return FTDM_SUCCESS; +} + + +ftdm_status_t sng_isdn_cntrl_q931(ftdm_span_t *span, uint8_t action, uint8_t subaction) +{ + InMngmt cntrl;; + Pst pst; + sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*)span->signal_data; + + /* initalize the post structure */ + stack_pst_init(&pst); + + /* insert the destination Entity */ + pst.dstEnt = ENTIN; + + /* initalize the control structure */ + memset(&cntrl, 0, sizeof(cntrl)); + + /* initalize the control header */ + stack_hdr_init(&cntrl.hdr); + + cntrl.hdr.msgType = TCNTRL; /* configuration */ + cntrl.hdr.entId.ent = ENTIN; /* entity */ + cntrl.hdr.entId.inst = S_INST; /* instance */ + cntrl.hdr.elmId.elmnt = STDLSAP; /* physical sap */ + + cntrl.t.cntrl.action = action; + cntrl.t.cntrl.subAction = subaction; + + if (action == AENA && subaction == SATRC) { + cntrl.t.cntrl.trcLen = -1; /* Trace the entire message buffer */ + } + cntrl.t.cntrl.sapId = signal_data->link_id; + cntrl.t.cntrl.ces = 0; + + if(sng_isdn_q931_cntrl(&pst, &cntrl)) { + return FTDM_FAIL; + } + return FTDM_SUCCESS; + +} + +ftdm_status_t sng_isdn_cntrl_q921(ftdm_span_t *span, uint8_t action, uint8_t subaction) +{ + BdMngmt cntrl; + Pst pst; + sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*)span->signal_data; + + /* initalize the post structure */ + stack_pst_init(&pst); + + /* insert the destination Entity */ + pst.dstEnt = ENTLD; + + /* initalize the control structure */ + memset(&cntrl, 0, sizeof(cntrl)); + + /* initalize the control header */ + stack_hdr_init(&cntrl.hdr); + /* build control request */ + cntrl.hdr.msgType = TCNTRL; + cntrl.hdr.entId.ent = ENTLD; + cntrl.hdr.entId.inst = S_INST; + +#if (SMBD_LMINT3 || BD_LMINT3) + stack_resp_hdr_init(&cntrl.hdr); +#endif /* _LMINT3 */ + + cntrl.hdr.elmId.elmnt = STMSAP; + cntrl.t.cntrl.action = action; + cntrl.t.cntrl.subAction = subaction; + +#if (SMBD_LMINT3 || BD_LMINT3) + cntrl.t.cntrl.lnkNmb = signal_data->link_id; + cntrl.t.cntrl.sapi = NOTUSED; + cntrl.t.cntrl.tei = NOTUSED; +#else /* _LMINT3 */ + cntrl.hdr.elmId.elmntInst1 = signal_data->link_id; + cntrl.hdr.elmId.elmntInst2 = NOTUSED; + cntrl.hdr.elmId.elmntInst3 = NOTUSED; +#endif /* _LMINT3 */ + + cntrl.t.cntrl.logInt = NOTUSED; + cntrl.t.cntrl.trcLen = NOTUSED; + if (action == AENA && subaction == SATRC) { + cntrl.t.cntrl.trcLen = -1; /* Trace the entire message buffer */ + } + + SGetDateTime(&(cntrl.t.cntrl.dt)); + if(sng_isdn_q921_cntrl(&pst, &cntrl)) { + return FTDM_FAIL; + } + + return FTDM_SUCCESS; +} + + +void stack_resp_hdr_init(Header *hdr) +{ + hdr->response.selector = 0; + hdr->response.mem.region = RTESPEC; + hdr->response.mem.pool = S_POOL; + hdr->response.prior = PRIOR0; + hdr->response.route = RTESPEC; + + return; +} + + +/* For Emacs: + * Local Variables: + * mode:c + * indent-tabs-mode:t + * tab-width:4 + * c-basic-offset:4 + * End: + * For VIM: + * vim:set softtabstop=4 shiftwidth=4 tabstop=4: + */ + +/******************************************************************************/ diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_in.c b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_in.c new file mode 100644 index 0000000000..04430cf0f0 --- /dev/null +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_in.c @@ -0,0 +1,935 @@ +/* + * Copyright (c) 2010, Sangoma Technologies + * David Yat Sin + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of the original author; nor the names of any contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "ftmod_sangoma_isdn.h" + +extern ftdm_status_t cpy_calling_num_from_sngisdn(ftdm_caller_data_t *ftdm, CgPtyNmb *cgPtyNmb); +extern ftdm_status_t cpy_called_num_from_sngisdn(ftdm_caller_data_t *ftdm, CdPtyNmb *cdPtyNmb); +extern ftdm_status_t cpy_called_name_from_sngisdn(ftdm_caller_data_t *ftdm, CgPtyNmb *cgPtyNmb); +extern ftdm_status_t cpy_calling_name_from_sngisdn(ftdm_caller_data_t *ftdm, ConEvnt *conEvnt); +extern void sngisdn_trace_q921(char* str, uint8_t* data, uint32_t data_len); +extern void sngisdn_trace_q931(char* str, uint8_t* data, uint32_t data_len); +extern void get_memory_info(void); + +extern ftdm_sngisdn_data_t g_sngisdn_data; + +#define MAX_DECODE_STR_LEN 2000 + +/* Remote side transmit a SETUP */ +void sngisdn_rcv_con_ind (int16_t suId, uint32_t suInstId, uint32_t spInstId, ConEvnt *conEvnt, int16_t dChan, uint8_t ces) +{ + ISDN_FUNC_TRACE_ENTER(__FUNCTION__); + uint8_t bchan_no = 0; + sngisdn_chan_data_t *sngisdn_info; + ftdm_channel_t *ftdmchan; + /*sngisdn_span_data_t *span_info;*/ + + ftdm_log(FTDM_LOG_DEBUG, "%s suId:%d suInstId:%d spInstId:%d dChan:%d ces:%d\n", __FUNCTION__, suId, suInstId, spInstId, dChan, ces); + + ftdm_assert(g_sngisdn_data.ccs[suId].activation_done != 0, "Con Ind on unconfigured cc\n"); + ftdm_assert(g_sngisdn_data.dchans[dChan].num_spans != 0, "Con Ind on unconfigured dchan\n"); + ftdm_assert(g_sngisdn_data.ccs[suId].active_spInstIds[spInstId] == NULL, "Con Ind on busy spInstId"); + + if (conEvnt->chanId.eh.pres != PRSNT_NODEF) { + /* TODO: Implement me */ + ftdm_log(FTDM_LOG_ERROR, "Incoming call without Channel Id not supported yet\n"); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; + } + + if (conEvnt->chanId.chanNmbSlotMap.pres) { + bchan_no = conEvnt->chanId.chanNmbSlotMap.val[0]; + } else if (conEvnt->chanId.infoChanSel.pres) { + bchan_no = conEvnt->chanId.infoChanSel.val; + } + + if (!bchan_no) { + ftdm_log(FTDM_LOG_ERROR, "Failed to obtain b-channel number from SETUP message\n"); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; + } + + if (g_sngisdn_data.dchans[dChan].channels[bchan_no] == NULL) { + ftdm_log(FTDM_LOG_ERROR, "Incoming call on unconfigured b-channel:%d\n", bchan_no); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; + } + + sngisdn_info = g_sngisdn_data.dchans[dChan].channels[bchan_no]; + ftdmchan = sngisdn_info->ftdmchan; + ftdm_mutex_lock(ftdmchan->mutex); + + /* check if there is a pending state change, give it a bit to clear */ + if (check_for_state_change(ftdmchan) != FTDM_SUCCESS) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "Failed to wait for pending state change\n"); + ftdm_mutex_unlock(ftdmchan->mutex); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; + } + + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_INFO, "Received SETUP\n"); + switch (ftdmchan->state){ + case FTDM_CHANNEL_STATE_DOWN: /* Proper state to receive a SETUP */ + sngisdn_info->suInstId = get_unique_suInstId(suId); + sngisdn_info->spInstId = spInstId; + g_sngisdn_data.ccs[suId].active_spInstIds[spInstId] = sngisdn_info; + g_sngisdn_data.ccs[suId].active_suInstIds[sngisdn_info->suInstId] = sngisdn_info; + + /* try to open the channel */ + if (ftdm_channel_open_chan(ftdmchan) != FTDM_SUCCESS) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "Failed to open channel"); + sngisdn_set_flag(sngisdn_info, FLAG_LOCAL_REL); + ftdmchan->caller_data.hangup_cause = FTDM_CAUSE_NORMAL_TEMPORARY_FAILURE; + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_CANCEL); + } else { + /* Fill in call information */ + cpy_calling_num_from_sngisdn(&ftdmchan->caller_data, &conEvnt->cgPtyNmb); + cpy_called_num_from_sngisdn(&ftdmchan->caller_data, &conEvnt->cdPtyNmb); + cpy_calling_name_from_sngisdn(&ftdmchan->caller_data, conEvnt); + + /* Get ani2 */ +#if 0 + /* TODO: confirm that this works in the field */ + if (conEvnt->niOperSysAcc.eh.pres) { + if (conEvnt->niOperSysAcc.typeAcc.pres) { + ftdmchan->caller_data.aniII = (uint8_t)conEvnt->niOperSysAcc.typeAcc.val; + ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Received ANI: type of access:%x", conEvnt->niOperSysAcc.typeAcc.val); + } + if (conEvnt->niOperSysAcc.typeServ.pres) { + ftdmchan->caller_data.aniII = (uint8_t)conEvnt->niOperSysAcc.typeServ.val; + ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Received ANI: type of service:%x", conEvnt->niOperSysAcc.typeServ.val); + } + } +#endif + + /* set the state of the channel to collecting...the rest is done by the chan monitor */ + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_COLLECT); + + } + break; + case FTDM_CHANNEL_STATE_DIALING: /* glare */ + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_WARNING, "Received SETUP in DIALING state, glare, queueing incoming call\n"); + /* the flag the channel as having a collision */ + sngisdn_set_flag(sngisdn_info, FLAG_GLARE); + + /* save the SETUP for processing once the channel has gone to DOWN */ + memcpy(&sngisdn_info->glare.setup, conEvnt, sizeof(*conEvnt)); + sngisdn_info->glare.suId = suId; + sngisdn_info->glare.suInstId = suInstId; + sngisdn_info->glare.spInstId = spInstId; + sngisdn_info->glare.dChan = dChan; + sngisdn_info->glare.ces = ces; + break; + default: + ftdm_log_chan(ftdmchan, FTDM_LOG_CRIT, "Received SETUP in an invalid state (%s)\n", ftdm_channel_state2str(ftdmchan->state)); + break; + } + ftdm_mutex_unlock(ftdmchan->mutex); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; +} + +/* Remote side transmit a CONNECT or CONNECT ACK */ +void sngisdn_rcv_con_cfm (int16_t suId, uint32_t suInstId, uint32_t spInstId, CnStEvnt *cnStEvnt, int16_t dChan, uint8_t ces) +{ + ISDN_FUNC_TRACE_ENTER(__FUNCTION__); + sngisdn_chan_data_t *sngisdn_info; + ftdm_channel_t *ftdmchan; + + ftdm_log(FTDM_LOG_DEBUG, "%s suId:%d suInstId:%d spInstId:%d dChan:%d ces:%d\n", __FUNCTION__, suId, suInstId, spInstId, dChan, ces); + + + ftdm_assert(g_sngisdn_data.ccs[suId].activation_done != 0, "Con Ind on unconfigured cc\n"); + ftdm_assert(g_sngisdn_data.dchans[dChan].num_spans != 0, "Con Ind on unconfigured dchan\n"); + + if (get_ftdmchan_by_suInstId(suId, suInstId, &sngisdn_info) != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_CRIT, "Could not find matching call suId:%d suInstId:%d spInstId:%d\n", suId, suInstId, spInstId); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; + } + + ftdmchan = (ftdm_channel_t*)sngisdn_info->ftdmchan; + + if (!sngisdn_info->spInstId) { + sngisdn_info->spInstId = spInstId; + g_sngisdn_data.ccs[suId].active_spInstIds[spInstId] = sngisdn_info; + } + + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_INFO, "Received CONNECT/CONNECT ACK\n"); + ftdm_mutex_lock(ftdmchan->mutex); + + /* check if there is a pending state change, give it a bit to clear */ + if (check_for_state_change(ftdmchan) != FTDM_SUCCESS) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "Failed to wait for pending state change\n"); + ftdm_mutex_unlock(ftdmchan->mutex); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; + } + + if (ftdmchan->span->trunk_type == FTDM_TRUNK_BRI_PTMP && + ((sngisdn_span_data_t*)ftdmchan->span->signal_data)->signalling == SNGISDN_SIGNALING_NET) { + + if(sngisdn_info->ces == CES_MNGMNT) { + /* We assign the call to the first TE */ + sngisdn_info->ces = ces; + } else { + /* We already assigned this call, do nothing */ + ftdm_mutex_unlock(ftdmchan->mutex); + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Call already assigned, ignoring connect\n"); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; + } + } + + if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_OUTBOUND)) { + switch(ftdmchan->state) { + case FTDM_CHANNEL_STATE_PROGRESS: + case FTDM_CHANNEL_STATE_PROGRESS_MEDIA: + case FTDM_CHANNEL_STATE_DIALING: + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_UP); + break; + default: + ftdm_log_chan(ftdmchan, FTDM_LOG_CRIT, "Received CONNECT/CONNECT ACK in an invalid state (%s)\n", + ftdm_channel_state2str(ftdmchan->state)); + + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_RESTART); + break; + } + } else { + switch(ftdmchan->state) { + case FTDM_CHANNEL_STATE_UP: + /* This is the only valid state we should get a CONNECT ACK on */ + /* do nothing */ + break; + default: + ftdm_log_chan(ftdmchan, FTDM_LOG_CRIT, "Received CONNECT/CONNECT ACK in an invalid state (%s)\n", ftdm_channel_state2str(ftdmchan->state)); + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_RESTART); + break; + } + } + + ftdm_mutex_unlock(ftdmchan->mutex); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; +} + +void sngisdn_rcv_cnst_ind (int16_t suId, uint32_t suInstId, uint32_t spInstId, CnStEvnt *cnStEvnt, uint8_t evntType, int16_t dChan, uint8_t ces) +{ + ISDN_FUNC_TRACE_ENTER(__FUNCTION__); + sngisdn_chan_data_t *sngisdn_info; + ftdm_channel_t *ftdmchan; + + ftdm_log(FTDM_LOG_DEBUG, "%s suId:%d suInstId:%d spInstId:%d dChan:%d ces:%d\n", __FUNCTION__, suId, suInstId, spInstId, dChan, ces); + + ftdm_assert(g_sngisdn_data.ccs[suId].activation_done != 0, "Con Ind on unconfigured cc\n"); + ftdm_assert(g_sngisdn_data.dchans[dChan].num_spans != 0, "Con Ind on unconfigured dchan\n"); + + if (get_ftdmchan_by_suInstId(suId, suInstId, &sngisdn_info) != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_CRIT, "Could not find matching call suId:%d suInstId:%d spInstId:%d\n", suId, suInstId, spInstId); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; + } + + if (!sngisdn_info->spInstId) { + sngisdn_info->spInstId = spInstId; + g_sngisdn_data.ccs[suId].active_spInstIds[spInstId] = sngisdn_info; + } + + ftdmchan = (ftdm_channel_t*)sngisdn_info->ftdmchan; + ftdm_log_chan(ftdmchan, FTDM_LOG_INFO, "Received %s\n", + (evntType == MI_ALERTING)?"ALERT": + (evntType == MI_CALLPROC)?"PROCEED": + (evntType == MI_PROGRESS)?"PROGRESS":"UNKNOWN"); + ftdm_mutex_lock(ftdmchan->mutex); + + /* check if there is a pending state change, give it a bit to clear */ + if (check_for_state_change(ftdmchan) != FTDM_SUCCESS) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "Failed to wait for pending state change\n"); + ftdm_mutex_unlock(ftdmchan->mutex); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; + } + + switch(ftdmchan->state) { + case FTDM_CHANNEL_STATE_DIALING: + if (evntType == MI_PROGRESS) { + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_PROGRESS_MEDIA); + } else { + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_PROGRESS); + } + break; + case FTDM_CHANNEL_STATE_PROGRESS: + if (evntType == MI_PROGRESS) { + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_PROGRESS_MEDIA); + } + break; + case FTDM_CHANNEL_STATE_PROGRESS_MEDIA: + /* Do nothing */ + break; + default: + ftdm_log_chan(ftdmchan, FTDM_LOG_CRIT, "Received ALERT/PROCEED/PROGRESS in an invalid state (%s)\n", + ftdm_channel_state2str(ftdmchan->state)); + + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_RESTART); + break; + } + + ftdm_mutex_unlock(ftdmchan->mutex); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; +} + +void sngisdn_rcv_disc_ind (int16_t suId, uint32_t suInstId, uint32_t spInstId, DiscEvnt *discEvnt) +{ + ISDN_FUNC_TRACE_ENTER(__FUNCTION__); + sngisdn_chan_data_t *sngisdn_info; + ftdm_channel_t *ftdmchan = NULL; + + ftdm_log(FTDM_LOG_DEBUG, "%s suId:%d suInstId:%d spInstId:%d\n", __FUNCTION__, suId, suInstId, spInstId); + + ftdm_assert(spInstId != 0, "Received DISCONNECT with invalid id"); + + if (spInstId && get_ftdmchan_by_spInstId(suId, spInstId, &sngisdn_info) == FTDM_SUCCESS) { + ftdmchan = (ftdm_channel_t*)sngisdn_info->ftdmchan; + } else if (suInstId && get_ftdmchan_by_suInstId(suId, suInstId, &sngisdn_info) == FTDM_SUCCESS) { + ftdmchan = (ftdm_channel_t*)sngisdn_info->ftdmchan; + } else { + ftdm_log(FTDM_LOG_CRIT, "Could not find matching call suId:%d suInstId:%d spInstId:%d\n", suId, suInstId, spInstId); + return; + } + + if (!sngisdn_info->spInstId) { + sngisdn_info->spInstId = spInstId; + g_sngisdn_data.ccs[suId].active_spInstIds[spInstId] = sngisdn_info; + } + + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_INFO, "Received DISCONNECT\n"); + ftdm_mutex_lock(ftdmchan->mutex); + /* check if there is a pending state change, give it a bit to clear */ + if (check_for_state_change(ftdmchan) != FTDM_SUCCESS) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "Failed to wait for pending state change\n"); + ftdm_mutex_unlock(ftdmchan->mutex); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; + } + + switch (ftdmchan->state) { + case FTDM_CHANNEL_STATE_RING: + case FTDM_CHANNEL_STATE_DIALING: + case FTDM_CHANNEL_STATE_PROGRESS: + case FTDM_CHANNEL_STATE_PROGRESS_MEDIA: + case FTDM_CHANNEL_STATE_COLLECT: + case FTDM_CHANNEL_STATE_UP: + if (discEvnt->causeDgn[0].eh.pres && discEvnt->causeDgn[0].causeVal.pres) { + ftdmchan->caller_data.hangup_cause = discEvnt->causeDgn[0].causeVal.val; + } else { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_WARNING, "DISCONNECT did not have a cause code\n"); + ftdmchan->caller_data.hangup_cause = 0; + } + sngisdn_set_flag(sngisdn_info, FLAG_REMOTE_REL); + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_TERMINATING); + break; + default: + ftdm_log_chan(ftdmchan, FTDM_LOG_CRIT, "Received DISCONNECT in an invalid state (%s)\n", + ftdm_channel_state2str(ftdmchan->state)); + /* start reset procedure */ + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_RESTART); + break; + } + + ftdm_mutex_unlock(ftdmchan->mutex); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; +} + +void sngisdn_rcv_rel_ind (int16_t suId, uint32_t suInstId, uint32_t spInstId, RelEvnt *relEvnt) +{ + ISDN_FUNC_TRACE_ENTER(__FUNCTION__); + ftdm_log(FTDM_LOG_DEBUG, "%s suId:%d suInstId:%d spInstId:%d\n", __FUNCTION__, suId, suInstId, spInstId); + + sngisdn_chan_data_t *sngisdn_info ; + ftdm_channel_t *ftdmchan = NULL; + + /* get the ftdmchan and ss7_chan_data from the circuit */ + if (suInstId && (get_ftdmchan_by_suInstId(suId, suInstId, &sngisdn_info) == FTDM_SUCCESS)) { + ftdmchan = sngisdn_info->ftdmchan; + } else if (spInstId && (get_ftdmchan_by_spInstId(suId, spInstId, &sngisdn_info) == FTDM_SUCCESS)) { + ftdmchan = sngisdn_info->ftdmchan; + } + + if (ftdmchan == NULL) { + ftdm_log(FTDM_LOG_CRIT, "Failed to find matching channel suId:%d suInstId:%d spInstId:%d\n", suId, suInstId, spInstId); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; + } + + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_INFO, "Received RELEASE/RELEASE COMPLETE\n"); + /* now that we have the right channel...put a lock on it so no-one else can use it */ + ftdm_mutex_lock(ftdmchan->mutex); + + /* check if there is a pending state change, give it a bit to clear */ + if (check_for_state_change(ftdmchan)) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "Failed to wait for pending state change\n"); + ftdm_mutex_unlock(ftdmchan->mutex); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; + }; + + /* check whether the ftdm channel is in a state to accept a call */ + switch (ftdmchan->state) { + case FTDM_CHANNEL_STATE_HANGUP_COMPLETE: + /* go to DOWN */ + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_DOWN); + break; + case FTDM_CHANNEL_STATE_DOWN: + /* do nothing, just drop the message */ + break; + case FTDM_CHANNEL_STATE_PROGRESS: + case FTDM_CHANNEL_STATE_PROGRESS_MEDIA: + /* Remote side sent a SETUP, then a RELEASE COMPLETE to abort call - this is an abort */ + sngisdn_set_flag(sngisdn_info, FLAG_REMOTE_ABORT); + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_TERMINATING); + break; + case FTDM_CHANNEL_STATE_DIALING: + /* Remote side rejected our SETUP message on outbound call */ + sngisdn_set_flag(sngisdn_info, FLAG_REMOTE_ABORT); + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_TERMINATING); + break; + case FTDM_CHANNEL_STATE_UP: + sngisdn_set_flag(sngisdn_info, FLAG_REMOTE_ABORT); + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_TERMINATING); + break; + default: + /* Should just stop the call...but a reset is easier for now (since it does hangup the call) */ + ftdm_log_chan(ftdmchan, FTDM_LOG_CRIT, "Received RELEASE in an invalid state (%s)\n", + ftdm_channel_state2str(ftdmchan->state)); + + /* go to RESTART */ + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_RESTART); + + break; + /**************************************************************************/ + } + + /* unlock the channel */ + ftdm_mutex_unlock(ftdmchan->mutex); + + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; +} + +void sngisdn_rcv_dat_ind (int16_t suId, uint32_t suInstId, uint32_t spInstId, InfoEvnt *infoEvnt) +{ + ISDN_FUNC_TRACE_ENTER(__FUNCTION__); + ftdm_log(FTDM_LOG_INFO, "Received DATA IND suId:%d suInstId:%d spInstId:%d\n", suId, suInstId, spInstId); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; +} + +void sngisdn_rcv_sshl_ind (int16_t suId, uint32_t suInstId, uint32_t spInstId, SsHlEvnt *ssHlEvnt, uint8_t action) +{ + ISDN_FUNC_TRACE_ENTER(__FUNCTION__); + ftdm_log(FTDM_LOG_INFO, "Received SSHL IND suId:%d suInstId:%d spInstId:%d\n", suId, suInstId, spInstId); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; +} + +void sngisdn_rcv_sshl_cfm (int16_t suId, uint32_t suInstId, uint32_t spInstId, SsHlEvnt *ssHlEvnt, uint8_t action) +{ + ISDN_FUNC_TRACE_ENTER(__FUNCTION__); + ftdm_log(FTDM_LOG_INFO, "Received SSHL CFM suId:%d suInstId:%d spInstId:%d\n", suId, suInstId, spInstId); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; +} + +void sngisdn_rcv_rmrt_ind (int16_t suId, uint32_t suInstId, uint32_t spInstId, RmRtEvnt *rmRtEvnt, uint8_t action) +{ + ISDN_FUNC_TRACE_ENTER(__FUNCTION__); + ftdm_log(FTDM_LOG_INFO, "Received RESUME/RETRIEVE ind suId:%d suInstId:%d spInstId:%d\n", suId, suInstId, spInstId); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; +} + +void sngisdn_rcv_rmrt_cfm (int16_t suId, uint32_t suInstId, uint32_t spInstId, RmRtEvnt *rmRtEvnt, uint8_t action) +{ + ISDN_FUNC_TRACE_ENTER(__FUNCTION__); + ftdm_log(FTDM_LOG_INFO, "Received RESUME/RETRIEVE CFM suId:%d suInstId:%d spInstId:%d\n", suId, suInstId, spInstId); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; +} + +void sngisdn_rcv_flc_ind (int16_t suId, uint32_t suInstId, uint32_t spInstId, StaEvnt *staEvnt) +{ + ISDN_FUNC_TRACE_ENTER(__FUNCTION__); + ftdm_log(FTDM_LOG_INFO, "Received FLOW CONTROL IND suId:%d suInstId:%d spInstId:%d\n", suId, suInstId, spInstId); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; +} + +void sngisdn_rcv_fac_ind (int16_t suId, uint32_t suInstId, uint32_t spInstId, FacEvnt *facEvnt, uint8_t evntType, int16_t dChan, uint8_t ces) +{ + ISDN_FUNC_TRACE_ENTER(__FUNCTION__); + ftdm_log(FTDM_LOG_INFO, "Received FACILITY IND suId:%d suInstId:%d spInstId:%d\n", suId, suInstId, spInstId); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; +} + +void sngisdn_rcv_sta_cfm ( int16_t suId, uint32_t suInstId, uint32_t spInstId, StaEvnt *staEvnt) +{ + ISDN_FUNC_TRACE_ENTER(__FUNCTION__); + ftdm_log(FTDM_LOG_DEBUG, "%s suId:%d suInstId:%d spInstId:%d\n", __FUNCTION__, suId, suInstId, spInstId); + + sngisdn_chan_data_t *sngisdn_info ; + ftdm_channel_t *ftdmchan = NULL; + uint8_t call_state = 0; + + if (staEvnt->callSte.eh.pres && staEvnt->callSte.callGlblSte.pres) { + call_state = staEvnt->callSte.callGlblSte.val; + } + + /* get the ftdmchan and ss7_chan_data from the circuit */ + if (suInstId && (get_ftdmchan_by_suInstId(suId, suInstId, &sngisdn_info) == FTDM_SUCCESS)) { + ftdmchan = sngisdn_info->ftdmchan; + } else if (spInstId && (get_ftdmchan_by_spInstId(suId, spInstId, &sngisdn_info) == FTDM_SUCCESS)) { + ftdmchan = sngisdn_info->ftdmchan; + } + + if (ftdmchan == NULL) { + ftdm_log(FTDM_LOG_CRIT, "Failed to find matching channel suId:%d suInstId:%d spInstId:%d\n", suId, suInstId, spInstId); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; + } + + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_INFO, "Received STATUS CONFIRM\n"); + /* now that we have the right channel...put a lock on it so no-one else can use it */ + ftdm_mutex_lock(ftdmchan->mutex); + + /* check if there is a pending state change, give it a bit to clear */ + if (check_for_state_change(ftdmchan)) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "Failed to wait for pending state change\n"); + ftdm_mutex_unlock(ftdmchan->mutex); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; + }; + + if (staEvnt->causeDgn[0].eh.pres && staEvnt->causeDgn[0].causeVal.pres) { + if (staEvnt->causeDgn[0].causeVal.val != 30) { + + if (staEvnt->callSte.eh.pres && staEvnt->callSte.callGlblSte.pres) { + call_state = staEvnt->callSte.callGlblSte.val; + /* Section 4.3.30 from INT Interface - Service Definition */ + ftdmchan->caller_data.hangup_cause = staEvnt->causeDgn[0].causeVal.val; + + + /* There is incompatibility between local and remote side call states some Q931 msgs probably got lost - initiate disconnect */ + ftdm_log_chan(ftdmchan, FTDM_LOG_WARNING, "Incompatible call states detected, remote side indicated state:%d our state:%s cause:%d\n", call_state, ftdm_channel_state2str(ftdmchan->state), staEvnt->causeDgn[0].causeVal.val); + + switch(call_state) { + /* Sere ITU-T Q931 for definition of call states */ + case 0: /* Remote switch thinks there are no calls on this channel */ + switch (ftdmchan->state) { + case FTDM_CHANNEL_STATE_COLLECT: + case FTDM_CHANNEL_STATE_DIALING: + sngisdn_set_flag(sngisdn_info, FLAG_REMOTE_ABORT); + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_TERMINATING); + break; + case FTDM_CHANNEL_STATE_TERMINATING: + /* We are in the process of clearing local states, + just make sure we will not send any messages to remote switch */ + sngisdn_set_flag(sngisdn_info, FLAG_REMOTE_ABORT); + break; + case FTDM_CHANNEL_STATE_HANGUP: + /* This cannot happen, state_advance always sets + ftdmchan to STATE_HANGUP_COMPLETE when in STATE_HANGUP + and we called check_for_state_change earlier so something is very wrong here!!! */ + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "How can we we in FTDM_CHANNEL_STATE_HANGUP after checking for state change?\n"); + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_RESTART); + break; + case FTDM_CHANNEL_STATE_HANGUP_COMPLETE: + /* We were waiting for remote switch to send RELEASE COMPLETE + but this will not happen, so just clear local state */ + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_DOWN); + break; + case FTDM_CHANNEL_STATE_DOWN: + /* If our local state is down as well, then there is nothing to do */ + break; + default: + ftdm_log_chan(ftdmchan, FTDM_LOG_CRIT, "Don't know how to handle incompatible state. remote call state:%d our state:%s\n", call_state, ftdm_channel_state2str(ftdmchan->state)); + break; + } + break; + case 8: /* Remote switch is in "Connect Request state" */ + switch (ftdmchan->state) { + case FTDM_CHANNEL_STATE_UP: + /* This is ok. We sent a Connect, and we are waiting for a connect ack */ + /* Do nothing */ + break; + case FTDM_CHANNEL_STATE_HANGUP_COMPLETE: + /* We hung up locally, but remote switch doesn't know send disconnect again*/ + sngisdn_snd_disconnect(ftdmchan); + break; + default: + ftdm_log_chan(ftdmchan, FTDM_LOG_CRIT, "Don't know how to handle incompatible state. remote call state:%d our state:%s\n", call_state, ftdm_channel_state2str(ftdmchan->state)); + break; + } + break; + default: + ftdm_log_chan(ftdmchan, FTDM_LOG_CRIT, "Don't know how to handle incompatible state. remote call state:%d our state:%s\n", call_state, ftdm_channel_state2str(ftdmchan->state)); + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_RESTART); + break; + } + } else { + ftdmchan->caller_data.hangup_cause = staEvnt->causeDgn[0].causeVal.val; + /* We could not extract the call state */ + ftdm_log_chan(ftdmchan, FTDM_LOG_CRIT, "Incompatible call states detected, but could not determine call (cause:%d)\n", ftdmchan->caller_data.hangup_cause); + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_RESTART); + } + + } + /**************************************************************************/ + } + + /* unlock the channel */ + ftdm_mutex_unlock(ftdmchan->mutex); + + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; +} + +void sngisdn_rcv_srv_ind ( int16_t suId, Srv *srvEvnt, int16_t dChan, uint8_t ces) +{ + ISDN_FUNC_TRACE_ENTER(__FUNCTION__); + ftdm_log(FTDM_LOG_INFO, "Received SERVICE IND suId:%d dChan:%d ces:%d\n", suId, dChan, ces); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; +} + +void sngisdn_rcv_srv_cfm ( int16_t suId, Srv *srvEvnt, int16_t dChan, uint8_t ces) +{ + ISDN_FUNC_TRACE_ENTER(__FUNCTION__); + ftdm_log(FTDM_LOG_INFO, "Received SERVICE CFM suId:%d dChan:%d ces:%d\n", suId, dChan, ces); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; +} + +void sngisdn_rcv_rst_ind (int16_t suId, Rst *rstEvnt, int16_t dChan, uint8_t ces, uint8_t evtType) +{ + ISDN_FUNC_TRACE_ENTER(__FUNCTION__); + ftdm_log(FTDM_LOG_INFO, "Received RESTART IND suId:%d dChan:%d ces:%d\n", suId, dChan, ces); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; +} + + +void sngisdn_rcv_rst_cfm ( int16_t suId, Rst *rstEvnt, int16_t dChan, uint8_t ces, uint8_t evtType) +{ + ISDN_FUNC_TRACE_ENTER(__FUNCTION__); + ftdm_log(FTDM_LOG_INFO, "Received RESTART CFM suId:%d dChan:%d ces:%d\n", suId, dChan, ces); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; +} + +void sngisdn_rcv_phy_ind(SuId suId, Reason reason) +{ + ISDN_FUNC_TRACE_ENTER(__FUNCTION__); + ftdm_log(FTDM_LOG_INFO, "[SNGISDN PHY] D-chan %d : %s\n", suId, DECODE_LL1_REASON(reason)); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; +} + +void sngisdn_rcv_q921_ind(BdMngmt *status) +{ + ISDN_FUNC_TRACE_ENTER(__FUNCTION__); + + unsigned j,k; + ftdm_span_t *ftdmspan = NULL; + + for(j=1;j<=g_sngisdn_data.num_dchan;j++) { + for(k=1;k<=g_sngisdn_data.dchans[j].num_spans;k++) { + if (g_sngisdn_data.dchans[j].spans[k]->link_id == status->t.usta.lnkNmb) { + ftdmspan = (ftdm_span_t*)g_sngisdn_data.dchans[j].spans[k]->ftdm_span; + } + } + } + if (ftdmspan == NULL) { + ftdm_log(FTDM_LOG_CRIT, "Received q921 status on unconfigured span\n", status->t.usta.lnkNmb); +#ifdef DEBUG_MODE + FORCE_SEGFAULT +#endif + return; + } + + switch (status->t.usta.alarm.category) { + case (LCM_CATEGORY_INTERFACE): + ftdm_log(FTDM_LOG_INFO, "[SNGISDN Q921] %s: %s: %s(%d): %s(%d)\n", + ftdmspan->name, + DECODE_LCM_CATEGORY(status->t.usta.alarm.category), + DECODE_LCM_EVENT(status->t.usta.alarm.event), status->t.usta.alarm.event, + DECODE_LCM_CAUSE(status->t.usta.alarm.cause), status->t.usta.alarm.cause); + break; + default: + ftdm_log(FTDM_LOG_INFO, "[SNGISDN Q921] %s: %s: %s(%d): %s(%d)\n", + ftdmspan->name, + DECODE_LCM_CATEGORY(status->t.usta.alarm.category), + DECODE_LLD_EVENT(status->t.usta.alarm.event), status->t.usta.alarm.event, + DECODE_LLD_CAUSE(status->t.usta.alarm.cause), status->t.usta.alarm.cause); + break; + } + + ISDN_FUNC_TRACE_EXIT(__FUNCTION__) + return; +} +void sngisdn_rcv_q931_ind(InMngmt *status) +{ + ISDN_FUNC_TRACE_ENTER(__FUNCTION__); + + + + ftdm_span_t *ftdmspan = NULL; + + if (status->t.usta.alarm.cause == 287) { + get_memory_info(); + return; + } + + switch (status->t.usta.alarm.category) { + case (LCM_CATEGORY_INTERFACE): + ftdm_log(FTDM_LOG_WARNING, "[SNGISDN Q931] s%d: %s: %s(%d): %s(%d)\n", + status->t.usta.suId, + DECODE_LCM_CATEGORY(status->t.usta.alarm.category), + DECODE_LCM_EVENT(status->t.usta.alarm.event), status->t.usta.alarm.event, + DECODE_LCM_CAUSE(status->t.usta.alarm.cause), status->t.usta.alarm.cause); + + /* clean this up later */ + + switch (status->t.usta.alarm.event) { + case LCM_EVENT_UP: + case LCM_EVENT_DOWN: + { + unsigned j,k; + for(j=1;j<=g_sngisdn_data.num_dchan;j++) { + for(k=1;k<=g_sngisdn_data.dchans[j].num_spans;k++) { + if (g_sngisdn_data.dchans[j].spans[k]->link_id == status->t.usta.suId) { + ftdmspan = (ftdm_span_t*)g_sngisdn_data.dchans[j].spans[k]->ftdm_span; + } + } + } + + if (ftdmspan == NULL) { + ftdm_log(FTDM_LOG_CRIT, "Received q931 LCM EVENT on unconfigured span (suId:%d)\n", status->t.usta.suId); + return; + } + + sngisdn_set_span_sig_status(ftdmspan, (status->t.usta.alarm.event == LCM_EVENT_UP)?FTDM_SIG_STATE_UP:FTDM_SIG_STATE_DOWN); + } + break; + } + break; + default: + ftdm_log(FTDM_LOG_DEBUG, "[SNGISDN Q931] s%d: %s: %s(%d): %s(%d)\n", + status->t.usta.suId, + DECODE_LCM_CATEGORY(status->t.usta.alarm.category), + DECODE_LCM_EVENT(status->t.usta.alarm.event), status->t.usta.alarm.event, + DECODE_LCM_CAUSE(status->t.usta.alarm.cause), status->t.usta.alarm.cause); + break; + } + + + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; +} + +void sngisdn_rcv_cc_ind(CcMngmt *status) +{ + ISDN_FUNC_TRACE_ENTER(__FUNCTION__); + ftdm_log(FTDM_LOG_INFO, "RECEIVED %s\n", __FUNCTION__); + ISDN_FUNC_TRACE_EXIT(__FUNCTION__); + return; +} + +#define Q931_TRC_EVENT(event) (event == TL3PKTTX)?"TX": \ + (event == TL3PKTRX)?"RX":"UNKNOWN" + +void sngisdn_rcv_q931_trace(InMngmt *trc, Buffer *mBuf) +{ + MsgLen mlen; + MsgLen i; + int16_t j; + Buffer *tmp; + Data *cptr; + uint8_t data; + uint8_t tdata[1000]; + char *data_str = ftdm_calloc(1,MAX_DECODE_STR_LEN); /* TODO Find a proper size */ + + ftdm_assert(mBuf != NULLP, "Received a Q931 trace with no buffer"); + mlen = ((SsMsgInfo*)(mBuf->b_rptr))->len; + + if (mlen != 0) { + tmp = mBuf->b_cont; + cptr = tmp->b_rptr; + data = *cptr++; + i = 0; + + for(j=0;jb_wptr) { + tmp = tmp->b_cont; + if (tmp) cptr = tmp->b_rptr; + } + data = *cptr++; + } + + sngisdn_trace_q931(data_str, tdata, mlen); + ftdm_log(FTDM_LOG_INFO, "[SNGISDN Q931] FRAME %s:%s\n", Q931_TRC_EVENT(trc->t.trc.evnt), data_str); + } + + ftdm_safe_free(data_str); + /* We do not need to free mBuf in this case because stack does it */ + /* SPutMsg(mBuf); */ + return; +} + + +#define Q921_TRC_EVENT(event) (event == TL2FRMRX)?"RX": \ + (event == TL2FRMTX)?"TX": \ + (event == TL2TMR)?"TMR EXPIRED":"UNKNOWN" + +void sngisdn_rcv_q921_trace(BdMngmt *trc, Buffer *mBuf) +{ + MsgLen mlen; + MsgLen i; + int16_t j; + Buffer *tmp; + Data *cptr; + uint8_t data; + uint8_t tdata[16]; + char *data_str = ftdm_calloc(1,200); /* TODO Find a proper size */ + + + if (trc->t.trc.evnt == TL2TMR) { + goto end_of_trace; + } + + ftdm_assert(mBuf != NULLP, "Received a Q921 trace with no buffer"); + mlen = ((SsMsgInfo*)(mBuf->b_rptr))->len; + + if (mlen != 0) { + tmp = mBuf->b_cont; + cptr = tmp->b_rptr; + data = *cptr++; + i = 0; + while (i < mlen) { + j = 0; + for(j=0;j<16;j++) { + if (ib_wptr) { + tmp = tmp->b_cont; + if (tmp) cptr = tmp->b_rptr; + } + i++; + if (it.trc.evnt), data_str); + } +end_of_trace: + ftdm_safe_free(data_str); + SPutMsg(mBuf); + return; +} + + + +void sngisdn_rcv_sng_log(uint8_t level, char *fmt,...) +{ + char *data; + int ret; + va_list ap; + + va_start(ap, fmt); + ret = ftdm_vasprintf(&data, fmt, ap); + if (ret == -1) { + return; + } + + switch (level) { + case SNG_LOGLEVEL_DEBUG: + ftdm_log(FTDM_LOG_DEBUG, "sng_isdn->%s", data); + break; + case SNG_LOGLEVEL_WARN: + ftdm_log(FTDM_LOG_INFO, "sng_isdn->%s", data); + break; + case SNG_LOGLEVEL_INFO: + ftdm_log(FTDM_LOG_INFO, "sng_isdn->%s", data); + break; + case SNG_LOGLEVEL_STATS: + ftdm_log(FTDM_LOG_INFO, "sng_isdn->%s", data); + break; + case SNG_LOGLEVEL_ERROR: + ftdm_log(FTDM_LOG_ERROR, "sng_isdn->%s", data); +#ifdef DEBUG_MODE + FORCE_SEGFAULT +#endif + break; + case SNG_LOGLEVEL_CRIT: + ftdm_log(FTDM_LOG_CRIT, "sng_isdn->%s", data); +#ifdef DEBUG_MODE + FORCE_SEGFAULT +#endif + break; + default: + ftdm_log(FTDM_LOG_INFO, "sng_isdn->%s", data); + break; + } + return; +} + +/* For Emacs: + * Local Variables: + * mode:c + * indent-tabs-mode:t + * tab-width:4 + * c-basic-offset:4 + * End: + * For VIM: + * vim:set softtabstop=4 shiftwidth=4 tabstop=4: + */ + +/******************************************************************************/ diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_out.c b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_out.c new file mode 100644 index 0000000000..c5e986bea3 --- /dev/null +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_out.c @@ -0,0 +1,433 @@ +/* + * Copyright (c) 2010, Sangoma Technologies + * David Yat Sin + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of the original author; nor the names of any contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "ftmod_sangoma_isdn.h" + +extern ftdm_status_t cpy_calling_num_to_sngisdn(CgPtyNmb *cgPtyNmb, ftdm_caller_data_t *ftdm); +extern ftdm_status_t cpy_called_num_to_sngisdn(CdPtyNmb *cdPtyNmb, ftdm_caller_data_t *ftdm); +extern ftdm_status_t cpy_calling_name_to_sngisdn(ConEvnt *conEvnt, ftdm_channel_t *ftdmchan); + +void sngisdn_snd_setup(ftdm_channel_t *ftdmchan); +void sngisdn_snd_proceed(ftdm_channel_t *ftdmchan); +void sngisdn_snd_progress(ftdm_channel_t *ftdmchan); +void sngisdn_snd_connect(ftdm_channel_t *ftdmchan); +void sngisdn_snd_disconnect(ftdm_channel_t *ftdmchan); +void sngisdn_snd_release(ftdm_channel_t *ftdmchan); + + +void sngisdn_snd_setup(ftdm_channel_t *ftdmchan) +{ + ConEvnt conEvnt; + sngisdn_chan_data_t *sngisdn_info = ftdmchan->call_data; + sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*) ftdmchan->span->signal_data; + + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_INFO, "Sending SETUP\n"); + + sngisdn_info->suInstId = get_unique_suInstId(signal_data->cc_id); + sngisdn_info->spInstId = 0; + + memset(&conEvnt, 0, sizeof(conEvnt)); + + conEvnt.bearCap[0].eh.pres = PRSNT_NODEF; + conEvnt.bearCap[0].infoTranCap.pres = PRSNT_NODEF; + + conEvnt.bearCap[0].infoTranCap.val = IN_ITC_SPEECH; + + conEvnt.bearCap[0].codeStand0.pres = PRSNT_NODEF; + conEvnt.bearCap[0].codeStand0.val = IN_CSTD_CCITT; + conEvnt.bearCap[0].infoTranRate0.pres = PRSNT_NODEF; + conEvnt.bearCap[0].infoTranRate0.val = IN_ITR_64KBIT; + conEvnt.bearCap[0].tranMode.pres = PRSNT_NODEF; + conEvnt.bearCap[0].tranMode.val = IN_TM_CIRCUIT; + + conEvnt.chanId.eh.pres = PRSNT_NODEF; + conEvnt.chanId.prefExc.pres = PRSNT_NODEF; + conEvnt.chanId.prefExc.val = IN_PE_EXCLSVE; + conEvnt.chanId.dChanInd.pres = PRSNT_NODEF; + conEvnt.chanId.dChanInd.val = IN_DSI_NOTDCHAN; + conEvnt.chanId.intIdentPres.pres = PRSNT_NODEF; + conEvnt.chanId.intIdentPres.val = IN_IIP_IMPLICIT; + conEvnt.chanId.intIdent.pres = NOTPRSNT; + + if (ftdmchan->span->trunk_type == FTDM_TRUNK_BRI || + ftdmchan->span->trunk_type == FTDM_TRUNK_BRI_PTMP) { + /* Trillium stack rejests lyr1Ident on BRI, but Netbricks always sends it. + Check with Trillium if this ever causes calls to fail in the field */ + + /* BRI only params */ + conEvnt.chanId.intType.pres = PRSNT_NODEF; + conEvnt.chanId.intType.val = IN_IT_BASIC; + conEvnt.chanId.infoChanSel.pres = PRSNT_NODEF; + conEvnt.chanId.infoChanSel.val = ftdmchan->physical_chan_id; + } else { + /* PRI only params */ + if (signal_data->switchtype == SNGISDN_SWITCH_EUROISDN) { + conEvnt.bearCap[0].usrInfoLyr1Prot.pres = PRSNT_NODEF; + conEvnt.bearCap[0].usrInfoLyr1Prot.val = IN_UIL1_G711ULAW; + } else { + conEvnt.bearCap[0].usrInfoLyr1Prot.pres = PRSNT_NODEF; + conEvnt.bearCap[0].usrInfoLyr1Prot.val = IN_UIL1_G711ALAW; + } + conEvnt.bearCap[0].lyr1Ident.pres = PRSNT_NODEF; + conEvnt.bearCap[0].lyr1Ident.val = IN_L1_IDENT; + + conEvnt.chanId.intType.pres = PRSNT_NODEF; + conEvnt.chanId.intType.val = IN_IT_OTHER; + conEvnt.chanId.chanMapType.pres = PRSNT_NODEF; + conEvnt.chanId.chanMapType.val = IN_CMT_BCHAN; + conEvnt.chanId.nmbMap.pres = PRSNT_NODEF; + conEvnt.chanId.nmbMap.val = IN_NM_CHNNMB; + conEvnt.chanId.codeStand1.pres = PRSNT_NODEF; + conEvnt.chanId.codeStand1.val = IN_CSTD_CCITT; + conEvnt.chanId.chanNmbSlotMap.pres = PRSNT_NODEF; + conEvnt.chanId.chanNmbSlotMap.len = 1; + conEvnt.chanId.chanNmbSlotMap.val[0] = ftdmchan->physical_chan_id; + } + + conEvnt.progInd.eh.pres = PRSNT_NODEF; + conEvnt.progInd.location.pres = PRSNT_NODEF; + conEvnt.progInd.location.val = IN_LOC_USER; + conEvnt.progInd.codeStand0.pres = PRSNT_NODEF; + conEvnt.progInd.codeStand0.val = IN_CSTD_CCITT; + conEvnt.progInd.progDesc.pres = PRSNT_NODEF; + conEvnt.progInd.progDesc.val = IN_PD_NOTETEISDN; /* Not end-to-end ISDN */ + + if (signal_data->switchtype == SNGISDN_SWITCH_EUROISDN) { + conEvnt.sndCmplt.eh.pres = PRSNT_NODEF; + } + if (ftdmchan->span->trunk_type == FTDM_TRUNK_BRI_PTMP && + signal_data->signalling == SNGISDN_SIGNALING_NET) { + sngisdn_info->ces = CES_MNGMNT; + } + + cpy_calling_num_to_sngisdn(&conEvnt.cgPtyNmb, &ftdmchan->caller_data); + cpy_called_num_to_sngisdn(&conEvnt.cdPtyNmb, &ftdmchan->caller_data); + cpy_calling_name_to_sngisdn(&conEvnt, ftdmchan); + + ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Sending con request on suId:%d suInstId:%u spInstId:%u\n", signal_data->cc_id, sngisdn_info->suInstId, sngisdn_info->spInstId); + + if (sng_isdn_con_request(signal_data->cc_id, sngisdn_info->suInstId, &conEvnt, signal_data->dchan_id, sngisdn_info->ces)) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "stack refused SETUP request\n"); + } + return; +} + +/* Used only for BRI PTMP */ +void sngisdn_snd_con_complete(ftdm_channel_t *ftdmchan) +{ + CnStEvnt cnStEvnt; + + sngisdn_chan_data_t *sngisdn_info = (sngisdn_chan_data_t*) ftdmchan->call_data; + sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*) ftdmchan->span->signal_data; + + memset(&cnStEvnt, 0, sizeof(cnStEvnt)); + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_INFO, "Sending CONNECT ACK\n"); + + cnStEvnt.chanId.eh.pres = PRSNT_NODEF; + cnStEvnt.chanId.prefExc.pres = PRSNT_NODEF; + cnStEvnt.chanId.prefExc.val = IN_PE_EXCLSVE; + cnStEvnt.chanId.dChanInd.pres = PRSNT_NODEF; + cnStEvnt.chanId.dChanInd.val = IN_DSI_NOTDCHAN; + cnStEvnt.chanId.intIdentPres.pres = PRSNT_NODEF; + cnStEvnt.chanId.intIdentPres.val = IN_IIP_IMPLICIT; + + if (ftdmchan->span->trunk_type == FTDM_TRUNK_BRI || + ftdmchan->span->trunk_type == FTDM_TRUNK_BRI_PTMP) { + + /* BRI only params */ + cnStEvnt.chanId.intType.pres = PRSNT_NODEF; + cnStEvnt.chanId.intType.val = IN_IT_BASIC; + cnStEvnt.chanId.infoChanSel.pres = PRSNT_NODEF; + cnStEvnt.chanId.infoChanSel.val = ftdmchan->physical_chan_id; + } else { + cnStEvnt.chanId.intType.pres = PRSNT_NODEF; + cnStEvnt.chanId.intType.val = IN_IT_OTHER; + cnStEvnt.chanId.infoChanSel.pres = PRSNT_NODEF; + cnStEvnt.chanId.infoChanSel.val = IN_ICS_B1CHAN; + cnStEvnt.chanId.chanMapType.pres = PRSNT_NODEF; + cnStEvnt.chanId.chanMapType.val = IN_CMT_BCHAN; + cnStEvnt.chanId.nmbMap.pres = PRSNT_NODEF; + cnStEvnt.chanId.nmbMap.val = IN_NM_CHNNMB; + cnStEvnt.chanId.codeStand1.pres = PRSNT_NODEF; + cnStEvnt.chanId.codeStand1.val = IN_CSTD_CCITT; + cnStEvnt.chanId.chanNmbSlotMap.pres = PRSNT_NODEF; + cnStEvnt.chanId.chanNmbSlotMap.len = 1; + cnStEvnt.chanId.chanNmbSlotMap.val[0] = ftdmchan->physical_chan_id; + } + + + ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Sending connect ACK on suId:%d suInstId:%u spInstId:%u ces:%d\n", signal_data->cc_id, sngisdn_info->suInstId, sngisdn_info->spInstId, sngisdn_info->ces); + + if(sng_isdn_con_comp(signal_data->cc_id, sngisdn_info->suInstId, sngisdn_info->spInstId, &cnStEvnt, signal_data->dchan_id, sngisdn_info->ces)) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "stack refused CONNECT ACK request\n"); + } + return; +} + + +void sngisdn_snd_proceed(ftdm_channel_t *ftdmchan) +{ + CnStEvnt cnStEvnt; + + sngisdn_chan_data_t *sngisdn_info = (sngisdn_chan_data_t*) ftdmchan->call_data; + sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*) ftdmchan->span->signal_data; + + memset(&cnStEvnt, 0, sizeof(cnStEvnt)); + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_INFO, "Sending PROCEED\n"); + + cnStEvnt.chanId.eh.pres = PRSNT_NODEF; + cnStEvnt.chanId.prefExc.pres = PRSNT_NODEF; + cnStEvnt.chanId.prefExc.val = IN_PE_EXCLSVE; + cnStEvnt.chanId.dChanInd.pres = PRSNT_NODEF; + cnStEvnt.chanId.dChanInd.val = IN_DSI_NOTDCHAN; + cnStEvnt.chanId.intIdentPres.pres = PRSNT_NODEF; + cnStEvnt.chanId.intIdentPres.val = IN_IIP_IMPLICIT; + + if (ftdmchan->span->trunk_type == FTDM_TRUNK_BRI || + ftdmchan->span->trunk_type == FTDM_TRUNK_BRI_PTMP) { + + /* BRI only params */ + cnStEvnt.chanId.intType.pres = PRSNT_NODEF; + cnStEvnt.chanId.intType.val = IN_IT_BASIC; + cnStEvnt.chanId.infoChanSel.pres = PRSNT_NODEF; + cnStEvnt.chanId.infoChanSel.val = ftdmchan->physical_chan_id; + } else { + cnStEvnt.chanId.intType.pres = PRSNT_NODEF; + cnStEvnt.chanId.intType.val = IN_IT_OTHER; + cnStEvnt.chanId.infoChanSel.pres = PRSNT_NODEF; + cnStEvnt.chanId.infoChanSel.val = IN_ICS_B1CHAN; + cnStEvnt.chanId.chanMapType.pres = PRSNT_NODEF; + cnStEvnt.chanId.chanMapType.val = IN_CMT_BCHAN; + cnStEvnt.chanId.nmbMap.pres = PRSNT_NODEF; + cnStEvnt.chanId.nmbMap.val = IN_NM_CHNNMB; + cnStEvnt.chanId.codeStand1.pres = PRSNT_NODEF; + cnStEvnt.chanId.codeStand1.val = IN_CSTD_CCITT; + cnStEvnt.chanId.chanNmbSlotMap.pres = PRSNT_NODEF; + cnStEvnt.chanId.chanNmbSlotMap.len = 1; + cnStEvnt.chanId.chanNmbSlotMap.val[0] = ftdmchan->physical_chan_id; + } + + + ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Sending con status on suId:%d suInstId:%u spInstId:%u\n", signal_data->cc_id, sngisdn_info->suInstId, sngisdn_info->spInstId); + + if(sng_isdn_con_status(signal_data->cc_id, sngisdn_info->suInstId, sngisdn_info->spInstId, &cnStEvnt, MI_CALLPROC, signal_data->dchan_id, sngisdn_info->ces)) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "stack refused PROCEED request\n"); + } + return; +} + +void sngisdn_snd_progress(ftdm_channel_t *ftdmchan) +{ + CnStEvnt cnStEvnt; + + sngisdn_chan_data_t *sngisdn_info = (sngisdn_chan_data_t*) ftdmchan->call_data; + sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*) ftdmchan->span->signal_data; + + memset(&cnStEvnt, 0, sizeof(cnStEvnt)); + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_INFO, "Sending PROGRESS\n"); + + + cnStEvnt.progInd.eh.pres = PRSNT_NODEF; + cnStEvnt.progInd.location.pres = PRSNT_NODEF; + cnStEvnt.progInd.location.val = IN_LOC_USER; + cnStEvnt.progInd.codeStand0.pres = PRSNT_NODEF; + cnStEvnt.progInd.codeStand0.val = IN_CSTD_CCITT; + cnStEvnt.progInd.progDesc.pres = PRSNT_NODEF; + cnStEvnt.progInd.progDesc.val = IN_PD_NOTETEISDN; + + ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Sending con status on suId:%d suInstId:%u spInstId:%u\n", signal_data->cc_id, sngisdn_info->suInstId, sngisdn_info->spInstId); + if(sng_isdn_con_status(signal_data->cc_id, sngisdn_info->suInstId, sngisdn_info->spInstId,&cnStEvnt, MI_PROGRESS, signal_data->dchan_id, sngisdn_info->ces)) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "stack refused PROGRESS request\n"); + } + return; +} + +void sngisdn_snd_alert(ftdm_channel_t *ftdmchan) +{ + CnStEvnt cnStEvnt; + + sngisdn_chan_data_t *sngisdn_info = (sngisdn_chan_data_t*) ftdmchan->call_data; + sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*) ftdmchan->span->signal_data; + + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_INFO, "Sending ALERT\n"); + + memset(&cnStEvnt, 0, sizeof(cnStEvnt)); + + cnStEvnt.progInd.eh.pres = PRSNT_NODEF; + cnStEvnt.progInd.location.pres = PRSNT_NODEF; + cnStEvnt.progInd.location.val = IN_LOC_USER; + cnStEvnt.progInd.codeStand0.pres = PRSNT_NODEF; + cnStEvnt.progInd.codeStand0.val = IN_CSTD_CCITT; + cnStEvnt.progInd.progDesc.pres = PRSNT_NODEF; + cnStEvnt.progInd.progDesc.val = IN_PD_NOTETEISDN; + + ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Sending con status on suId:%d suInstId:%u spInstId:%u\n", signal_data->cc_id, sngisdn_info->suInstId, sngisdn_info->spInstId); + + if(sng_isdn_con_status(signal_data->cc_id, sngisdn_info->suInstId, sngisdn_info->spInstId,&cnStEvnt, MI_ALERTING, signal_data->dchan_id, sngisdn_info->ces)) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "stack refused ALERT request\n"); + } + return; +} + +void sngisdn_snd_connect(ftdm_channel_t *ftdmchan) +{ + CnStEvnt cnStEvnt; + + sngisdn_chan_data_t *sngisdn_info = (sngisdn_chan_data_t*) ftdmchan->call_data; + sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*) ftdmchan->span->signal_data; + + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_INFO, "Sending CONNECT\n"); + + memset(&cnStEvnt, 0, sizeof(cnStEvnt)); + + + cnStEvnt.chanId.eh.pres = PRSNT_NODEF; + cnStEvnt.chanId.prefExc.pres = PRSNT_NODEF; + cnStEvnt.chanId.prefExc.val = IN_PE_EXCLSVE; + cnStEvnt.chanId.dChanInd.pres = PRSNT_NODEF; + cnStEvnt.chanId.dChanInd.val = IN_DSI_NOTDCHAN; + cnStEvnt.chanId.intIdentPres.pres = PRSNT_NODEF; + cnStEvnt.chanId.intIdentPres.val = IN_IIP_IMPLICIT; + + if (ftdmchan->span->trunk_type == FTDM_TRUNK_BRI || + ftdmchan->span->trunk_type == FTDM_TRUNK_BRI_PTMP) { + + /* BRI only params */ + cnStEvnt.chanId.intType.pres = PRSNT_NODEF; + cnStEvnt.chanId.intType.val = IN_IT_BASIC; + cnStEvnt.chanId.infoChanSel.pres = PRSNT_NODEF; + cnStEvnt.chanId.infoChanSel.val = ftdmchan->physical_chan_id; + } else { + cnStEvnt.chanId.intType.pres = PRSNT_NODEF; + cnStEvnt.chanId.intType.val = IN_IT_OTHER; + cnStEvnt.chanId.infoChanSel.pres = PRSNT_NODEF; + cnStEvnt.chanId.infoChanSel.val = IN_ICS_B1CHAN; + cnStEvnt.chanId.chanMapType.pres = PRSNT_NODEF; + cnStEvnt.chanId.chanMapType.val = IN_CMT_BCHAN; + cnStEvnt.chanId.nmbMap.pres = PRSNT_NODEF; + cnStEvnt.chanId.nmbMap.val = IN_NM_CHNNMB; + cnStEvnt.chanId.codeStand1.pres = PRSNT_NODEF; + cnStEvnt.chanId.codeStand1.val = IN_CSTD_CCITT; + cnStEvnt.chanId.chanNmbSlotMap.pres = PRSNT_NODEF; + cnStEvnt.chanId.chanNmbSlotMap.len = 1; + cnStEvnt.chanId.chanNmbSlotMap.val[0] = ftdmchan->physical_chan_id; + } + + ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Sending con response on suId:%d suInstId:%u spInstId:%u\n", signal_data->cc_id, sngisdn_info->suInstId, sngisdn_info->spInstId); + if (sng_isdn_con_response(signal_data->cc_id, sngisdn_info->suInstId, sngisdn_info->spInstId, &cnStEvnt, signal_data->dchan_id, sngisdn_info->ces)) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "stack refused CONNECT request\n"); + } + return; +} + +void sngisdn_snd_disconnect(ftdm_channel_t *ftdmchan) +{ + DiscEvnt discEvnt; + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_INFO, "Sending DISCONNECT\n"); + + sngisdn_chan_data_t *sngisdn_info = (sngisdn_chan_data_t*) ftdmchan->call_data; + sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*) ftdmchan->span->signal_data; + + memset(&discEvnt, 0, sizeof(discEvnt)); + + /* Fill discEvnt here */ + discEvnt.causeDgn[0].eh.pres = PRSNT_NODEF; + discEvnt.causeDgn[0].location.pres = PRSNT_NODEF; + discEvnt.causeDgn[0].location.val = IN_LOC_PRIVNETLU; + discEvnt.causeDgn[0].codeStand3.pres = PRSNT_NODEF; + discEvnt.causeDgn[0].codeStand3.val = IN_CSTD_CCITT; + discEvnt.causeDgn[0].causeVal.pres = PRSNT_NODEF; + discEvnt.causeDgn[0].causeVal.val = ftdmchan->caller_data.hangup_cause; + discEvnt.causeDgn[0].recommend.pres = NOTPRSNT; + discEvnt.causeDgn[0].dgnVal.pres = NOTPRSNT; + + ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Sending disc request on suId:%d suInstId:%u spInstId:%u\n", signal_data->cc_id, sngisdn_info->suInstId, sngisdn_info->spInstId); + if (sng_isdn_disc_request(signal_data->cc_id, sngisdn_info->suInstId, sngisdn_info->spInstId, &discEvnt)) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "stack refused DISCONNECT request\n"); + } + return; +} +void sngisdn_snd_release(ftdm_channel_t *ftdmchan) +{ + RelEvnt relEvnt; + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_INFO, "Sending RELEASE/RELEASE COMPLETE\n"); + + sngisdn_chan_data_t *sngisdn_info = (sngisdn_chan_data_t*) ftdmchan->call_data; + sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*) ftdmchan->span->signal_data; + + memset(&relEvnt, 0, sizeof(relEvnt)); + + /* Fill discEvnt here */ + relEvnt.causeDgn[0].eh.pres = PRSNT_NODEF; + relEvnt.causeDgn[0].location.pres = PRSNT_NODEF; + relEvnt.causeDgn[0].location.val = IN_LOC_PRIVNETLU; + relEvnt.causeDgn[0].codeStand3.pres = PRSNT_NODEF; + relEvnt.causeDgn[0].codeStand3.val = IN_CSTD_CCITT; + + relEvnt.causeDgn[0].causeVal.pres = PRSNT_NODEF; + relEvnt.causeDgn[0].causeVal.val = ftdmchan->caller_data.hangup_cause; + relEvnt.causeDgn[0].recommend.pres = NOTPRSNT; + relEvnt.causeDgn[0].dgnVal.pres = NOTPRSNT; + + ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Sending release request on suId:%d suInstId:%u spInstId:%u\n", signal_data->cc_id, sngisdn_info->suInstId, sngisdn_info->spInstId); + + if (sng_isdn_release_request(signal_data->cc_id, sngisdn_info->suInstId, sngisdn_info->spInstId, &relEvnt)) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "stack refused RELEASE/RELEASE COMPLETE request\n"); + } + return; +} + + +void sngisdn_snd_reset(ftdm_channel_t *ftdmchan) +{ + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_INFO, "Sending RESET\n"); + ftdm_log_chan(ftdmchan, FTDM_LOG_CRIT, "%s not implemented\n", __FUNCTION__); + /* TODO: implement me */ + return; +} + + + +/* For Emacs: + * Local Variables: + * mode:c + * indent-tabs-mode:t + * tab-width:4 + * c-basic-offset:4 + * End: + * For VIM: + * vim:set softtabstop=4 shiftwidth=4 tabstop=4: + */ + +/******************************************************************************/ diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_support.c b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_support.c new file mode 100644 index 0000000000..b922efc809 --- /dev/null +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_support.c @@ -0,0 +1,353 @@ +/* + * Copyright (c) 2010, Sangoma Technologies + * David Yat Sin + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of the original author; nor the names of any contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "ftmod_sangoma_isdn.h" + +ftdm_status_t cpy_calling_num_from_sngisdn(ftdm_caller_data_t *ftdm, CgPtyNmb *cgPtyNmb); +ftdm_status_t cpy_called_num_from_sngisdn(ftdm_caller_data_t *ftdm, CdPtyNmb *cdPtyNmb); +ftdm_status_t cpy_redir_num_from_sngisdn(ftdm_caller_data_t *ftdm, RedirNmb *redirNmb); +ftdm_status_t cpy_calling_name_from_sngisdn(ftdm_caller_data_t *ftdm, ConEvnt *conEvnt); + +ftdm_status_t cpy_calling_num_to_sngisdn(CgPtyNmb *cgPtyNmb, ftdm_caller_data_t *ftdm); +ftdm_status_t cpy_called_num_to_sngisdn(CdPtyNmb *cdPtyNmb, ftdm_caller_data_t *ftdm); +ftdm_status_t cpy_redir_num_to_sngisdn(RedirNmb *redirNmb, ftdm_caller_data_t *ftdm); +ftdm_status_t cpy_calling_name_to_sngisdn(ConEvnt *conEvnt, ftdm_channel_t *ftdmchan); + +extern ftdm_sngisdn_data_t g_sngisdn_data; +void get_memory_info(void); + +void clear_call_data(sngisdn_chan_data_t *sngisdn_info) +{ + uint32_t cc_id = ((sngisdn_span_data_t*)sngisdn_info->ftdmchan->span->signal_data)->cc_id; + + g_sngisdn_data.ccs[cc_id].active_spInstIds[sngisdn_info->spInstId]=NULL; + g_sngisdn_data.ccs[cc_id].active_suInstIds[sngisdn_info->suInstId]=NULL; + + sngisdn_info->suInstId = 0; + sngisdn_info->spInstId = 0; + sngisdn_info->globalFlg = 0; + sngisdn_info->flags = 0; + return; +} + +uint32_t get_unique_suInstId(uint8_t cc_id) +{ + uint32_t suInstId; + ftdm_mutex_lock(g_sngisdn_data.ccs[cc_id].request_mutex); + suInstId = g_sngisdn_data.ccs[cc_id].last_suInstId; + + while(1) { + if (++suInstId == MAX_INSTID) { + suInstId = 1; + } + if (g_sngisdn_data.ccs[cc_id].active_suInstIds[suInstId] == NULL) { + g_sngisdn_data.ccs[cc_id].last_suInstId = suInstId; + ftdm_mutex_unlock(g_sngisdn_data.ccs[cc_id].request_mutex); + return suInstId; + } + } + /* Should never reach here */ + ftdm_mutex_unlock(g_sngisdn_data.ccs[cc_id].request_mutex); + return 0; +} + +ftdm_status_t get_ftdmchan_by_suInstId(uint8_t cc_id, uint32_t suInstId, sngisdn_chan_data_t **sngisdn_data) +{ + ftdm_assert_return(g_sngisdn_data.ccs[cc_id].activation_done, FTDM_FAIL, "Trying to find call on unconfigured CC\n"); + + if (g_sngisdn_data.ccs[cc_id].active_suInstIds[suInstId] == NULL) { + return FTDM_FAIL; + } + *sngisdn_data = g_sngisdn_data.ccs[cc_id].active_suInstIds[suInstId]; + return FTDM_SUCCESS; +} + +ftdm_status_t get_ftdmchan_by_spInstId(uint8_t cc_id, uint32_t spInstId, sngisdn_chan_data_t **sngisdn_data) +{ + ftdm_assert_return(g_sngisdn_data.ccs[cc_id].activation_done, FTDM_FAIL, "Trying to find call on unconfigured CC\n"); + + if (g_sngisdn_data.ccs[cc_id].active_spInstIds[spInstId] == NULL) { + return FTDM_FAIL; + } + *sngisdn_data = g_sngisdn_data.ccs[cc_id].active_spInstIds[spInstId]; + return FTDM_SUCCESS; +} + + +ftdm_status_t cpy_calling_num_from_sngisdn(ftdm_caller_data_t *ftdm, CgPtyNmb *cgPtyNmb) +{ + if (cgPtyNmb->eh.pres != PRSNT_NODEF) { + return FTDM_FAIL; + } + + if (cgPtyNmb->screenInd.pres == PRSNT_NODEF) { + ftdm->screen = cgPtyNmb->screenInd.val; + } + + if (cgPtyNmb->presInd0.pres == PRSNT_NODEF) { + ftdm->pres = cgPtyNmb->presInd0.val; + } + + if (cgPtyNmb->nmbPlanId.pres == PRSNT_NODEF) { + ftdm->cid_num.plan = cgPtyNmb->nmbPlanId.val; + } + if (cgPtyNmb->typeNmb1.pres == PRSNT_NODEF) { + ftdm->cid_num.type = cgPtyNmb->typeNmb1.val; + } + + if (cgPtyNmb->nmbDigits.pres == PRSNT_NODEF) { + ftdm_copy_string(ftdm->cid_num.digits, (const char*)cgPtyNmb->nmbDigits.val, cgPtyNmb->nmbDigits.len+1); + } + return FTDM_SUCCESS; +} + +ftdm_status_t cpy_called_num_from_sngisdn(ftdm_caller_data_t *ftdm, CdPtyNmb *cdPtyNmb) +{ + if (cdPtyNmb->eh.pres != PRSNT_NODEF) { + return FTDM_FAIL; + } + + if (cdPtyNmb->nmbPlanId.pres == PRSNT_NODEF) { + ftdm->cid_num.plan = cdPtyNmb->nmbPlanId.val; + } + + if (cdPtyNmb->typeNmb0.pres == PRSNT_NODEF) { + ftdm->cid_num.type = cdPtyNmb->typeNmb0.val; + } + + if (cdPtyNmb->nmbDigits.pres == PRSNT_NODEF) { + ftdm_copy_string(ftdm->dnis.digits, (const char*)cdPtyNmb->nmbDigits.val, cdPtyNmb->nmbDigits.len+1); + } + return FTDM_SUCCESS; +} + +ftdm_status_t cpy_redir_num_from_sngisdn(ftdm_caller_data_t *ftdm, RedirNmb *redirNmb) +{ + if (redirNmb->eh.pres != PRSNT_NODEF) { + return FTDM_FAIL; + } + + if (redirNmb->nmbPlanId.pres == PRSNT_NODEF) { + ftdm->rdnis.plan = redirNmb->nmbPlanId.val; + } + + if (redirNmb->typeNmb.pres == PRSNT_NODEF) { + ftdm->rdnis.type = redirNmb->typeNmb.val; + } + + if (redirNmb->nmbDigits.pres == PRSNT_NODEF) { + ftdm_copy_string(ftdm->rdnis.digits, (const char*)redirNmb->nmbDigits.val, redirNmb->nmbDigits.len+1); + } + return FTDM_SUCCESS; +} + +ftdm_status_t cpy_calling_name_from_sngisdn(ftdm_caller_data_t *ftdm, ConEvnt *conEvnt) +{ + if (conEvnt->display.eh.pres && conEvnt->display.dispInfo.pres == PRSNT_NODEF) { + ftdm_copy_string(ftdm->cid_name, (const char*)conEvnt->display.dispInfo.val, conEvnt->display.dispInfo.len+1); + } + + /* TODO check if caller name is contained in a Facility IE */ + return FTDM_SUCCESS; +} + +ftdm_status_t cpy_calling_num_to_sngisdn(CgPtyNmb *cgPtyNmb, ftdm_caller_data_t *ftdm) +{ + uint8_t len = strlen(ftdm->cid_num.digits); + if (!len) { + return FTDM_SUCCESS; + } + cgPtyNmb->eh.pres = PRSNT_NODEF; + + cgPtyNmb->screenInd.pres = PRSNT_NODEF; + cgPtyNmb->screenInd.val = ftdm->screen; + + cgPtyNmb->presInd0.pres = PRSNT_NODEF; + cgPtyNmb->presInd0.val = ftdm->pres; + + cgPtyNmb->nmbPlanId.pres = PRSNT_NODEF; + cgPtyNmb->nmbPlanId.val = ftdm->cid_num.plan; + + cgPtyNmb->typeNmb1.pres = PRSNT_NODEF; + cgPtyNmb->typeNmb1.val = ftdm->cid_num.type; + + cgPtyNmb->nmbDigits.pres = PRSNT_NODEF; + cgPtyNmb->nmbDigits.len = len; + + memcpy(cgPtyNmb->nmbDigits.val, ftdm->cid_num.digits, len); + + return FTDM_SUCCESS; +} + +ftdm_status_t cpy_called_num_to_sngisdn(CdPtyNmb *cdPtyNmb, ftdm_caller_data_t *ftdm) +{ + uint8_t len = strlen(ftdm->dnis.digits); + if (!len) { + return FTDM_SUCCESS; + } + cdPtyNmb->eh.pres = PRSNT_NODEF; + + cdPtyNmb->nmbPlanId.pres = PRSNT_NODEF; + cdPtyNmb->nmbPlanId.val = ftdm->dnis.plan; + + cdPtyNmb->typeNmb0.pres = PRSNT_NODEF; + cdPtyNmb->typeNmb0.val = ftdm->dnis.type; + + cdPtyNmb->nmbDigits.pres = PRSNT_NODEF; + cdPtyNmb->nmbDigits.len = len; + + memcpy(cdPtyNmb->nmbDigits.val, ftdm->dnis.digits, len); + return FTDM_SUCCESS; +} + +ftdm_status_t cpy_redir_num_to_sngisdn(RedirNmb *redirNmb, ftdm_caller_data_t *ftdm) +{ + uint8_t len = strlen(ftdm->rdnis.digits); + if (!len) { + return FTDM_SUCCESS; + } + + redirNmb->eh.pres = PRSNT_NODEF; + + redirNmb->nmbPlanId.pres = PRSNT_NODEF; + redirNmb->nmbPlanId.val = ftdm->rdnis.plan; + + redirNmb->typeNmb.pres = PRSNT_NODEF; + redirNmb->typeNmb.val = ftdm->rdnis.type; + + redirNmb->nmbDigits.pres = PRSNT_NODEF; + redirNmb->nmbDigits.len = len; + + memcpy(redirNmb->nmbDigits.val, ftdm->rdnis.digits, len); + + return FTDM_SUCCESS; +} + + +ftdm_status_t cpy_calling_name_to_sngisdn(ConEvnt *conEvnt, ftdm_channel_t *ftdmchan) +{ + uint8_t len; + ftdm_caller_data_t *ftdm = &ftdmchan->caller_data; + /* sngisdn_chan_data_t *sngisdn_info = ftdmchan->call_data; */ + sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*) ftdmchan->span->signal_data; + + len = strlen(ftdm->cid_name); + if (!len) { + return FTDM_SUCCESS; + } + + if (ftdmchan->span->trunk_type == FTDM_TRUNK_BRI || + ftdmchan->span->trunk_type == FTDM_TRUNK_BRI_PTMP) { + + conEvnt->usrUsr.eh.pres = PRSNT_NODEF; + conEvnt->usrUsr.protocolDisc.pres = PRSNT_NODEF; + conEvnt->usrUsr.protocolDisc.val = PD_IA5; /* IA5 chars */ + conEvnt->usrUsr.usrInfo.pres = PRSNT_NODEF; + conEvnt->usrUsr.usrInfo.len = len; + /* in sangoma_brid we used to send usr-usr info as !, + change to previous style if current one does not work */ + memcpy(conEvnt->usrUsr.usrInfo.val, ftdm->cid_name, len); + } else { + switch (signal_data->switchtype) { + case SNGISDN_SWITCH_NI2: + /* TODO: Need to send the caller ID as a facility IE */ + + break; + case SNGISDN_SWITCH_EUROISDN: + if (signal_data->signalling != SNGISDN_SIGNALING_NET) { + break; + } + /* follow through */ + case SNGISDN_SWITCH_5ESS: + case SNGISDN_SWITCH_4ESS: + case SNGISDN_SWITCH_DMS100: + conEvnt->display.eh.pres = PRSNT_NODEF; + conEvnt->display.dispInfo.pres = PRSNT_NODEF; + conEvnt->display.dispInfo.len = len; + memcpy(conEvnt->display.dispInfo.val, ftdm->cid_name, len); + break; + case SNGISDN_SWITCH_QSIG: + /* It seems like QSIG does not support Caller ID Name */ + break; + case SNGISDN_SWITCH_INSNET: + /* Don't know how to transmit caller ID name on INSNET */ + break; + } + } + return FTDM_SUCCESS; +} + + + +ftdm_status_t check_for_state_change(ftdm_channel_t *ftdmchan) +{ + +#if 0 + ftdm_log_chan_msg(ftdmchan, "Checking for pending state change\n"); +#endif + /* check to see if there are any pending state changes on the channel and give them a sec to happen*/ + ftdm_wait_for_flag_cleared(ftdmchan, FTDM_CHANNEL_STATE_CHANGE, 5000); + + /* check the flag to confirm it is clear now */ + if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_STATE_CHANGE)) { + /* the flag is still up...so we have a problem */ + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_ERROR, "FTDM_CHANNEL_STATE_CHANGE set for over 500ms\n"); + + /* move the state of the channel to RESTART to force a reset */ + ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_RESTART); + + return FTDM_FAIL; + } + return FTDM_SUCCESS; +} + +void get_memory_info(void) +{ + U32 availmen = 0; + SRegInfoShow(S_REG, &availmen); + return; +} + +/* For Emacs: + * Local Variables: + * mode:c + * indent-tabs-mode:t + * tab-width:4 + * c-basic-offset:4 + * End: + * For VIM: + * vim:set softtabstop=4 shiftwidth=4 tabstop=4: + */ + +/******************************************************************************/ diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_trace.c b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_trace.c new file mode 100644 index 0000000000..0084704322 --- /dev/null +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_trace.c @@ -0,0 +1,661 @@ +/* + * Copyright (c) 2010, Sangoma Technologies + * David Yat Sin + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of the original author; nor the names of any contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "ftmod_sangoma_isdn.h" +#include "ftmod_sangoma_isdn_trace.h" + +#define OCTET(x) (ieData[x-1] & 0xFF) + +void print_hex_dump(char* str, uint32_t *str_len, uint8_t* data, uint32_t index_start, uint32_t index_end); +void sngisdn_trace_q921(char* str, uint8_t* data, uint32_t data_len); +void sngisdn_trace_q931(char* str, uint8_t* data, uint32_t data_len); +uint32_t sngisdn_decode_ie(char *str, uint32_t *str_len, uint8_t current_codeset, uint8_t *data, uint16_t index_start); + +uint8_t get_bits(uint8_t octet, uint8_t bitLo, uint8_t bitHi); +char* get_code_2_str(int code, struct code2str *pCodeTable); + +char* get_code_2_str(int code, struct code2str *pCodeTable) +{ + struct code2str* pCode2txt; + pCode2txt = pCodeTable; + while(pCode2txt) { + if(pCode2txt->code >= 0) { + if (pCode2txt->code == code) { + return pCode2txt->text; + } + pCode2txt++; + } else { + /* This is the default value from the table */ + return pCode2txt->text; + } + } + return (char*)"unknown"; +} + + +uint8_t get_bits(uint8_t octet, uint8_t bitLo, uint8_t bitHi) +{ + if (!bitLo || !bitHi) { + return 0; + } + if (bitLo > bitHi) { + return 0; + } + + bitLo--; + bitHi--; + + switch(bitHi - bitLo) { + case 0: + return (octet >> bitLo) & 0x01; + case 1: + return (octet >> bitLo) & 0x03; + case 2: + return (octet >> bitLo) & 0x07; + case 3: + return (octet >> bitLo) & 0x0F; + case 4: + return (octet >> bitLo) & 0x1F; + case 5: + return (octet >> bitLo) & 0x3F; + case 6: + return (octet >> bitLo) & 0x7F; + case 7: + return (octet >> bitLo) & 0xFF; + } + return 0; +} + +void sngisdn_trace_q921(char* str, uint8_t* data, uint32_t data_len) +{ + int str_len; + int i; + uint8_t sapi, cr, ea, tei, ns, nr, pf, p, cmd; + uint8_t frame_format = 0; + + str_len = 0; + + if(data_len >= 2) { + switch ((int)data[2] & 0x03) { + case 0: case 2: + frame_format = I_FRAME; + break; + case 1: + frame_format = S_FRAME; + break; + case 3: + frame_format = U_FRAME; + break; + } + } + + str_len+= sprintf(&str[str_len], " format: %s\n", + get_code_2_str(frame_format, dcodQ921FrameFormatTable)); + + for(i=0; i < data_len; i++) { + switch(i) { + case 0: // Octet 2 + sapi = (uint8_t)((data[i]>>2) & 0x3F); + cr = (uint8_t)((data[i]>>1) & 0x1); + ea = (uint8_t)(data[i] & 0x1); + str_len+= sprintf(&str[str_len], " sapi: %03d c/r: %01d ea: %01d\n", sapi, cr, ea); + break; + case 1: + tei = (uint8_t)((data[i]>>1) & 0x7F); + ea = (uint8_t)(data[i] & 0x1); + str_len+= sprintf(&str[str_len], " tei: %03d ea: %01d\n", tei, ea); + break; + case 2: + switch(frame_format) { + case I_FRAME: + ns = (uint8_t)((data[i]>>1) & 0x7F); + nr = (uint8_t)((data[i+1]>>1) & 0x7F); + p = (uint8_t)(data[i+1] & 0x01); + str_len+= sprintf(&str[str_len], " n(s): %03d\n n(r): %03d p: %01d\n", ns, nr, p); + break; + case S_FRAME: + nr = (uint8_t)((data[i+1]>>1) & 0x7F); + pf = (uint8_t)(data[i+1] & 0x01); + str_len+= sprintf(&str[str_len], " n(r): %03d p/f: %01d\n", nr, pf); + + cmd = (uint8_t)((data[i]>>2) & 0x03); + str_len+= sprintf(&str[str_len], " cmd: %s\n", get_code_2_str(cmd, dcodQ921SupervisoryCmdTable)); + + break; + case U_FRAME: + pf = (uint8_t)((data[i]>>4) & 0x01); + str_len+= sprintf(&str[str_len], " p/f: %01d\n", pf); + + cmd = (uint8_t)((data[i]>>2) & 0x03); + cmd |= (uint8_t)((data[i]>>5) & 0x07); + + str_len+= sprintf(&str[str_len], " cmd: %s\n", get_code_2_str(cmd, dcodQ921UnnumberedCmdTable)); + break; + } + break; + } + } + return; +} + +void sngisdn_trace_q931(char* str, uint8_t* data, uint32_t data_len) +{ + uint32_t str_len; + uint8_t prot_disc, callRefFlag; + uint16_t lenCallRef, c, i; + uint8_t current_codeset = 0; + + str_len = 0; + + /* Decode Protocol Discrimator */ + prot_disc = (uint8_t)data[0]; + str_len += sprintf(&str[str_len], " Prot Disc:%s (0x%02x)\n", get_code_2_str(prot_disc, dcodQ931ProtDiscTable), prot_disc); + + + + + /* Decode Call Reference */ + lenCallRef = (uint8_t) (data[1] & 0x0F); + + str_len += sprintf(&str[str_len], " Call Ref:"); + c=2; + callRefFlag = get_bits(data[c], 8,8); + for(i=0; i<(2*lenCallRef);i++) { + if(i==0) { + str_len += sprintf(&str[str_len], "%s%s", + get_code_2_str((uint8_t)(data[c] & 0x70), dcodQ931CallRefHiTable), + get_code_2_str((uint8_t)(data[c] & 0x0F), dcodQ931CallRefLoTable)); + } else { + str_len += sprintf(&str[str_len], "%s%s", + get_code_2_str((uint8_t)(data[c] & 0xF0), dcodQ931CallRefHiTable), + get_code_2_str((uint8_t)(data[c] & 0x0F), dcodQ931CallRefLoTable)); + } + + i=i+1; + c=c+1; + } + str_len += sprintf(&str[str_len], " (%s side)\n", callRefFlag?"Destination":"Origination"); + + /* Decode message type */ + str_len+= sprintf(&str[str_len], " Type:%s (0x%x)\n", get_code_2_str((int)(data[2+lenCallRef] & 0xFF), dcodQ931MsgTypeTable), (int)(data[2+lenCallRef] & 0xFF)); + + /* go through rest of data and look for important info */ + for(i=3+lenCallRef; i < data_len; i++) { + switch (data[i] & 0xF8) { + case Q931_LOCKING_SHIFT: + current_codeset = (data[i] & 0x7); + str_len+= sprintf(&str[str_len], "Codeset shift to %d (locking)\n", current_codeset); + continue; + case Q931_NON_LOCKING_SHIFT: + current_codeset = (data[i] & 0x7); + str_len+= sprintf(&str[str_len], "Codeset shift to %d (non-locking)\n", current_codeset); + continue; + } + i+= sngisdn_decode_ie(str, &str_len, current_codeset, data, i); + } + print_hex_dump(str, &str_len, (uint8_t*) data, 0, data_len); + return; +} + +uint32_t sngisdn_decode_ie(char *str, uint32_t *str_len, uint8_t current_codeset, uint8_t *data, uint16_t index_start) +{ + unsigned char* ieData; + uint8_t ieId; + uint32_t len = 0; + int index_end; + + ieData = (unsigned char*) &data[index_start]; + + ieId = OCTET(1); + len = OCTET(2); + index_end = index_start+len+1; + + *str_len += sprintf(&str[*str_len], " %s:", get_code_2_str(data[index_start], dcodQ931IEIDTable)); + switch(ieId) { + case PROT_Q931_IE_BEARER_CAP: + { + uint8_t codingStandard, infTransferCap, transferMode, infTransferRate, usrL1Prot; + + codingStandard = get_bits(OCTET(3),6,7); + infTransferCap = get_bits(OCTET(3),1,5); + transferMode = get_bits(OCTET(4),6,7); + infTransferRate = get_bits(OCTET(4),1,5); + usrL1Prot = get_bits(OCTET(5),1,5); + + *str_len+= sprintf(&str[*str_len], "Coding:%s(%d) TransferCap:%s(%d) TransferRate:%s(%d) L1Prot:%s(%d)\n", + get_code_2_str(codingStandard, dcodQ931BcCodingStandardTable), codingStandard, + get_code_2_str(infTransferCap, dcodQ931BcInfTransferCapTable), infTransferCap, + get_code_2_str(infTransferRate, dcodQ931BcInfTransferRateTable), infTransferRate, + get_code_2_str(usrL1Prot, dcodQ931BcusrL1ProtTable), usrL1Prot); + } + break; + case PROT_Q931_IE_CAUSE: + { + uint8_t codingStandard, location, cause,diagOct = 5; + codingStandard = get_bits(OCTET(3),6,7); + location = get_bits(OCTET(3),1,4); + + cause = get_bits(OCTET(4),1,7); + + *str_len+= sprintf(&str[*str_len], "coding:%s(%d) location:%s(%d) val:%s(%d)\n", + get_code_2_str(codingStandard, dcodQ931BcCodingStandardTable), codingStandard, + get_code_2_str(location,dcodQ931IelocationTable), location, + get_code_2_str(cause, dcodQ931CauseCodeTable), + cause); + switch(cause) { + case PROT_Q931_RELEASE_CAUSE_IE_NOT_EXIST: + while(diagOct++ < len) { + *str_len+= sprintf(&str[*str_len], " %d:IE %s(0x%02x)\n", + diagOct, + get_code_2_str(OCTET(diagOct), dcodQ931IEIDTable), + OCTET(diagOct)); + } + break; + case PROT_Q931_RELEASE_CAUSE_WRONG_CALL_STATE: + while(diagOct++ < len) { + *str_len+= sprintf(&str[*str_len], " %d:Message %s(0x%02x)\n", + diagOct, + get_code_2_str(OCTET(diagOct), dcodQ931MsgTypeTable), + OCTET(diagOct)); + } + break; + case PROT_Q931_RECOVERY_ON_TIMER_EXPIRE: + *str_len+= sprintf(&str[*str_len], " Timer T\n"); + while(diagOct++ < len) { + if(OCTET(diagOct) >= ' ' && OCTET(diagOct) < 0x7f) { + *str_len+= sprintf(&str[*str_len], "%c", OCTET(diagOct)); + } else { + *str_len+= sprintf(&str[*str_len], "."); + } + } + break; + default: + while(diagOct++ < len) { + *str_len+= sprintf(&str[*str_len], " %d: 0x%02x\n", + diagOct, + OCTET(diagOct)); + } + break; + } + } + break; + case PROT_Q931_IE_CHANNEL_ID: + { + uint8_t infoChannelSelection=0; + uint8_t prefExclusive=0; + uint8_t ifaceIdPresent=0; + uint8_t ifaceIdentifier = 0; /* octet_3_1 */ + uint8_t chanType=0, numberMap=0, codingStandard=0; + uint8_t channelNo = 0; + + infoChannelSelection = get_bits(OCTET(3),1,2); + prefExclusive = get_bits(OCTET(3),4,4); + ifaceIdPresent = get_bits(OCTET(3),7,7); + + if (ifaceIdPresent) { + ifaceIdentifier= get_bits(OCTET(4),1,7); + chanType = get_bits(OCTET(5),1,4); + numberMap = get_bits(OCTET(5),5,5); + codingStandard = get_bits(OCTET(5),6,7); + channelNo = get_bits(OCTET(6),1,7); + } else { + chanType = get_bits(OCTET(4),1,4); + numberMap = get_bits(OCTET(4),5,5); + codingStandard = get_bits(OCTET(4),6,7); + channelNo = get_bits(OCTET(5),1,7); + } + + if (numberMap) { + *str_len+= sprintf(&str[*str_len], " MAP\n"); + } else { + *str_len+= sprintf(&str[*str_len], "No:%d ", channelNo); + } + + *str_len+= sprintf(&str[*str_len], "Type:%s(%d) %s ", get_code_2_str(chanType,dcodQ931ChanTypeTable), chanType, (numberMap)? "Map":""); + *str_len+= sprintf(&str[*str_len], "%s/%s \n", + (prefExclusive)? "Exclusive":"Preferred", + (ifaceIdPresent)? "Explicit":"Implicit"); + } + break; + case PROT_Q931_IE_CALLING_PARTY_NUMBER: + { + uint8_t plan, type, screening = 0, presentation = 0, callingNumOct, j; + uint8_t screeningEnabled = 0, presentationEnabled = 0; + char callingNumDigits[32]; + memset(callingNumDigits, 0, sizeof(callingNumDigits)); + + plan = get_bits(OCTET(3),1,4); + type = get_bits(OCTET(3),5,7); + + if(!get_bits(OCTET(3),8,8)) { + screening = get_bits(OCTET(4),1,2); + presentation = get_bits(OCTET(4),6,7); + screeningEnabled = 1; + presentationEnabled = 1; + callingNumOct = 4; + } else { + callingNumOct = 3; + } + if(len >= sizeof(callingNumDigits)) { + len = sizeof(callingNumDigits)-1; + } + j = 0; + while(callingNumOct++ <= len+1) { + callingNumDigits[j++]=ia5[get_bits(OCTET(callingNumOct),1,4)][get_bits(OCTET(callingNumOct),5,8)]; + } + callingNumDigits[j]='\0'; + *str_len+= sprintf(&str[*str_len], "%s(l:%d) plan:%s(%d) type:%s(%d)", + + callingNumDigits, j, + get_code_2_str(plan, dcodQ931NumberingPlanTable), plan, + get_code_2_str(type, dcodQ931TypeofNumberTable), type); + + if (presentationEnabled||screeningEnabled) { + *str_len+= sprintf(&str[*str_len], "scr:%s(%d) pres:%s(%d)\n", + get_code_2_str(screening, dcodQ931ScreeningTable), screening, + get_code_2_str(presentation, dcodQ931PresentationTable), presentation); + } else { + *str_len+= sprintf(&str[*str_len], "\n"); + } + } + break; + + case PROT_Q931_IE_CALLED_PARTY_NUMBER: + { + uint8_t plan, type, calledNumOct,j; + char calledNumDigits[32]; + memset(calledNumDigits, 0, sizeof(calledNumDigits)); + plan = get_bits(OCTET(3),1,4); + type = get_bits(OCTET(3),5,7); + + if(len >= sizeof(calledNumDigits)) { + len = sizeof(calledNumDigits)-1; + } + calledNumOct = 3; + j = 0; + while(calledNumOct++ <= len+1) { + calledNumDigits[j++]=ia5[get_bits(OCTET(calledNumOct),1,4)][get_bits(OCTET(calledNumOct),5,8)]; + } + calledNumDigits[j]='\0'; + *str_len+= sprintf(&str[*str_len], "%s(l:%d) plan:%s(%d) type:%s(%d)\n", + calledNumDigits, j, + get_code_2_str(plan, dcodQ931NumberingPlanTable), plan, + get_code_2_str(type, dcodQ931TypeofNumberTable), type); + } + break; + case PROT_Q931_IE_REDIRECTING_NUMBER: //rdnis + { + uint8_t plan, type, screening = 0, presentation = 0, reason = 0, rdnisOct,j; + uint8_t screeningEnabled = 0, presentationEnabled = 0, reasonEnabled = 0; + char rdnis_string[32]; + memset(rdnis_string, 0, sizeof(rdnis_string)); + rdnisOct = 5; + plan = get_bits(OCTET(3),1,4); + type = get_bits(OCTET(3),5,7); + + if(!get_bits(OCTET(3),8,8)) { //Oct 3a exists + rdnisOct++; + screening = get_bits(OCTET(4),1,2); + presentation = get_bits(OCTET(4),6,7); + screeningEnabled = 1; + presentationEnabled = 1; + if (!get_bits(OCTET(4),8,8)) { //Oct 3b exists + rdnisOct++; + reason = get_bits(OCTET(5),1,4); + reasonEnabled = 1; + } + } + + if(len >= sizeof(rdnis_string)) { + len = sizeof(rdnis_string)-1; + } + + j = 0; + while(rdnisOct++ <= len+1) { + rdnis_string[j++]=ia5[get_bits(OCTET(rdnisOct),1,4)][get_bits(OCTET(rdnisOct),5,8)]; + } + + rdnis_string[j]='\0'; + *str_len+= sprintf(&str[*str_len], "%s(l:%d) plan:%s(%d) type:%s(%d)", + rdnis_string, j, + get_code_2_str(plan, dcodQ931NumberingPlanTable), plan, + get_code_2_str(type, dcodQ931TypeofNumberTable), type); + + if(presentationEnabled || screeningEnabled) { + *str_len+= sprintf(&str[*str_len], "scr:%s(%d) pres:%s(%d)", + get_code_2_str(screening, dcodQ931ScreeningTable), screening, + get_code_2_str(presentation, dcodQ931PresentationTable), presentation); + } + + if(reasonEnabled) { + *str_len+= sprintf(&str[*str_len], "reason:%s(%d)", + get_code_2_str(reason, dcodQ931ReasonTable), reason); + } + *str_len+= sprintf(&str[*str_len], "\n"); + } + break; + case PROT_Q931_IE_USER_USER: + { + uint8_t protDiscr = 0x00, j, uui_stringOct; + char uui_string[32]; + memset(uui_string, 0, sizeof(uui_string)); + protDiscr = OCTET(3); + uui_stringOct = 3; + if (protDiscr != 0x04) { /* Non-IA5 */ + *str_len+= sprintf(&str[*str_len], "%s (0x%02x)\n", + get_code_2_str(protDiscr, dcodQ931UuiProtDiscrTable), protDiscr); + } else { + j = 0; + + if(len >= sizeof(uui_string)) { + len = sizeof(uui_string)-1; + } + while(uui_stringOct++ <= len+1) { + uui_string[j++]=ia5[get_bits(OCTET(uui_stringOct),1,4)][get_bits(OCTET(uui_stringOct),5,8)]; + } + uui_string[j]='\0'; + *str_len+= sprintf(&str[*str_len], " %s (0x%02x) <%s>\n", + get_code_2_str(protDiscr, dcodQ931UuiProtDiscrTable), protDiscr, + uui_string); + } + } + break; + case PROT_Q931_IE_DISPLAY: + { + uint8_t displayStrOct=2, j; + char displayStr[82]; + memset(displayStr, 0, sizeof(displayStr)); + + if(get_bits(OCTET(3),8,8)) { + displayStrOct++; + } + j = 0; + if(len >= sizeof(displayStr)) { + len = sizeof(displayStr)-1; + } + while(displayStrOct++ <= len+1) { + displayStr[j++]=ia5[get_bits(OCTET(displayStrOct),1,4)][get_bits(OCTET(displayStrOct),5,8)]; + } + displayStr[j]='\0'; + *str_len+= sprintf(&str[*str_len], "%s(l:%d)\n", + displayStr, len); + } + break; + case PROT_Q931_IE_RESTART_IND: + { + uint8_t indClass; + indClass = get_bits(OCTET(3),1,3); + *str_len+= sprintf(&str[*str_len], "class:%s(%d)\n", + get_code_2_str(indClass,dcodQ931RestartIndClassTable), indClass); + } + break; + case PROT_Q931_IE_PROGRESS_IND: + { + uint8_t codingStandard, location, progressDescr; + codingStandard = get_bits(OCTET(3),6,7); + location = get_bits(OCTET(3),1,4); + progressDescr = get_bits(OCTET(4),1,7); + *str_len+= sprintf(&str[*str_len], "coding:%s(%d) location:%s(%d) descr:%s(%d)\n", + get_code_2_str(codingStandard,dcodQ931BcCodingStandardTable), codingStandard, + get_code_2_str(location,dcodQ931IelocationTable), location, + get_code_2_str(progressDescr,dcodQ931IeprogressDescrTable), progressDescr); + } + break; + case PROT_Q931_IE_KEYPAD_FACILITY: + { + uint8_t keypadFacilityStrOct = 3, j; + char keypadFacilityStr[82]; + memset(keypadFacilityStr, 0, sizeof(keypadFacilityStr)); + + j = 0; + if(len >= sizeof(keypadFacilityStr)) { + len = sizeof(keypadFacilityStr)-1; + } + while(keypadFacilityStrOct++ < len+1) { + keypadFacilityStr[j++]=ia5[get_bits(OCTET(keypadFacilityStrOct),1,4)][get_bits(OCTET(keypadFacilityStrOct),5,8)]; + } + keypadFacilityStr[j]='\0'; + *str_len+= sprintf(&str[*str_len], " digits:%s(l:%d)\n", + keypadFacilityStr, len); + } + break; + case PROT_Q931_IE_FACILITY: + { + uint8_t protProfile; + protProfile = get_bits(OCTET(3),1,5); + *str_len+= sprintf(&str[*str_len], "Prot profile:%s(%d)\n", + get_code_2_str(protProfile,dcodQ931IeFacilityProtProfileTable), protProfile); + } + break; + case PROT_Q931_IE_GENERIC_DIGITS: + { + uint8_t encoding,type; + int value = 0; + + encoding = get_bits(OCTET(3),6,8); + type = get_bits(OCTET(3),1,5); + + *str_len+= sprintf(&str[*str_len], "encoding:%s(%d) type:%s(%d) ", + get_code_2_str(encoding,dcodQ931GenDigitsEncodingTable), encoding, + get_code_2_str(encoding,dcodQ931GenDigitsTypeTable), type); + + if (len > 1) { + uint32_t j=0; + + while(++j < len) { + switch(encoding) { + case 0: /* BCD even */ + case 1: /* BCD odd */ + { + uint8_t byte = OCTET(j+3); + value = (get_bits(byte,1,4)*10) + get_bits(byte,5,8) + (value*10); + } + break; + case 2: /* IA 5 */ + value = value*10 + OCTET(j+3)-'0'; + *str_len+= sprintf(&str[*str_len], "%c", OCTET(j+3)); + break; + case 3: + /* Don't know how to decode binary encoding yet */ + *str_len+= sprintf(&str[*str_len], "Binary encoded"); + break; + } + } + *str_len+= sprintf(&str[*str_len], " "); + switch(type) { + case 4: /* info digits */ + *str_len+= sprintf(&str[*str_len], "ani2:%s(%d)", get_code_2_str(value,dcodQ931LineInfoTable), value); + break; + case 5: /* Callid */ + *str_len+= sprintf(&str[*str_len], "Caller ID not implemented\n"); + break; + } + } + *str_len+= sprintf(&str[*str_len], "\n"); + print_hex_dump(str, str_len, (uint8_t*) data, index_start, index_end); + } + break; + case PROT_Q931_IE_SENDING_COMPLETE: + /* No need to decode sending complete IE, as no additional info is available except that sending is done */ + break; + case PROT_Q931_IE_CALLED_PARTY_SUBADDRESS: + case PROT_Q931_IE_REDIRECTION_NUMBER: + case PROT_Q931_IE_NOTIFICATION_IND: + case PROT_Q931_IE_DATE_TIME: + case PROT_Q931_IE_INFORMATION_REQUEST: + case PROT_Q931_IE_SIGNAL: + case PROT_Q931_IE_SWITCHOOK: + case PROT_Q931_IE_FEATURE_ACT: + case PROT_Q931_IE_FEATURE_IND: + case PROT_Q931_IE_INFORMATION_RATE: + case PROT_Q931_IE_END_TO_END_TRANSIT_DELAY: + case PROT_Q931_IE_TRANSIT_DELAY_SELECT_IND: + case PROT_Q931_IE_PACKET_LAYER_BINARY_PARAMS: + case PROT_Q931_IE_PACKET_LAYER_WINDOW_SIZE: + case PROT_Q931_IE_PACKET_LAYER_SIZE: + case PROT_Q931_IE_TRANSIT_NETWORK_SELECTION: + case PROT_Q931_IE_LOW_LAYER_COMPAT: + case PROT_Q931_IE_HIGH_LAYER_COMPAT: + case PROT_Q931_IE_ESCAPE_FOR_EXTENSION: + case PROT_Q931_IE_CALL_IDENTITY: + case PROT_Q931_IE_CALL_STATE: + case PROT_Q931_IE_SEGMENTED_MESSAGE: + case PROT_Q931_IE_NETWORK_SPF_FACILITY: + case PROT_Q931_IE_CALLING_PARTY_SUBADDRESS: + default: + { + *str_len += sprintf(&str[*str_len], "Undecoded"); + print_hex_dump((char*)str, str_len, data, index_start, index_end); + } + break; + } + + return len+1; +} + +void print_hex_dump(char* str, uint32_t *str_len, uint8_t* data, uint32_t index_start, uint32_t index_end) +{ + int k; + *str_len += sprintf(&str[*str_len], " [ "); + for(k=index_start; k <= index_end; k++) { + if (k && !(k%32)) { + *str_len += sprintf(&str[*str_len], "\n "); + } + *str_len += sprintf(&str[*str_len], "%02x ", data[k]); + } + *str_len += sprintf(&str[*str_len], "]\n"); + return; +} + + diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_trace.h b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_trace.h new file mode 100644 index 0000000000..869b235f2a --- /dev/null +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_trace.h @@ -0,0 +1,540 @@ +/* + * Copyright (c) 2010, Sangoma Technologies + * David Yat Sin + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of the original author; nor the names of any contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __FTMOD_SANGOMA_ISDN_TRACE_H__ +#define __FTMOD_SANGOMA_ISDN_TRACE_H__ + +#define MX_CODE_TXT_LEN 70 +#define Q931_LOCKING_SHIFT 0x90 +#define Q931_NON_LOCKING_SHIFT 0x98 + +#define PROT_Q931_RELEASE_CAUSE_MISDIALED_TRUNK_PREFIX 5 +#define PROT_Q931_RELEASE_CAUSE_INVALID_NUMBER_FORMAT 28 +#define PROT_Q931_RELEASE_CAUSE_NO_CHAN_AVAIL 34 +#define PROT_Q931_RELEASE_CAUSE_DEST_OUT_OF_ORDER 27 +#define PROT_Q931_RELEASE_CAUSE_IE_NOT_EXIST 99 +#define PROT_Q931_RECOVERY_ON_TIMER_EXPIRE 102 +#define PROT_Q931_RELEASE_CAUSE_WRONG_CALL_STATE 101 + + +#define PROT_Q931_IE_SEGMENTED_MESSAGE 0x00 +#define PROT_Q931_IE_BEARER_CAP 0x04 +#define PROT_Q931_IE_CAUSE 0x08 +#define PROT_Q931_IE_CALL_IDENTITY 0x10 +#define PROT_Q931_IE_CALL_STATE 0x14 +#define PROT_Q931_IE_CHANNEL_ID 0x18 +#define PROT_Q931_IE_FACILITY 0x1c +#define PROT_Q931_IE_PROGRESS_IND 0x1e +#define PROT_Q931_IE_NETWORK_SPF_FACILITY 0x20 +#define PROT_Q931_IE_NOTIFICATION_IND 0x27 +#define PROT_Q931_IE_DISPLAY 0x28 +#define PROT_Q931_IE_DATE_TIME 0x29 +#define PROT_Q931_IE_KEYPAD_FACILITY 0x2c +#define PROT_Q931_IE_INFORMATION_REQUEST 0x32 +#define PROT_Q931_IE_SIGNAL 0x34 +#define PROT_Q931_IE_SWITCHOOK 0x36 +#define PROT_Q931_IE_GENERIC_DIGITS 0x37 +#define PROT_Q931_IE_FEATURE_ACT 0x38 +#define PROT_Q931_IE_FEATURE_IND 0x39 +#define PROT_Q931_IE_INFORMATION_RATE 0x40 +#define PROT_Q931_IE_END_TO_END_TRANSIT_DELAY 0x42 +#define PROT_Q931_IE_TRANSIT_DELAY_SELECT_IND 0x43 +#define PROT_Q931_IE_PACKET_LAYER_BINARY_PARAMS 0x44 +#define PROT_Q931_IE_PACKET_LAYER_WINDOW_SIZE 0x45 +#define PROT_Q931_IE_PACKET_LAYER_SIZE 0x46 +#define PROT_Q931_IE_CALLING_PARTY_NUMBER 0x6c +#define PROT_Q931_IE_CALLING_PARTY_SUBADDRESS 0x6d +#define PROT_Q931_IE_CALLED_PARTY_NUMBER 0x70 +#define PROT_Q931_IE_CALLED_PARTY_SUBADDRESS 0x71 +#define PROT_Q931_IE_REDIRECTING_NUMBER 0x74 +#define PROT_Q931_IE_REDIRECTION_NUMBER 0x76 +#define PROT_Q931_IE_TRANSIT_NETWORK_SELECTION 0x78 +#define PROT_Q931_IE_RESTART_IND 0x79 +#define PROT_Q931_IE_LOW_LAYER_COMPAT 0x7c +#define PROT_Q931_IE_HIGH_LAYER_COMPAT 0x7d +#define PROT_Q931_IE_USER_USER 0x7e +#define PROT_Q931_IE_SENDING_COMPLETE 0xa1 +#define PROT_Q931_IE_ESCAPE_FOR_EXTENSION 0x7f +#define PROT_Q931_IE_SENDING_COMPLETE 0xa1 + +#define NULL_CHAR 0 + + +struct code2str +{ + int code; + char text[MX_CODE_TXT_LEN]; +}; + +enum { + I_FRAME = 1, /* Information frame */ + S_FRAME, /* Supervisory frame */ + U_FRAME, /* Unnumbered frame */ +}; + +char ia5[16][8]={{NULL_CHAR,NULL_CHAR,' ','0','@','P','`','p'}, + {NULL_CHAR,NULL_CHAR,'!','1','A','Q','a','q'}, + {NULL_CHAR,NULL_CHAR,'"','2','B','R','b','r'}, + {NULL_CHAR,NULL_CHAR,'#','3','C','S','c','s'}, + {NULL_CHAR,NULL_CHAR,'$','4','D','T','d','t'}, + {NULL_CHAR,NULL_CHAR,'%','5','E','U','e','u'}, + {NULL_CHAR,NULL_CHAR,'&','6','F','V','f','v'}, + {NULL_CHAR,NULL_CHAR,'\'','7','G','W','g','w'}, + {NULL_CHAR,NULL_CHAR,'(','8','H','X','h','x'}, + {NULL_CHAR,NULL_CHAR,')','9','I','Y','i','y'}, + {NULL_CHAR,NULL_CHAR,'*',':','J','Z','j','z'}, + {NULL_CHAR,NULL_CHAR,'+',';','K','[','k','{'}, + {NULL_CHAR,NULL_CHAR,',','<','L','\\','l','|'}, + {NULL_CHAR,NULL_CHAR,'-','=','M',']','m','}'}, + {NULL_CHAR,NULL_CHAR,'.','>','N','^','n','~'}, + {NULL_CHAR,NULL_CHAR,'/','?','O','_','o',NULL_CHAR}}; + +/* Based on Table 4 - pg 15 of Q.921 Recommendation */ +struct code2str dcodQ921FrameFormatTable[] = { + {I_FRAME, "Information"}, + {S_FRAME, "Supervisory"}, + {U_FRAME, "Unnumbered"}, + {-1, "?"}, +}; + + +/* Based on Table 5 - pg 15 of Q.921 Recommendation */ +struct code2str dcodQ921SupervisoryCmdTable[] = { + {0, "RR - receive ready"}, + {1, "RNR - receive not ready"}, + {2, "REJ - reject"}, + {-1, "Unknown"}, +}; + +/* Based on Table 5 - pg 15 of Q.921 Recommendation */ +struct code2str dcodQ921UnnumberedCmdTable[] = { + {0x0F, "SABME - set async balanced mode extended"}, + {0x03, "DM - disconnected mode"}, + {0x00, "UI - unnumbered information"}, + {0x08, "DISC - disconnect"}, + {0x0C, "UA - unnumbered acknowledgement"}, + {0x11, "FRMR - frame reject"}, + {0x17, "XID - Exchange Identification)"}, + {-1, "Unknown"}, +}; + +struct code2str dcodQ931ProtDiscTable[] = { + {0x08, "Q.931/I.451"}, + {0x09, "Q.2931"}, + {-1, "Unknown"}, +}; + +struct code2str dcodQ931CallRefHiTable[] = { + {0, "0"}, + {16, "1"}, + {32, "2"}, + {48, "3"}, + {64, "4"}, + {80, "5"}, + {96, "6"}, + {112, "7"}, + {128, "8"}, + {144, "9"}, + {160, "A"}, + {176, "B"}, + {192, "C"}, + {208, "D"}, + {224, "E"}, + {240, "F"}, + {-1,"?"}, +}; + +struct code2str dcodQ931CallRefLoTable[] = { + {0, "0"}, + {1, "1"}, + {2, "2"}, + {3, "3"}, + {4, "4"}, + {5, "5"}, + {6, "6"}, + {7, "7"}, + {8, "8"}, + {9, "9"}, + {10, "A"}, + {11, "B"}, + {12, "C"}, + {13, "D"}, + {14, "E"}, + {15, "F"}, + {-1,"?"}, +}; + +struct code2str dcodQ931MsgTypeTable[] = { + {1, "Alerting"}, + {2, "Call Proceeding"}, + {3, "Progress"}, + {5, "Setup"}, + {7, "Connect"}, + {13, "Setup Ack"}, + {15, "Connect Ack"}, + {32, "User Info"}, + {33, "Suspend Rej"}, + {34, "Resume Rej"}, + {37, "Suspend"}, + {38, "Resume"}, + {45, "Suspend Ack"}, + {46, "Resume Ack"}, + {69, "Disconnect"}, + {70, "Restart"}, + {77, "Release"}, + {78, "Release Ack"}, + {90, "Release Compl"}, + {96, "Segment"}, + {98, "Facility"}, + {110, "Notify"}, + {117, "Status Enquiry"}, + {121, "Congest Cntrl"}, + {123, "Information"}, + {125, "Status"}, + {-1, "Unknown"}, +}; + +struct code2str dcodQ931CauseCodeTable[] = { + {1, "Unallocated (unassigned) number"}, + {2, "No route to specified network"}, + {3, "No route to destination"}, + {4, "Send special information tone"}, + {5, "Misdialed trunk prefix"}, + {6, "Channel Unacceptable"}, + {7, "Call awarded and channel established"}, + {8, "Pre-emption"}, + {9, "Pre-emption-circuit reserved"}, + {16, "Normal call clearing"}, + {17, "User Busy"}, + {18, "No User Responding"}, + {19, "No Answer from User"}, + {20, "Subscriber Absent"}, + {21, "Call Rejected"}, + {22, "Number Changed"}, + {26, "Non-Selected User Clearing"}, + {27, "Destination Out-of-Order"}, + {28, "Invalid Number Format"}, + {29, "Facility Rejected"}, + {30, "Response to Status Enquiry"}, + {31, "Normal, Unspecified"}, + {34, "No Circuit/Channel Available"}, + {38, "Network Out-of-Order"}, + {39, "Permanent Frame Mode OOS"}, + {40, "Permanent Frame Mode Operational"}, + {41, "Temporary Failure"}, + {42, "Switching Equipment Congestion"}, + {43, "Access Information Discarded"}, + {44, "Requested Circuit/Channel not available"}, + {47, "Resource Unavailable, Unspecified"}, + {49, "Quality of Service not available"}, + {50, "Requested facility not subscribed"}, + {53, "Outgoing calls barred within CUG"}, + {55, "Incoming calls barred within CUG"}, + {57, "Bearer capability not authorized"}, + {58, "Bearer capability not presently available"}, + {62, "Inconsistency in access inf and subscriber"}, + {63, "Service or Option not available"}, + {65, "Bearer capability not implemented"}, + {66, "Channel type not implemented"}, + {69, "Requested facility not implemented"}, + {70, "Only restricted digital BC available"}, + {79, "Service or option not implemented"}, + {81, "Invalid call reference value"}, + {82, "Identified channel does not exist"}, + {83, "Suspended call exists"}, + {84, "Call identity in use"}, + {85, "No call suspended"}, + {86, "Call already cleared"}, + {87, "User not member of CUG"}, + {88, "Incompatible destination"}, + {90, "Non existent CUG"}, + {91, "Invalid transit network selection"}, + {95, "Invalid message, unspecified"}, + {96, "Mandatory IE missing"}, + {97, "Message type non-existent, not implemented"}, + {98, "Message not compatible with call state"}, + {99, "An IE or parameter does not exist"}, + {100, "Invalid IE contents"}, + {101, "Message not compatible with call state"}, + {102, "Recovery on timer expired"}, + {103, "Parameter non-existent, not impl"}, + {110, "Message with unrecognized parameter"}, + {111, "Protocol error, unspecified"}, + {127, "Interworking, unspecified"}, + {-1, "Unknown"}, +}; + +struct code2str dcodQ931IEIDTable[] = { + {PROT_Q931_IE_SEGMENTED_MESSAGE, "Segmented Message"}, + {PROT_Q931_IE_BEARER_CAP, "Bearer Capability"}, + {PROT_Q931_IE_CAUSE, "Cause"}, + {PROT_Q931_IE_CALL_IDENTITY, "Call Identity"}, + {PROT_Q931_IE_CALL_STATE, "Call State"}, + {PROT_Q931_IE_CHANNEL_ID, "Channel Id"}, + {PROT_Q931_IE_FACILITY, "Facility"}, + {PROT_Q931_IE_PROGRESS_IND, "Progress Indicator"}, + {PROT_Q931_IE_NETWORK_SPF_FACILITY, "Network Specific Facilities"}, + {PROT_Q931_IE_NOTIFICATION_IND, "Notification Indicator"}, + {PROT_Q931_IE_DISPLAY, "Display"}, + {PROT_Q931_IE_DATE_TIME, "Date/Time"}, + {PROT_Q931_IE_KEYPAD_FACILITY, "Keypad Facility"}, + {PROT_Q931_IE_INFORMATION_REQUEST, "Information Request"}, + {PROT_Q931_IE_SIGNAL, "Signal"}, + {PROT_Q931_IE_SWITCHOOK, "Switchhook"}, + {PROT_Q931_IE_GENERIC_DIGITS, "Generic Digits"}, + {PROT_Q931_IE_FEATURE_ACT, "Feature Activation"}, + {PROT_Q931_IE_FEATURE_IND, "Feature Indication"}, + {PROT_Q931_IE_INFORMATION_RATE, "Information Rate"}, + {PROT_Q931_IE_END_TO_END_TRANSIT_DELAY, "End-to-end Transit Delay"}, + {PROT_Q931_IE_TRANSIT_DELAY_SELECT_IND, "Transit Delay Selection and Indication"}, + {PROT_Q931_IE_PACKET_LAYER_BINARY_PARAMS, "Packet layer binary parameters"}, + {PROT_Q931_IE_PACKET_LAYER_WINDOW_SIZE, "Packet layer Window Size"}, + {PROT_Q931_IE_PACKET_LAYER_SIZE, "Packet layer Size"}, + {PROT_Q931_IE_CALLING_PARTY_NUMBER, "Calling Party Number"}, + {PROT_Q931_IE_CALLING_PARTY_SUBADDRESS, "Calling Party Subaddress"}, + {PROT_Q931_IE_CALLED_PARTY_NUMBER, "Called Party Number"}, + {PROT_Q931_IE_CALLED_PARTY_SUBADDRESS, "Called Party Subaddress"}, + {PROT_Q931_IE_REDIRECTING_NUMBER, "Redirecting Number"}, + {PROT_Q931_IE_REDIRECTION_NUMBER, "Redirection Number"}, + {PROT_Q931_IE_TRANSIT_NETWORK_SELECTION, "Transit Network Selection"}, + {PROT_Q931_IE_RESTART_IND, "Restart Indicator"}, + {PROT_Q931_IE_LOW_LAYER_COMPAT, "Low-Layer Compatibility"}, + {PROT_Q931_IE_HIGH_LAYER_COMPAT, "High-Layer Compatibility"}, + {PROT_Q931_IE_USER_USER, "User-User"}, + {PROT_Q931_IE_SENDING_COMPLETE, "Sending complete"}, + {PROT_Q931_IE_ESCAPE_FOR_EXTENSION, "Escape for extension"}, + {-1,"Unknown"}, +}; + +struct code2str dcodQ931NumberingPlanTable[] = { + {0, "unknown"}, + {1, "isdn"}, + {3, "data"}, + {4, "telex"}, + {8, "national"}, + {9, "private"}, + {15, "reserved"}, + {-1, "invalid"}, +}; + +struct code2str dcodQ931TypeofNumberTable[] = { + {0, "unknown"}, + {1, "international"}, + {2, "national"}, + {3, "network spf"}, + {4, "subscriber"}, + {6, "abbreviated"}, + {7, "reserved"}, + {-1, "invalid" }, +}; + +struct code2str dcodQ931PresentationTable[] = { + {0, "allowed"}, + {1, "restricted"}, + {2, "not available"}, + {-1, "invalid" }, +}; + +struct code2str dcodQ931ScreeningTable[] = { + {0, "user, not screened"}, + {1, "user, passed"}, + {2, "user, failed"}, + {3, "network, provided"}, + {-1, "invalid" }, +}; + +struct code2str dcodQ931ReasonTable[] = { + {0x0, "Unknown"}, + {0x1, "Call forwarding busy"}, + {0x2, "Call forwarding no reply"}, + {0x4, "Call deflection"}, + {0x9, "Called DTE out of order"}, + {0xA, "Call forwarding by the called DTE"}, + {0xF, "Call forwarding unconditional"}, + {-1, "reserved" }, +}; + +struct code2str dcodQ931BcCodingStandardTable[] = { + {0x0, "ITU-T"}, + {0x1, "ISO/IEC"}, + {0x2, "National"}, + {0x3, "Defined standard"}, + {-1, "unknown"}, +}; + +struct code2str dcodQ931BcInfTransferCapTable[] = { + {0x00, "Speech"}, + {0x08, "Unrestricted digital"}, + {0x09, "Restricted digital"}, + {0x10, "3.1Khz audio"}, + {0x11, "Unrestricted digital w/ tones"}, + {0x18, "Video"}, + {-1, "reserved"}, +}; + +struct code2str dcodQ931BcInfTransferRateTable[] = { + {0x00, "n/a"}, /* for packet-mode calls */ + {0x10, "64 Kbit/s"}, + {0x11, "2x64 Kbit/s"}, + {0x13, "384 Kbit/s"}, + {0x15, "1536 Kbit/s"}, + {0x17, "1920 Kbit/s"}, + {0x18, "Multirate"}, + {-1, "reserved"}, +}; + + +struct code2str dcodQ931BcusrL1ProtTable[] = { + {0x01, "ITU-T rate/V.110/I.460/X.30"}, + {0x02, "G.711 u-Law"}, + {0x03, "G.711 A-Law"}, + {0x04, "G.721/I.460"}, + {0x05, "H.221/H.242"}, + {0x06, "H.223/H.245"}, + {0x07, "Non-ITU-T rate"}, + {0x08, "V.120"}, + {0x09, "X.31 HDLC"}, + {-1, "reserved"}, +}; + +struct code2str dcodQ931UuiProtDiscrTable[] = { + {0x00, "User-specific"}, + {0x01, "OSI high layer prot"}, + {0x02, "Recommendation X.244"}, + {0x03, "System management"}, + {0x04, "IA5 Chars"}, + {0x05, "X.208/X.209"}, + {0x07, "V.120"}, + {0x08, "Q.931/I.451"}, + {0x10, "X.25"}, + {-1,"reserved"}, +}; + +struct code2str dcodQ931ChanTypeTable[] = { + {0x3,"B-chans"}, + {0x6,"H0-chans"}, + {0x8,"H11-chans"}, + {0x9,"H12-chans"}, + {-1,"reserved"}, +}; + +struct code2str dcodQ931RestartIndClassTable[] = { + {0x0 ,"Indicated in channel IE"}, + {0x6 ,"Single interface"}, + {0x7 ,"All interfaces"}, + {-1, "reserved"}, +}; + +struct code2str dcodQ931IelocationTable[] = { + {0x0, "User"}, + {0x1, "Private network, local user"}, + {0x2, "Public network, local user"}, + {0x3, "Transit network"}, + {0x4, "Public network, remote user"}, + {0x5, "Private network, remote user"}, + {0xA, "Beyond interworking point"}, + {-1, "reserved"}, +}; + +struct code2str dcodQ931IeprogressDescrTable[] = { + {0x01, "Further info maybe available"}, + {0x02, "Destination is non-ISDN"}, + {0x03, "Origination address is non-ISDN"}, + {0x04, "Call returned to ISDN"}, + {0x08, "In-band data ready"}, + {-1, "reserved"}, +}; + +struct code2str dcodQ931IeFacilityProtProfileTable[] = { + {0x11, "Remote Operations Protocol"}, + {0x12, "CMIP Protocol"}, + {0x13, "ACSE Protocol"}, + {0x16, "GAT Protocol"}, + {0x1F, "Networking Extensions"}, + {-1, "reserved"}, +}; + +//from www.voip-info.org/wiki/ANI2 - NANPA +struct code2str dcodQ931LineInfoTable[] = { + {0, "Plain Old Telephone Service(POTS)" }, + {1, "Multiparty line"}, + {2, "ANI Failure"}, + {6, "Station Level Rating"}, + {7, "Special Operator Handling Required"}, + {20, "Automatic Identified Outward Dialing (AIOD)"}, + {23, "Coin or Non-coin"}, + {24, "Toll free service, POTS originated for non-pay station"}, + {25, "Toll free service, POTS originated for pay station"}, + {27, "Pay station with coin control"}, + {29, "Prison-Inmate service"}, + {30, "Intercept - blank"}, + {31, "Intercept - trouble"}, + {32, "Intercept - regular"}, + {34, "Telco operator handled call"}, + {52, "Outward Wide Area Telecommunications Service(OUTWATS)"}, + {60, "TRS call - from unrestricted line"}, + {61, "Cellular-Wireless PCS Type 1"}, + {62, "Cellular-Wireless PCS Type 2"}, + {63, "Cellular-Wireless PCS Type Roaming"}, + {66, "TRS call - from hotel/motel"}, + {67, "TRS call - from restricted line"}, + {70, "Line connected to pay station"}, + {93, "Private virtual network call"}, + {-1, "Unassigned"}, +}; + + +struct code2str dcodQ931GenDigitsEncodingTable[] = { + {0, "BCD even"}, + {1, "BCD odd"}, + {2, "IA5"}, + {3, "Binary"}, + {-1, "Invalid"}, +}; + + +struct code2str dcodQ931GenDigitsTypeTable[] = { + { 0, "Account Code"}, + { 1, "Auth Code"}, + { 2, "Customer ID" }, + { 3, "Universal Access"}, + { 4, "Info Digits"}, + { 5, "Callid"}, + { 6, "Opart"}, + { 7, "TCN"}, + { 9, "Adin"}, + {-1, "Invalid"}, +}; + +#endif /* __FTMOD_SANGOMA_ISDN_TRACE_H__ */ + diff --git a/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c b/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c index 352d9b1534..9a8cab4112 100644 --- a/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c +++ b/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c @@ -274,11 +274,8 @@ static unsigned wp_open_range(ftdm_span_t *span, unsigned spanno, unsigned start err = sangoma_tdm_get_hw_dtmf(chan->sockfd, &tdm_api); if (err > 0) { - err = sangoma_tdm_enable_dtmf_events(chan->sockfd, &tdm_api); - if (err == 0) { - ftdm_channel_set_feature(chan, FTDM_CHANNEL_FEATURE_DTMF_DETECT); - dtmf = "hardware"; - } + ftdm_channel_set_feature(chan, FTDM_CHANNEL_FEATURE_DTMF_DETECT); + dtmf = "hardware"; } } @@ -734,19 +731,23 @@ static FIO_COMMAND_FUNCTION(wanpipe_command) static FIO_READ_FUNCTION(wanpipe_read) { int rx_len = 0; + int myerrno = 0; wp_tdm_api_rx_hdr_t hdrframe; memset(&hdrframe, 0, sizeof(hdrframe)); - rx_len = sangoma_readmsg_tdm(ftdmchan->sockfd, &hdrframe, (int)sizeof(hdrframe), data, (int)*datalen,0); + rx_len = sangoma_readmsg_tdm(ftdmchan->sockfd, &hdrframe, (int)sizeof(hdrframe), data, (int)*datalen, 0); *datalen = rx_len; - if (rx_len == 0 || rx_len == -17) { + if (rx_len == 0) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_WARNING, "Read 0 bytes\n"); return FTDM_TIMEOUT; } if (rx_len < 0) { + myerrno = errno; snprintf(ftdmchan->last_error, sizeof(ftdmchan->last_error), "%s", strerror(errno)); + ftdm_log_chan(ftdmchan, FTDM_LOG_WARNING, "Failed to read from sangoma device: %s (%d)\n", strerror(errno), rx_len); return FTDM_FAIL; } @@ -1188,6 +1189,19 @@ static FIO_CHANNEL_DESTROY_FUNCTION(wanpipe_channel_destroy) #endif if (ftdmchan->sockfd != FTDM_INVALID_SOCKET) { + /* enable HW DTMF. As odd as it seems. Why enable when the channel is being destroyed and won't be used anymore? + * because that way we can transfer the DTMF state back to the driver, if we're being restarted we will set again + * the FEATURE_DTMF flag and use HW DTMF, if we don't enable here, then on module restart we won't see + * HW DTMF available and will use software */ + if (ftdm_channel_test_feature(ftdmchan, FTDM_CHANNEL_FEATURE_DTMF_DETECT)) { + wanpipe_tdm_api_t tdm_api; + int err; + memset(&tdm_api, 0, sizeof(tdm_api)); + err = sangoma_tdm_enable_dtmf_events(ftdmchan->sockfd, &tdm_api); + if (err) { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_WARNING, "Failed enabling Sangoma HW DTMF failed on channel destroy\n"); + } + } sangoma_close(&ftdmchan->sockfd); } diff --git a/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c b/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c index a2eacaca61..c4ba3ae749 100644 --- a/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c +++ b/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c @@ -639,7 +639,7 @@ static FIO_OPEN_FUNCTION(zt_open) } if (ioctl(ftdmchan->sockfd, codes.ECHOCANCEL, &len)) { ftdm_log(FTDM_LOG_WARNING, "Echo cancel not available for %d:%d\n", ftdmchan->span_id, ftdmchan->chan_id); - } else if (zt_globals.etlevel >= 0) { + } else if (zt_globals.etlevel > 0) { len = zt_globals.etlevel; if (ioctl(ftdmchan->sockfd, codes.ECHOTRAIN, &len)) { ftdm_log(FTDM_LOG_WARNING, "Echo training not available for %d:%d\n", ftdmchan->span_id, ftdmchan->chan_id); diff --git a/libs/freetdm/src/include/ftdm_os.h b/libs/freetdm/src/include/ftdm_os.h index 8308e70705..5026bb7236 100644 --- a/libs/freetdm/src/include/ftdm_os.h +++ b/libs/freetdm/src/include/ftdm_os.h @@ -67,6 +67,9 @@ extern "C" { /*! \brief check for zero length string buffer */ #define ftdm_strlen_zero_buf(s) (*s == '\0') +/*! \brief array len helper */ +#define ftdm_array_len(array) sizeof(array)/sizeof(array[0]) + /*! \brief The memory handler. Do not use directly this variable, use the memory macros and ftdm_global_set_memory_handler to override */ FT_DECLARE_DATA extern ftdm_memory_handler_t g_ftdm_mem_handler; diff --git a/libs/freetdm/src/include/private/ftdm_core.h b/libs/freetdm/src/include/private/ftdm_core.h index 0dad0209ed..77e0e29587 100644 --- a/libs/freetdm/src/include/private/ftdm_core.h +++ b/libs/freetdm/src/include/private/ftdm_core.h @@ -589,13 +589,11 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_queue_dtmf(ftdm_channel_t *ftdmchan, cons */ #define ftdm_socket_close(it) if (it > -1) { close(it); it = -1;} -#define ftdm_array_len(array) sizeof(array)/sizeof(array[0]) - #define ftdm_channel_lock(chan) ftdm_mutex_lock(chan->mutex) #define ftdm_channel_unlock(chan) ftdm_mutex_unlock(chan->mutex) -#define ftdm_log_chan_ex(fchan, file, func, line, level, format, ...) ftdm_log(file, func, line, level, "s%dc%d " format, fchan->span_id, fchan->chan_id, __VA_ARGS__) -#define ftdm_log_chan(fchan, level, format, ...) ftdm_log(level, "s%dc%d " format, fchan->span_id, fchan->chan_id, __VA_ARGS__) -#define ftdm_log_chan_msg(fchan, level, msg) ftdm_log(level, "s%dc%d " msg, fchan->span_id, fchan->chan_id) +#define ftdm_log_chan_ex(fchan, file, func, line, level, format, ...) ftdm_log(file, func, line, level, "[s%dc%d][%d:%d] " format, fchan->span_id, fchan->chan_id, fchan->physical_span_id, fchan->physical_chan_id, __VA_ARGS__) +#define ftdm_log_chan(fchan, level, format, ...) ftdm_log(level, "[s%dc%d][%d:%d] " format, fchan->span_id, fchan->chan_id, fchan->physical_span_id, fchan->physical_chan_id, __VA_ARGS__) +#define ftdm_log_chan_msg(fchan, level, msg) ftdm_log(level, "[s%dc%d][%d:%d] " msg, fchan->span_id, fchan->chan_id, fchan->physical_span_id, fchan->physical_chan_id) FT_DECLARE_DATA extern const char *FTDM_LEVEL_NAMES[9]; diff --git a/libs/ilbc/libilbc.2010.vcxproj b/libs/ilbc/libilbc.2010.vcxproj new file mode 100644 index 0000000000..ad2a0c3ccb --- /dev/null +++ b/libs/ilbc/libilbc.2010.vcxproj @@ -0,0 +1,187 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + libilbc + {9A5DDF08-C88C-4A35-B7F6-D605228446BD} + libilbc + Win32Proj + + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + + + + Disabled + src; src\ilbc; src\msvc;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBilbc_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level4 + ProgramDatabase + 4127;%(DisableSpecificWarnings) + + + + + src; src\ilbc; src\msvc;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBilbc_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level4 + ProgramDatabase + 4127;%(DisableSpecificWarnings) + + + + + X64 + + + Disabled + src; src\ilbc; src\msvc;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBilbc_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level4 + ProgramDatabase + 4127;%(DisableSpecificWarnings) + + + + + X64 + + + src; src\ilbc; src\msvc;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBilbc_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level4 + ProgramDatabase + 4127;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/libdingaling/libdingaling.2010.vcxproj b/libs/libdingaling/libdingaling.2010.vcxproj new file mode 100644 index 0000000000..1e8c0bc008 --- /dev/null +++ b/libs/libdingaling/libdingaling.2010.vcxproj @@ -0,0 +1,311 @@ + + + + + Debug DLL + Win32 + + + Debug DLL + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release DLL + Win32 + + + Release DLL + x64 + + + Release + Win32 + + + Release + x64 + + + + libdingaling + {1906D736-08BD-4EE1-924F-B536249B9A54} + libdingaling + Win32Proj + + + + DynamicLibrary + Unicode + true + + + DynamicLibrary + Unicode + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + DynamicLibrary + Unicode + true + + + DynamicLibrary + Unicode + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(SolutionDir)Debug\ + $(Configuration)\ + $(SolutionDir)Release\ + $(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + Disabled + .;.\src;..\iksemel\include;..\include;..\apr\include;..\iksemel-1.2\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level4 + ProgramDatabase + 4100;4706;%(DisableSpecificWarnings) + + + + + .;.\src;..\iksemel\include;..\include;..\apr\include;..\iksemel-1.2\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level4 + ProgramDatabase + 4100;%(DisableSpecificWarnings) + + + + + Disabled + .;.\src;..\iksemel\include;..\include;..\apr\include;..\iksemel-1.2\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;APR_DECLARE_STATIC;APU_DECLARE_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level4 + EditAndContinue + 4100;%(DisableSpecificWarnings) + + + libapr-1.lib;libaprutil-1.lib;iksemel.lib;Ws2_32.lib;%(AdditionalDependencies) + ..\apr\Debug;..\apr-util\Debug;..\iksemel\Debug;%(AdditionalLibraryDirectories) + .\src\dingaling.def + true + false + false + false + + + + + + + .;.\src;..\iksemel\include;..\include;..\apr\include;..\iksemel-1.2\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;APR_DECLARE_STATIC;APU_DECLARE_STATIC;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level4 + ProgramDatabase + 4100;%(DisableSpecificWarnings) + + + libapr-1.lib;libaprutil-1.lib;iksemel.lib;Ws2_32.lib;%(AdditionalDependencies) + ..\apr\Release;..\apr-util\Release;..\iksemel\Release;%(AdditionalLibraryDirectories) + .\src\dingaling.def + false + + + + + + + X64 + + + Disabled + .;.\src;..\iksemel\include;..\include;..\apr\include;..\iksemel-1.2\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level4 + ProgramDatabase + 4100;4706;%(DisableSpecificWarnings) + + + + + X64 + + + .;.\src;..\iksemel\include;..\include;..\apr\include;..\iksemel-1.2\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level4 + ProgramDatabase + 4100;%(DisableSpecificWarnings) + + + + + X64 + + + Disabled + .;.\src;..\iksemel\include;..\include;..\apr\include;..\iksemel-1.2\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;APR_DECLARE_STATIC;APU_DECLARE_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level4 + ProgramDatabase + 4100;%(DisableSpecificWarnings) + + + libapr-1.lib;libaprutil-1.lib;iksemel.lib;Ws2_32.lib;%(AdditionalDependencies) + ..\apr\Debug;..\apr-util\Debug;..\iksemel\Debug;%(AdditionalLibraryDirectories) + .\src\dingaling.def + true + false + false + false + + + MachineX64 + + + + + X64 + + + .;.\src;..\iksemel\include;..\include;..\apr\include;..\iksemel-1.2\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;APR_DECLARE_STATIC;APU_DECLARE_STATIC;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level4 + ProgramDatabase + 4100;%(DisableSpecificWarnings) + + + libapr-1.lib;libaprutil-1.lib;iksemel.lib;Ws2_32.lib;%(AdditionalDependencies) + ..\apr\Release;..\apr-util\Release;..\iksemel\Release;%(AdditionalLibraryDirectories) + .\src\dingaling.def + false + + + MachineX64 + + + + + + + + + + + + + + + + {f057da7f-79e5-4b00-845c-ef446ef055e3} + false + + + {e727e8f6-935d-46fe-8b0e-37834748a0e3} + false + + + + + + \ No newline at end of file diff --git a/libs/libteletone/libteletone.2010.vcxproj b/libs/libteletone/libteletone.2010.vcxproj new file mode 100644 index 0000000000..2eb005f2e3 --- /dev/null +++ b/libs/libteletone/libteletone.2010.vcxproj @@ -0,0 +1,183 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + libteletone + {89385C74-5860-4174-9CAF-A39E7C48909C} + libteletone + Win32Proj + + + + DynamicLibrary + Unicode + true + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + true + + + DynamicLibrary + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(PlatformName)\$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(PlatformName)\$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + Disabled + src;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;TELETONE_EXPORTS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level4 + true + EditAndContinue + true + + + $(ProjectDir)teletone.def + false + false + false + + + $(IntDir)$(TargetName).lib + + + + + X64 + + + Disabled + src;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;TELETONE_EXPORTS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level4 + true + ProgramDatabase + true + + + $(ProjectDir)teletone.def + false + false + false + + + $(IntDir)$(TargetName).lib + MachineX64 + + + + + src;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;TELETONE_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level4 + true + ProgramDatabase + true + + + $(ProjectDir)teletone.def + false + + + $(IntDir)$(TargetName).lib + + + + + X64 + + + src;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;TELETONE_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level4 + true + ProgramDatabase + true + + + $(ProjectDir)teletone.def + false + + + $(IntDir)$(TargetName).lib + MachineX64 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/openzap/mod_openzap/mod_openzap.c b/libs/openzap/mod_openzap/mod_openzap.c index 5aebfea57f..445725b1b7 100644 --- a/libs/openzap/mod_openzap/mod_openzap.c +++ b/libs/openzap/mod_openzap/mod_openzap.c @@ -1529,6 +1529,24 @@ static ZIO_SIGNAL_CB_FUNCTION(on_common_signal) return ZAP_BREAK; } +static void zap_enable_channel_dtmf(zap_channel_t *zchan, switch_channel_t *channel) +{ + if (channel) { + const char *var; + if ((var = switch_channel_get_variable(channel, "openzap_disable_dtmf"))) { + if (switch_true(var)) { + zap_channel_command(zchan, ZAP_COMMAND_DISABLE_DTMF_DETECT, NULL); + zap_log(ZAP_LOG_INFO, "DTMF detection disabled in channel %d:%d\n", zchan->span_id, zchan->chan_id); + return; + } + } + /* the variable is not present or has negative value then proceed to enable DTMF */ + } + if (zap_channel_command(zchan, ZAP_COMMAND_ENABLE_DTMF_DETECT, NULL) != ZAP_SUCCESS) { + zap_log(ZAP_LOG_ERROR, "Failed to enable DTMF detection in channel %d:%d\n", zchan->span_id, zchan->chan_id); + } +} + static ZIO_SIGNAL_CB_FUNCTION(on_fxo_signal) { switch_core_session_t *session = NULL; @@ -1567,6 +1585,7 @@ static ZIO_SIGNAL_CB_FUNCTION(on_fxo_signal) if ((session = zap_channel_get_session(sigmsg->channel, 0))) { channel = switch_core_session_get_channel(session); switch_channel_mark_answered(channel); + zap_enable_channel_dtmf(sigmsg->channel, channel); switch_core_session_rwunlock(session); } } @@ -1606,6 +1625,7 @@ static ZIO_SIGNAL_CB_FUNCTION(on_fxs_signal) if ((session = zap_channel_get_session(sigmsg->channel, 0))) { channel = switch_core_session_get_channel(session); switch_channel_mark_answered(channel); + zap_enable_channel_dtmf(sigmsg->channel, channel); switch_core_session_rwunlock(session); } } @@ -1887,12 +1907,9 @@ static ZIO_SIGNAL_CB_FUNCTION(on_r2_signal) case ZAP_SIGEVENT_UP: { if ((session = zap_channel_get_session(sigmsg->channel, 0))) { - zap_tone_type_t tt = ZAP_TONE_DTMF; channel = switch_core_session_get_channel(session); switch_channel_mark_answered(channel); - if (zap_channel_command(sigmsg->channel, ZAP_COMMAND_ENABLE_DTMF_DETECT, &tt) != ZAP_SUCCESS) { - zap_log(ZAP_LOG_ERROR, "Failed to enable DTMF detection in R2 channel %d:%d\n", sigmsg->channel->span_id, sigmsg->channel->chan_id); - } + zap_enable_channel_dtmf(sigmsg->channel, channel); switch_core_session_rwunlock(session); } } @@ -1923,12 +1940,7 @@ static ZIO_SIGNAL_CB_FUNCTION(on_clear_channel_signal) switch(sigmsg->event_id) { case ZAP_SIGEVENT_START: { - zap_tone_type_t tt = ZAP_TONE_DTMF; - - if (zap_channel_command(sigmsg->channel, ZAP_COMMAND_ENABLE_DTMF_DETECT, &tt) != ZAP_SUCCESS) { - zap_log(ZAP_LOG_ERROR, "TONE ERROR\n"); - } - + zap_enable_channel_dtmf(sigmsg->channel, channel); return zap_channel_from_event(sigmsg, &session); } break; @@ -1949,12 +1961,9 @@ static ZIO_SIGNAL_CB_FUNCTION(on_clear_channel_signal) case ZAP_SIGEVENT_UP: { if ((session = zap_channel_get_session(sigmsg->channel, 0))) { - zap_tone_type_t tt = ZAP_TONE_DTMF; channel = switch_core_session_get_channel(session); switch_channel_mark_answered(channel); - if (zap_channel_command(sigmsg->channel, ZAP_COMMAND_ENABLE_DTMF_DETECT, &tt) != ZAP_SUCCESS) { - zap_log(ZAP_LOG_ERROR, "TONE ERROR\n"); - } + zap_enable_channel_dtmf(sigmsg->channel, channel); switch_core_session_rwunlock(session); } else { const char *uuid = zap_channel_get_uuid(sigmsg->channel, 0); diff --git a/libs/openzap/src/ozmod/ozmod_wanpipe/ozmod_wanpipe.c b/libs/openzap/src/ozmod/ozmod_wanpipe/ozmod_wanpipe.c index 6afc7e6c0d..40cf2a5a7c 100644 --- a/libs/openzap/src/ozmod/ozmod_wanpipe/ozmod_wanpipe.c +++ b/libs/openzap/src/ozmod/ozmod_wanpipe/ozmod_wanpipe.c @@ -264,11 +264,8 @@ static unsigned wp_open_range(zap_span_t *span, unsigned spanno, unsigned start, err = sangoma_tdm_get_hw_dtmf(chan->sockfd, &tdm_api); if (err > 0) { - err = sangoma_tdm_enable_dtmf_events(chan->sockfd, &tdm_api); - if (err == 0) { - zap_channel_set_feature(chan, ZAP_CHANNEL_FEATURE_DTMF_DETECT); - dtmf = "hardware"; - } + zap_channel_set_feature(chan, ZAP_CHANNEL_FEATURE_DTMF_DETECT); + dtmf = "hardware"; } } @@ -1186,8 +1183,21 @@ static ZIO_CHANNEL_DESTROY_FUNCTION(wanpipe_channel_destroy) sangoma_wait_obj_delete(&sangoma_wait_obj); } #endif - if (zchan->sockfd != ZAP_INVALID_SOCKET) { + /* enable HW DTMF. As odd as it seems. Why enable when the channel is being destroyed and won't be used anymore? + * because that way we can transfer the DTMF state back to the driver, if we're being restarted we will set again + * the FEATURE_DTMF flag and use HW DTMF, if we don't enable here, then on module restart we won't see + * HW DTMF available and will use software */ + if (zap_channel_test_feature(zchan, ZAP_CHANNEL_FEATURE_DTMF_DETECT)) { + wanpipe_tdm_api_t tdm_api; + int err; + memset(&tdm_api, 0, sizeof(tdm_api)); + err = sangoma_tdm_enable_dtmf_events(zchan->sockfd, &tdm_api); + if (err) { + zap_log(ZAP_LOG_WARNING, "Failed to enable Sangoma HW DTMF on channel %d:%d at destroy\n", + zchan->span_id, zchan->chan_id); + } + } sangoma_close(&zchan->sockfd); } diff --git a/libs/portaudio/build/msvc/portaudio.2010.vcxproj b/libs/portaudio/build/msvc/portaudio.2010.vcxproj new file mode 100644 index 0000000000..c7563d0bed --- /dev/null +++ b/libs/portaudio/build/msvc/portaudio.2010.vcxproj @@ -0,0 +1,970 @@ + + + + + Debug DirectSound + Win32 + + + Debug DirectSound + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release DirectSound + Win32 + + + Release DirectSound + x64 + + + Release + Win32 + + + Release + x64 + + + + portaudio + {0A18A071-125E-442F-AFF7-A3F68ABECF99} + portaudio + + + + DynamicLibrary + false + + + DynamicLibrary + false + + + StaticLibrary + false + + + StaticLibrary + false + + + DynamicLibrary + false + + + DynamicLibrary + false + + + StaticLibrary + false + + + StaticLibrary + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Configuration)\ + $(Configuration)\ + true + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + $(Configuration)\ + $(Configuration)\ + false + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release_x86/portaudio.tlb + + + + + Disabled + Default + ..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_DS;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(Platform)\$(Configuration)/portaudio.pch + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + $(Platform)\$(Configuration)\portaudio.bsc + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release_x86/portaudio.tlb + + + + + MaxSpeed + OnlyExplicitInline + ..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_DS;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(Platform)\$(Configuration)\portaudio.pch + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + $(Platform)\$(Configuration)\portaudio_x64.bsc + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug_x86/portaudio.tlb + + + + + Disabled + ..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_DS;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + $(Platform)\$(Configuration)/portaudio.pch + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + $(Platform)\$(Configuration)\portaudio.bsc + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug_x86/portaudio.tlb + + + + + Disabled + ..\..\src\common;..\..\include;.\;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_DS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + $(Platform)\$(Configuration)\portaudio.pch + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + $(Platform)\$(Configuration)/portaudio_x64.bsc + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug_x86/portaudio.tlb + + + + + Disabled + ..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + $(Platform)\$(Configuration)/portaudio.pch + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + ksuser.lib;%(AdditionalDependencies) + $(Platform)\$(Configuration)\portaudio_x86.dll + true + .\portaudio.def + true + $(Platform)\$(Configuration)\portaudio_x86.pdb + false + + + $(Platform)\$(Configuration)\portaudio_x86.lib + MachineX86 + + + true + $(Platform)\$(Configuration)\portaudio.bsc + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug_x86/portaudio.tlb + + + + + Disabled + ..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + $(Platform)\$(Configuration)\portaudio.pch + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + ksuser.lib;%(AdditionalDependencies) + $(Platform)\$(Configuration)\portaudio_x64.dll + true + .\portaudio.def + true + $(Platform)\$(Configuration)/portaudio_x64.pdb + false + + + $(Platform)\$(Configuration)\portaudio_x64.lib + MachineX64 + + + true + $(Platform)\$(Configuration)/portaudio_x64.bsc + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release_x86/portaudio.tlb + + + + + MaxSpeed + OnlyExplicitInline + ..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(Platform)\$(Configuration)/portaudio.pch + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(Platform)\$(Configuration)\portaudio_x86.dll + true + .\portaudio.def + $(Platform)\$(Configuration)\portaudio_x86.pdb + false + + + $(Platform)\$(Configuration)\portaudio_x86.lib + MachineX86 + + + true + $(Platform)\$(Configuration)\portaudio.bsc + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release_x86/portaudio.tlb + + + + + MaxSpeed + OnlyExplicitInline + ..\..\src\common;..\..\include;.\;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(Platform)\$(Configuration)\portaudio.pch + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(Platform)\$(Configuration)\portaudio_x64.dll + true + .\portaudio.def + $(Platform)\$(Configuration)/portaudio_x64.pdb + false + + + $(Platform)\$(Configuration)/portaudio_x64.lib + MachineX64 + + + true + $(Platform)\$(Configuration)\portaudio_x64.bsc + + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + ..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + + + + + + \ No newline at end of file diff --git a/libs/silk/src/Silk_FIX.2010.vcxproj b/libs/silk/src/Silk_FIX.2010.vcxproj new file mode 100644 index 0000000000..8d341b50e1 --- /dev/null +++ b/libs/silk/src/Silk_FIX.2010.vcxproj @@ -0,0 +1,300 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + Silk_FIX + {56B91D01-9150-4BBF-AFA1-5B68AB991B76} + Silk + Win32Proj + + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + Disabled + Neither + ../interface;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + Fast + + + Level3 + EditAndContinue + + + + + + + + + MaxSpeed + Default + Neither + ../interface;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) + false + false + MultiThreaded + Fast + + + Level3 + ProgramDatabase + + + + + + + + + X64 + + + Disabled + Neither + ../interface;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + Fast + + + Level3 + ProgramDatabase + + + + + + + + + X64 + + + MaxSpeed + Default + Neither + ../interface;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) + false + false + MultiThreaded + Fast + + + Level3 + ProgramDatabase + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/spandsp/src/libspandsp.2010.vcxproj b/libs/spandsp/src/libspandsp.2010.vcxproj new file mode 100644 index 0000000000..82472a9a8d --- /dev/null +++ b/libs/spandsp/src/libspandsp.2010.vcxproj @@ -0,0 +1,440 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + libspandsp + {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5} + libspandsp + Win32Proj + + + + DynamicLibrary + Unicode + true + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + true + + + DynamicLibrary + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(PlatformName)\$(Configuration)\ + $(Configuration)\ + true + $(SolutionDir)$(PlatformName)\$(Configuration)\ + $(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + + + + $(IntDir)BuildLog $(ProjectName).htm + + + Disabled + .;..\..\src\spandsp;..\..\src;..\..\src\msvc;.\spandsp;.\msvc;..\..\tiff-3.8.2\libtiff;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBSPANDSP_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + $(IntDir)$(TargetName).pdb + Level4 + EditAndContinue + CompileAsC + 4127;%(DisableSpecificWarnings) + + + true + Windows + false + + + ./Debug\spandsp.lib + MachineX86 + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + .;.\spandsp;.\msvc;..\..\tiff-3.8.2\libtiff;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBSPANDSP_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions) + MultiThreadedDLL + + + $(IntDir)$(TargetName).pdb + Level4 + ProgramDatabase + 4127;%(DisableSpecificWarnings) + + + true + Windows + true + true + false + + + ./Release\spandsp.lib + MachineX86 + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + Disabled + .;.\spandsp;.\msvc;..\..\tiff-3.8.2\libtiff;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBSPANDSP_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + $(IntDir)$(TargetName).pdb + Level4 + ProgramDatabase + CompileAsC + 4127;%(DisableSpecificWarnings) + + + true + Windows + false + + + $(TargetDir)spandsp.lib + MachineX64 + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + .;.\spandsp;.\msvc;..\..\tiff-3.8.2\libtiff;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBSPANDSP_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions) + MultiThreadedDLL + + + $(IntDir)$(TargetName).pdb + Level4 + ProgramDatabase + 4127;%(DisableSpecificWarnings) + + + true + Windows + true + true + false + + + $(TargetDir)spandsp.lib + MachineX64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Copying %(FullPath) to $(ProjectDir)%(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)%(Filename)%(Extension)" + $(ProjectDir)%(Filename)%(Extension);%(Outputs) + Copying %(FullPath) to $(ProjectDir)%(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)%(Filename)%(Extension)" + $(ProjectDir)%(Filename)%(Extension);%(Outputs) + Copying %(FullPath) to $(ProjectDir)%(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)%(Filename)%(Extension)" + $(ProjectDir)%(Filename)%(Extension);%(Outputs) + Copying %(FullPath) to $(ProjectDir)%(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)%(Filename)%(Extension)" + $(ProjectDir)%(Filename)%(Extension);%(Outputs) + + + + + {401a40cd-5db4-4e34-ac68-fa99e9fac014} + false + + + {dee932ab-5911-4700-9eeb-8c7090a0a330} + false + + + {329a6fa0-0fcc-4435-a950-e670aefa9838} + false + + + + + + \ No newline at end of file diff --git a/libs/spandsp/src/msvc/make_at_dictionary.2010.vcxproj b/libs/spandsp/src/msvc/make_at_dictionary.2010.vcxproj new file mode 100644 index 0000000000..3727cebf49 --- /dev/null +++ b/libs/spandsp/src/msvc/make_at_dictionary.2010.vcxproj @@ -0,0 +1,65 @@ + + + + + All + Win32 + + + + make_at_dictionary + {DEE932AB-5911-4700-9EEB-8C7090A0A330} + make_at_dictionary + Win32Proj + + + + Application + Unicode + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + false + + + + $(IntDir)BuildLog $(ProjectName).htm + + + Disabled + .;.\spandsp;.\msvc;..\..\tiff-3.8.2\libtiff;.\generated;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + $(IntDir)$(TargetName).pdb + Level3 + ProgramDatabase + + + true + Console + MachineX86 + + + "$(TargetPath)" >"$(ProjectDir)..\at_interpreter_dictionary.h" + + + + + + + + + \ No newline at end of file diff --git a/libs/spandsp/src/msvc/make_modem_filter.2010.vcxproj b/libs/spandsp/src/msvc/make_modem_filter.2010.vcxproj new file mode 100644 index 0000000000..110e1f5c34 --- /dev/null +++ b/libs/spandsp/src/msvc/make_modem_filter.2010.vcxproj @@ -0,0 +1,96 @@ + + + + + All + Win32 + + + + make_modem_filter + {329A6FA0-0FCC-4435-A950-E670AEFA9838} + make_modem_filter + Win32Proj + + + + Application + Unicode + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + false + + + + $(IntDir)BuildLog $(ProjectName).htm + + + Disabled + .;.\spandsp;.\msvc;..\..\tiff-3.8.2\libtiff;.\generated;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + $(IntDir)$(TargetName).pdb + Level3 + ProgramDatabase + + + true + Console + MachineX86 + + + "$(TargetPath)" -m V.17 -i -r >"$(ProjectDir)..\v17_v32bis_rx_fixed_rrc.h" +"$(TargetPath)" -m V.17 -r >"$(ProjectDir)..\v17_v32bis_rx_floating_rrc.h" + +"$(TargetPath)" -m V.17 -i -t >"$(ProjectDir)..\v17_v32bis_tx_fixed_rrc.h" +"$(TargetPath)" -m V.17 -t >"$(ProjectDir)..\v17_v32bis_tx_floating_rrc.h" + +"$(TargetPath)" -m V.22bis1200 -i -r >"$(ProjectDir)..\v22bis_rx_1200_fixed_rrc.h" +"$(TargetPath)" -m V.22bis2400 -i -r >"$(ProjectDir)..\v22bis_rx_2400_fixed_rrc.h" +"$(TargetPath)" -m V.22bis1200 -r >"$(ProjectDir)..\v22bis_rx_1200_floating_rrc.h" +"$(TargetPath)" -m V.22bis2400 -r >"$(ProjectDir)..\v22bis_rx_2400_floating_rrc.h" +"$(TargetPath)" -m V.22bis -i -t >"$(ProjectDir)..\v22bis_tx_fixed_rrc.h" +"$(TargetPath)" -m V.22bis -t >"$(ProjectDir)..\v22bis_tx_floating_rrc.h" + +"$(TargetPath)" -m V.27ter2400 -i -r >"$(ProjectDir)..\v27ter_rx_2400_fixed_rrc.h" +"$(TargetPath)" -m V.27ter4800 -i -r >"$(ProjectDir)..\v27ter_rx_4800_fixed_rrc.h" +"$(TargetPath)" -m V.27ter2400 -r >"$(ProjectDir)..\v27ter_rx_2400_floating_rrc.h" +"$(TargetPath)" -m V.27ter4800 -r >"$(ProjectDir)..\v27ter_rx_4800_floating_rrc.h" +"$(TargetPath)" -m V.27ter2400 -i -t >"$(ProjectDir)..\v27ter_tx_2400_fixed_rrc.h" +"$(TargetPath)" -m V.27ter4800 -i -t >"$(ProjectDir)..\v27ter_tx_4800_fixed_rrc.h" +"$(TargetPath)" -m V.27ter2400 -t >"$(ProjectDir)..\v27ter_tx_2400_floating_rrc.h" +"$(TargetPath)" -m V.27ter4800 -t >"$(ProjectDir)..\v27ter_tx_4800_floating_rrc.h" + +"$(TargetPath)" -m V.29 -i -r >"$(ProjectDir)..\v29rx_fixed_rrc.h" +"$(TargetPath)" -m V.29 -r >"$(ProjectDir)..\v29rx_floating_rrc.h" +"$(TargetPath)" -m V.29 -i -t >"$(ProjectDir)..\v29tx_fixed_rrc.h" +"$(TargetPath)" -m V.29 -t >"$(ProjectDir)..\v29tx_floating_rrc.h" + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/speex/win32/VS2008/libspeex/libspeex.vcxproj b/libs/speex/win32/VS2008/libspeex/libspeex.vcxproj new file mode 100644 index 0000000000..551481a3b1 --- /dev/null +++ b/libs/speex/win32/VS2008/libspeex/libspeex.vcxproj @@ -0,0 +1,644 @@ + + + + + Debug_RTL_dll + Win32 + + + Debug_RTL_dll + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release_Dynamic + Win32 + + + Release_Dynamic + x64 + + + Release_RTL_dll + Win32 + + + Release_RTL_dll + x64 + + + Release_SSE2 + Win32 + + + Release_SSE2 + x64 + + + Release_SSE + Win32 + + + Release_SSE + x64 + + + Release + Win32 + + + Release + x64 + + + + {E972C52F-9E85-4D65-B19C-031E511E9DB4} + libspeex + Win32Proj + + + + StaticLibrary + MultiByte + true + + + StaticLibrary + MultiByte + + + DynamicLibrary + MultiByte + true + + + StaticLibrary + MultiByte + true + + + StaticLibrary + MultiByte + true + + + StaticLibrary + MultiByte + true + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + true + + + StaticLibrary + MultiByte + + + DynamicLibrary + MultiByte + true + + + StaticLibrary + MultiByte + true + + + StaticLibrary + MultiByte + true + + + StaticLibrary + MultiByte + true + + + StaticLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + Disabled + ..\..\..\include;..\..;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + TurnOffAllWarnings + EditAndContinue + CompileAsC + + + $(OutDir)libspeex.lib + + + + + Full + AnySuitable + true + Speed + ..\..\..\include;..\..;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + + + TurnOffAllWarnings + ProgramDatabase + CompileAsC + 4244;4305;4311;4100;4127;%(DisableSpecificWarnings) + + + $(OutDir)libspeex.lib + + + + + Full + AnySuitable + true + Speed + ..\..\..\include;..\..;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + + + MultiThreaded + false + StreamingSIMDExtensions + + + Level4 + ProgramDatabase + CompileAsC + 4244;4305;4311;4100;4127;%(DisableSpecificWarnings) + + + $(OutDir)libspeex.lib + + + + + Full + AnySuitable + true + Speed + ..\..\..\include;..\..;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + + + MultiThreaded + false + StreamingSIMDExtensions2 + + + Level4 + ProgramDatabase + CompileAsC + 4244;4305;4311;4100;4127;%(DisableSpecificWarnings) + + + $(OutDir)libspeex.lib + + + + + Full + AnySuitable + true + Speed + ..\..\..\include;..\..;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + + + MultiThreaded + false + + + Level4 + ProgramDatabase + CompileAsC + 4244;4305;4311;4100;4127;%(DisableSpecificWarnings) + + + libspeex.def + true + true + false + + + + + + + Disabled + ..\..\..\include;..\..;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level4 + EditAndContinue + CompileAsC + + + $(OutDir)libspeex.lib + + + + + Full + AnySuitable + true + Speed + ..\..\..\include;..\..;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + + + Level4 + ProgramDatabase + CompileAsC + 4244;4305;4311;4100;4127;%(DisableSpecificWarnings) + + + $(OutDir)libspeex.lib + + + + + X64 + + + Disabled + ..\..\..\include;..\..;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + TurnOffAllWarnings + ProgramDatabase + CompileAsC + + + $(OutDir)libspeex.lib + + + + + X64 + + + Full + AnySuitable + true + Speed + ..\..\..\include;..\..;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + + + TurnOffAllWarnings + ProgramDatabase + CompileAsC + 4244;4305;4311;4100;4127;%(DisableSpecificWarnings) + + + $(OutDir)libspeex.lib + + + + + X64 + + + Full + AnySuitable + true + Speed + ..\..\..\include;..\..;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + + + MultiThreaded + false + StreamingSIMDExtensions + + + Level4 + ProgramDatabase + CompileAsC + 4244;4305;4311;4100;4127;%(DisableSpecificWarnings) + + + $(OutDir)libspeex.lib + + + + + X64 + + + Full + AnySuitable + true + Speed + ..\..\..\include;..\..;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + + + MultiThreaded + false + StreamingSIMDExtensions2 + + + Level4 + ProgramDatabase + CompileAsC + 4244;4305;4311;4100;4127;%(DisableSpecificWarnings) + + + $(OutDir)libspeex.lib + + + + + X64 + + + Full + AnySuitable + true + Speed + ..\..\..\include;..\..;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + + + MultiThreaded + false + + + Level4 + ProgramDatabase + CompileAsC + 4244;4305;4311;4100;4127;%(DisableSpecificWarnings) + + + libspeex.def + true + true + false + + + MachineX64 + + + + + X64 + + + Disabled + ..\..\..\include;..\..;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level4 + ProgramDatabase + CompileAsC + + + $(OutDir)libspeex.lib + + + + + X64 + + + Full + AnySuitable + true + Speed + ..\..\..\include;..\..;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + + + Level4 + ProgramDatabase + CompileAsC + 4244;4305;4311;4100;4127;%(DisableSpecificWarnings) + + + $(OutDir)libspeex.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/speex/win32/VS2008/libspeexdsp/libspeexdsp.vcxproj b/libs/speex/win32/VS2008/libspeexdsp/libspeexdsp.vcxproj new file mode 100644 index 0000000000..5a67b9d495 --- /dev/null +++ b/libs/speex/win32/VS2008/libspeexdsp/libspeexdsp.vcxproj @@ -0,0 +1,382 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release_Dynamic_SSE + Win32 + + + Release_Dynamic_SSE + x64 + + + Release_Static_SSE + Win32 + + + Release_Static_SSE + x64 + + + Release + Win32 + + + Release + x64 + + + + {03207781-0D1C-4DB3-A71D-45C608F28DBD} + Win32Proj + + + + StaticLibrary + MultiByte + true + + + DynamicLibrary + MultiByte + true + + + StaticLibrary + MultiByte + true + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + true + + + DynamicLibrary + MultiByte + true + + + StaticLibrary + MultiByte + true + + + StaticLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + Disabled + ..\..\..\include;..\..;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + TurnOffAllWarnings + EditAndContinue + CompileAsC + + + + + + X64 + + + Disabled + ..\..\..\include;..\..;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + TurnOffAllWarnings + ProgramDatabase + CompileAsC + + + + + + Full + AnySuitable + true + Speed + ..\..\..\include;..\..;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + + + TurnOffAllWarnings + ProgramDatabase + CompileAsC + 4244;4305;4311;4100;4127;%(DisableSpecificWarnings) + + + + + + X64 + + + Full + AnySuitable + true + Speed + ..\..\..\include;..\..;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + + + TurnOffAllWarnings + ProgramDatabase + CompileAsC + 4244;4305;4311;4100;4127;%(DisableSpecificWarnings) + + + + + + Full + AnySuitable + true + Speed + ..\..\..\include;..\..;%(AdditionalIncludeDirectories) + _USE_SSE;WIN32;NDEBUG;_WINDOWS;_USRDLL;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + StreamingSIMDExtensions + + + Level3 + ProgramDatabase + CompileAsC + 4244;4305;4311;4100;4127;%(DisableSpecificWarnings) + + + ../../../bin/libspeexdsp.dll + ..\..\libspeexdsp.def + Windows + true + true + false + + + ../../../lib/libspeexdsp.lib + MachineX86 + + + + + X64 + + + Full + AnySuitable + true + Speed + ..\..\..\include;..\..;%(AdditionalIncludeDirectories) + _USE_SSE;WIN32;NDEBUG;_WINDOWS;_USRDLL;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + StreamingSIMDExtensions + + + Level3 + ProgramDatabase + CompileAsC + 4244;4305;4311;4100;4127;%(DisableSpecificWarnings) + + + ../../../bin/libspeexdsp.dll + ..\..\libspeexdsp.def + Windows + true + true + false + + + ../../../lib/libspeexdsp.lib + MachineX64 + + + + + Full + AnySuitable + true + Speed + ..\..\..\include;..\..;%(AdditionalIncludeDirectories) + _USE_SSE;WIN32;NDEBUG;_WINDOWS;_USRDLL;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + StreamingSIMDExtensions + + + Level3 + ProgramDatabase + CompileAsC + 4244;4305;4311;4100;4127;%(DisableSpecificWarnings) + + + ../../../lib/libspeexdsp.lib + + + + + X64 + + + Full + AnySuitable + true + Speed + ..\..\..\include;..\..;%(AdditionalIncludeDirectories) + _USE_SSE;WIN32;NDEBUG;_WINDOWS;_USRDLL;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + StreamingSIMDExtensions + + + Level3 + ProgramDatabase + CompileAsC + 4244;4305;4311;4100;4127;%(DisableSpecificWarnings) + + + ../../../lib/libspeexdsp.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/srtp/libsrtp.2010.vcxproj b/libs/srtp/libsrtp.2010.vcxproj new file mode 100644 index 0000000000..70e6fb6881 --- /dev/null +++ b/libs/srtp/libsrtp.2010.vcxproj @@ -0,0 +1,457 @@ + + + + + Debug Dll + Win32 + + + Debug Dll + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release Dll + Win32 + + + Release Dll + x64 + + + Release + Win32 + + + Release + x64 + + + + libsrtp + {EEF031CB-FED8-451E-A471-91EC8D4F6750} + libsrtp + Win32Proj + + + + DynamicLibrary + Unicode + true + + + DynamicLibrary + Unicode + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + DynamicLibrary + Unicode + true + + + DynamicLibrary + Unicode + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Configuration)\ + $(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)Debug\ + $(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)Release\ + $(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + Creating config.h from config.hw + copy /Y "$(ProjectDir)config.hw" "$(ProjectDir)crypto\include\config.h" > NUL + + + + + + + %(Outputs) + + + Disabled + crypto/include;include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Default + false + + + Level4 + true + ProgramDatabase + + + + + Creating config.h from config.hw + copy /Y "$(ProjectDir)config.hw" "$(ProjectDir)crypto\include\config.h" > NUL + + + + + + + %(Outputs) + + + X64 + + + Disabled + crypto/include;include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Default + + + Level4 + false + ProgramDatabase + + + + + Creating config.h from config.hw + copy /Y "$(ProjectDir)config.hw" "$(ProjectDir)crypto\include\config.h" > NUL + + + + + + + %(Outputs) + + + crypto/include;include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + MultiThreadedDLL + Default + false + + + Level4 + true + ProgramDatabase + + + + + Creating config.h from config.hw + copy /Y "$(ProjectDir)config.hw" "$(ProjectDir)crypto\include\config.h" > NUL + + + + + + + %(Outputs) + + + X64 + + + crypto/include;include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + MultiThreadedDLL + Default + + + Level4 + false + ProgramDatabase + + + + + Creating config.h from config.hw + copy /Y "$(ProjectDir)config.hw" "$(ProjectDir)crypto\include\config.h" > NUL + + + + + + + %(Outputs) + + + Disabled + true + crypto/include;include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Default + false + + + Level4 + true + EditAndContinue + + + Ws2_32.lib;%(AdditionalDependencies) + srtp.def + false + false + + + false + + + + + + + Creating config.h from config.hw + copy /Y "$(ProjectDir)config.hw" "$(ProjectDir)crypto\include\config.h" > NUL + + + + + + + %(Outputs) + + + X64 + + + Disabled + true + crypto/include;include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Default + + + Level4 + true + ProgramDatabase + + + Ws2_32.lib;%(AdditionalDependencies) + srtp.def + false + false + + + false + + + MachineX64 + + + + + Creating config.h from config.hw + copy /Y "$(ProjectDir)config.hw" "$(ProjectDir)crypto\include\config.h" > NUL + + + + + + + %(Outputs) + + + crypto/include;include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + MultiThreadedDLL + Default + false + + + Level4 + true + ProgramDatabase + + + Ws2_32.lib;%(AdditionalDependencies) + srtp.def + false + + + + + + + Creating config.h from config.hw + copy /Y "$(ProjectDir)config.hw" "$(ProjectDir)crypto\include\config.h" > NUL + + + + + + + %(Outputs) + + + X64 + + + crypto/include;include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + MultiThreadedDLL + Default + + + Level4 + true + ProgramDatabase + + + Ws2_32.lib;%(AdditionalDependencies) + srtp.def + false + + + MachineX64 + + + + + + + + + + + + + Default + false + false + Default + false + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/unimrcp/build/vsprops/apr.props b/libs/unimrcp/build/vsprops/apr.props new file mode 100644 index 0000000000..660a970181 --- /dev/null +++ b/libs/unimrcp/build/vsprops/apr.props @@ -0,0 +1,30 @@ + + + + + + + $(LibRootDir)libs\apr + $(LibRootDir)libs\apr-util + $(LibRootDir)libs\apr-iconv + + + <_ProjectFileVersion>10.0.30319.1 + + + + $(AprDir)\include;$(AprUtilDir)\include;%(AdditionalIncludeDirectories) + + + + + $(AprDir) + + + $(AprUtilDir) + + + $(AprIconvDir) + + + \ No newline at end of file diff --git a/libs/unimrcp/build/vsprops/apt.props b/libs/unimrcp/build/vsprops/apt.props new file mode 100644 index 0000000000..8ede1684dc --- /dev/null +++ b/libs/unimrcp/build/vsprops/apt.props @@ -0,0 +1,15 @@ + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + $(ProjectRootDir)libs\apr-toolkit\include;%(AdditionalIncludeDirectories) + APT_STATIC_LIB;%(PreprocessorDefinitions) + + + \ No newline at end of file diff --git a/libs/unimrcp/build/vsprops/mpf.props b/libs/unimrcp/build/vsprops/mpf.props new file mode 100644 index 0000000000..ff68ceaef2 --- /dev/null +++ b/libs/unimrcp/build/vsprops/mpf.props @@ -0,0 +1,15 @@ + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + $(ProjectRootDir)libs\mpf\include;%(AdditionalIncludeDirectories) + MPF_STATIC_LIB;%(PreprocessorDefinitions) + + + \ No newline at end of file diff --git a/libs/unimrcp/build/vsprops/mrcp.props b/libs/unimrcp/build/vsprops/mrcp.props new file mode 100644 index 0000000000..fa4ee3539b --- /dev/null +++ b/libs/unimrcp/build/vsprops/mrcp.props @@ -0,0 +1,15 @@ + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + $(ProjectRootDir)libs\mrcp\include;$(ProjectRootDir)libs\mrcp\message\include;$(ProjectRootDir)libs\mrcp\control\include;$(ProjectRootDir)libs\mrcp\resources\include;%(AdditionalIncludeDirectories) + MRCP_STATIC_LIB;%(PreprocessorDefinitions) + + + \ No newline at end of file diff --git a/libs/unimrcp/build/vsprops/mrcpclient.props b/libs/unimrcp/build/vsprops/mrcpclient.props new file mode 100644 index 0000000000..b650e07d91 --- /dev/null +++ b/libs/unimrcp/build/vsprops/mrcpclient.props @@ -0,0 +1,15 @@ + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + $(ProjectRootDir)libs\mrcp-client\include;%(AdditionalIncludeDirectories) + + + \ No newline at end of file diff --git a/libs/unimrcp/build/vsprops/mrcpsignaling.props b/libs/unimrcp/build/vsprops/mrcpsignaling.props new file mode 100644 index 0000000000..5e0c884a9f --- /dev/null +++ b/libs/unimrcp/build/vsprops/mrcpsignaling.props @@ -0,0 +1,15 @@ + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + $(ProjectRootDir)libs\mrcp-signaling\include;%(AdditionalIncludeDirectories) + + + \ No newline at end of file diff --git a/libs/unimrcp/build/vsprops/mrcpv2transport.props b/libs/unimrcp/build/vsprops/mrcpv2transport.props new file mode 100644 index 0000000000..c71836559b --- /dev/null +++ b/libs/unimrcp/build/vsprops/mrcpv2transport.props @@ -0,0 +1,14 @@ + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + $(ProjectRootDir)libs\mrcpv2-transport\include;%(AdditionalIncludeDirectories) + + + \ No newline at end of file diff --git a/libs/unimrcp/build/vsprops/sofiasip.props b/libs/unimrcp/build/vsprops/sofiasip.props new file mode 100644 index 0000000000..3714d30977 --- /dev/null +++ b/libs/unimrcp/build/vsprops/sofiasip.props @@ -0,0 +1,22 @@ + + + + + + + $(LibRootDir)libs\sofia-sip + + + <_ProjectFileVersion>10.0.30319.1 + + + + $(SofiaDir)\win32;$(SofiaDir)\libsofia-sip-ua\su;$(SofiaDir)\libsofia-sip-ua\nua;$(SofiaDir)\libsofia-sip-ua\url;$(SofiaDir)\libsofia-sip-ua\sip;$(SofiaDir)\libsofia-sip-ua\msg;$(SofiaDir)\libsofia-sip-ua\sdp;$(SofiaDir)\libsofia-sip-ua\nta;$(SofiaDir)\libsofia-sip-ua\nea;$(SofiaDir)\libsofia-sip-ua\soa;$(SofiaDir)\libsofia-sip-ua\iptsec;$(SofiaDir)\libsofia-sip-ua\bnf;$(SofiaDir)\libsofia-sip-ua\features;%(AdditionalIncludeDirectories) + + + + + $(SofiaDir) + + + \ No newline at end of file diff --git a/libs/unimrcp/build/vsprops/unibase.props b/libs/unimrcp/build/vsprops/unibase.props new file mode 100644 index 0000000000..097e8596ab --- /dev/null +++ b/libs/unimrcp/build/vsprops/unibase.props @@ -0,0 +1,26 @@ + + + + $(ProjectDir)..\..\ + $(SolutionDir) + + + <_ProjectFileVersion>10.0.30319.1 + + + + WIN32;%(PreprocessorDefinitions) + Level4 + true + 4100;%(DisableSpecificWarnings) + + + + + $(ProjectRootDir) + + + $(LibRootDir) + + + \ No newline at end of file diff --git a/libs/unimrcp/build/vsprops/unidebug.props b/libs/unimrcp/build/vsprops/unidebug.props new file mode 100644 index 0000000000..e9778995ab --- /dev/null +++ b/libs/unimrcp/build/vsprops/unidebug.props @@ -0,0 +1,21 @@ + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + Disabled + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + ProgramDatabase + + + \ No newline at end of file diff --git a/libs/unimrcp/build/vsprops/unirelease.props b/libs/unimrcp/build/vsprops/unirelease.props new file mode 100644 index 0000000000..8081506815 --- /dev/null +++ b/libs/unimrcp/build/vsprops/unirelease.props @@ -0,0 +1,18 @@ + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + NDEBUG;%(PreprocessorDefinitions) + MultiThreadedDLL + + + ProgramDatabase + + + \ No newline at end of file diff --git a/libs/unimrcp/build/vsprops/unirtsp.props b/libs/unimrcp/build/vsprops/unirtsp.props new file mode 100644 index 0000000000..7ed01cb9a8 --- /dev/null +++ b/libs/unimrcp/build/vsprops/unirtsp.props @@ -0,0 +1,15 @@ + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + $(ProjectRootDir)libs\uni-rtsp\include;%(AdditionalIncludeDirectories) + RTSP_STATIC_LIB;%(PreprocessorDefinitions) + + + \ No newline at end of file diff --git a/libs/unimrcp/libs/apr-toolkit/aprtoolkit.2010.vcxproj b/libs/unimrcp/libs/apr-toolkit/aprtoolkit.2010.vcxproj new file mode 100644 index 0000000000..9288736c40 --- /dev/null +++ b/libs/unimrcp/libs/apr-toolkit/aprtoolkit.2010.vcxproj @@ -0,0 +1,157 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + aprtoolkit + {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2} + aprtoolkit + Win32Proj + + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + + + + APT_STATIC_LIB;%(PreprocessorDefinitions) + + + + + X64 + + + APT_STATIC_LIB;%(PreprocessorDefinitions) + ProgramDatabase + + + + + APT_STATIC_LIB;%(PreprocessorDefinitions) + + + + + X64 + + + APT_STATIC_LIB;%(PreprocessorDefinitions) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {f057da7f-79e5-4b00-845c-ef446ef055e3} + false + + + + + + \ No newline at end of file diff --git a/libs/unimrcp/libs/mpf/mpf.2010.vcxproj b/libs/unimrcp/libs/mpf/mpf.2010.vcxproj new file mode 100644 index 0000000000..1b48acef80 --- /dev/null +++ b/libs/unimrcp/libs/mpf/mpf.2010.vcxproj @@ -0,0 +1,193 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mpf + {B5A00BFA-6083-4FAE-A097-71642D6473B5} + mpf + Win32Proj + + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + + + + codecs;%(AdditionalIncludeDirectories) + APT_STATIC_LIB;MPF_STATIC_LIB;%(PreprocessorDefinitions) + + + + + X64 + + + codecs;%(AdditionalIncludeDirectories) + APT_STATIC_LIB;MPF_STATIC_LIB;%(PreprocessorDefinitions) + false + ProgramDatabase + + + + + codecs;%(AdditionalIncludeDirectories) + APT_STATIC_LIB;MPF_STATIC_LIB;%(PreprocessorDefinitions) + + + + + X64 + + + codecs;%(AdditionalIncludeDirectories) + APT_STATIC_LIB;MPF_STATIC_LIB;%(PreprocessorDefinitions) + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/unimrcp/libs/mrcp-client/mrcpclient.2010.vcxproj b/libs/unimrcp/libs/mrcp-client/mrcpclient.2010.vcxproj new file mode 100644 index 0000000000..1c861d58b5 --- /dev/null +++ b/libs/unimrcp/libs/mrcp-client/mrcpclient.2010.vcxproj @@ -0,0 +1,121 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mrcpclient + {72782932-37CC-46AE-8C7F-9A7B1A6EE108} + mrcpclient + Win32Proj + + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + + + + APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) + + + + + X64 + + + APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) + ProgramDatabase + + + + + APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) + + + + + X64 + + + APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/unimrcp/libs/mrcp-signaling/mrcpsignaling.2010.vcxproj b/libs/unimrcp/libs/mrcp-signaling/mrcpsignaling.2010.vcxproj new file mode 100644 index 0000000000..f11e3bd765 --- /dev/null +++ b/libs/unimrcp/libs/mrcp-signaling/mrcpsignaling.2010.vcxproj @@ -0,0 +1,121 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mrcpsignaling + {12A49562-BAB9-43A3-A21D-15B60BBB4C31} + mrcpsignaling + Win32Proj + + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + + + + APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) + + + + + X64 + + + APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) + ProgramDatabase + + + + + APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) + + + + + X64 + + + APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/unimrcp/libs/mrcp/mrcp.2010.vcxproj b/libs/unimrcp/libs/mrcp/mrcp.2010.vcxproj new file mode 100644 index 0000000000..e525a96146 --- /dev/null +++ b/libs/unimrcp/libs/mrcp/mrcp.2010.vcxproj @@ -0,0 +1,148 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mrcp + {1C320193-46A6-4B34-9C56-8AB584FC1B56} + mrcp + Win32Proj + + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + + + + %(AdditionalIncludeDirectories) + APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) + + + + + X64 + + + %(AdditionalIncludeDirectories) + APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) + ProgramDatabase + + + + + %(AdditionalIncludeDirectories) + APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) + + + + + X64 + + + %(AdditionalIncludeDirectories) + APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/unimrcp/libs/mrcpv2-transport/mrcpv2transport.2010.vcxproj b/libs/unimrcp/libs/mrcpv2-transport/mrcpv2transport.2010.vcxproj new file mode 100644 index 0000000000..33ed618305 --- /dev/null +++ b/libs/unimrcp/libs/mrcpv2-transport/mrcpv2transport.2010.vcxproj @@ -0,0 +1,124 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mrcpv2transport + {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA} + mrcpv2transport + Win32Proj + + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + + + + APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) + + + + + X64 + + + APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) + ProgramDatabase + + + + + APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) + + + + + X64 + + + APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/unimrcp/libs/uni-rtsp/unirtsp.2010.vcxproj b/libs/unimrcp/libs/uni-rtsp/unirtsp.2010.vcxproj new file mode 100644 index 0000000000..9fad4f7787 --- /dev/null +++ b/libs/unimrcp/libs/uni-rtsp/unirtsp.2010.vcxproj @@ -0,0 +1,132 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + unirtsp + {504B3154-7A4F-459D-9877-B951021C3F1F} + unirtsp + Win32Proj + + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + + + + codecs;%(AdditionalIncludeDirectories) + APT_STATIC_LIB;%(PreprocessorDefinitions) + + + + + X64 + + + codecs;%(AdditionalIncludeDirectories) + APT_STATIC_LIB;%(PreprocessorDefinitions) + ProgramDatabase + + + + + codecs;%(AdditionalIncludeDirectories) + APT_STATIC_LIB;%(PreprocessorDefinitions) + + + + + X64 + + + codecs;%(AdditionalIncludeDirectories) + APT_STATIC_LIB;%(PreprocessorDefinitions) + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/unimrcp/modules/mrcp-sofiasip/mrcpsofiasip.2010.vcxproj b/libs/unimrcp/modules/mrcp-sofiasip/mrcpsofiasip.2010.vcxproj new file mode 100644 index 0000000000..43220e6f79 --- /dev/null +++ b/libs/unimrcp/modules/mrcp-sofiasip/mrcpsofiasip.2010.vcxproj @@ -0,0 +1,139 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mrcpsofiasip + {746F3632-5BB2-4570-9453-31D6D58A7D8E} + mrcpsofiasip + Win32Proj + + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + + + + include;%(AdditionalIncludeDirectories) + APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;LIBSOFIA_SIP_UA_STATIC;%(PreprocessorDefinitions) + + + + + X64 + + + include;%(AdditionalIncludeDirectories) + APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;LIBSOFIA_SIP_UA_STATIC;%(PreprocessorDefinitions) + ProgramDatabase + + + + + include;%(AdditionalIncludeDirectories) + APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;LIBSOFIA_SIP_UA_STATIC;%(PreprocessorDefinitions) + + + + + X64 + + + include;%(AdditionalIncludeDirectories) + APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;LIBSOFIA_SIP_UA_STATIC;%(PreprocessorDefinitions) + + + + + + + + + + + + + + + {70a49bc2-7500-41d0-b75d-edcc5be987a0} + false + + + + + + \ No newline at end of file diff --git a/libs/unimrcp/modules/mrcp-unirtsp/mrcpunirtsp.2010.vcxproj b/libs/unimrcp/modules/mrcp-unirtsp/mrcpunirtsp.2010.vcxproj new file mode 100644 index 0000000000..f8a573d857 --- /dev/null +++ b/libs/unimrcp/modules/mrcp-unirtsp/mrcpunirtsp.2010.vcxproj @@ -0,0 +1,133 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mrcpunirtsp + {DEB01ACB-D65F-4A62-AED9-58C1054499E9} + mrcpunirtsp + Win32Proj + + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + + + + include;%(AdditionalIncludeDirectories) + APT_STATIC_LIB;RTSP_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;LIBSOFIA_SIP_UA_STATIC;%(PreprocessorDefinitions) + + + + + X64 + + + include;%(AdditionalIncludeDirectories) + APT_STATIC_LIB;RTSP_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;LIBSOFIA_SIP_UA_STATIC;%(PreprocessorDefinitions) + ProgramDatabase + + + + + include;%(AdditionalIncludeDirectories) + APT_STATIC_LIB;RTSP_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;LIBSOFIA_SIP_UA_STATIC;%(PreprocessorDefinitions) + + + + + X64 + + + include;%(AdditionalIncludeDirectories) + APT_STATIC_LIB;RTSP_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;LIBSOFIA_SIP_UA_STATIC;%(PreprocessorDefinitions) + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/win32/Dowload 32khz Sounds.2010.vcxproj b/libs/win32/Dowload 32khz Sounds.2010.vcxproj new file mode 100644 index 0000000000..ea4360fe6c --- /dev/null +++ b/libs/win32/Dowload 32khz Sounds.2010.vcxproj @@ -0,0 +1,82 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + Download 32khzsound + {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F} + Download 32khzsound + Win32Proj + + + + Utility + MultiByte + + + Utility + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + Document + Downloading 32khzsound. + if not exist "$(ProjectDir)..\sounds\en\us\callie\voicemail\32000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzipSounds en-us-callie 32000 "$(ProjectDir)..\sounds" "$(ProjectDir)..\..\build\sounds_version.txt" + $(ProjectDir)..\sounds\en\us\callie\voicemail\32000;%(Outputs) + Downloading 32khzsound. + if not exist "$(ProjectDir)..\sounds\en\us\callie\voicemail\32000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzipSounds en-us-callie 32000 "$(ProjectDir)..\sounds" "$(ProjectDir)..\..\build\sounds_version.txt" + $(ProjectDir)..\sounds\en\us\callie\voicemail\32000;%(Outputs) + + + + + {e10571c4-e7f4-4608-b5f2-b22e7eb95400} + + + + + + \ No newline at end of file diff --git a/libs/win32/Dowload 32khz music.2010.vcxproj b/libs/win32/Dowload 32khz music.2010.vcxproj new file mode 100644 index 0000000000..e39ce87b85 --- /dev/null +++ b/libs/win32/Dowload 32khz music.2010.vcxproj @@ -0,0 +1,88 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + Download 32khz music + {1F0A8A77-E661-418F-BB92-82172AE43803} + Download 32khz music + Win32Proj + + + + Utility + MultiByte + + + Utility + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + Document + Downloading 32khzsound. + set /P SOUND_VERSION=<"$(ProjectDir)..\..\build\moh_version.txt" +if not exist "$(ProjectDir)..\sounds\music\32000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-music-32000-%SOUND_VERSION%.tar.gz "$(ProjectDir)..\sounds" + + + $(ProjectDir)..\sounds\music\32000;%(Outputs) + Downloading 32khzsound. + set /P SOUND_VERSION=<"$(ProjectDir)..\..\build\moh_version.txt" +if not exist "$(ProjectDir)..\sounds\music\32000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-music-32000-%SOUND_VERSION%.tar.gz "$(ProjectDir)..\sounds" + + + $(ProjectDir)..\sounds\music\32000;%(Outputs) + + + + + {6e49f6c2-adda-4bfb-81fe-ab9af51b455f} + + + + + + \ No newline at end of file diff --git a/libs/win32/Download 16khz Sounds.2010.vcxproj b/libs/win32/Download 16khz Sounds.2010.vcxproj new file mode 100644 index 0000000000..e13ab61e3d --- /dev/null +++ b/libs/win32/Download 16khz Sounds.2010.vcxproj @@ -0,0 +1,82 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + Download 16khzsound + {87A1FE3D-F410-4C8E-9591-8C625985BC70} + Download 16khzsound + Win32Proj + + + + Utility + MultiByte + + + Utility + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + Document + Downloading 16khzsound. + if not exist "$(ProjectDir)..\sounds\en\us\callie\voicemail\16000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzipSounds en-us-callie 16000 "$(ProjectDir)..\sounds" "$(ProjectDir)..\..\build\sounds_version.txt" + $(ProjectDir)..\sounds\en\us\callie\voicemail\16000;%(Outputs) + Downloading 16khzsound. + if not exist "$(ProjectDir)..\sounds\en\us\callie\voicemail\16000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzipSounds en-us-callie 16000 "$(ProjectDir)..\sounds" "$(ProjectDir)..\..\build\sounds_version.txt" + $(ProjectDir)..\sounds\en\us\callie\voicemail\16000;%(Outputs) + + + + + {4f5c9d55-98ef-4256-8311-32d7bd360406} + + + + + + \ No newline at end of file diff --git a/libs/win32/Download 16khz music.2010.vcxproj b/libs/win32/Download 16khz music.2010.vcxproj new file mode 100644 index 0000000000..e7adf75bf9 --- /dev/null +++ b/libs/win32/Download 16khz music.2010.vcxproj @@ -0,0 +1,88 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + Download 16khz music + {E10571C4-E7F4-4608-B5F2-B22E7EB95400} + Download 16khz music + Win32Proj + + + + Utility + MultiByte + + + Utility + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + Document + Downloading 16khzsound. + set /P SOUND_VERSION=<"$(ProjectDir)..\..\build\moh_version.txt" +if not exist "$(ProjectDir)..\sounds\music\16000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-music-16000-%SOUND_VERSION%.tar.gz "$(ProjectDir)..\sounds" + + + $(ProjectDir)..\sounds\music\16000;%(Outputs) + Downloading 16khzsound. + set /P SOUND_VERSION=<"$(ProjectDir)..\..\build\moh_version.txt" +if not exist "$(ProjectDir)..\sounds\music\16000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-music-16000-%SOUND_VERSION%.tar.gz "$(ProjectDir)..\sounds" + + + $(ProjectDir)..\sounds\music\16000;%(Outputs) + + + + + {87a1fe3d-f410-4c8e-9591-8c625985bc70} + + + + + + \ No newline at end of file diff --git a/libs/win32/Download 8khz Sounds.2010.vcxproj b/libs/win32/Download 8khz Sounds.2010.vcxproj new file mode 100644 index 0000000000..29a356e03b --- /dev/null +++ b/libs/win32/Download 8khz Sounds.2010.vcxproj @@ -0,0 +1,77 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + Download 8khzsound + {3CE1DC99-8246-4DB1-A709-74F19F08EC67} + Download 8khzsound + Win32Proj + + + + Utility + MultiByte + + + Utility + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + Document + Downloading 8khzsound. + if not exist "$(ProjectDir)..\sounds\en\us\callie\voicemail\8000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzipSounds en-us-callie 8000 "$(ProjectDir)..\sounds" "$(ProjectDir)..\..\build\sounds_version.txt" + $(ProjectDir)..\sounds\en\us\callie\voicemail\8000;%(Outputs) + Downloading 8khzsound. + if not exist "$(ProjectDir)..\sounds\en\us\callie\voicemail\8000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzipSounds en-us-callie 8000 "$(ProjectDir)..\sounds" "$(ProjectDir)..\..\build\sounds_version.txt" + $(ProjectDir)..\sounds\en\us\callie\voicemail\8000;%(Outputs) + + + + + + \ No newline at end of file diff --git a/libs/win32/Download 8khz music.2010.vcxproj b/libs/win32/Download 8khz music.2010.vcxproj new file mode 100644 index 0000000000..a0fc7302d8 --- /dev/null +++ b/libs/win32/Download 8khz music.2010.vcxproj @@ -0,0 +1,86 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + Download 8khz music + {4F5C9D55-98EF-4256-8311-32D7BD360406} + Download 8khz music + Win32Proj + + + + Utility + MultiByte + + + Utility + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + Document + Downloading 8khzsound. + set /P SOUND_VERSION=<"$(ProjectDir)..\..\build\moh_version.txt" +if not exist "$(ProjectDir)..\sounds\music\8000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-music-8000-%SOUND_VERSION%.tar.gz "$(ProjectDir)..\sounds" + + $(ProjectDir)..\sounds\music\8000;%(Outputs) + Downloading 8khzsound. + set /P SOUND_VERSION=<"$(ProjectDir)..\..\build\moh_version.txt" +if not exist "$(ProjectDir)..\sounds\music\8000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/freeswitch-sounds-music-8000-%SOUND_VERSION%.tar.gz "$(ProjectDir)..\sounds" + + $(ProjectDir)..\sounds\music\8000;%(Outputs) + + + + + {3ce1dc99-8246-4db1-a709-74f19f08ec67} + + + + + + \ No newline at end of file diff --git a/libs/win32/Download CELT.vcxproj b/libs/win32/Download CELT.vcxproj new file mode 100644 index 0000000000..fb05383ebc --- /dev/null +++ b/libs/win32/Download CELT.vcxproj @@ -0,0 +1,91 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19} + Download CELT + Win32Proj + + + + Utility + MultiByte + + + Utility + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + + + + + Document + Downloading CELT. + if not exist "$(ProjectDir)..\celt-0.7.1" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/celt-0.7.1.tar.gz "$(ProjectDir).." +xcopy "$(ProjectDir)\celt\config.h" "$(ProjectDir)..\celt-0.7.1\libcelt" /C /D /Y /S /I +xcopy "$(ProjectDir)\celt\float_cast.h" "$(ProjectDir)..\celt-0.7.1\libcelt" /C /D /Y /S /I + + $(ProjectDir)..\CELT;%(Outputs) + Downloading CELT. + if not exist "$(ProjectDir)..\celt-0.7.1" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/celt-0.7.1.tar.gz "$(ProjectDir).." +xcopy "$(ProjectDir)\celt\config.h" "$(ProjectDir)..\celt-0.7.1\libcelt" /C /D /Y /S /I +xcopy "$(ProjectDir)\celt\float_cast.h" "$(ProjectDir)..\celt-0.7.1\libcelt" /C /D /Y /S /I + + $(ProjectDir)..\CELT;%(Outputs) + + + + + {1f0a8a77-e661-418f-bb92-82172ae43803} + + + + + + \ No newline at end of file diff --git a/libs/win32/Download FLITE.2010.vcxproj b/libs/win32/Download FLITE.2010.vcxproj new file mode 100644 index 0000000000..ef6791e48a --- /dev/null +++ b/libs/win32/Download FLITE.2010.vcxproj @@ -0,0 +1,88 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + Download FLITE + {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B} + Download FLITE + Win32Proj + + + + Utility + MultiByte + + + Utility + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + + + + + Document + Downloading Flite. + if not exist "$(ProjectDir)..\flite-1.3.99" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/flite-1.3.99-latest.tar.gz "$(ProjectDir).." + + $(ProjectDir)..\flite-1.3.99;%(Outputs) + Downloading Flite. + if not exist "$(ProjectDir)..\flite-1.3.99" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/flite-1.3.99-latest.tar.gz "$(ProjectDir).." + + $(ProjectDir)..\flite-1.3.99;%(Outputs) + + + + + {fff82f9b-6a2b-4be3-95d8-dc5a4fc71e19} + + + + + + \ No newline at end of file diff --git a/libs/win32/Download JSON.2010.vcxproj b/libs/win32/Download JSON.2010.vcxproj new file mode 100644 index 0000000000..f9faff4d27 --- /dev/null +++ b/libs/win32/Download JSON.2010.vcxproj @@ -0,0 +1,86 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + Download JSON + {B808178B-82F0-4CF4-A2B1-921939FA24D0} + Download JSON + Win32Proj + + + + Utility + MultiByte + + + Utility + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + + + + + Document + Downloading JSON. + if not exist "$(ProjectDir)..\json-c-0.9" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/json-c-0.9.tar.gz "$(ProjectDir).." + $(ProjectDir)..\JSON;%(Outputs) + Downloading JSON. + if not exist "$(ProjectDir)..\json-c-0.9" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/json-c-0.9.tar.gz "$(ProjectDir).." + $(ProjectDir)..\JSON;%(Outputs) + + + + + {d5d2bf72-29fe-4982-a9fa-82fdd086db1b} + + + + + + \ No newline at end of file diff --git a/libs/win32/Download LAME.2010.vcxproj b/libs/win32/Download LAME.2010.vcxproj new file mode 100644 index 0000000000..66cba3698e --- /dev/null +++ b/libs/win32/Download LAME.2010.vcxproj @@ -0,0 +1,88 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + Download LAME + {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B} + Download LAME + Win32Proj + + + + Utility + MultiByte + + + Utility + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + + + + + Document + Downloading Lame. + if not exist "$(ProjectDir)..\lame-3.97" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/lame-3.97.tar.gz "$(ProjectDir).." + + $(ProjectDir)..\lame-3.97;%(Outputs) + Downloading Lame. + if not exist "$(ProjectDir)..\lame-3.97" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/lame-3.97.tar.gz "$(ProjectDir).." + + $(ProjectDir)..\lame-3.97;%(Outputs) + + + + + {b808178b-82f0-4cf4-a2b1-921939fa24d0} + + + + + + \ No newline at end of file diff --git a/libs/win32/Download LIBSHOUT.2010.vcxproj b/libs/win32/Download LIBSHOUT.2010.vcxproj new file mode 100644 index 0000000000..685d733335 --- /dev/null +++ b/libs/win32/Download LIBSHOUT.2010.vcxproj @@ -0,0 +1,88 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + Download LIBSHOUT + {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B} + Download LIBSHOUT + Win32Proj + + + + Utility + MultiByte + + + Utility + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + + + + + Document + Downloading Flite. + if not exist "$(ProjectDir)..\libshout-2.2.2" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/libshout-2.2.2.tar.gz "$(ProjectDir).." + + $(ProjectDir)..\libshout-2.2.2;%(Outputs) + Downloading Flite. + if not exist "$(ProjectDir)..\libshout-2.2.2" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/libshout-2.2.2.tar.gz "$(ProjectDir).." + + $(ProjectDir)..\libshout-2.2.2;%(Outputs) + + + + + {d5d2bf72-29fe-4982-a9fa-82ab2086db1b} + + + + + + \ No newline at end of file diff --git a/libs/win32/Download OGG.2010.vcxproj b/libs/win32/Download OGG.2010.vcxproj new file mode 100644 index 0000000000..b8daf3a83e --- /dev/null +++ b/libs/win32/Download OGG.2010.vcxproj @@ -0,0 +1,88 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + Download OGG + {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B} + Download OGG + Win32Proj + + + + Utility + MultiByte + + + Utility + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + + + + + Document + Downloading Lame. + if not exist "$(ProjectDir)..\libogg-1.1.3" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz "$(ProjectDir).." + + $(ProjectDir)..\libogg-1.1.3;%(Outputs) + Downloading Lame. + if not exist "$(ProjectDir)..\libogg-1.1.3" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz "$(ProjectDir).." + + $(ProjectDir)..\libogg-1.1.3;%(Outputs) + + + + + {e796e337-de78-4303-8614-9a590862ee95} + + + + + + \ No newline at end of file diff --git a/libs/win32/Download PTHREAD.2010.vcxproj b/libs/win32/Download PTHREAD.2010.vcxproj new file mode 100644 index 0000000000..cbf639d07c --- /dev/null +++ b/libs/win32/Download PTHREAD.2010.vcxproj @@ -0,0 +1,84 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + Download PTHREAD + {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A} + Download PTHREAD + Win32Proj + + + + Utility + MultiByte + + + Utility + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + Document + Downloading PTHREAD. + if not exist "$(ProjectDir)..\pthreads-w32-2-7-0-release" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/pthreads-w32-2-7-0-release.tar.gz "$(ProjectDir).." + + $(ProjectDir)..\pthreads-w32-2-7-0-release;%(Outputs) + Downloading PTHREAD. + if not exist "$(ProjectDir)..\pthreads-w32-2-7-0-release" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/pthreads-w32-2-7-0-release.tar.gz "$(ProjectDir).." + + $(ProjectDir)..\pthreads-w32-2-7-0-release;%(Outputs) + + + + + {af8163ee-fa76-4904-a11d-7d70a1b5ba2e} + + + + + + \ No newline at end of file diff --git a/libs/win32/Download mpg123.2010.vcxproj b/libs/win32/Download mpg123.2010.vcxproj new file mode 100644 index 0000000000..eb9d52cf7c --- /dev/null +++ b/libs/win32/Download mpg123.2010.vcxproj @@ -0,0 +1,88 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + Download mpg123 + {E796E337-DE78-4303-8614-9A590862EE95} + Download mpg123 + Win32Proj + + + + Utility + MultiByte + + + Utility + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + + + + + Document + Downloading Flite. + if not exist "$(ProjectDir)..\mpg123" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/mpg123.tar.gz "$(ProjectDir).." + + $(ProjectDir)..\mpg123;%(Outputs) + Downloading Flite. + if not exist "$(ProjectDir)..\mpg123" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/mpg123.tar.gz "$(ProjectDir).." + + $(ProjectDir)..\mpg123;%(Outputs) + + + + + {d5d2bf72-29fe-4982-a9fa-82ab3086db1b} + + + + + + \ No newline at end of file diff --git a/libs/win32/Download pocketsphinx.2010.vcxproj b/libs/win32/Download pocketsphinx.2010.vcxproj new file mode 100644 index 0000000000..00230d9a2e --- /dev/null +++ b/libs/win32/Download pocketsphinx.2010.vcxproj @@ -0,0 +1,84 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + Download pocketsphinx + {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E} + Download pocketsphinx + Win32Proj + + + + Utility + MultiByte + + + Utility + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + Document + Downloading pocketsphinx. + if not exist "$(ProjectDir)..\pocketsphinx-0.5.99" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/pocketsphinx-0.5.99-20091212.tar.gz "$(ProjectDir).." + + $(ProjectDir)..\pocketsphinx-0.5.99;%(Outputs) + Downloading pocketsphinx. + if not exist "$(ProjectDir)..\pocketsphinx-0.5.99" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/pocketsphinx-0.5.99-20091212.tar.gz "$(ProjectDir).." + + $(ProjectDir)..\pocketsphinx-0.5.99;%(Outputs) + + + + + {d5d2bf72-29fe-4982-a9fa-82ab1086db1b} + + + + + + \ No newline at end of file diff --git a/libs/win32/Download sphinxbase.2010.vcxproj b/libs/win32/Download sphinxbase.2010.vcxproj new file mode 100644 index 0000000000..1634042b99 --- /dev/null +++ b/libs/win32/Download sphinxbase.2010.vcxproj @@ -0,0 +1,84 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + Download sphinxbase + {4F92B672-DADB-4047-8D6A-4BB3796733FD} + Download sphinxbase + Win32Proj + + + + Utility + MultiByte + + + Utility + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + Document + Downloading sphinxbase. + if not exist "$(ProjectDir)..\sphinxbase-0.4.99" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/sphinxbase-0.4.99-20091212.tar.gz "$(ProjectDir).." + + $(ProjectDir)..\sphinxbase-0.4.99;%(Outputs) + Downloading sphinxbase. + if not exist "$(ProjectDir)..\sphinxbase-0.4.99" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/sphinxbase-0.4.99-20091212.tar.gz "$(ProjectDir).." + + $(ProjectDir)..\sphinxbase-0.4.99;%(Outputs) + + + + + {8b3b4c4c-13c2-446c-beb0-f412cc2cfb9a} + + + + + + \ No newline at end of file diff --git a/libs/win32/Download sphinxmodel.2010.vcxproj b/libs/win32/Download sphinxmodel.2010.vcxproj new file mode 100644 index 0000000000..6a2e4318d9 --- /dev/null +++ b/libs/win32/Download sphinxmodel.2010.vcxproj @@ -0,0 +1,87 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + Download sphinxmodel + {2DEE4895-1134-439C-B688-52203E57D878} + Download sphinxmodel + Win32Proj + + + + Utility + MultiByte + + + Utility + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + + + + + + + Document + Downloading sphinxmodel. + if not exist "$(SolutionDir)\libs\Communicator_semi_40.cd_semi_6000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/communicator_semi_6000_20080321.tar.gz "$(ProjectDir).." + + $(ProjectDir)..\Communicator_semi_40.cd_semi_6000;%(Outputs) + Downloading sphinxmodel. + if not exist "$(SolutionDir)\libs\Communicator_semi_40.cd_semi_6000" cscript /nologo "$(ProjectDir)util.vbs" GetUnzip http://files.freeswitch.org/downloads/libs/communicator_semi_6000_20080321.tar.gz "$(ProjectDir).." + $(ProjectDir)..\Communicator_semi_40.cd_semi_6000;%(Outputs) + + + + + {4f92b672-dadb-4047-8d6a-4bb3796733fd} + + + + + + \ No newline at end of file diff --git a/libs/win32/Sound_Files/16khz.2010.vcxproj b/libs/win32/Sound_Files/16khz.2010.vcxproj new file mode 100644 index 0000000000..b6a532fba3 --- /dev/null +++ b/libs/win32/Sound_Files/16khz.2010.vcxproj @@ -0,0 +1,82 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + 16khz + {7EB71250-F002-4ED8-92CA-CA218114537A} + My16khz + + + + Utility + MultiByte + true + + + Utility + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + + xcopy "$(SolutionDir)libs\sounds\en\us\callie\voicemail\16000\*.*" "$(OutDir)sounds\en\us\callie\voicemail\16000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\ivr\16000\*.*" "$(OutDir)sounds\en\us\callie\ivr\16000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\conference\16000\*.*" "$(OutDir)sounds\en\us\callie\conference\16000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\time\16000\*.*" "$(OutDir)sounds\en\us\callie\time\16000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\digits\16000\*.*" "$(OutDir)sounds\en\us\callie\digits\16000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\ascii\16000\*.*" "$(OutDir)sounds\en\us\callie\ascii\16000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\misc\16000\*.*" "$(OutDir)sounds\en\us\callie\misc\16000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\currency\16000\*.*" "$(OutDir)sounds\en\us\callie\currency\16000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\phonetic-ascii\16000\*.*" "$(OutDir)sounds\en\us\callie\phonetic-ascii\16000" /C /D /Y /S /I + + + + + + xcopy "$(SolutionDir)libs\sounds\en\us\callie\voicemail\16000\*.*" "$(OutDir)sounds\en\us\callie\voicemail\16000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\ivr\16000\*.*" "$(OutDir)sounds\en\us\callie\ivr\16000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\conference\16000\*.*" "$(OutDir)sounds\en\us\callie\conference\16000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\time\16000\*.*" "$(OutDir)sounds\en\us\callie\time\16000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\digits\16000\*.*" "$(OutDir)sounds\en\us\callie\digits\16000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\ascii\16000\*.*" "$(OutDir)sounds\en\us\callie\ascii\16000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\misc\16000\*.*" "$(OutDir)sounds\en\us\callie\misc\16000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\currency\16000\*.*" "$(OutDir)sounds\en\us\callie\currency\16000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\phonetic-ascii\16000\*.*" "$(OutDir)sounds\en\us\callie\phonetic-ascii\16000" /C /D /Y /S /I + + + + + + {87a1fe3d-f410-4c8e-9591-8c625985bc70} + false + + + + + + \ No newline at end of file diff --git a/libs/win32/Sound_Files/16khzmusic.2010.vcxproj b/libs/win32/Sound_Files/16khzmusic.2010.vcxproj new file mode 100644 index 0000000000..f6c03137d5 --- /dev/null +++ b/libs/win32/Sound_Files/16khzmusic.2010.vcxproj @@ -0,0 +1,66 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + 16khz music + {BA599D0A-4310-4505-91DA-6A6447B3E289} + My16khzmusic + + + + Utility + MultiByte + true + + + Utility + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + + xcopy "$(SolutionDir)libs\sounds\music\16000\*.*" "$(OutDir)sounds\music\16000" /C /D /Y /S /I + + + + + + xcopy "$(SolutionDir)libs\sounds\music\16000\*.*" "$(OutDir)sounds\music\16000" /C /D /Y /S /I + + + + + + {e10571c4-e7f4-4608-b5f2-b22e7eb95400} + false + + + + + + \ No newline at end of file diff --git a/libs/win32/Sound_Files/32khz.2010.vcxproj b/libs/win32/Sound_Files/32khz.2010.vcxproj new file mode 100644 index 0000000000..090ce2e758 --- /dev/null +++ b/libs/win32/Sound_Files/32khz.2010.vcxproj @@ -0,0 +1,82 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + 32khz + {464AAB78-5489-4916-BE51-BF8D61822311} + My32khz + + + + Utility + MultiByte + true + + + Utility + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + + xcopy "$(SolutionDir)libs\sounds\en\us\callie\voicemail\32000\*.*" "$(OutDir)sounds\en\us\callie\voicemail\32000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\ivr\32000\*.*" "$(OutDir)sounds\en\us\callie\ivr\32000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\conference\32000\*.*" "$(OutDir)sounds\en\us\callie\conference\32000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\time\32000\*.*" "$(OutDir)sounds\en\us\callie\time\32000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\digits\32000\*.*" "$(OutDir)sounds\en\us\callie\digits\32000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\ascii\32000\*.*" "$(OutDir)sounds\en\us\callie\ascii\32000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\misc\32000\*.*" "$(OutDir)sounds\en\us\callie\misc\32000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\currency\32000\*.*" "$(OutDir)sounds\en\us\callie\currency\32000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\phonetic-ascii\32000\*.*" "$(OutDir)sounds\en\us\callie\phonetic-ascii\32000" /C /D /Y /S /I + + + + + + xcopy "$(SolutionDir)libs\sounds\en\us\callie\voicemail\32000\*.*" "$(OutDir)sounds\en\us\callie\voicemail\32000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\ivr\32000\*.*" "$(OutDir)sounds\en\us\callie\ivr\32000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\conference\32000\*.*" "$(OutDir)sounds\en\us\callie\conference\32000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\time\32000\*.*" "$(OutDir)sounds\en\us\callie\time\32000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\digits\32000\*.*" "$(OutDir)sounds\en\us\callie\digits\32000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\ascii\32000\*.*" "$(OutDir)sounds\en\us\callie\ascii\32000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\misc\32000\*.*" "$(OutDir)sounds\en\us\callie\misc\32000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\currency\32000\*.*" "$(OutDir)sounds\en\us\callie\currency\32000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\phonetic-ascii\32000\*.*" "$(OutDir)sounds\en\us\callie\phonetic-ascii\32000" /C /D /Y /S /I + + + + + + {6e49f6c2-adda-4bfb-81fe-ab9af51b455f} + false + + + + + + \ No newline at end of file diff --git a/libs/win32/Sound_Files/32khzmusic.2010.vcxproj b/libs/win32/Sound_Files/32khzmusic.2010.vcxproj new file mode 100644 index 0000000000..37328d0c02 --- /dev/null +++ b/libs/win32/Sound_Files/32khzmusic.2010.vcxproj @@ -0,0 +1,64 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + 32khz music + {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959} + My32khz music + + + + Utility + MultiByte + true + + + Utility + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + + xcopy "$(SolutionDir)libs\sounds\music\32000\*.*" "$(OutDir)sounds\music\32000" /C /D /Y /S /I + + + + + xcopy "$(SolutionDir)libs\sounds\music\32000\*.*" "$(OutDir)sounds\music\32000" /C /D /Y /S /I + + + + + {1f0a8a77-e661-418f-bb92-82172ae43803} + false + + + + + + \ No newline at end of file diff --git a/libs/win32/Sound_Files/8khz.2010.vcxproj b/libs/win32/Sound_Files/8khz.2010.vcxproj new file mode 100644 index 0000000000..270c4bdbff --- /dev/null +++ b/libs/win32/Sound_Files/8khz.2010.vcxproj @@ -0,0 +1,82 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + 8khz + {7A8D8174-B355-4114-AFC1-04777CB9DE0A} + Sound_Files + + + + Utility + MultiByte + true + + + Utility + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + + xcopy "$(SolutionDir)libs\sounds\en\us\callie\voicemail\8000\*.*" "$(OutDir)sounds\en\us\callie\voicemail\8000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\ivr\8000\*.*" "$(OutDir)sounds\en\us\callie\ivr\8000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\conference\8000\*.*" "$(OutDir)sounds\en\us\callie\conference\8000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\time\8000\*.*" "$(OutDir)sounds\en\us\callie\time\8000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\digits\8000\*.*" "$(OutDir)sounds\en\us\callie\digits\8000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\ascii\8000\*.*" "$(OutDir)sounds\en\us\callie\ascii\8000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\misc\8000\*.*" "$(OutDir)sounds\en\us\callie\misc\8000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\currency\8000\*.*" "$(OutDir)sounds\en\us\callie\currency\8000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\phonetic-ascii\8000\*.*" "$(OutDir)sounds\en\us\callie\phonetic-ascii\8000" /C /D /Y /S /I + + + + + + xcopy "$(SolutionDir)libs\sounds\en\us\callie\voicemail\8000\*.*" "$(OutDir)sounds\en\us\callie\voicemail\8000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\ivr\8000\*.*" "$(OutDir)sounds\en\us\callie\ivr\8000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\conference\8000\*.*" "$(OutDir)sounds\en\us\callie\conference\8000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\time\8000\*.*" "$(OutDir)sounds\en\us\callie\time\8000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\digits\8000\*.*" "$(OutDir)sounds\en\us\callie\digits\8000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\ascii\8000\*.*" "$(OutDir)sounds\en\us\callie\ascii\8000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\misc\8000\*.*" "$(OutDir)sounds\en\us\callie\misc\8000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\currency\8000\*.*" "$(OutDir)sounds\en\us\callie\currency\8000" /C /D /Y /S /I +xcopy "$(SolutionDir)libs\sounds\en\us\callie\phonetic-ascii\8000\*.*" "$(OutDir)sounds\en\us\callie\phonetic-ascii\8000" /C /D /Y /S /I + + + + + + {3ce1dc99-8246-4db1-a709-74f19f08ec67} + false + + + + + + \ No newline at end of file diff --git a/libs/win32/Sound_Files/8khzmusic.2010.vcxproj b/libs/win32/Sound_Files/8khzmusic.2010.vcxproj new file mode 100644 index 0000000000..40384525f4 --- /dev/null +++ b/libs/win32/Sound_Files/8khzmusic.2010.vcxproj @@ -0,0 +1,66 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + 8khz music + {D1ABE208-6442-4FB4-9AAD-1677E41BC870} + 8khz music + + + + Utility + MultiByte + true + + + Utility + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + + xcopy "$(SolutionDir)libs\sounds\music\8000\*.*" "$(OutDir)sounds\music\8000" /C /D /Y /S /I + + + + + + xcopy "$(SolutionDir)libs\sounds\music\8000\*.*" "$(OutDir)sounds\music\8000" /C /D /Y /S /I + + + + + + {4f5c9d55-98ef-4256-8311-32d7bd360406} + false + + + + + + \ No newline at end of file diff --git a/libs/win32/apr-util/libaprutil.2010.vcxproj b/libs/win32/apr-util/libaprutil.2010.vcxproj new file mode 100644 index 0000000000..8244bf720c --- /dev/null +++ b/libs/win32/apr-util/libaprutil.2010.vcxproj @@ -0,0 +1,1035 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + libaprutil + {F057DA7F-79E5-4B00-845C-EF446EF055E3} + libaprutil + + + + DynamicLibrary + false + + + DynamicLibrary + false + + + DynamicLibrary + false + + + DynamicLibrary + false + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(PlatformName)\$(Configuration)\ + $(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + $(SolutionDir)$(PlatformName)\$(Configuration)\ + $(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + + + + if not exist "$(ProjectDir)..\..\apr-util\include\apr_ldap.h" type "$(ProjectDir)..\..\apr-util\include\apr_ldap.hw" > "$(ProjectDir)..\..\apr-util\include\apr_ldap.h" +if not exist "$(ProjectDir)..\..\apr-util\include\apu.h" type "$(ProjectDir)..\..\apr-util\include\apu.hw" > "$(ProjectDir)..\..\apr-util\include\apu.h" +if not exist "$(ProjectDir)..\..\apr-util\include\apu_config.h" type "$(ProjectDir)..\..\apr-util\include\apu_config.hw" > "$(ProjectDir)..\..\apr-util\include\apu_config.h" +if not exist "$(ProjectDir)..\..\apr-util\include\apu_select_dbm.h" type "$(ProjectDir)..\..\apr-util\include\apu_select_dbm.hw" > "$(ProjectDir)..\..\apr-util\include\apu_select_dbm.h" +if not exist "$(ProjectDir)..\..\apr-util\include\apu_want.h" type "$(ProjectDir)..\..\apr-util\include\apu_want.hw" > "$(ProjectDir)..\..\apr-util\include\apu_want.h" + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + $(IntDir)libaprutil.tlb + + + + + /EHsc %(AdditionalOptions) + Disabled + ..\..\apr-util\include;..\..\apr-util\include/private;..\..\apr-util\dbm/sdbm;..\..\apr-iconv-1.1.1\include;..\..\apr\include;%(AdditionalIncludeDirectories) + _DEBUG;APU_DECLARE_EXPORT;APU_USE_SDBM;WIN32;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + $(IntDir)libaprutil.pch + $(IntDir) + .\Debug/ + Level3 + true + ProgramDatabase + + + _DEBUG;APU_VERSION_ONLY;%(PreprocessorDefinitions) + 0x0409 + ..\..\apr-util\include;..\..\apr-util\include/private;..\..\apr-util\dbm/sdbm;..\..\apr-iconv-1.1.1\include;..\..\apr-1.2.7\include;%(AdditionalIncludeDirectories) + + + ws2_32.lib;mswsock.lib;wldap32.lib;%(AdditionalDependencies) + $(OutDir)$(ProjectName).dll + true + %(AdditionalLibraryDirectories) + true + $(IntDir)libaprutil-1.pdb + Windows + 0x6EE60000 + false + + + $(IntDir)libaprutil-1.lib + MachineX86 + + + true + $(IntDir)libaprutil.bsc + + + + + + + + + if not exist "$(ProjectDir)..\..\apr-util\include\apr_ldap.h" type "$(ProjectDir)..\..\apr-util\include\apr_ldap.hw" > "$(ProjectDir)..\..\apr-util\include\apr_ldap.h" +if not exist "$(ProjectDir)..\..\apr-util\include\apu.h" type "$(ProjectDir)..\..\apr-util\include\apu.hw" > "$(ProjectDir)..\..\apr-util\include\apu.h" +if not exist "$(ProjectDir)..\..\apr-util\include\apu_config.h" type "$(ProjectDir)..\..\apr-util\include\apu_config.hw" > "$(ProjectDir)..\..\apr-util\include\apu_config.h" +if not exist "$(ProjectDir)..\..\apr-util\include\apu_select_dbm.h" type "$(ProjectDir)..\..\apr-util\include\apu_select_dbm.hw" > "$(ProjectDir)..\..\apr-util\include\apu_select_dbm.h" +if not exist "$(ProjectDir)..\..\apr-util\include\apu_want.h" type "$(ProjectDir)..\..\apr-util\include\apu_want.hw" > "$(ProjectDir)..\..\apr-util\include\apu_want.h" + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + $(IntDir)libaprutil.tlb + + + + + /EHsc %(AdditionalOptions) + Disabled + ..\..\apr-util\include;..\..\apr-util\include/private;..\..\apr-util\dbm/sdbm;..\..\apr-iconv-1.1.1\include;..\..\apr\include;%(AdditionalIncludeDirectories) + _DEBUG;APU_DECLARE_EXPORT;APU_USE_SDBM;WIN32;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + $(IntDir)libaprutil.pch + Level3 + true + ProgramDatabase + + + _DEBUG;APU_VERSION_ONLY;%(PreprocessorDefinitions) + 0x0409 + ..\..\apr-util\include;..\..\apr-util\include/private;..\..\apr-util\dbm/sdbm;..\..\apr-iconv-1.1.1\include;..\..\apr-1.2.7\include;%(AdditionalIncludeDirectories) + + + ws2_32.lib;mswsock.lib;wldap32.lib;%(AdditionalDependencies) + $(OutDir)$(ProjectName).dll + true + %(AdditionalLibraryDirectories) + true + $(IntDir)libaprutil-1.pdb + Windows + 0x6EE60000 + false + + + $(TargetDir)libaprutil-1.lib + MachineX64 + + + true + $(IntDir)libaprutil.bsc + + + + + + + + + if not exist "$(ProjectDir)..\..\apr-util\include\apr_ldap.h" type "$(ProjectDir)..\..\apr-util\include\apr_ldap.hw" > "$(ProjectDir)..\..\apr-util\include\apr_ldap.h" +if not exist "$(ProjectDir)..\..\apr-util\include\apu.h" type "$(ProjectDir)..\..\apr-util\include\apu.hw" > "$(ProjectDir)..\..\apr-util\include\apu.h" +if not exist "$(ProjectDir)..\..\apr-util\include\apu_config.h" type "$(ProjectDir)..\..\apr-util\include\apu_config.hw" > "$(ProjectDir)..\..\apr-util\include\apu_config.h" +if not exist "$(ProjectDir)..\..\apr-util\include\apu_select_dbm.h" type "$(ProjectDir)..\..\apr-util\include\apu_select_dbm.hw" > "$(ProjectDir)..\..\apr-util\include\apu_select_dbm.h" +if not exist "$(ProjectDir)..\..\apr-util\include\apu_want.h" type "$(ProjectDir)..\..\apr-util\include\apu_want.hw" > "$(ProjectDir)..\..\apr-util\include\apu_want.h" + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + $(IntDir)libaprutil.tlb + + + + + MaxSpeed + OnlyExplicitInline + ..\..\apr-util\include;..\..\apr-util\include/private;..\..\apr-util\dbm/sdbm;..\..\apr-iconv-1.1.1\include;..\..\apr\include;%(AdditionalIncludeDirectories) + NDEBUG;APU_DECLARE_EXPORT;APU_USE_SDBM;WIN32;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(IntDir)libaprutil.pch + $(IntDir) + .\Release/ + Level3 + true + ProgramDatabase + + + NDEBUG;APU_VERSION_ONLY;%(PreprocessorDefinitions) + 0x0409 + ..\..\apr-util\include;..\..\apr-util\include/private;..\..\apr-util\dbm/sdbm;..\..\apr-iconv-1.1.1\include;..\..\apr-1.2.7\include;%(AdditionalIncludeDirectories) + + + ws2_32.lib;mswsock.lib;wldap32.lib;%(AdditionalDependencies) + $(OutDir)$(ProjectName).dll + true + %(AdditionalLibraryDirectories) + true + $(IntDir)libaprutil-1.pdb + Windows + true + 0x6EE60000 + false + + + $(IntDir)libaprutil-1.lib + MachineX86 + + + true + $(IntDir)libaprutil.bsc + + + + + + + + + if not exist "$(ProjectDir)..\..\apr-util\include\apr_ldap.h" type "$(ProjectDir)..\..\apr-util\include\apr_ldap.hw" > "$(ProjectDir)..\..\apr-util\include\apr_ldap.h" +if not exist "$(ProjectDir)..\..\apr-util\include\apu.h" type "$(ProjectDir)..\..\apr-util\include\apu.hw" > "$(ProjectDir)..\..\apr-util\include\apu.h" +if not exist "$(ProjectDir)..\..\apr-util\include\apu_config.h" type "$(ProjectDir)..\..\apr-util\include\apu_config.hw" > "$(ProjectDir)..\..\apr-util\include\apu_config.h" +if not exist "$(ProjectDir)..\..\apr-util\include\apu_select_dbm.h" type "$(ProjectDir)..\..\apr-util\include\apu_select_dbm.hw" > "$(ProjectDir)..\..\apr-util\include\apu_select_dbm.h" +if not exist "$(ProjectDir)..\..\apr-util\include\apu_want.h" type "$(ProjectDir)..\..\apr-util\include\apu_want.hw" > "$(ProjectDir)..\..\apr-util\include\apu_want.h" + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + $(IntDir)libaprutil.tlb + + + + + MaxSpeed + OnlyExplicitInline + ..\..\apr-util\include;..\..\apr-util\include/private;..\..\apr-util\dbm/sdbm;..\..\apr-iconv-1.1.1\include;..\..\apr\include;%(AdditionalIncludeDirectories) + NDEBUG;APU_DECLARE_EXPORT;APU_USE_SDBM;WIN32;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(IntDir)libaprutil.pch + Level3 + true + ProgramDatabase + + + NDEBUG;APU_VERSION_ONLY;%(PreprocessorDefinitions) + 0x0409 + ..\..\apr-util\include;..\..\apr-util\include/private;..\..\apr-util\dbm/sdbm;..\..\apr-iconv-1.1.1\include;..\..\apr-1.2.7\include;%(AdditionalIncludeDirectories) + + + ws2_32.lib;mswsock.lib;wldap32.lib;%(AdditionalDependencies) + $(OutDir)$(ProjectName).dll + true + %(AdditionalLibraryDirectories) + true + $(IntDir)libaprutil-1.pdb + Windows + true + 0x6EE60000 + false + + + $(TargetDir)libaprutil-1.lib + MachineX64 + + + true + $(IntDir)libaprutil.bsc + + + + + + + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + + true + true + true + true + + + true + true + true + true + + + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Creating apr_ldap.h from apr_ldap.hw + if not exist ..\..\apr-util\include\apr_ldap.h type ..\..\apr-util\include\apr_ldap.hw > ..\..\apr-util\include\apr_ldap.h + + ..\..\apr-util\include\apr_ldap.h;%(Outputs) + Creating apr_ldap.h from apr_ldap.hw + if not exist ..\..\apr-util\include\apr_ldap.h type ..\..\apr-util\include\apr_ldap.hw > ..\..\apr-util\include\apr_ldap.h + + ..\..\apr-util\include\apr_ldap.h;%(Outputs) + Creating apr_ldap.h from apr_ldap.hw + if not exist ..\..\apr-util\include\apr_ldap.h type ..\..\apr-util\include\apr_ldap.hw > ..\..\apr-util\include\apr_ldap.h + + ..\..\apr-util\include\apr_ldap.h;%(Outputs) + Creating apr_ldap.h from apr_ldap.hw + if not exist ..\..\apr-util\include\apr_ldap.h type ..\..\apr-util\include\apr_ldap.hw > ..\..\apr-util\include\apr_ldap.h + + ..\..\apr-util\include\apr_ldap.h;%(Outputs) + + + + + Creating apu.h from apu.hw + if not exist ..\..\apr-util\include\apu.h type ..\..\apr-util\include\apu.hw > ..\..\apr-util\include\apu.h + + ..\..\apr-util\include\apu.h;%(Outputs) + Creating apu.h from apu.hw + if not exist ..\..\apr-util\include\apu.h type ..\..\apr-util\include\apu.hw > ..\..\apr-util\include\apu.h + + ..\..\apr-util\include\apu.h;%(Outputs) + Creating apu.h from apu.hw + if not exist ..\..\apr-util\include\apu.h type ..\..\apr-util\include\apu.hw > ..\..\apr-util\include\apu.h + + ..\..\apr-util\include\apu.h;%(Outputs) + Creating apu.h from apu.hw + if not exist ..\..\apr-util\include\apu.h type ..\..\apr-util\include\apu.hw > ..\..\apr-util\include\apu.h + + ..\..\apr-util\include\apu.h;%(Outputs) + + + + Creating apu_config.h from apu_config.hw + if not exist ..\..\apr-util\include\private\apu_config.h type ..\..\apr-util\include\private\apu_config.hw > ..\..\apr-util\include\private\apu_config.h + + ..\..\apr-util\include\private\apu_config.h;%(Outputs) + Creating apu_config.h from apu_config.hw + if not exist ..\..\apr-util\include\private\apu_config.h type ..\..\apr-util\include\private\apu_config.hw > ..\..\apr-util\include\private\apu_config.h + + ..\..\apr-util\include\private\apu_config.h;%(Outputs) + Creating apu_config.h from apu_config.hw + if not exist ..\..\apr-util\include\private\apu_config.h type ..\..\apr-util\include\private\apu_config.hw > ..\..\apr-util\include\private\apu_config.h + + ..\..\apr-util\include\private\apu_config.h;%(Outputs) + Creating apu_config.h from apu_config.hw + if not exist ..\..\apr-util\include\private\apu_config.h type ..\..\apr-util\include\private\apu_config.hw > ..\..\apr-util\include\private\apu_config.h + + ..\..\apr-util\include\private\apu_config.h;%(Outputs) + + + + Creating apu_select_dbm.h from apu_select_dbm.hw + if not exist ..\..\apr-util\include\private\apu_select_dbm.h type ..\..\apr-util\include\private\apu_select_dbm.hw > ..\..\apr-util\include\private\apu_select_dbm.h + + ..\..\apr-util\include\private\apu_select_dbm.h;%(Outputs) + Creating apu_select_dbm.h from apu_select_dbm.hw + if not exist ..\..\apr-util\include\private\apu_select_dbm.h type ..\..\apr-util\include\private\apu_select_dbm.hw > ..\..\apr-util\include\private\apu_select_dbm.h + + ..\..\apr-util\include\private\apu_select_dbm.h;%(Outputs) + Creating apu_select_dbm.h from apu_select_dbm.hw + if not exist ..\..\apr-util\include\private\apu_select_dbm.h type ..\..\apr-util\include\private\apu_select_dbm.hw > ..\..\apr-util\include\private\apu_select_dbm.h + + ..\..\apr-util\include\private\apu_select_dbm.h;%(Outputs) + Creating apu_select_dbm.h from apu_select_dbm.hw + if not exist ..\..\apr-util\include\private\apu_select_dbm.h type ..\..\apr-util\include\private\apu_select_dbm.hw > ..\..\apr-util\include\private\apu_select_dbm.h + + ..\..\apr-util\include\private\apu_select_dbm.h;%(Outputs) + + + + + Creating apu_want.h from apu_want.hw + if not exist ..\..\apr-util\include\apu_want.h type ..\..\apr-util\include\apu_want.hw > ..\..\apr-util\include\apu_want.h + + ..\..\apr-util\include\apu_want.h;%(Outputs) + Creating apu_want.h from apu_want.hw + if not exist ..\..\apr-util\include\apu_want.h type ..\..\apr-util\include\apu_want.hw > ..\..\apr-util\include\apu_want.h + + ..\..\apr-util\include\apu_want.h;%(Outputs) + Creating apu_want.h from apu_want.hw + if not exist ..\..\apr-util\include\apu_want.h type ..\..\apr-util\include\apu_want.hw > ..\..\apr-util\include\apu_want.h + + ..\..\apr-util\include\apu_want.h;%(Outputs) + Creating apu_want.h from apu_want.hw + if not exist ..\..\apr-util\include\apu_want.h type ..\..\apr-util\include\apu_want.hw > ..\..\apr-util\include\apu_want.h + + ..\..\apr-util\include\apu_want.h;%(Outputs) + + + + + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + + + + + {f6c55d93-b927-4483-bb69-15aef3dd2dff} + + + + + + \ No newline at end of file diff --git a/libs/win32/apr-util/xml.2010.vcxproj b/libs/win32/apr-util/xml.2010.vcxproj new file mode 100644 index 0000000000..6106a58832 --- /dev/null +++ b/libs/win32/apr-util/xml.2010.vcxproj @@ -0,0 +1,309 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + xml + {155844C3-EC5F-407F-97A4-A2DDADED9B2F} + xml + + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + true + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + true + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + MaxSpeed + OnlyExplicitInline + $(ProjectDir)..\..\apr-util\xml\expat\lib\;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;VERSION="expat_1.95.2";%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(IntDir)xml.pch + $(IntDir) + $(IntDir) + $(IntDir)xml_src + Level3 + true + ProgramDatabase + + + 0x0409 + + + $(OutDir)$(ProjectName).lib + true + + + true + $(IntDir)xml.bsc + + + + + X64 + + + MaxSpeed + OnlyExplicitInline + $(ProjectDir)..\..\apr-util\xml\expat\lib\;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;VERSION="expat_1.95.2";%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(IntDir)xml.pch + $(IntDir) + $(IntDir) + $(IntDir)vc90.pdb + Level3 + true + ProgramDatabase + + + 0x0409 + + + $(OutDir)$(ProjectName).lib + true + + + true + $(IntDir)xml.bsc + + + + + /EHsc %(AdditionalOptions) + Disabled + $(ProjectDir)..\..\apr-util\xml\expat\lib\;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;VERSION="expat_1.95.2";%(PreprocessorDefinitions) + MultiThreadedDebugDLL + $(IntDir)xml.pch + $(IntDir) + $(IntDir) + LibD\xml_src + Level3 + true + ProgramDatabase + + + 0x0409 + + + $(OutDir)$(ProjectName).lib + true + + + true + $(IntDir)xml.bsc + + + + + X64 + + + /EHsc %(AdditionalOptions) + Disabled + $(ProjectDir)..\..\apr-util\xml\expat\lib\;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;VERSION="expat_1.95.2";%(PreprocessorDefinitions) + MultiThreadedDebugDLL + $(IntDir)xml.pch + $(IntDir) + $(IntDir) + LibD\xml_src + Level3 + true + ProgramDatabase + + + 0x0409 + + + $(OutDir)$(ProjectName).lib + true + + + true + $(IntDir)xml.bsc + + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + + + + + + + + + + + + + Creating config.h from winconfig.h + if not exist "$(ProjectDir)..\..\apr-util\xml\expat\lib\config.h" type "$(ProjectDir)..\..\apr-util\xml\expat\lib\winconfig.h" > "$(ProjectDir)..\..\apr-util\xml\expat\lib\config.h" + + $(ProjectDir)..\..\apr-util\xml\expat\lib\config.h;%(Outputs) + Creating config.h from winconfig.h + if not exist "$(ProjectDir)..\..\apr-util\xml\expat\lib\config.h" type "$(ProjectDir)..\..\apr-util\xml\expat\lib\winconfig.h" > "$(ProjectDir)..\..\apr-util\xml\expat\lib\config.h" + + $(ProjectDir)..\..\apr-util\xml\expat\lib\config.h;%(Outputs) + Creating config.h from winconfig.h + if not exist "$(ProjectDir)..\..\apr-util\xml\expat\lib\config.h" type "$(ProjectDir)..\..\apr-util\xml\expat\lib\winconfig.h" > "$(ProjectDir)..\..\apr-util\xml\expat\lib\config.h" + + $(ProjectDir)..\..\apr-util\xml\expat\lib\config.h;%(Outputs) + Creating config.h from winconfig.h + if not exist "$(ProjectDir)..\..\apr-util\xml\expat\lib\config.h" type "$(ProjectDir)..\..\apr-util\xml\expat\lib\winconfig.h" > "$(ProjectDir)..\..\apr-util\xml\expat\lib\config.h" + + $(ProjectDir)..\..\apr-util\xml\expat\lib\config.h;%(Outputs) + + + + + Creating expat.h from expat.h.in + if not exist "$(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h" type "$(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h.in" > "$(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h" + + $(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h;%(Outputs) + Creating expat.h from expat.h.in + if not exist "$(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h" type "$(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h.in" > "$(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h" + + $(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h;%(Outputs) + Creating expat.h from expat.h.in + if not exist "$(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h" type "$(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h.in" > "$(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h" + + $(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h;%(Outputs) + Creating expat.h from expat.h.in + if not exist "$(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h" type "$(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h.in" > "$(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h" + + $(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h;%(Outputs) + + + + + + + \ No newline at end of file diff --git a/libs/win32/apr/libapr.2010.vcxproj b/libs/win32/apr/libapr.2010.vcxproj new file mode 100644 index 0000000000..3df243d1aa --- /dev/null +++ b/libs/win32/apr/libapr.2010.vcxproj @@ -0,0 +1,377 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + libapr + {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} + libapr + + + + DynamicLibrary + false + + + DynamicLibrary + false + + + DynamicLibrary + false + + + DynamicLibrary + false + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(PlatformName)\$(Configuration)\ + $(Configuration)\ + false + $(SolutionDir)\$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + $(SolutionDir)$(PlatformName)\$(Configuration)\ + $(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + + + + if not exist "$(ProjectDir)..\..\apr\include\apr.h" type "$(ProjectDir)apr.hw" > "$(ProjectDir)..\..\apr\include\apr.h" + + + + /EHsc %(AdditionalOptions) + Disabled + ..\..\apr\include;..\..\apr\include/arch;..\..\apr\include/arch/win32;..\..\apr\include/arch/unix;%(AdditionalIncludeDirectories) + _DEBUG;APR_DECLARE_EXPORT;WIN32;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + $(IntDir)libapr.pch + $(IntDir) + .\Debug/ + Level3 + true + ProgramDatabase + + + _DEBUG;APR_VERSION_ONLY;%(PreprocessorDefinitions) + 0x0409 + ..\..\apr\include;%(AdditionalIncludeDirectories) + + + ws2_32.lib;mswsock.lib;rpcrt4.lib;advapi32.lib;%(AdditionalDependencies) + $(OutDir)$(ProjectName).dll + true + true + Windows + 0x6EEC0000 + false + + + MachineX86 + + + true + $(IntDir)libapr.bsc + + + + + + + + + if not exist "$(ProjectDir)..\..\apr\include\apr.h" type "$(ProjectDir)apr.hw" > "$(ProjectDir)..\..\apr\include\apr.h" + + + + /EHsc %(AdditionalOptions) + Disabled + ..\..\apr\include;..\..\apr\include/arch;..\..\apr\include/arch/win32;..\..\apr\include/arch/unix;%(AdditionalIncludeDirectories) + _DEBUG;APR_DECLARE_EXPORT;WIN32;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + $(IntDir)libapr.pch + Level3 + true + ProgramDatabase + + + _DEBUG;APR_VERSION_ONLY;%(PreprocessorDefinitions) + 0x0409 + ..\..\apr\include;%(AdditionalIncludeDirectories) + + + ws2_32.lib;mswsock.lib;rpcrt4.lib;advapi32.lib;%(AdditionalDependencies) + $(OutDir)$(ProjectName).dll + true + true + Windows + 0x6EEC0000 + false + + + MachineX64 + + + true + $(IntDir)libapr.bsc + + + + + + + + + if not exist "$(ProjectDir)..\..\apr\include\apr.h" type "$(ProjectDir)apr.hw" > "$(ProjectDir)..\..\apr\include\apr.h" + + + + MaxSpeed + OnlyExplicitInline + ..\..\apr\include;..\..\apr\include/arch;..\..\apr\include/arch/win32;..\..\apr\include/arch/unix;%(AdditionalIncludeDirectories) + NDEBUG;APR_DECLARE_EXPORT;WIN32;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(IntDir)libapr.pch + $(IntDir) + .\Release/ + Level3 + true + ProgramDatabase + + + NDEBUG;APR_VERSION_ONLY;%(PreprocessorDefinitions) + 0x0409 + ..\..\apr\;%(AdditionalIncludeDirectories) + + + ws2_32.lib;mswsock.lib;rpcrt4.lib;advapi32.lib;%(AdditionalDependencies) + $(OutDir)$(ProjectName).dll + true + true + Windows + true + 0x6EEC0000 + false + + + MachineX86 + + + true + $(IntDir)libapr.bsc + + + + + + + + + if not exist "$(ProjectDir)..\..\apr\include\apr.h" type "$(ProjectDir)apr.hw" > "$(ProjectDir)..\..\apr\include\apr.h" + + + + MaxSpeed + OnlyExplicitInline + ..\..\apr\include;..\..\apr\include/arch;..\..\apr\include/arch/win32;..\..\apr\include/arch/unix;%(AdditionalIncludeDirectories) + NDEBUG;APR_DECLARE_EXPORT;WIN32;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(IntDir)libapr.pch + Level3 + true + ProgramDatabase + + + NDEBUG;APR_VERSION_ONLY;%(PreprocessorDefinitions) + 0x0409 + ..\..\apr\;%(AdditionalIncludeDirectories) + + + ws2_32.lib;mswsock.lib;rpcrt4.lib;advapi32.lib;%(AdditionalDependencies) + $(OutDir)$(ProjectName).dll + true + true + Windows + true + 0x6EEC0000 + false + + + MachineX64 + + + true + $(IntDir)libapr.bsc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ..\..\apr\include;%(AdditionalIncludeDirectories) + ..\..\apr\include;%(AdditionalIncludeDirectories) + + + + + + \ No newline at end of file diff --git a/libs/win32/celt/libcelt.vcxproj b/libs/win32/celt/libcelt.vcxproj new file mode 100644 index 0000000000..55c59dfef9 --- /dev/null +++ b/libs/win32/celt/libcelt.vcxproj @@ -0,0 +1,162 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {ABB71A76-42B0-47A4-973A-42E3D920C6FD} + celt + Win32Proj + + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + + + + Disabled + ..\..\celt-0.7.1\libcelt;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + + + X64 + + + Disabled + ..\..\celt-0.7.1\libcelt;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;_AMD64_;_WIN64;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + + + + + MaxSpeed + true + ..\..\celt-0.7.1\libcelt;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + + + X64 + + + MaxSpeed + true + ..\..\celt-0.7.1\libcelt;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;_AMD64_;_WIN64;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + + + + + + + + + + + + + + + + + + + + + + {fff82f9b-6a2b-4be3-95d8-dc5a4fc71e19} + false + + + + + + \ No newline at end of file diff --git a/libs/win32/curl/curllib.2010.vcxproj b/libs/win32/curl/curllib.2010.vcxproj new file mode 100644 index 0000000000..b76dd1c365 --- /dev/null +++ b/libs/win32/curl/curllib.2010.vcxproj @@ -0,0 +1,330 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + curllib + {87EE9DA4-DE1E-4448-8324-183C98DCA588} + curllib + + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + .\Release\ + .\Release\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + .\Debug\ + .\Debug\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + $(IntDir)curllib.tlb + + + + + MaxSpeed + OnlyExplicitInline + ..\..\curl\lib\;..\..\curl\include;.;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;BUILDING_LIBCURL;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(IntDir)curllib.pch + $(IntDir) + .\Release/ + $(IntDir) + true + TurnOffAllWarnings + true + ProgramDatabase + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + $(IntDir)curllib.bsc + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + $(IntDir)curllib.tlb + + + + + MaxSpeed + OnlyExplicitInline + ..\..\curl\lib\;..\..\curl\include;.;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;BUILDING_LIBCURL;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(IntDir)curllib.pch + true + TurnOffAllWarnings + true + ProgramDatabase + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + $(IntDir)curllib.bsc + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + $(IntDir)curllib.tlb + + + + + Disabled + ..\..\curl\lib\;..\..\curl\include;.;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;BUILDING_LIBCURL;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + $(IntDir)curllib.pch + $(IntDir) + .\Debug/ + $(IntDir) + true + TurnOffAllWarnings + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + $(IntDir)curllib.bsc + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + $(IntDir)curllib.tlb + + + + + Disabled + ..\..\curl\lib\;..\..\curl\include;.;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;BUILDING_LIBCURL;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + $(IntDir)curllib.pch + true + TurnOffAllWarnings + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + $(IntDir)curllib.bsc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/win32/flite/flite.2010.vcxproj b/libs/win32/flite/flite.2010.vcxproj new file mode 100644 index 0000000000..a8cce33108 --- /dev/null +++ b/libs/win32/flite/flite.2010.vcxproj @@ -0,0 +1,326 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + flite + {0AD1177E-1FD8-4643-9391-431467A11084} + flite-1.3-current + + + + StaticLibrary + MultiByte + true + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + true + + + StaticLibrary + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + + + + Disabled + ..\..\flite-1.3.99\include;..\..\flite-1.3.99\lang\usenglish;..\..\flite-1.3.99\lang\cmulex;%(AdditionalIncludeDirectories) + CST_AUDIO_NONE=1;NO_UNION_INITIALIZATION=1;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Level4 + EditAndContinue + 4100;4057;4706;%(DisableSpecificWarnings) + + + + + X64 + + + Disabled + ..\..\flite-1.3.99\include;..\..\flite-1.3.99\lang\usenglish;..\..\flite-1.3.99\lang\cmulex;%(AdditionalIncludeDirectories) + CST_AUDIO_NONE=1;NO_UNION_INITIALIZATION=1;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + TurnOffAllWarnings + ProgramDatabase + 4100;4057;4706;%(DisableSpecificWarnings) + + + + + MaxSpeed + true + ..\..\flite-1.3.99\include;..\..\flite-1.3.99\lang\usenglish;..\..\flite-1.3.99\lang\cmulex;%(AdditionalIncludeDirectories) + CST_AUDIO_NONE=1;NO_UNION_INITIALIZATION=1;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + TurnOffAllWarnings + ProgramDatabase + 4100;4057;4706;%(DisableSpecificWarnings) + + + + + X64 + + + MaxSpeed + true + ..\..\flite-1.3.99\include;..\..\flite-1.3.99\lang\usenglish;..\..\flite-1.3.99\lang\cmulex;%(AdditionalIncludeDirectories) + CST_AUDIO_NONE=1;NO_UNION_INITIALIZATION=1;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + TurnOffAllWarnings + ProgramDatabase + 4100;4057;4706;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + include;lang/usenglish;%(AdditionalIncludeDirectories) + include;lang/usenglish;%(AdditionalIncludeDirectories) + include;lang/usenglish;%(AdditionalIncludeDirectories) + include;lang/usenglish;%(AdditionalIncludeDirectories) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {d5d2bf72-29fe-4982-a9fa-82fdd086db1b} + false + + + + + + \ No newline at end of file diff --git a/libs/win32/iksemel/iksemel.2010.vcxproj b/libs/win32/iksemel/iksemel.2010.vcxproj new file mode 100644 index 0000000000..f62a5bf94a --- /dev/null +++ b/libs/win32/iksemel/iksemel.2010.vcxproj @@ -0,0 +1,152 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + iksemel + {E727E8F6-935D-46FE-8B0E-37834748A0E3} + iksemel + Win32Proj + + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + Disabled + ..\..\iksemel\include;.;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + TurnOffAllWarnings + ProgramDatabase + + + + + ..\..\iksemel\include;.;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + TurnOffAllWarnings + ProgramDatabase + + + + + X64 + + + Disabled + ..\..\iksemel\include;.;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + TurnOffAllWarnings + ProgramDatabase + + + + + X64 + + + ..\..\iksemel\include;.;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + TurnOffAllWarnings + ProgramDatabase + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/win32/js/js.2010.vcxproj b/libs/win32/js/js.2010.vcxproj new file mode 100644 index 0000000000..78ef6ad230 --- /dev/null +++ b/libs/win32/js/js.2010.vcxproj @@ -0,0 +1,460 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + js + {204FA0DE-305D-4414-AE2E-F195A23F390D} + js + + + + DynamicLibrary + false + + + DynamicLibrary + false + + + DynamicLibrary + false + + + DynamicLibrary + false + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + $(SolutionDir)$(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + + + + if not exist "$(ProjectDir)..\..\js\config.h" type "$(ProjectDir)..\..\js\config.hw" > "$(ProjectDir)..\..\js\config.h" +if not exist "$(ProjectDir)..\..\js\src\jsautocfg.h" type "$(ProjectDir)..\..\js\src\jsautocfg.hw" > "$(ProjectDir)..\..\js\src\jsautocfg.h" +if not exist "$(ProjectDir)..\..\js\nsprpub\pr\include\prcpucfg.h" type "$(ProjectDir)..\..\js\nsprpub\pr\include\md\_winnt.cfg" > "$(ProjectDir)..\..\js\nsprpub\pr\include\prcpucfg.h" + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + $(IntDir)js.tlb + + + + + MaxSpeed + OnlyExplicitInline + ..\..\js\nsprpub\pr\include\private;..\..\js\nsprpub\pr\include;%(AdditionalIncludeDirectories) + NDEBUG;_X86_=1;_WINDOWS;WIN32;XP_WIN;JSFILE;EXPORT_JS_API;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;JS_THREADSAFE;OSSP;_NSPR_BUILD_;JS_HAS_FILE_OBJECT=1;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(IntDir)js.pch + + + $(IntDir) + $(IntDir)vc80.pdb + TurnOffAllWarnings + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + odbc32.lib;odbccp32.lib;advapi32.lib;wsock32.lib;winmm.lib;%(AdditionalDependencies) + true + %(AdditionalLibraryDirectories) + $(IntDir)js32.pdb + Windows + false + false + false + + + $(IntDir)js32.lib + MachineX86 + + + true + $(IntDir)js.bsc + + + + + + + + + if not exist "$(ProjectDir)..\..\js\config.h" type "$(ProjectDir)..\..\js\config.hw" > "$(ProjectDir)..\..\js\config.h" +if not exist "$(ProjectDir)..\..\js\src\jsautocfg.h" type "$(ProjectDir)..\..\js\src\jsautocfg.hw" > "$(ProjectDir)..\..\js\src\jsautocfg.h" +if not exist "$(ProjectDir)..\..\js\nsprpub\pr\include\prcpucfg.h" type "$(ProjectDir)..\..\js\nsprpub\pr\include\md\_winnt.cfg" > "$(ProjectDir)..\..\js\nsprpub\pr\include\prcpucfg.h" + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + $(IntDir)js.tlb + + + + + MaxSpeed + OnlyExplicitInline + ..\..\js\nsprpub\pr\include\private;..\..\js\nsprpub\pr\include;%(AdditionalIncludeDirectories) + _AMD64_=1;NDEBUG;_WINDOWS;WIN32;XP_WIN;JSFILE;EXPORT_JS_API;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;JS_THREADSAFE;OSSP;_NSPR_BUILD_;JS_HAS_FILE_OBJECT=1;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(IntDir)js.pch + + + $(IntDir) + $(IntDir)vc80.pdb + TurnOffAllWarnings + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + odbc32.lib;odbccp32.lib;advapi32.lib;wsock32.lib;winmm.lib;%(AdditionalDependencies) + true + %(AdditionalLibraryDirectories) + $(IntDir)js32.pdb + Windows + false + false + false + + + $(TargetDir)js32.lib + MachineX64 + + + true + $(IntDir)js.bsc + + + + + + + + + if not exist "$(ProjectDir)..\..\js\config.h" type "$(ProjectDir)..\..\js\config.hw" > "$(ProjectDir)..\..\js\config.h" +if not exist "$(ProjectDir)..\..\js\src\jsautocfg.h" type "$(ProjectDir)..\..\js\src\jsautocfg.hw" > "$(ProjectDir)..\..\js\src\jsautocfg.h" +if not exist "$(ProjectDir)..\..\js\nsprpub\pr\include\prcpucfg.h" type "$(ProjectDir)..\..\js\nsprpub\pr\include\md\_winnt.cfg" > "$(ProjectDir)..\..\js\nsprpub\pr\include\prcpucfg.h" + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + $(IntDir)js.tlb + + + + + Disabled + ..\..\js\nsprpub\pr\include\private;..\..\js\nsprpub\pr\include;%(AdditionalIncludeDirectories) + _DEBUG;DEBUG;_X86_=1;_WINDOWS;WIN32;XP_WIN;JSFILE;EXPORT_JS_API;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;JS_THREADSAFE;OSSP;_NSPR_BUILD_;JS_HAS_FILE_OBJECT=1;%(PreprocessorDefinitions) + true + MultiThreadedDebugDLL + $(IntDir)js.pch + + + $(IntDir) + $(IntDir)vc80.pdb + TurnOffAllWarnings + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + odbc32.lib;odbccp32.lib;advapi32.lib;wsock32.lib;winmm.lib;%(AdditionalDependencies) + true + %(AdditionalLibraryDirectories) + true + $(IntDir)js32.pdb + Windows + false + + + $(IntDir)js32.lib + MachineX86 + + + true + $(IntDir)js.bsc + + + + + + + + + if not exist "$(ProjectDir)..\..\js\config.h" type "$(ProjectDir)..\..\js\config.hw" > "$(ProjectDir)..\..\js\config.h" +if not exist "$(ProjectDir)..\..\js\src\jsautocfg.h" type "$(ProjectDir)..\..\js\src\jsautocfg.hw" > "$(ProjectDir)..\..\js\src\jsautocfg.h" +if not exist "$(ProjectDir)..\..\js\nsprpub\pr\include\prcpucfg.h" type "$(ProjectDir)..\..\js\nsprpub\pr\include\md\_winnt.cfg" > "$(ProjectDir)..\..\js\nsprpub\pr\include\prcpucfg.h" + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + $(IntDir)js.tlb + + + + + Disabled + ..\..\js\nsprpub\pr\include\private;..\..\js\nsprpub\pr\include;%(AdditionalIncludeDirectories) + _DEBUG;DEBUG;_AMD64_=1;_WINDOWS;WIN32;XP_WIN;JSFILE;EXPORT_JS_API;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;JS_THREADSAFE;OSSP;_NSPR_BUILD_;JS_HAS_FILE_OBJECT=1;%(PreprocessorDefinitions) + true + MultiThreadedDebugDLL + $(IntDir)js.pch + + + $(IntDir) + $(IntDir)vc80.pdb + TurnOffAllWarnings + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + odbc32.lib;odbccp32.lib;advapi32.lib;wsock32.lib;winmm.lib;%(AdditionalDependencies) + true + %(AdditionalLibraryDirectories) + true + $(IntDir)js32.pdb + Windows + false + + + $(TargetDir)js32.lib + MachineX64 + + + true + $(IntDir)js.bsc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/win32/json/libjson.2010.vcxproj b/libs/win32/json/libjson.2010.vcxproj new file mode 100644 index 0000000000..abd90a20b8 --- /dev/null +++ b/libs/win32/json/libjson.2010.vcxproj @@ -0,0 +1,156 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + libjson + {9778F1C0-09BC-4698-8EBC-BD982247209A} + json + Win32Proj + + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + + + + Disabled + .;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;HAVE_STDARG_H;STDC_HEADERS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + + + X64 + + + Disabled + .;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;HAVE_STDARG_H;STDC_HEADERS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + + + + + MaxSpeed + true + .;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;HAVE_STDARG_H;STDC_HEADERS;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + + + X64 + + + MaxSpeed + true + .;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;HAVE_STDARG_H;STDC_HEADERS;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + + + + + + + + + + + + + + + {b808178b-82f0-4cf4-a2b1-921939fa24d0} + false + + + + + + \ No newline at end of file diff --git a/libs/win32/libg722_1/libg722_1.vcxproj b/libs/win32/libg722_1/libg722_1.vcxproj new file mode 100644 index 0000000000..5e41d3fbbf --- /dev/null +++ b/libs/win32/libg722_1/libg722_1.vcxproj @@ -0,0 +1,170 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C} + libg722_1 + Win32Proj + + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + Disabled + %(RootDir)%(Directory)..\..\libg722_1\src\msvc\;%(RootDir)%(Directory)..\..\libg722_1\src\generated\;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBG722_1_EXPORTS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + + + Level3 + ProgramDatabase + + + + + MaxSpeed + true + %(RootDir)%(Directory)..\..\libg722_1\src\msvc\;%(RootDir)%(Directory)..\..\libg722_1\src\generated\;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBG722_1_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + + + X64 + + + Disabled + %(RootDir)%(Directory)..\..\libg722_1\src\msvc\;%(RootDir)%(Directory)..\..\libg722_1\src\generated\;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBG722_1_EXPORTS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + + + Level3 + ProgramDatabase + + + + + X64 + + + MaxSpeed + true + %(RootDir)%(Directory)..\..\libg722_1\src\msvc\;%(RootDir)%(Directory)..\..\libg722_1\src\generated\;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBG722_1_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/win32/libmp3lame/libmp3lame.2010.vcxproj b/libs/win32/libmp3lame/libmp3lame.2010.vcxproj new file mode 100644 index 0000000000..2c498fbdbe --- /dev/null +++ b/libs/win32/libmp3lame/libmp3lame.2010.vcxproj @@ -0,0 +1,494 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + libmp3lame + {E316772F-5D8F-4F2A-8F71-094C3E859D34} + libmp3lame + + + + StaticLibrary + false + + + StaticLibrary + false + + + StaticLibrary + false + + + StaticLibrary + false + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + .\Release\ + .\Release\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + .\Debug\ + .\Debug\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + /GAy /QIfdiv /QI0f %(AdditionalOptions) + MaxSpeed + .;..\..\lame-3.97;..\..\lame-3.97\include;%(AdditionalIncludeDirectories) + NDEBUG;_WINDOWS;WIN32;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + MultiThreaded + true + $(IntDir)libmp3lame_vc6.pch + $(IntDir) + .\Release/ + $(IntDir) + TurnOffAllWarnings + true + Default + + + 0x0409 + + + $(OutDir)libmp3lame.lib + true + + + + + X64 + + + /GAy /QIfdiv /QI0f %(AdditionalOptions) + MaxSpeed + .;..\..\lame-3.97;..\..\lame-3.97\include;%(AdditionalIncludeDirectories) + NDEBUG;_WINDOWS;WIN32;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + MultiThreaded + true + $(IntDir)libmp3lame_vc6.pch + TurnOffAllWarnings + true + Default + + + 0x0409 + + + $(OutDir)libmp3lame.lib + true + + + + + Disabled + .;..\..\lame-3.97;..\..\lame-3.97\include;%(AdditionalIncludeDirectories) + _DEBUG;_WINDOWS;WIN32;HAVE_CONFIG_H;%(PreprocessorDefinitions) + MultiThreadedDebug + $(IntDir)libmp3lame_vc6.pch + $(IntDir) + .\Debug/ + $(IntDir) + TurnOffAllWarnings + true + ProgramDatabase + Default + + + 0x0409 + + + $(OutDir)libmp3lame.lib + true + + + + + X64 + + + Disabled + .;..\..\lame-3.97;..\..\lame-3.97\include;%(AdditionalIncludeDirectories) + _DEBUG;_WINDOWS;WIN32;HAVE_CONFIG_H;%(PreprocessorDefinitions) + MultiThreadedDebug + $(IntDir)libmp3lame_vc6.pch + TurnOffAllWarnings + true + ProgramDatabase + Default + + + 0x0409 + + + $(OutDir)libmp3lame.lib + true + + + + + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + Level1 + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + Level1 + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + Level1 + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + Level1 + + + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + Disabled + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MaxSpeed + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {d5d2bf72-29fe-4982-a9fa-82ab2086db1b} + false + + + + + + \ No newline at end of file diff --git a/libs/win32/libogg/libogg.2010.vcxproj b/libs/win32/libogg/libogg.2010.vcxproj new file mode 100644 index 0000000000..8da4327882 --- /dev/null +++ b/libs/win32/libogg/libogg.2010.vcxproj @@ -0,0 +1,221 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + libogg + {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4} + libogg + + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Configuration)\ + $(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + MaxSpeed + OnlyExplicitInline + ..\..\libogg-1.1.3\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) + true + MultiThreaded + true + .\Static_Release/ogg_static.pch + .\Static_Release/ + .\Static_Release/ + .\Static_Release/ + TurnOffAllWarnings + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)libogg.lib + true + + + true + .\Static_Release/ogg_static.bsc + + + + + X64 + + + MaxSpeed + OnlyExplicitInline + ..\..\libogg-1.1.3\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) + true + MultiThreaded + true + .\Static_Release/ogg_static.pch + TurnOffAllWarnings + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)libogg.lib + true + + + true + .\Static_Release/ogg_static.bsc + + + + + Disabled + ..\..\libogg-1.1.3\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + .\Static_Debug/ogg_static.pch + .\Static_Debug/ + .\Static_Debug/ + .\Static_Debug/ + TurnOffAllWarnings + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)libogg.lib + true + + + true + .\Static_Debug/ogg_static.bsc + + + + + X64 + + + Disabled + ..\..\libogg-1.1.3\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + .\Static_Debug/ogg_static.pch + TurnOffAllWarnings + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)libogg.lib + true + + + true + .\Static_Debug/ogg_static.bsc + + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + + + + + + {d5d2bf72-29fe-4982-a9fa-82ab1086db1b} + false + + + + + + \ No newline at end of file diff --git a/libs/win32/libshout/libshout.vcxproj b/libs/win32/libshout/libshout.vcxproj new file mode 100644 index 0000000000..cb9baec093 --- /dev/null +++ b/libs/win32/libshout/libshout.vcxproj @@ -0,0 +1,203 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {D3D8B329-20BE-475E-9E83-653CEA0E0EF5} + libshout + + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Configuration)\ + $(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + MaxSpeed + OnlyExplicitInline + .\;..\..\libshout-2.2.2\src;..\..\libshout-2.2.2\include;..\..\libogg-1.1.3\include;..\..\pthreads-w32-2-7-0-release;..\..\libshout-2.2.2\win32\include;%(AdditionalIncludeDirectories) + WIN32;_LIB;_WIN32;VERSION="2.0.0";LIBSHOUT_MAJOR=2;LIBSHOUT_MINOR=0;LIBSHOUT_MICRO=0;HAVE_WINSOCK2_H;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreaded + true + .\Static_Release/ + .\Static_Release/ + .\Static_Release/ + TurnOffAllWarnings + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)libshout.lib + true + + + + + X64 + + + MaxSpeed + OnlyExplicitInline + .\;..\..\libshout-2.2.2\src;..\..\libshout-2.2.2\include;..\..\libogg-1.1.3\include;..\..\pthreads-w32-2-7-0-release;..\..\libshout-2.2.2\win32\include;%(AdditionalIncludeDirectories) + WIN32;_LIB;_WIN32;VERSION="2.0.0";LIBSHOUT_MAJOR=2;LIBSHOUT_MINOR=0;LIBSHOUT_MICRO=0;HAVE_WINSOCK2_H;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreaded + true + TurnOffAllWarnings + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)libshout.lib + true + + + + + Disabled + .\;..\..\libshout-2.2.2\src;..\..\libshout-2.2.2\include;..\..\libogg-1.1.3\include;..\..\pthreads-w32-2-7-0-release;..\..\libshout-2.2.2\win32\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;_WIN32;VERSION="2.0.0";LIBSHOUT_MAJOR=2;LIBSHOUT_MINOR=0;LIBSHOUT_MICRO=0;HAVE_WINSOCK2_H;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + .\Static_Debug/ + .\Static_Debug/ + .\Static_Debug/ + TurnOffAllWarnings + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)libshout.lib + true + + + + + X64 + + + Disabled + .\;..\..\libshout-2.2.2\src;..\..\libshout-2.2.2\include;..\..\libogg-1.1.3\include;..\..\pthreads-w32-2-7-0-release;..\..\libshout-2.2.2\win32\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;_WIN32;VERSION="2.0.0";LIBSHOUT_MAJOR=2;LIBSHOUT_MINOR=0;LIBSHOUT_MICRO=0;HAVE_WINSOCK2_H;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + TurnOffAllWarnings + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + $(OutDir)libshout.lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {d5d2bf72-29fe-4982-a9fa-82ab3086db1b} + false + + + {0feeaec6-4399-4c46-b7db-62ece80d15b4} + false + + + + + + \ No newline at end of file diff --git a/libs/win32/libsndfile/libsndfile.2010.vcxproj b/libs/win32/libsndfile/libsndfile.2010.vcxproj new file mode 100644 index 0000000000..903a05ca72 --- /dev/null +++ b/libs/win32/libsndfile/libsndfile.2010.vcxproj @@ -0,0 +1,218 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + libsndfile + {3D0370CA-BED2-4657-A475-32375CBCB6E4} + libsndfile + Win32Proj + + + + StaticLibrary + NotSet + true + + + StaticLibrary + NotSet + + + StaticLibrary + NotSet + true + + + StaticLibrary + NotSet + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Configuration)\ + $(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + Disabled + ..\..\libsndfile\src;.;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;inline=__inline;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level1 + ProgramDatabase + CompileAsC + + + + + X64 + + + Disabled + ..\..\libsndfile\src;.;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;inline=__inline;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level1 + ProgramDatabase + CompileAsC + + + + + ..\..\libsndfile\src;.;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;inline=__inline;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level1 + ProgramDatabase + CompileAsC + + + + + X64 + + + ..\..\libsndfile\src;.;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;inline=__inline;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level1 + ProgramDatabase + CompileAsC + + + + + + + + + + + + + + + + + + + + + + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.xdc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/win32/mpg123/libmpg123.2010.vcxproj b/libs/win32/mpg123/libmpg123.2010.vcxproj new file mode 100644 index 0000000000..3a04f6adc7 --- /dev/null +++ b/libs/win32/mpg123/libmpg123.2010.vcxproj @@ -0,0 +1,175 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + libmpg123 + {419C8F80-D858-4B48-A25C-AF4007608137} + libmpg123 + Win32Proj + + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + .\Debug\ + .\Debug\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + .\Release\ + .\Release\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + Disabled + src;$(ProjectDir)libmpg123;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;OPT_GENERIC;strcasecmp=stricmp;strncasecmp=strnicmp;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + $(IntDir) + .\Debug/ + $(IntDir) + Level4 + ProgramDatabase + 4100;4018;4244;4127;4189;4389;4702;4706;%(DisableSpecificWarnings) + false + + + + + X64 + + + Disabled + src;$(ProjectDir)libmpg123;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;OPT_GENERIC;strcasecmp=stricmp;strncasecmp=strnicmp;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level4 + ProgramDatabase + 4100;4018;4244;4127;4189;4389;4702;4706;%(DisableSpecificWarnings) + false + + + + + src;$(ProjectDir)libmpg123;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;OPT_GENERIC;strcasecmp=stricmp;strncasecmp=strnicmp;%(PreprocessorDefinitions) + MultiThreadedDLL + + + $(IntDir) + .\Release/ + $(IntDir) + Level4 + ProgramDatabase + 4100;4018;4244;4127;4189;4389;4702;4706;%(DisableSpecificWarnings) + false + + + + + X64 + + + src;$(ProjectDir)libmpg123;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;OPT_GENERIC;strcasecmp=stricmp;strncasecmp=strnicmp;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level4 + ProgramDatabase + 4100;4018;4244;4127;4189;4389;4702;4706;%(DisableSpecificWarnings) + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + {e796e337-de78-4303-8614-9a590862ee95} + false + + + + + + \ No newline at end of file diff --git a/libs/win32/pcre/libpcre.2010.vcxproj b/libs/win32/pcre/libpcre.2010.vcxproj new file mode 100644 index 0000000000..56b39be5a0 --- /dev/null +++ b/libs/win32/pcre/libpcre.2010.vcxproj @@ -0,0 +1,635 @@ + + + + + Debug DLL + Win32 + + + Debug DLL + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release DLL + Win32 + + + Release DLL + x64 + + + Release + Win32 + + + Release + x64 + + + + libpcre + {8D04B550-D240-4A44-8A18-35DA3F7038D9} + libpcre + + + + DynamicLibrary + false + + + DynamicLibrary + false + + + StaticLibrary + false + + + StaticLibrary + false + + + DynamicLibrary + false + + + DynamicLibrary + false + + + StaticLibrary + false + + + StaticLibrary + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Configuration)\ + $(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)Debug\ + $(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + $(SolutionDir)Release\ + $(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + + + + + + + + + + + + %(Inputs) + %(Outputs) + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + $(IntDir)libpcre.tlb + + + + + Disabled + $(ProjectDir);$(ProjectDir)..\..\pcre;%(AdditionalIncludeDirectories) + _WIN32;WIN32;_DEBUG;_WINDOWS;LIBPCRE_EXPORTS;SUPPORT_UTF8;SUPPORT_UCP;POSIX_MALLOC_THRESHOLD=10;NO_RECURSE;DEBUG;PCRE_DEFINITION;PCRE_STATIC;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + $(OutDir)libpcre.pch + + + $(IntDir) + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + + + odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + true + $(OutDir)$(ProjectName).bsc + + + + + + + + + + + + + + + + + %(Inputs) + %(Outputs) + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + $(IntDir)libpcre.tlb + + + + + Disabled + $(ProjectDir);$(ProjectDir)..\..\pcre;%(AdditionalIncludeDirectories) + _WIN32;WIN32;_DEBUG;_WINDOWS;LIBPCRE_EXPORTS;SUPPORT_UTF8;SUPPORT_UCP;POSIX_MALLOC_THRESHOLD=10;NO_RECURSE;DEBUG;PCRE_DEFINITION;PCRE_STATIC;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + $(OutDir)libpcre.pch + + + $(IntDir) + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + + + odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + true + $(OutDir)$(ProjectName).bsc + + + + + + + + + + + + + + + + + %(Inputs) + %(Outputs) + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + $(IntDir)libpcre.tlb + + + + + MaxSpeed + OnlyExplicitInline + $(ProjectDir);$(ProjectDir)..\..\pcre;%(AdditionalIncludeDirectories) + _WIN32;WIN32;NDEBUG;_WINDOWS;LIBPCRE_EXPORTS;SUPPORT_UTF8;SUPPORT_UCP;POSIX_MALLOC_THRESHOLD=10;NO_RECURSE;PCRE_DEFINITION;PCRE_STATIC;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(OutDir)libpcre.pch + + + $(IntDir) + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + + + odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + true + $(OutDir)$(ProjectName).bsc + + + + + + + + + + + + + + + + + %(Inputs) + %(Outputs) + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + $(IntDir)libpcre.tlb + + + + + MaxSpeed + OnlyExplicitInline + $(ProjectDir);$(ProjectDir)..\..\pcre;%(AdditionalIncludeDirectories) + _WIN32;WIN32;NDEBUG;_WINDOWS;LIBPCRE_EXPORTS;SUPPORT_UTF8;SUPPORT_UCP;POSIX_MALLOC_THRESHOLD=10;NO_RECURSE;PCRE_DEFINITION;PCRE_STATIC;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(OutDir)libpcre.pch + + + $(IntDir) + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + + + odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + true + $(OutDir)$(ProjectName).bsc + + + + + + + + + + + + + + + + + %(Inputs) + %(Outputs) + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + $(IntDir)libpcre.tlb + + + + + Disabled + $(ProjectDir);$(ProjectDir)..\..\pcre;%(AdditionalIncludeDirectories) + _WIN32;WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBPCRE_EXPORTS;SUPPORT_UTF8;SUPPORT_UCP;POSIX_MALLOC_THRESHOLD=10;NO_RECURSE;DEBUG;PCRE_DEFINITION;DLL_EXPORT;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + $(OutDir)libpcre.pch + + + $(IntDir) + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(OutDir)$(ProjectName).dll + true + $(ProjectDir)..\..\pcre\pcre.def + true + false + + + $(IntDir)$(ProjectName).lib + MachineX86 + + + true + $(OutDir)$(ProjectName).bsc + + + + + + + + + + + + + + + + + %(Inputs) + %(Outputs) + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + $(IntDir)libpcre.tlb + + + + + Disabled + $(ProjectDir);$(ProjectDir)..\..\pcre;%(AdditionalIncludeDirectories) + _WIN32;WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBPCRE_EXPORTS;SUPPORT_UTF8;SUPPORT_UCP;POSIX_MALLOC_THRESHOLD=10;NO_RECURSE;DEBUG;PCRE_DEFINITION;DLL_EXPORT;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + $(OutDir)libpcre.pch + + + $(IntDir) + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(OutDir)$(ProjectName).dll + true + $(ProjectDir)..\..\pcre\pcre.def + true + false + + + $(IntDir)$(ProjectName).lib + MachineX64 + + + true + $(OutDir)$(ProjectName).bsc + + + + + + + + + + + + + + + + + %(Inputs) + %(Outputs) + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + $(IntDir)libpcre.tlb + + + + + MaxSpeed + OnlyExplicitInline + $(ProjectDir);$(ProjectDir)..\..\pcre;%(AdditionalIncludeDirectories) + _WIN32;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBPCRE_EXPORTS;SUPPORT_UTF8;SUPPORT_UCP;POSIX_MALLOC_THRESHOLD=10;NO_RECURSE;PCRE_DEFINITION;DLL_EXPORT;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(OutDir)libpcre.pch + + + $(IntDir) + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(OutDir)$(ProjectName).dll + true + $(ProjectDir)..\..\pcre\pcre.def + false + + + $(IntDir)$(ProjectName).lib + MachineX86 + + + true + $(OutDir)$(ProjectName).bsc + + + + + + + + + + + + + + + + + %(Inputs) + %(Outputs) + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + $(IntDir)libpcre.tlb + + + + + MaxSpeed + OnlyExplicitInline + $(ProjectDir);$(ProjectDir)..\..\pcre;%(AdditionalIncludeDirectories) + _WIN32;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBPCRE_EXPORTS;SUPPORT_UTF8;SUPPORT_UCP;POSIX_MALLOC_THRESHOLD=10;NO_RECURSE;PCRE_DEFINITION;DLL_EXPORT;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(OutDir)libpcre.pch + + + $(IntDir) + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(OutDir)$(ProjectName).dll + true + $(ProjectDir)..\..\pcre\pcre.def + false + + + $(IntDir)$(ProjectName).lib + MachineX64 + + + true + $(OutDir)$(ProjectName).bsc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {1ced5987-a529-46dc-b30f-870d85ff9c94} + false + + + + + + \ No newline at end of file diff --git a/libs/win32/pocketsphinx/pocketsphinx.2010.vcxproj b/libs/win32/pocketsphinx/pocketsphinx.2010.vcxproj new file mode 100644 index 0000000000..8828a56e61 --- /dev/null +++ b/libs/win32/pocketsphinx/pocketsphinx.2010.vcxproj @@ -0,0 +1,452 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + pocketsphinx + {94001A0E-A837-445C-8004-F918F10D0226} + pocketsphinx + + + + DynamicLibrary + false + MultiByte + + + DynamicLibrary + false + Unicode + + + DynamicLibrary + false + MultiByte + + + DynamicLibrary + false + Unicode + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(PlatformName)\$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(PlatformName)\$(Configuration)\ + $(Configuration)\ + true + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + $(IntDir)pocketsphinx.tlb + + + + + MaxSpeed + OnlyExplicitInline + ../../../include;../../../../sphinxbase/include;../../../../sphinxbase/include/win32;..\..\pocketsphinx-0.5.99/src/libpocketsphinx;..\..\sphinxbase-0.4.99\include;..\..\pocketsphinx-0.5.99\include;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_WINDOWS;_USRDLL;POCKETSPHINX_EXPORTS;SPHINXDLL;HAVE_CONFIG_H;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(IntDir)pocketsphinx.pch + $(IntDir) + .\Release/ + $(IntDir) + TurnOffAllWarnings + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + winmm.lib;%(AdditionalDependencies) + ..\..\..\Release;%(AdditionalLibraryDirectories) + + + true + $(IntDir)pocketsphinx.bsc + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + $(IntDir)pocketsphinx.tlb + + + + + MaxSpeed + OnlyExplicitInline + ../../../include;../../../../sphinxbase/include;../../../../sphinxbase/include/win32;..\..\pocketsphinx-0.5.99/src/libpocketsphinx;..\..\sphinxbase-0.4.99\include;..\..\pocketsphinx-0.5.99\include;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_WINDOWS;_USRDLL;POCKETSPHINX_EXPORTS;SPHINXDLL;HAVE_CONFIG_H;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(IntDir)pocketsphinx.pch + TurnOffAllWarnings + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + winmm.lib;%(AdditionalDependencies) + ..\..\..\Release;%(AdditionalLibraryDirectories) + MachineX64 + + + true + $(IntDir)pocketsphinx.bsc + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + $(IntDir)pocketsphinx.tlb + + + + + Disabled + ../../../include;../../../../sphinxbase/include;../../../../sphinxbase/include/win32;..\..\pocketsphinx-0.5.99/src/libpocketsphinx;..\..\sphinxbase-0.4.99\include;..\..\pocketsphinx-0.5.99\include;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_WINDOWS;_USRDLL;POCKETSPHINX_EXPORTS;SPHINXDLL;HAVE_CONFIG_H;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + $(IntDir)pocketsphinx.pch + $(IntDir) + .\Debug/ + $(IntDir) + TurnOffAllWarnings + true + EditAndContinue + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + winmm.lib;%(AdditionalDependencies) + $(OutDir)$(ProjectName).dll + true + ..\..\..\Debug;%(AdditionalLibraryDirectories) + true + $(IntDir)pocketsphinx.pdb + false + + + MachineX86 + + + true + $(IntDir)pocketsphinx.bsc + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + $(IntDir)pocketsphinx.tlb + + + + + Disabled + ../../../include;../../../../sphinxbase/include;../../../../sphinxbase/include/win32;..\..\pocketsphinx-0.5.99/src/libpocketsphinx;..\..\sphinxbase-0.4.99\include;..\..\pocketsphinx-0.5.99\include;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_WINDOWS;_USRDLL;POCKETSPHINX_EXPORTS;SPHINXDLL;HAVE_CONFIG_H;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + $(IntDir)pocketsphinx.pch + TurnOffAllWarnings + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + winmm.lib;%(AdditionalDependencies) + $(OutDir)$(ProjectName).dll + true + ..\..\..\Debug;%(AdditionalLibraryDirectories) + true + $(IntDir)pocketsphinx.pdb + false + + + MachineX64 + + + true + $(IntDir)pocketsphinx.bsc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + + + + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + + + {af8163ee-fa76-4904-a11d-7d70a1b5ba2e} + false + + + {2f025ead-99bd-40f5-b2cc-f0a28cad7f2d} + false + + + + + + \ No newline at end of file diff --git a/libs/win32/pthread/pthread.2010.vcxproj b/libs/win32/pthread/pthread.2010.vcxproj new file mode 100644 index 0000000000..abf46ca222 --- /dev/null +++ b/libs/win32/pthread/pthread.2010.vcxproj @@ -0,0 +1,500 @@ + + + + + Debug DLL + Win32 + + + Debug DLL + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release DLL + Win32 + + + Release DLL + x64 + + + Release + Win32 + + + Release + x64 + + + + pthread + {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} + pthread + + + + DynamicLibrary + false + MultiByte + + + DynamicLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + DynamicLibrary + false + MultiByte + + + DynamicLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Configuration)\ + $(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(PlatformName)\Debug\ + $(Configuration)\ + true + $(SolutionDir)$(PlatformName)\Debug\ + $(Platform)\$(Configuration)\ + true + $(SolutionDir)$(PlatformName)\Debug\ + $(Configuration)\ + false + $(SolutionDir)$(PlatformName)\Debug\ + $(Platform)\$(Configuration)\ + false + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\./pthread.tlb + + + + + MaxSpeed + OnlyExplicitInline + ../../pthreads-w32-2-7-0-release/;%(AdditionalIncludeDirectories) + __CLEANUP_C;WIN32;NDEBUG;_WINDOWS;_USRDLL;PTW32_BUILD;_CRT_SECURE_NO_DEPRECATE;PTW32_STATIC_LIB;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + .\./pthread.pch + $(IntDir) + $(IntDir) + $(IntDir)vc80.pdb + false + Level3 + true + + + NDEBUG;PTW32_RC_MSC;%(PreprocessorDefinitions) + 0x0409 + .;%(AdditionalIncludeDirectories) + + + true + .\./pthread.bsc + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\./pthread.tlb + + + + + MaxSpeed + OnlyExplicitInline + ../../pthreads-w32-2-7-0-release/;%(AdditionalIncludeDirectories) + __CLEANUP_C;WIN32;NDEBUG;_WINDOWS;_USRDLL;PTW32_BUILD;_CRT_SECURE_NO_DEPRECATE;PTW32_STATIC_LIB;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + .\./pthread.pch + $(IntDir) + $(IntDir) + $(IntDir)vc80.pdb + false + Level3 + true + + + NDEBUG;PTW32_RC_MSC;%(PreprocessorDefinitions) + 0x0409 + .;%(AdditionalIncludeDirectories) + + + true + .\./pthread.bsc + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\./pthread.tlb + + + + + Disabled + ../../pthreads-w32-2-7-0-release/;%(AdditionalIncludeDirectories) + __CLEANUP_C;WIN32;_DEBUG;_WINDOWS;_USRDLL;PTW32_BUILD;_CRT_SECURE_NO_DEPRECATE;PTW32_STATIC_LIB;%(PreprocessorDefinitions) + false + Default + MultiThreadedDebugDLL + .\./pthread.pch + $(IntDir) + $(IntDir) + $(IntDir)vc80.pdb + false + Level3 + true + ProgramDatabase + + + _DEBUG;PTW32_RC_MSC;%(PreprocessorDefinitions) + 0x0409 + .;%(AdditionalIncludeDirectories) + + + true + .\./pthread.bsc + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\./pthread.tlb + + + + + Disabled + ../../pthreads-w32-2-7-0-release/;%(AdditionalIncludeDirectories) + __CLEANUP_C;WIN32;_DEBUG;_WINDOWS;_USRDLL;PTW32_BUILD;_CRT_SECURE_NO_DEPRECATE;PTW32_STATIC_LIB;%(PreprocessorDefinitions) + false + Default + MultiThreadedDebugDLL + .\./pthread.pch + $(IntDir) + $(IntDir) + $(IntDir)vc80.pdb + false + Level3 + true + ProgramDatabase + + + _DEBUG;PTW32_RC_MSC;%(PreprocessorDefinitions) + 0x0409 + .;%(AdditionalIncludeDirectories) + + + true + .\./pthread.bsc + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\./pthread.tlb + + + + + Disabled + ../../pthreads-w32-2-7-0-release/;%(AdditionalIncludeDirectories) + __CLEANUP_C;WIN32;_DEBUG;_WINDOWS;_USRDLL;PTW32_BUILD;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + .\./pthread.pch + $(IntDir) + $(IntDir) + $(IntDir)vc80.pdb + false + Level3 + true + ProgramDatabase + + + _DEBUG;PTW32_RC_MSC;%(PreprocessorDefinitions) + 0x0409 + .;%(AdditionalIncludeDirectories) + + + ws2_32.lib;%(AdditionalDependencies) + true + true + .\./pthreadVC2.pdb + true + .\./pthreadVC2.map + false + + + MachineX86 + + + true + .\./pthread.bsc + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\./pthread.tlb + + + + + Disabled + ../../pthreads-w32-2-7-0-release/;%(AdditionalIncludeDirectories) + __CLEANUP_C;WIN32;_DEBUG;_WINDOWS;_USRDLL;PTW32_BUILD;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + .\./pthread.pch + $(IntDir) + $(IntDir) + $(IntDir)vc80.pdb + false + Level3 + true + ProgramDatabase + + + _DEBUG;PTW32_RC_MSC;%(PreprocessorDefinitions) + 0x0409 + .;%(AdditionalIncludeDirectories) + + + ws2_32.lib;%(AdditionalDependencies) + true + true + .\./pthreadVC2.pdb + true + .\./pthreadVC2.map + false + + + MachineX64 + + + true + .\./pthread.bsc + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\./pthread.tlb + + + + + MaxSpeed + OnlyExplicitInline + ../../pthreads-w32-2-7-0-release/;%(AdditionalIncludeDirectories) + __CLEANUP_C;WIN32;NDEBUG;_WINDOWS;_USRDLL;PTW32_BUILD;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + .\./pthread.pch + $(IntDir) + $(IntDir) + $(IntDir)vc80.pdb + false + Level3 + true + + + NDEBUG;PTW32_RC_MSC;%(PreprocessorDefinitions) + 0x0409 + .;%(AdditionalIncludeDirectories) + + + ws2_32.lib;%(AdditionalDependencies) + true + false + + + MachineX86 + + + true + .\./pthread.bsc + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\./pthread.tlb + + + + + MaxSpeed + OnlyExplicitInline + ../../pthreads-w32-2-7-0-release/;%(AdditionalIncludeDirectories) + __CLEANUP_C;WIN32;NDEBUG;_WINDOWS;_USRDLL;PTW32_BUILD;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + .\./pthread.pch + $(IntDir) + $(IntDir) + $(IntDir)vc80.pdb + false + Level3 + true + + + NDEBUG;PTW32_RC_MSC;%(PreprocessorDefinitions) + 0x0409 + .;%(AdditionalIncludeDirectories) + + + ws2_32.lib;%(AdditionalDependencies) + true + false + + + MachineX64 + + + true + .\./pthread.bsc + + + + + + + + + + + + + + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + + + + + {8b3b4c4c-13c2-446c-beb0-f412cc2cfb9a} + false + + + + + + \ No newline at end of file diff --git a/libs/win32/sofia/libsofia_sip_ua_static.2010.vcxproj b/libs/win32/sofia/libsofia_sip_ua_static.2010.vcxproj new file mode 100644 index 0000000000..1aca8e6aa8 --- /dev/null +++ b/libs/win32/sofia/libsofia_sip_ua_static.2010.vcxproj @@ -0,0 +1,537 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + libsofia_sip_ua_static + {70A49BC2-7500-41D0-B75D-EDCC5BE987A0} + libsofia_sip_ua_static + + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + + + if not exist "$(ProjectDir)..\..\sofia-sip\win32\gawk.exe" cscript /nologo "$(ProjectDir)..\util.vbs" Get http://files.freeswitch.org/downloads/win32/gawk.exe "$(ProjectDir)..\..\sofia-sip\win32\" +cd /D "$(ProjectDir)..\..\sofia-sip\win32\" +set AWK="$(ProjectDir)..\..\sofia-sip\win32\gawk.exe" +if not exist "$(ProjectDir)..\..\sofia-sip\libsofia-sip-ua\http\http_parser_table.c" "autogen.cmd" +if not exist "$(ProjectDir)$(IntDir)\auth_client.obj" "autogen.cmd" + + + + Disabled + ..\..\sofia-sip\win32;..\..\sofia-sip\libsofia-sip-ua\su;..\..\sofia-sip\libsofia-sip-ua\ipt;..\..\sofia-sip\libsofia-sip-ua\sresolv;..\..\sofia-sip\libsofia-sip-ua\bnf;..\..\sofia-sip\libsofia-sip-ua\url;..\..\sofia-sip\libsofia-sip-ua\msg;..\..\sofia-sip\libsofia-sip-ua\sip;..\..\sofia-sip\libsofia-sip-ua\nta;..\..\sofia-sip\libsofia-sip-ua\nua;..\..\sofia-sip\libsofia-sip-ua\iptsec;..\..\sofia-sip\libsofia-sip-ua\http;..\..\sofia-sip\libsofia-sip-ua\nth;..\..\sofia-sip\libsofia-sip-ua\nea;..\..\sofia-sip\libsofia-sip-ua\sdp;..\..\sofia-sip\libsofia-sip-ua\soa;..\..\sofia-sip\libsofia-sip-ua\stun;..\..\sofia-sip\libsofia-sip-ua\tport;..\..\sofia-sip\libsofia-sip-ua\features;..\..\pthreads-w32-2-7-0-release;.;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;IN_LIBSOFIA_SIP_UA_STATIC;LIBSOFIA_SIP_UA_STATIC;LIBSRES_STATIC;PTW32_STATIC_LIB;HAVE_IPHLPAPI_H;SU_DEBUG=0;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + $(IntDir) + true + Level4 + true + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x040b + + + true + + + true + $(IntDir)libsofia_sip_ua_static.bsc + + + + + + + + + + + if not exist "$(ProjectDir)..\..\sofia-sip\win32\gawk.exe" cscript /nologo "$(ProjectDir)..\util.vbs" Get http://files.freeswitch.org/downloads/win32/gawk.exe "$(ProjectDir)..\..\sofia-sip\win32\" +cd /D "$(ProjectDir)..\..\sofia-sip\win32\" +set AWK="$(ProjectDir)..\..\sofia-sip\win32\gawk.exe" +if not exist "$(ProjectDir)..\..\sofia-sip\libsofia-sip-ua\http\http_parser_table.c" "autogen.cmd" +if not exist "$(ProjectDir)$(IntDir)\auth_client.obj" "autogen.cmd" + + + + + X64 + + + Disabled + ..\..\sofia-sip\win32;..\..\sofia-sip\libsofia-sip-ua\su;..\..\sofia-sip\libsofia-sip-ua\ipt;..\..\sofia-sip\libsofia-sip-ua\sresolv;..\..\sofia-sip\libsofia-sip-ua\bnf;..\..\sofia-sip\libsofia-sip-ua\url;..\..\sofia-sip\libsofia-sip-ua\msg;..\..\sofia-sip\libsofia-sip-ua\sip;..\..\sofia-sip\libsofia-sip-ua\nta;..\..\sofia-sip\libsofia-sip-ua\nua;..\..\sofia-sip\libsofia-sip-ua\iptsec;..\..\sofia-sip\libsofia-sip-ua\http;..\..\sofia-sip\libsofia-sip-ua\nth;..\..\sofia-sip\libsofia-sip-ua\nea;..\..\sofia-sip\libsofia-sip-ua\sdp;..\..\sofia-sip\libsofia-sip-ua\soa;..\..\sofia-sip\libsofia-sip-ua\stun;..\..\sofia-sip\libsofia-sip-ua\tport;..\..\sofia-sip\libsofia-sip-ua\features;..\..\pthreads-w32-2-7-0-release;.;%(AdditionalIncludeDirectories) + _WIN64;WIN32;_DEBUG;_LIB;IN_LIBSOFIA_SIP_UA_STATIC;LIBSOFIA_SIP_UA_STATIC;LIBSRES_STATIC;PTW32_STATIC_LIB;HAVE_IPHLPAPI_H;SU_DEBUG=0;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + Level4 + false + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x040b + + + true + + + true + $(IntDir)libsofia_sip_ua_static.bsc + + + + + if not exist "$(ProjectDir)..\..\sofia-sip\win32\gawk.exe" cscript /nologo "$(ProjectDir)..\util.vbs" Get http://files.freeswitch.org/downloads/win32/gawk.exe "$(ProjectDir)..\..\sofia-sip\win32\" +cd /D "$(ProjectDir)..\..\sofia-sip\win32\" +set AWK="$(ProjectDir)..\..\sofia-sip\win32\gawk.exe" +if not exist "$(ProjectDir)..\..\sofia-sip\libsofia-sip-ua\http\http_parser_table.c" "autogen.cmd" +if not exist "$(ProjectDir)$(IntDir)\auth_client.obj" "autogen.cmd" + + + + + MaxSpeed + OnlyExplicitInline + ..\..\sofia-sip\win32;..\..\sofia-sip\libsofia-sip-ua\su;..\..\sofia-sip\libsofia-sip-ua\ipt;..\..\sofia-sip\libsofia-sip-ua\sresolv;..\..\sofia-sip\libsofia-sip-ua\bnf;..\..\sofia-sip\libsofia-sip-ua\url;..\..\sofia-sip\libsofia-sip-ua\msg;..\..\sofia-sip\libsofia-sip-ua\sip;..\..\sofia-sip\libsofia-sip-ua\nta;..\..\sofia-sip\libsofia-sip-ua\nua;..\..\sofia-sip\libsofia-sip-ua\iptsec;..\..\sofia-sip\libsofia-sip-ua\http;..\..\sofia-sip\libsofia-sip-ua\nth;..\..\sofia-sip\libsofia-sip-ua\nea;..\..\sofia-sip\libsofia-sip-ua\sdp;..\..\sofia-sip\libsofia-sip-ua\soa;..\..\sofia-sip\libsofia-sip-ua\stun;..\..\sofia-sip\libsofia-sip-ua\tport;..\..\sofia-sip\libsofia-sip-ua\features;..\..\pthreads-w32-2-7-0-release;.;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;IN_LIBSOFIA_SIP_UA_STATIC;LIBSOFIA_SIP_UA_STATIC;LIBSRES_STATIC;PTW32_STATIC_LIB;HAVE_IPHLPAPI_H;SU_DEBUG=0;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(IntDir) + true + Level4 + true + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x040b + + + true + + + true + $(IntDir)libsofia_sip_ua_static.bsc + + + + + if not exist "$(ProjectDir)..\..\sofia-sip\win32\gawk.exe" cscript /nologo "$(ProjectDir)..\util.vbs" Get http://files.freeswitch.org/downloads/win32/gawk.exe "$(ProjectDir)..\..\sofia-sip\win32\" +cd /D "$(ProjectDir)..\..\sofia-sip\win32\" +set AWK="$(ProjectDir)..\..\sofia-sip\win32\gawk.exe" +if not exist "$(ProjectDir)..\..\sofia-sip\libsofia-sip-ua\http\http_parser_table.c" "autogen.cmd" +if not exist "$(ProjectDir)$(IntDir)\auth_client.obj" "autogen.cmd" + + + + + X64 + + + MaxSpeed + OnlyExplicitInline + ..\..\sofia-sip\win32;..\..\sofia-sip\libsofia-sip-ua\su;..\..\sofia-sip\libsofia-sip-ua\ipt;..\..\sofia-sip\libsofia-sip-ua\sresolv;..\..\sofia-sip\libsofia-sip-ua\bnf;..\..\sofia-sip\libsofia-sip-ua\url;..\..\sofia-sip\libsofia-sip-ua\msg;..\..\sofia-sip\libsofia-sip-ua\sip;..\..\sofia-sip\libsofia-sip-ua\nta;..\..\sofia-sip\libsofia-sip-ua\nua;..\..\sofia-sip\libsofia-sip-ua\iptsec;..\..\sofia-sip\libsofia-sip-ua\http;..\..\sofia-sip\libsofia-sip-ua\nth;..\..\sofia-sip\libsofia-sip-ua\nea;..\..\sofia-sip\libsofia-sip-ua\sdp;..\..\sofia-sip\libsofia-sip-ua\soa;..\..\sofia-sip\libsofia-sip-ua\stun;..\..\sofia-sip\libsofia-sip-ua\tport;..\..\sofia-sip\libsofia-sip-ua\features;..\..\pthreads-w32-2-7-0-release;.;%(AdditionalIncludeDirectories) + _WIN64;WIN32;NDEBUG;_LIB;IN_LIBSOFIA_SIP_UA_STATIC;LIBSOFIA_SIP_UA_STATIC;LIBSRES_STATIC;PTW32_STATIC_LIB;HAVE_IPHLPAPI_H;SU_DEBUG=0;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + true + Level4 + false + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x040b + + + true + + + true + $(IntDir)libsofia_sip_ua_static.bsc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {8b3b4c4c-13c2-446c-beb0-f412cc2cfb9a} + false + + + {df018947-0fff-4eb3-bdee-441dc81da7a4} + false + + + + + + \ No newline at end of file diff --git a/libs/win32/sphinxbase/sphinxbase.2010.vcxproj b/libs/win32/sphinxbase/sphinxbase.2010.vcxproj new file mode 100644 index 0000000000..cfe41baef4 --- /dev/null +++ b/libs/win32/sphinxbase/sphinxbase.2010.vcxproj @@ -0,0 +1,704 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + sphinxbase + {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D} + sphinxbase + + + + DynamicLibrary + false + MultiByte + + + DynamicLibrary + false + MultiByte + + + DynamicLibrary + false + MultiByte + + + DynamicLibrary + false + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(PlatformName)\$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(PlatformName)\$(Configuration)\ + $(Configuration)\ + true + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + $(IntDir)sphinxbase.tlb + + + + + MaxSpeed + OnlyExplicitInline + ..\..\sphinxbase-0.4.99\include\win32;..\..\sphinxbase-0.4.99\include;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_WINDOWS;_USRDLL;SPHINXBASE_EXPORTS;HAVE_CONFIG_H;SPHINXDLL;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(IntDir)sphinxbase.pch + $(IntDir) + .\Release/ + $(IntDir) + TurnOffAllWarnings + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + winmm.lib;%(AdditionalDependencies) + ..\..\..\Release;%(AdditionalLibraryDirectories) + + + true + $(IntDir)sphinxbase.bsc + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + $(IntDir)sphinxbase.tlb + + + + + MaxSpeed + OnlyExplicitInline + ..\..\sphinxbase-0.4.99\include\win32;..\..\sphinxbase-0.4.99\include;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_WINDOWS;_USRDLL;SPHINXBASE_EXPORTS;HAVE_CONFIG_H;SPHINXDLL;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(IntDir)sphinxbase.pch + TurnOffAllWarnings + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + winmm.lib;%(AdditionalDependencies) + ..\..\..\Release;%(AdditionalLibraryDirectories) + MachineX64 + + + true + $(IntDir)sphinxbase.bsc + + + + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + $(IntDir)sphinxbase.tlb + + + + + Disabled + ..\..\sphinxbase-0.4.99\include\win32;..\..\sphinxbase-0.4.99\include;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_WINDOWS;_USRDLL;SPHINXBASE_EXPORTS;HAVE_CONFIG_H;SPHINXDLL;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + $(IntDir)sphinxbase.pch + $(IntDir) + .\Debug/ + $(IntDir) + TurnOffAllWarnings + true + EditAndContinue + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + winmm.lib;%(AdditionalDependencies) + $(OutDir)$(ProjectName).dll + true + ..\..\..\Debug;%(AdditionalLibraryDirectories) + true + $(IntDir)sphinxbase.pdb + false + + + $(IntDir)/sphinxbase.lib + MachineX86 + + + true + $(IntDir)sphinxbase.bsc + + + + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + $(IntDir)sphinxbase.tlb + + + + + Disabled + ..\..\sphinxbase-0.4.99\include\win32;..\..\sphinxbase-0.4.99\include;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_WINDOWS;_USRDLL;SPHINXBASE_EXPORTS;HAVE_CONFIG_H;SPHINXDLL;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + $(IntDir)sphinxbase.pch + TurnOffAllWarnings + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + winmm.lib;%(AdditionalDependencies) + $(OutDir)$(ProjectName).dll + true + ..\..\..\Debug;%(AdditionalLibraryDirectories) + true + $(IntDir)sphinxbase.pdb + false + + + MachineX64 + + + true + $(IntDir)sphinxbase.bsc + + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + + + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {4f92b672-dadb-4047-8d6a-4bb3796733fd} + false + + + {2dee4895-1134-439c-b688-52203e57d878} + false + + + + + + \ No newline at end of file diff --git a/libs/win32/sqlite/sqlite.2010.vcxproj b/libs/win32/sqlite/sqlite.2010.vcxproj new file mode 100644 index 0000000000..0893ae6da4 --- /dev/null +++ b/libs/win32/sqlite/sqlite.2010.vcxproj @@ -0,0 +1,451 @@ + + + + + Debug DLL + Win32 + + + Debug DLL + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release DLL + Win32 + + + Release DLL + x64 + + + Release + Win32 + + + Release + x64 + + + + libsqlite + {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} + libsqlite + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Configuration)\ + $(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Configuration)\ + $(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)Debug\ + $(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + $(SolutionDir)Release\ + $(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + + + + if exist "$(ProjectDir)..\..\sqlite\src\sqlite3.h" del "$(ProjectDir)..\..\sqlite\src\sqlite3.h" +if exist "$(ProjectDir)..\..\sqlite\src\parse.h" del "$(ProjectDir)..\..\sqlite\src\parse.h" +if exist "$(ProjectDir)..\..\sqlite\src\parse.c" del "$(ProjectDir)..\..\sqlite\src\parse.c" +if exist "$(ProjectDir)..\..\sqlite\src\opcodes.h" del "$(ProjectDir)..\..\sqlite\src\opcodes.h" +if exist "$(ProjectDir)..\..\sqlite\src\opcodes.c" del "$(ProjectDir)..\..\sqlite\src\opcodes.c" +if exist "$(ProjectDir)..\..\sqlite\src\keywordhash.h" del "$(ProjectDir)..\..\sqlite\src\keywordhash.h" + + + + Disabled + $(ProjectDir);$(ProjectDir)..\..\sqlite\src;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;_DEBUG;_LIB;SQLITE_DEBUG;THREADSAFE=1;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + TurnOffAllWarnings + ProgramDatabase + + + + + + + + + if exist "$(ProjectDir)..\..\sqlite\src\sqlite3.h" del "$(ProjectDir)..\..\sqlite\src\sqlite3.h" +if exist "$(ProjectDir)..\..\sqlite\src\parse.h" del "$(ProjectDir)..\..\sqlite\src\parse.h" +if exist "$(ProjectDir)..\..\sqlite\src\parse.c" del "$(ProjectDir)..\..\sqlite\src\parse.c" +if exist "$(ProjectDir)..\..\sqlite\src\opcodes.h" del "$(ProjectDir)..\..\sqlite\src\opcodes.h" +if exist "$(ProjectDir)..\..\sqlite\src\opcodes.c" del "$(ProjectDir)..\..\sqlite\src\opcodes.c" +if exist "$(ProjectDir)..\..\sqlite\src\keywordhash.h" del "$(ProjectDir)..\..\sqlite\src\keywordhash.h" + + + + X64 + + + Disabled + $(ProjectDir);$(ProjectDir)..\..\sqlite\src;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;_DEBUG;_LIB;SQLITE_DEBUG;THREADSAFE=1;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + TurnOffAllWarnings + ProgramDatabase + + + + + + + + + if exist "$(ProjectDir)..\..\sqlite\src\sqlite3.h" del "$(ProjectDir)..\..\sqlite\src\sqlite3.h" +if exist "$(ProjectDir)..\..\sqlite\src\parse.h" del "$(ProjectDir)..\..\sqlite\src\parse.h" +if exist "$(ProjectDir)..\..\sqlite\src\parse.c" del "$(ProjectDir)..\..\sqlite\src\parse.c" +if exist "$(ProjectDir)..\..\sqlite\src\opcodes.h" del "$(ProjectDir)..\..\sqlite\src\opcodes.h" +if exist "$(ProjectDir)..\..\sqlite\src\opcodes.c" del "$(ProjectDir)..\..\sqlite\src\opcodes.c" +if exist "$(ProjectDir)..\..\sqlite\src\keywordhash.h" del "$(ProjectDir)..\..\sqlite\src\keywordhash.h" + + + + $(ProjectDir);$(ProjectDir)..\..\sqlite\src;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;NDEBUG;_LIB;THREADSAFE=1;%(PreprocessorDefinitions) + MultiThreadedDLL + + + TurnOffAllWarnings + ProgramDatabase + + + + + + + + + if exist "$(ProjectDir)..\..\sqlite\src\sqlite3.h" del "$(ProjectDir)..\..\sqlite\src\sqlite3.h" +if exist "$(ProjectDir)..\..\sqlite\src\parse.h" del "$(ProjectDir)..\..\sqlite\src\parse.h" +if exist "$(ProjectDir)..\..\sqlite\src\parse.c" del "$(ProjectDir)..\..\sqlite\src\parse.c" +if exist "$(ProjectDir)..\..\sqlite\src\opcodes.h" del "$(ProjectDir)..\..\sqlite\src\opcodes.h" +if exist "$(ProjectDir)..\..\sqlite\src\opcodes.c" del "$(ProjectDir)..\..\sqlite\src\opcodes.c" +if exist "$(ProjectDir)..\..\sqlite\src\keywordhash.h" del "$(ProjectDir)..\..\sqlite\src\keywordhash.h" + + + + X64 + + + $(ProjectDir);$(ProjectDir)..\..\sqlite\src;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;NDEBUG;_LIB;THREADSAFE=1;%(PreprocessorDefinitions) + MultiThreadedDLL + + + TurnOffAllWarnings + ProgramDatabase + + + + + + + + + if exist "$(ProjectDir)..\..\sqlite\src\sqlite3.h" del "$(ProjectDir)..\..\sqlite\src\sqlite3.h" +if exist "$(ProjectDir)..\..\sqlite\src\parse.h" del "$(ProjectDir)..\..\sqlite\src\parse.h" +if exist "$(ProjectDir)..\..\sqlite\src\parse.c" del "$(ProjectDir)..\..\sqlite\src\parse.c" +if exist "$(ProjectDir)..\..\sqlite\src\opcodes.h" del "$(ProjectDir)..\..\sqlite\src\opcodes.h" +if exist "$(ProjectDir)..\..\sqlite\src\opcodes.c" del "$(ProjectDir)..\..\sqlite\src\opcodes.c" +if exist "$(ProjectDir)..\..\sqlite\src\keywordhash.h" del "$(ProjectDir)..\..\sqlite\src\keywordhash.h" + + + + Disabled + $(ProjectDir);$(ProjectDir)..\..\sqlite\src;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;_DEBUG;_LIB;SQLITE_DEBUG;THREADSAFE=1;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + TurnOffAllWarnings + ProgramDatabase + + + sqlite3.def + true + $(IntDir)$(ProjectName).pdb + Windows + false + + + $(IntDir)$(TargetName).lib + MachineX86 + + + + + + + + + if exist "$(ProjectDir)..\..\sqlite\src\sqlite3.h" del "$(ProjectDir)..\..\sqlite\src\sqlite3.h" +if exist "$(ProjectDir)..\..\sqlite\src\parse.h" del "$(ProjectDir)..\..\sqlite\src\parse.h" +if exist "$(ProjectDir)..\..\sqlite\src\parse.c" del "$(ProjectDir)..\..\sqlite\src\parse.c" +if exist "$(ProjectDir)..\..\sqlite\src\opcodes.h" del "$(ProjectDir)..\..\sqlite\src\opcodes.h" +if exist "$(ProjectDir)..\..\sqlite\src\opcodes.c" del "$(ProjectDir)..\..\sqlite\src\opcodes.c" +if exist "$(ProjectDir)..\..\sqlite\src\keywordhash.h" del "$(ProjectDir)..\..\sqlite\src\keywordhash.h" + + + + X64 + + + Disabled + $(ProjectDir);$(ProjectDir)..\..\sqlite\src;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;_DEBUG;_LIB;SQLITE_DEBUG;THREADSAFE=1;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + TurnOffAllWarnings + ProgramDatabase + + + sqlite3.def + true + $(IntDir)$(ProjectName).pdb + Windows + false + + + $(IntDir)$(TargetName).lib + MachineX64 + + + + + + + + + if exist "$(ProjectDir)..\..\sqlite\src\sqlite3.h" del "$(ProjectDir)..\..\sqlite\src\sqlite3.h" +if exist "$(ProjectDir)..\..\sqlite\src\parse.h" del "$(ProjectDir)..\..\sqlite\src\parse.h" +if exist "$(ProjectDir)..\..\sqlite\src\parse.c" del "$(ProjectDir)..\..\sqlite\src\parse.c" +if exist "$(ProjectDir)..\..\sqlite\src\opcodes.h" del "$(ProjectDir)..\..\sqlite\src\opcodes.h" +if exist "$(ProjectDir)..\..\sqlite\src\opcodes.c" del "$(ProjectDir)..\..\sqlite\src\opcodes.c" +if exist "$(ProjectDir)..\..\sqlite\src\keywordhash.h" del "$(ProjectDir)..\..\sqlite\src\keywordhash.h" + + + + $(ProjectDir);$(ProjectDir)..\..\sqlite\src;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;NDEBUG;_LIB;THREADSAFE=1;%(PreprocessorDefinitions) + MultiThreadedDLL + + + TurnOffAllWarnings + ProgramDatabase + + + sqlite3.def + false + + + $(IntDir)$(TargetName).lib + + + + + + + + + if exist "$(ProjectDir)..\..\sqlite\src\sqlite3.h" del "$(ProjectDir)..\..\sqlite\src\sqlite3.h" +if exist "$(ProjectDir)..\..\sqlite\src\parse.h" del "$(ProjectDir)..\..\sqlite\src\parse.h" +if exist "$(ProjectDir)..\..\sqlite\src\parse.c" del "$(ProjectDir)..\..\sqlite\src\parse.c" +if exist "$(ProjectDir)..\..\sqlite\src\opcodes.h" del "$(ProjectDir)..\..\sqlite\src\opcodes.h" +if exist "$(ProjectDir)..\..\sqlite\src\opcodes.c" del "$(ProjectDir)..\..\sqlite\src\opcodes.c" +if exist "$(ProjectDir)..\..\sqlite\src\keywordhash.h" del "$(ProjectDir)..\..\sqlite\src\keywordhash.h" + + + + X64 + + + $(ProjectDir);$(ProjectDir)..\..\sqlite\src;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;NDEBUG;_LIB;THREADSAFE=1;%(PreprocessorDefinitions) + MultiThreadedDLL + + + TurnOffAllWarnings + ProgramDatabase + + + sqlite3.def + false + + + $(IntDir)$(TargetName).lib + MachineX64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/win32/udns/libudns.2010.vcxproj b/libs/win32/udns/libudns.2010.vcxproj new file mode 100644 index 0000000000..7cfdc7d6a7 --- /dev/null +++ b/libs/win32/udns/libudns.2010.vcxproj @@ -0,0 +1,149 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + libudns + {4043FC6A-9A30-4577-8AD5-9B233C9575D8} + libudns + Win32Proj + + + + StaticLibrary + NotSet + false + + + StaticLibrary + NotSet + + + StaticLibrary + NotSet + false + + + StaticLibrary + NotSet + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + + + + Disabled + WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + + + + + Disabled + WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + + + + + X64 + + + Disabled + WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + + + + + X64 + + + Disabled + WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/xmlrpc-c/Windows/abyss.2010.vcxproj b/libs/xmlrpc-c/Windows/abyss.2010.vcxproj new file mode 100644 index 0000000000..b7020e0e1f --- /dev/null +++ b/libs/xmlrpc-c/Windows/abyss.2010.vcxproj @@ -0,0 +1,453 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + abyss + {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9} + abyss + + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + + + + Disabled + ..\;..\include;..\lib\util\include;.;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;ABYSS_WIN32;_THREAD;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + .\Debug\abyss/abyss.pch + .\Debug\abyss/ + .\Debug\abyss/ + .\Debug\abyss/ + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + + + true + .\Debug\abyss/abyss.bsc + + + + + X64 + + + Disabled + ..\;..\include;..\lib\util\include;.;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;ABYSS_WIN32;_THREAD;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + .\Debug\abyss/abyss.pch + $(IntDir)Abyss\ + $(IntDir)Abyss\vc90.pdb + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + + + true + .\Debug\abyss/abyss.bsc + + + + + MaxSpeed + OnlyExplicitInline + ..\;..\include;..\lib\util\include;.;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;ABYSS_WIN32;_THREAD;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + .\Release\Abyss/abyss.pch + .\Release\Abyss/ + .\Release\Abyss/ + .\Release\Abyss/ + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + + + true + .\Release\Abyss/abyss.bsc + + + + + X64 + + + MaxSpeed + OnlyExplicitInline + ..\;..\include;..\lib\util\include;.;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;ABYSS_WIN32;_THREAD;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + .\Release\Abyss/abyss.pch + $(IntDir)Abyss\ + $(IntDir)Abyss\vc90.pdb + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + + + true + .\Release\Abyss/abyss.bsc + + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/xmlrpc-c/Windows/xmlparse.2010.vcxproj b/libs/xmlrpc-c/Windows/xmlparse.2010.vcxproj new file mode 100644 index 0000000000..ea84796607 --- /dev/null +++ b/libs/xmlrpc-c/Windows/xmlparse.2010.vcxproj @@ -0,0 +1,198 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + xmlparse + {0D108721-EAE8-4BAF-8102-D8960EC93647} + xmlparse + + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + + + + MaxSpeed + OnlyExplicitInline + ..\lib\expat\xmltok;..\lib\expat\xmlwf;..;..\lib\util\include;..\include;.;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions) + true + MultiThreaded + true + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + + + true + .\Release\xmlparse/xmlparse.bsc + + + + + X64 + + + MaxSpeed + OnlyExplicitInline + ..\lib\expat\xmltok;..\lib\expat\xmlwf;..;..\lib\util\include;..\include;.;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions) + true + MultiThreaded + true + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + + + true + .\Release\xmlparse/xmlparse.bsc + + + + + Disabled + ..\lib\expat\xmltok;..\lib\expat\xmlwf;..;..\lib\util\include;..\include;.;%(AdditionalIncludeDirectories) + WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + + + true + .\Debug\xmlparse/xmlparse.bsc + + + + + X64 + + + Disabled + ..\lib\expat\xmltok;..\lib\expat\xmlwf;..;..\lib\util\include;..\include;.;%(AdditionalIncludeDirectories) + WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + + + true + .\Debug\xmlparse/xmlparse.bsc + + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + + + + + + \ No newline at end of file diff --git a/libs/xmlrpc-c/Windows/xmlrpc.2010.vcxproj b/libs/xmlrpc-c/Windows/xmlrpc.2010.vcxproj new file mode 100644 index 0000000000..be81a6edfd --- /dev/null +++ b/libs/xmlrpc-c/Windows/xmlrpc.2010.vcxproj @@ -0,0 +1,622 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + xmlrpc + {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA} + xmlrpc + + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + + + + Disabled + ../lib;../lib/util/include;../include;..;../lib/expat/xmlparse;../lib/abyss/src;../lib/wininet_transport;.;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + + + true + .\Debug\xmlrpc/xmlrpc.bsc + + + + + X64 + + + Disabled + ../lib;../lib/util/include;../include;..;../lib/expat/xmlparse;../lib/abyss/src;../lib/wininet_transport;.;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + + + true + .\Debug\xmlrpc/xmlrpc.bsc + + + + + MaxSpeed + OnlyExplicitInline + ../lib;../lib/util/include;../include;..;../lib/expat/xmlparse;../lib/abyss/src;../lib/wininet_transport;.;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + + + true + .\Release\xmlrpc/xmlrpc.bsc + + + + + X64 + + + MaxSpeed + OnlyExplicitInline + ../lib;../lib/util/include;../include;..;../lib/expat/xmlparse;../lib/abyss/src;../lib/wininet_transport;.;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + + + true + .\Release\xmlrpc/xmlrpc.bsc + + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + .;..\..\curl\include;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + .;..\..\curl\include;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + .;..\..\curl\include;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + .;..\..\curl\include;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/xmlrpc-c/Windows/xmltok.2010.vcxproj b/libs/xmlrpc-c/Windows/xmltok.2010.vcxproj new file mode 100644 index 0000000000..0fa9e1be14 --- /dev/null +++ b/libs/xmlrpc-c/Windows/xmltok.2010.vcxproj @@ -0,0 +1,215 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + xmltok + {B535402E-38D2-4D54-8360-423ACBD17192} + xmltok + + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + $(PlatformName)\$(Configuration)\ + + + + Disabled + ..;.;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_WINDOWS;XML_DTD;XML_NS;_LIB;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + + + true + .\Debug\xmltok/xmltok.bsc + + + + + X64 + + + Disabled + ..;.;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_WINDOWS;XML_DTD;XML_NS;_LIB;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + + + true + .\Debug\xmltok/xmltok.bsc + + + + + MaxSpeed + OnlyExplicitInline + ..;.;%(AdditionalIncludeDirectories) + NDEBUG;XML_NS;WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions) + true + MultiThreaded + true + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + + + true + .\Release\xmltok/xmltok.bsc + + + + + X64 + + + MaxSpeed + OnlyExplicitInline + ..;.;%(AdditionalIncludeDirectories) + NDEBUG;XML_NS;WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions) + true + MultiThreaded + true + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + + + true + .\Release\xmltok/xmltok.bsc + + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/include/switch_core.h b/src/include/switch_core.h index 9db7385cce..9d7d02b6e1 100644 --- a/src/include/switch_core.h +++ b/src/include/switch_core.h @@ -2012,7 +2012,8 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_preprocess_session(switch_core_sessio #define CACHE_DB_LEN 256 typedef enum { - CDF_INUSE = (1 << 0) + CDF_INUSE = (1 << 0), + CDF_PRUNE = (1 << 1) } cache_db_flag_t; typedef enum { @@ -2075,19 +2076,68 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_preprocess_session(switch_core_sessio return type_str; } +/*! + \brief Returns the handle to the pool, immediately available for other + threads to use. + \param [in] The handle +*/ +SWITCH_DECLARE(void) switch_cache_db_dismiss_db_handle(switch_cache_db_handle_t ** dbh); +/*! + \brief Returns the handle to the pool, handle is NOT available to + other threads until the allocating thread actually terminates. + \param [in] The handle +*/ SWITCH_DECLARE(void) switch_cache_db_release_db_handle(switch_cache_db_handle_t ** dbh); +/*! + \brief Removes the handle from the pool and frees up the handle resources. + \param [in] The handle +*/ SWITCH_DECLARE(void) switch_cache_db_destroy_db_handle(switch_cache_db_handle_t ** dbh); +/*! + \brief Gets a new cached handle from the pool, potentially creating a new connection. + The connection is bound to the thread until it (the thread) terminates unless + you dismiss rather than release. + \param [out] dbh The handle + \param [in] type - ODBC or SQLLITE + \param [in] connection_options (userid, password, etc) +*/ SWITCH_DECLARE(switch_status_t) _switch_cache_db_get_db_handle(switch_cache_db_handle_t ** dbh, switch_cache_db_handle_type_t type, switch_cache_db_connection_options_t *connection_options, const char *file, const char *func, int line); #define switch_cache_db_get_db_handle(_a, _b, _c) _switch_cache_db_get_db_handle(_a, _b, _c, __FILE__, __SWITCH_FUNC__, __LINE__) +/*! + \brief Executes the sql and returns the result as a string + \param [in] dbh The handle + \param [in] sql - sql to run + \param [out] str - buffer for result + \param [in] len - length of str buffer + \param [out] err - Error if it exists +*/ SWITCH_DECLARE(char *) switch_cache_db_execute_sql2str(switch_cache_db_handle_t *dbh, char *sql, char *str, size_t len, char **err); +/*! + \brief Executes the sql + \param [in] dbh The handle + \param [in] sql - sql to run + \param [out] err - Error if it exists +*/ SWITCH_DECLARE(switch_status_t) switch_cache_db_execute_sql(switch_cache_db_handle_t *dbh, char *sql, char **err); +/*! + \brief Executes the sql and uses callback for row-by-row processing + \param [in] dbh The handle + \param [in] sql - sql to run + \param [in] callback - function pointer to callback + \param [in] pdata - data to pass to callback + \param [out] err - Error if it exists +*/ SWITCH_DECLARE(switch_status_t) switch_cache_db_execute_sql_callback(switch_cache_db_handle_t *dbh, const char *sql, switch_core_db_callback_func_t callback, void *pdata, char **err); +/*! + \brief Provides some feedback as to the status of the db connection pool + \param [in] stream stream for status +*/ SWITCH_DECLARE(void) switch_cache_db_status(switch_stream_handle_t *stream); SWITCH_DECLARE(switch_status_t) _switch_core_db_handle(switch_cache_db_handle_t ** dbh, const char *file, const char *func, int line); #define switch_core_db_handle(_a) _switch_core_db_handle(_a, __FILE__, __SWITCH_FUNC__, __LINE__) @@ -2096,6 +2146,9 @@ SWITCH_DECLARE(switch_bool_t) switch_cache_db_test_reactive(switch_cache_db_hand const char *test_sql, const char *drop_sql, const char *reactive_sql); SWITCH_DECLARE(switch_status_t) switch_cache_db_persistant_execute(switch_cache_db_handle_t *dbh, const char *sql, uint32_t retries); SWITCH_DECLARE(switch_status_t) switch_cache_db_persistant_execute_trans(switch_cache_db_handle_t *dbh, char *sql, uint32_t retries); +/*! + \brief Tries to detach all free connections from current thread. +*/ SWITCH_DECLARE(void) switch_cache_db_detach(void); SWITCH_DECLARE(uint32_t) switch_core_debug_level(void); SWITCH_DECLARE(void) switch_cache_db_flush_handles(void); diff --git a/src/include/switch_event.h b/src/include/switch_event.h index d5438b28ed..1864e397e6 100644 --- a/src/include/switch_event.h +++ b/src/include/switch_event.h @@ -285,6 +285,7 @@ SWITCH_DECLARE(switch_status_t) switch_event_free_subclass_detailed(const char * SWITCH_DECLARE(switch_status_t) switch_event_serialize(switch_event_t *event, char **str, switch_bool_t encode); SWITCH_DECLARE(switch_status_t) switch_event_serialize_json(switch_event_t *event, char **str); SWITCH_DECLARE(switch_status_t) switch_event_create_json(switch_event_t **event, const char *json); +SWITCH_DECLARE(switch_status_t) switch_event_create_brackets(char *data, char a, char b, char c, switch_event_t **event, char **new_data); #ifndef SWIG /*! diff --git a/src/include/switch_types.h b/src/include/switch_types.h index e65b3b78ce..d18f6ecb93 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -1539,7 +1539,8 @@ typedef enum { SCSC_SAVE_HISTORY, SCSC_CRASH, SCSC_MIN_IDLE_CPU, - SCSC_VERBOSE_EVENTS + SCSC_VERBOSE_EVENTS, + SCSC_SHUTDOWN_CHECK } switch_session_ctl_t; typedef enum { diff --git a/src/inet_pton.c b/src/inet_pton.c index a38030f188..9d293ed520 100644 --- a/src/inet_pton.c +++ b/src/inet_pton.c @@ -42,8 +42,10 @@ #ifdef WIN32 #include +#if _MSC_VER < 1600 #define EAFNOSUPPORT WSAEAFNOSUPPORT #endif +#endif #include diff --git a/src/mod/applications/mod_avmd/mod_avmd.2010.vcxproj b/src/mod/applications/mod_avmd/mod_avmd.2010.vcxproj new file mode 100644 index 0000000000..32e3616880 --- /dev/null +++ b/src/mod/applications/mod_avmd/mod_avmd.2010.vcxproj @@ -0,0 +1,154 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_avmd + {990BAA76-89D3-4E38-8479-C7B28784EFC8} + mod_avmd + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + false + + + NotSet + %(AdditionalDependencies) + %(AdditionalLibraryDirectories) + + + + + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + + + + + + + + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + true + false + false + true + false + + + + + + \ No newline at end of file diff --git a/src/mod/applications/mod_cidlookup/mod_cidlookup.c b/src/mod/applications/mod_cidlookup/mod_cidlookup.c old mode 100755 new mode 100644 index 230c48ac8d..76239cba0c --- a/src/mod/applications/mod_cidlookup/mod_cidlookup.c +++ b/src/mod/applications/mod_cidlookup/mod_cidlookup.c @@ -143,7 +143,7 @@ static switch_status_t config_callback_dsn(switch_xml_config_item_t *data, const switch_goto_status(SWITCH_STATUS_SUCCESS, done); done: - switch_cache_db_release_db_handle(&dbh); + switch_cache_db_dismiss_db_handle(&dbh); return status; } @@ -198,7 +198,7 @@ static switch_bool_t cidlookup_execute_sql_callback(char *sql, switch_core_db_ca *err = switch_core_sprintf(cbt->pool, "Unable to get ODBC handle. dsn: %s, dbh is %s\n", globals.odbc_dsn, dbh ? "not null" : "null"); } - switch_cache_db_release_db_handle(&dbh); + switch_cache_db_dismiss_db_handle(&dbh); return retval; } diff --git a/src/mod/applications/mod_commands/mod_commands.2010.vcxproj b/src/mod/applications/mod_commands/mod_commands.2010.vcxproj new file mode 100644 index 0000000000..e3025c2f75 --- /dev/null +++ b/src/mod/applications/mod_commands/mod_commands.2010.vcxproj @@ -0,0 +1,135 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_commands + {30A5B29C-983E-4580-9FD0-D647CCDCC7EB} + mod_commands + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {f6c55d93-b927-4483-bb69-15aef3dd2dff} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/applications/mod_commands/mod_commands.c b/src/mod/applications/mod_commands/mod_commands.c index 8c83dfc86f..9e0066191c 100644 --- a/src/mod/applications/mod_commands/mod_commands.c +++ b/src/mod/applications/mod_commands/mod_commands.c @@ -1563,6 +1563,9 @@ SWITCH_STANDARD_API(ctl_function) } else if (!strcasecmp(argv[0], "save_history")) { switch_core_session_ctl(SCSC_SAVE_HISTORY, NULL); stream->write_function(stream, "+OK\n"); + } else if (!strcasecmp(argv[0], "shutdown_check")) { + switch_core_session_ctl(SCSC_SHUTDOWN_CHECK, &arg); + stream->write_function(stream, arg ? "true" : "false"); } else if (!strcasecmp(argv[0], "shutdown")) { switch_session_ctl_t command = SCSC_SHUTDOWN; int x = 0; diff --git a/src/mod/applications/mod_conference/mod_conference.2010.vcxproj b/src/mod/applications/mod_conference/mod_conference.2010.vcxproj new file mode 100644 index 0000000000..33d914a965 --- /dev/null +++ b/src/mod/applications/mod_conference/mod_conference.2010.vcxproj @@ -0,0 +1,135 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_conference + {C24FB505-05D7-4319-8485-7540B44C8603} + mod_conference + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {f6c55d93-b927-4483-bb69-15aef3dd2dff} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index 583a0e1e2d..53c4b85e1f 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -300,6 +300,14 @@ typedef struct conference_obj { uint32_t verbose_events; int end_count; uint32_t relationship_total; + uint32_t score; + int mux_loop_count; + int member_loop_count; + int agc_level; + + uint32_t avg_score; + uint32_t avg_itt; + uint32_t avg_tally; } conference_obj_t; /* Relationship with another member */ @@ -331,12 +339,16 @@ struct conference_member { switch_codec_t write_codec; char *rec_path; uint8_t *frame; + uint8_t *last_frame; uint32_t frame_size; uint8_t *mux_frame; uint32_t read; int32_t energy_level; + int32_t agc_volume_in_level; int32_t volume_in_level; int32_t volume_out_level; + int32_t agc_concur; + int32_t nt_tally; switch_time_t join_time; switch_time_t last_talking; uint32_t native_rate; @@ -350,6 +362,9 @@ struct conference_member { switch_speech_handle_t lsh; switch_speech_handle_t *sh; uint32_t verbose_events; + uint32_t avg_score; + uint32_t avg_itt; + uint32_t avg_tally; struct conference_member *next; }; @@ -997,8 +1012,14 @@ static void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, v uint8_t *file_frame; uint8_t *async_file_frame; int16_t *bptr; - int x; + int x = 0; int32_t z = 0; + int member_score_sum = 0; + int divisor = 0; + + if (!(divisor = conference->rate / 8000)) { + divisor = 1; + } file_frame = switch_core_alloc(conference->pool, SWITCH_RECOMMENDED_BUFFER_SIZE); async_file_frame = switch_core_alloc(conference->pool, SWITCH_RECOMMENDED_BUFFER_SIZE); @@ -1020,6 +1041,7 @@ static void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, v switch_size_t file_sample_len = samples; switch_size_t file_data_len = samples * 2; int has_file_data = 0, members_with_video = 0; + uint32_t conf_energy = 0; /* Sync the conference to a single timing source */ if (switch_core_timer_next(&timer) != SWITCH_STATUS_SUCCESS) { @@ -1183,8 +1205,7 @@ static void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, v } has_file_data = 1; } - - + if (ready || has_file_data) { /* Use more bits in the main_frame to preserve the exact sum of the audio samples. */ int main_frame[SWITCH_RECOMMENDED_BUFFER_SIZE / 2] = { 0 }; @@ -1203,17 +1224,48 @@ static void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, v } } + member_score_sum = 0; + conference->mux_loop_count = 0; + conference->member_loop_count = 0; + + /* Copy audio from every member known to be producing audio into the main frame. */ for (omember = conference->members; omember; omember = omember->next) { + conference->member_loop_count++; + if (!(switch_test_flag(omember, MFLAG_RUNNING) && switch_test_flag(omember, MFLAG_HAS_AUDIO))) { continue; } + + if (conference->agc_level) { + if (switch_test_flag(omember, MFLAG_TALKING) && switch_test_flag(omember, MFLAG_CAN_SPEAK)) { + member_score_sum += omember->score; + conference->mux_loop_count++; + } + } + bptr = (int16_t *) omember->frame; for (x = 0; x < omember->read / 2; x++) { main_frame[x] += (int32_t) bptr[x]; } } + if (conference->agc_level && conference->member_loop_count) { + conf_energy = 0; + + for (x = 0; x < bytes / 2; x++) { + z = abs(main_frame[x]); + switch_normalize_to_16bit(z); + conf_energy += (int16_t) z; + } + + conference->score = conf_energy / ((bytes / 2) / divisor) / conference->member_loop_count; + + conference->avg_tally += conference->score; + conference->avg_score = conference->avg_tally / ++conference->avg_itt; + if (!conference->avg_itt) conference->avg_tally = conference->score; + } + /* Create write frame once per member who is not deaf for each sample in the main frame check if our audio is involved and if so, subtract it from the sample so we don't hear ourselves. Since main frame was 32 bit int, we did not lose any detail, now that we have to convert to 16 bit we can @@ -1272,7 +1324,7 @@ static void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, v switch_normalize_to_16bit(z); write_frame[x] = (int16_t) z; } - + switch_mutex_lock(omember->audio_out_mutex); ok = switch_buffer_write(omember->mux_buffer, write_frame, bytes); switch_mutex_unlock(omember->audio_out_mutex); @@ -1910,6 +1962,21 @@ static void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, v goto do_continue; } + + /* Check for input volume adjustments */ + if (!member->conference->agc_level) { + member->agc_volume_in_level = 0; + member->avg_score = 0; + member->avg_itt = 0; + member->avg_tally = 0; + } + + if (member->conference->agc_level && member->agc_volume_in_level) { + switch_change_sln_volume(read_frame->data, read_frame->datalen / 2, member->agc_volume_in_level); + } else if (member->volume_in_level) { + switch_change_sln_volume(read_frame->data, read_frame->datalen / 2, member->volume_in_level); + } + energy_level = member->energy_level; @@ -1919,6 +1986,7 @@ static void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, v uint32_t energy = 0, i = 0, samples = 0, j = 0; int16_t *data; int divisor = 0; + int one_sec = (read_impl.actual_samples_per_second / read_impl.samples_per_packet); data = read_frame->data; @@ -1934,6 +2002,71 @@ static void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, v j += read_impl.number_of_channels; } member->score = energy / (samples / divisor); + member->avg_tally += member->score; + member->avg_score = member->avg_tally / ++member->avg_itt; + if (!member->avg_itt) member->avg_tally = member->score; + } + + if (member->conference->agc_level && member->score && + switch_test_flag(member, MFLAG_TALKING) && + switch_test_flag(member, MFLAG_CAN_SPEAK) && + member->score > member->energy_level + ) { + int diff = member->conference->agc_level - member->score; + + if (abs(diff) >= 200) { + member->agc_concur++; + } else { + member->agc_concur = 0; + } + +#if 0 + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG8, + "conf %s FOO %d %d %d %d %d\n", + member->conference->name, + member->id, diff, member->conference->agc_level, + member->score, member->agc_volume_in_level); +#endif + + if (member->agc_concur >= one_sec) { + if (member->score < member->conference->agc_level) { + member->agc_volume_in_level++; + + switch_normalize_volume(member->agc_volume_in_level); + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG7, + "conf %s AGC +++ %d %d %d %d %d\n", + member->conference->name, + member->id, diff, member->conference->agc_level, + member->score, member->agc_volume_in_level); + + } else { + member->agc_volume_in_level--; + + switch_normalize_volume(member->agc_volume_in_level); + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG7, + "conf %s AGC --- %d %d %d %d %d\n", + member->conference->name, + member->id, diff, member->conference->agc_level, + member->score, member->agc_volume_in_level); + } + member->agc_concur = 0; + } + member->nt_tally = 0; + } else { + member->nt_tally++; + member->agc_concur = 0; + + if (member->nt_tally > one_sec * 5) { + member->agc_volume_in_level = 0; + member->nt_tally = 0; + member->avg_itt = 0; + member->avg_tally = 0; + member->avg_score = member->score; + } + + } member->score_iir = (int) (((1.0 - SCORE_DECAY) * (float) member->score) + (SCORE_DECAY * (float) member->score_iir)); @@ -2040,10 +2173,6 @@ static void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, v datalen = read_frame->datalen; } - /* Check for input volume adjustments */ - if (member->volume_in_level) { - switch_change_sln_volume(data, datalen / 2, member->volume_in_level); - } if (datalen) { switch_size_t ok = 1; @@ -3239,7 +3368,8 @@ static void conference_list(conference_obj_t *conference, switch_stream_handle_t count++; } - stream->write_function(stream, "%s%d%s%d%s%d\n", delim, member->volume_in_level, delim, member->volume_out_level, delim, member->energy_level); + stream->write_function(stream, "%s%d%s%d%s%d\n", delim, member->agc_volume_in_level ? + member->agc_volume_in_level : member->volume_in_level, delim, member->volume_out_level, delim, member->energy_level); } switch_mutex_unlock(conference->member_mutex); @@ -3274,6 +3404,52 @@ static switch_status_t conf_api_sub_mute(conference_member_t *member, switch_str return SWITCH_STATUS_SUCCESS; } +static switch_status_t conf_api_sub_agc(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv) +{ + int level; + int on = 0; + + if (argc == 2) { + stream->write_function(stream, "+OK CURRENT AGC LEVEL IS %d\n", conference->agc_level); + return SWITCH_STATUS_SUCCESS; + } + + + if (!(on = !strcasecmp(argv[2], "on"))) { + stream->write_function(stream, "+OK AGC DISABLED\n"); + conference->agc_level = 0; + return SWITCH_STATUS_SUCCESS; + } + + if (argc > 3) { + level = atoi(argv[3]); + } else { + level = 2000; + } + + if (level > conference->energy_level) { + conference->avg_score = 0; + conference->avg_itt = 0; + conference->avg_tally = 0; + conference->agc_level = level; + + if (stream) { + stream->write_function(stream, "OK AGC ENABLED %d\n", conference->agc_level); + } + + } else { + if (stream) { + stream->write_function(stream, "-ERR invalid level\n"); + } + } + + + + + return SWITCH_STATUS_SUCCESS; + +} + static switch_status_t conf_api_sub_unmute(conference_member_t *member, switch_stream_handle_t *stream, void *data) { switch_event_t *event; @@ -3556,7 +3732,7 @@ static switch_status_t conf_api_sub_list(conference_obj_t *conference, switch_st } -static void add_x_tag(switch_xml_t x_member, const char *name, const char *value, int off) +static switch_xml_t add_x_tag(switch_xml_t x_member, const char *name, const char *value, int off) { switch_size_t dlen = strlen(value) * 3; char *data; @@ -3570,6 +3746,8 @@ static void add_x_tag(switch_xml_t x_member, const char *name, const char *value switch_url_encode(value, data, dlen); switch_xml_set_txt_d(x_tag, data); free(data); + + return x_tag; } static void conference_xlist(conference_obj_t *conference, switch_xml_t x_conference, int off) @@ -3620,6 +3798,12 @@ static void conference_xlist(conference_obj_t *conference, switch_xml_t x_confer switch_xml_set_attr_d(x_conference, "dynamic", "true"); } + if (conference->agc_level) { + char tmp[30] = ""; + switch_snprintf(tmp, sizeof(tmp), "%d", conference->agc_level); + switch_xml_set_attr_d_buf(x_conference, "agc", tmp); + } + x_members = switch_xml_add_child_d(x_conference, "members", 0); switch_assert(x_members); @@ -3633,6 +3817,7 @@ static void conference_xlist(conference_obj_t *conference, switch_xml_t x_confer uint32_t count = 0; switch_xml_t x_tag; int toff = 0; + char tmp[50] = ""; if (switch_test_flag(member, MFLAG_NOCHANNEL)) { continue; @@ -3655,12 +3840,21 @@ static void conference_xlist(conference_obj_t *conference, switch_xml_t x_confer add_x_tag(x_member, "caller_id_number", profile->caller_id_number, toff++); - switch_snprintf(i, sizeof(i), "%d", switch_epoch_time_now(NULL) - member->join_time); - add_x_tag(x_member, "join_time", i, toff++); + switch_snprintf(i, sizeof(i), "%d", switch_epoch_time_now(NULL) - member->join_time); + add_x_tag(x_member, "join_time", i, toff++); + + switch_snprintf(i, sizeof(i), "%d", switch_epoch_time_now(NULL) - member->last_talking); + add_x_tag(x_member, "last_talking", member->last_talking ? i : "N/A", toff++); - switch_snprintf(i, sizeof(i), "%d", switch_epoch_time_now(NULL) - member->last_talking); - add_x_tag(x_member, "last_talking", member->last_talking ? i : "N/A", toff++); + switch_snprintf(i, sizeof(i), "%d", member->energy_level); + add_x_tag(x_member, "energy", i, toff++); + switch_snprintf(i, sizeof(i), "%d", member->volume_in_level); + add_x_tag(x_member, "volume_in", i, toff++); + + switch_snprintf(i, sizeof(i), "%d", member->volume_out_level); + add_x_tag(x_member, "volume_out", i, toff++); + x_flags = switch_xml_add_child_d(x_member, "flags", count++); switch_assert(x_flags); @@ -3685,6 +3879,16 @@ static void conference_xlist(conference_obj_t *conference, switch_xml_t x_confer x_tag = switch_xml_add_child_d(x_flags, "end_conference", count++); switch_xml_set_txt_d(x_tag, switch_test_flag(member, MFLAG_ENDCONF) ? "true" : "false"); + switch_snprintf(tmp, sizeof(tmp), "%d", member->volume_out_level); + x_tag = add_x_tag(x_member, "output-volume", tmp, toff++); + + switch_snprintf(tmp, sizeof(tmp), "%d", member->agc_volume_in_level ? member->agc_volume_in_level : member->volume_in_level); + x_tag = add_x_tag(x_member, "input-volume", tmp, toff++); + + if (member->agc_volume_in_level) { + switch_xml_set_attr_d(x_tag, "auto", "true"); + } + } switch_mutex_unlock(conference->member_mutex); @@ -4337,15 +4541,13 @@ static api_command_t conf_api_sub_commands[] = { " dtmf <[member_id|all|last]> "}, {"kick", (void_fn_t) & conf_api_sub_kick, CONF_API_SUB_MEMBER_TARGET, " kick <[member_id|all|last]>"}, {"mute", (void_fn_t) & conf_api_sub_mute, CONF_API_SUB_MEMBER_TARGET, " mute <[member_id|all]|last>"}, - {"unmute", (void_fn_t) & conf_api_sub_unmute, CONF_API_SUB_MEMBER_TARGET, - " unmute <[member_id|all]|last>"}, + {"unmute", (void_fn_t) & conf_api_sub_unmute, CONF_API_SUB_MEMBER_TARGET, " unmute <[member_id|all]|last>"}, {"deaf", (void_fn_t) & conf_api_sub_deaf, CONF_API_SUB_MEMBER_TARGET, " deaf <[member_id|all]|last>"}, - {"undeaf", (void_fn_t) & conf_api_sub_undeaf, CONF_API_SUB_MEMBER_TARGET, - " undeaf <[member_id|all]|last>"}, - {"relate", (void_fn_t) & conf_api_sub_relate, CONF_API_SUB_ARGS_SPLIT, - " relate [nospeak|nohear|clear]"}, + {"undeaf", (void_fn_t) & conf_api_sub_undeaf, CONF_API_SUB_MEMBER_TARGET, " undeaf <[member_id|all]|last>"}, + {"relate", (void_fn_t) & conf_api_sub_relate, CONF_API_SUB_ARGS_SPLIT, " relate [nospeak|nohear|clear]"}, {"lock", (void_fn_t) & conf_api_sub_lock, CONF_API_SUB_ARGS_SPLIT, " lock"}, {"unlock", (void_fn_t) & conf_api_sub_unlock, CONF_API_SUB_ARGS_SPLIT, " unlock"}, + {"agc", (void_fn_t) & conf_api_sub_agc, CONF_API_SUB_ARGS_SPLIT, " agc"}, {"dial", (void_fn_t) & conf_api_sub_dial, CONF_API_SUB_ARGS_SPLIT, " dial / "}, {"bgdial", (void_fn_t) & conf_api_sub_bgdial, CONF_API_SUB_ARGS_SPLIT, @@ -4465,7 +4667,7 @@ switch_status_t conf_api_dispatch(conference_obj_t *conference, switch_stream_ha } if (!found) { - stream->write_function(stream, "Confernece command '%s' not found.\n", argv[argn]); + stream->write_function(stream, "Conference command '%s' not found.\n", argv[argn]); } else { status = SWITCH_STATUS_SUCCESS; } @@ -5521,7 +5723,7 @@ SWITCH_STANDARD_APP(conference_function) msg.message_id = SWITCH_MESSAGE_INDICATE_BRIDGE; switch_core_session_receive_message(session, &msg); - /* Run the confernece loop */ + /* Run the conference loop */ conference_loop_output(&member); switch_channel_set_private(channel, "_conference_autocall_list_", NULL); @@ -5822,6 +6024,7 @@ static conference_obj_t *conference_new(char *name, conf_xml_cfg_t cfg, switch_m char *pin_sound = NULL; char *bad_pin_sound = NULL; char *energy_level = NULL; + char *auto_gain_level = NULL; char *caller_id_name = NULL; char *caller_id_number = NULL; char *caller_controls = NULL; @@ -5839,7 +6042,7 @@ static conference_obj_t *conference_new(char *name, conf_xml_cfg_t cfg, switch_m char *verbose_events = NULL; char *auto_record = NULL; char *terminate_on_silence = NULL; - + /* Validate the conference name */ if (zstr(name)) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Record! no name.\n"); @@ -5927,6 +6130,8 @@ static conference_obj_t *conference_new(char *name, conf_xml_cfg_t cfg, switch_m bad_pin_sound = val; } else if (!strcasecmp(var, "energy-level") && !zstr(val)) { energy_level = val; + } else if (!strcasecmp(var, "auto-gain-level") && !zstr(val)) { + auto_gain_level = val; } else if (!strcasecmp(var, "caller-id-name") && !zstr(val)) { caller_id_name = val; } else if (!strcasecmp(var, "caller-id-number") && !zstr(val)) { @@ -6114,6 +6319,23 @@ static conference_obj_t *conference_new(char *name, conf_xml_cfg_t cfg, switch_m if (!zstr(energy_level)) { conference->energy_level = atoi(energy_level); + if (conference->energy_level < 0) { + conference->energy_level = 0; + } + } + + if (!zstr(auto_gain_level)) { + int level = 0; + + if (switch_true(auto_gain_level)) { + level = 2000; + } else { + level = atoi(auto_gain_level); + } + + if (level > 0 && level > conference->energy_level) { + conference->agc_level = level; + } } if (!zstr(maxmember_sound)) { diff --git a/src/mod/applications/mod_curl/mod_curl.2010.vcxproj b/src/mod/applications/mod_curl/mod_curl.2010.vcxproj new file mode 100644 index 0000000000..dd7ea67bd0 --- /dev/null +++ b/src/mod/applications/mod_curl/mod_curl.2010.vcxproj @@ -0,0 +1,147 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_curl + {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED} + mod_curl + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + %(RootDir)%(Directory)..\..\..\..\libs\curl\include;%(RootDir)%(Directory)..\..\..\..\libs\json-c-0.9;%(AdditionalIncludeDirectories) + CURL_STATICLIB;%(PreprocessorDefinitions) + + + + + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\curl\include;%(RootDir)%(Directory)..\..\..\..\libs\json-c-0.9;%(AdditionalIncludeDirectories) + CURL_STATICLIB;%(PreprocessorDefinitions) + + + + + false + + + MachineX64 + + + + + %(RootDir)%(Directory)..\..\..\..\libs\curl\include;%(RootDir)%(Directory)..\..\..\..\libs\json-c-0.9;%(AdditionalIncludeDirectories) + CURL_STATICLIB;%(PreprocessorDefinitions) + + + + + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\curl\include;%(RootDir)%(Directory)..\..\..\..\libs\json-c-0.9;%(AdditionalIncludeDirectories) + CURL_STATICLIB;%(PreprocessorDefinitions) + + + + + false + + + MachineX64 + + + + + + + + {87ee9da4-de1e-4448-8324-183c98dca588} + false + + + {9778f1c0-09bc-4698-8ebc-bd982247209a} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/applications/mod_db/mod_db.2010.vcxproj b/src/mod/applications/mod_db/mod_db.2010.vcxproj new file mode 100644 index 0000000000..12f112b97f --- /dev/null +++ b/src/mod/applications/mod_db/mod_db.2010.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_db + {F6A33240-8F29-48BD-98F0-826995911799} + mod_db + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/applications/mod_db/mod_db.c b/src/mod/applications/mod_db/mod_db.c index b4c76d273a..6bf08a3c98 100644 --- a/src/mod/applications/mod_db/mod_db.c +++ b/src/mod/applications/mod_db/mod_db.c @@ -122,7 +122,7 @@ static switch_status_t limit_execute_sql(char *sql) end: - switch_cache_db_release_db_handle(&dbh); + switch_cache_db_dismiss_db_handle(&dbh); return status; } @@ -148,7 +148,7 @@ static switch_bool_t limit_execute_sql_callback(char *sql, switch_core_db_callba end: - switch_cache_db_release_db_handle(&dbh); + switch_cache_db_dismiss_db_handle(&dbh); return ret; } @@ -344,6 +344,7 @@ static switch_status_t do_config() sql = switch_mprintf("delete from limit_data where hostname='%q';", globals.hostname); limit_execute_sql(sql); switch_safe_free(sql); + switch_cache_db_dismiss_db_handle(&dbh); /* try to really free the connection */ } return status; diff --git a/src/mod/applications/mod_dptools/mod_dptools.2010.vcxproj b/src/mod/applications/mod_dptools/mod_dptools.2010.vcxproj new file mode 100644 index 0000000000..833476bf8b --- /dev/null +++ b/src/mod/applications/mod_dptools/mod_dptools.2010.vcxproj @@ -0,0 +1,135 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_dptools + {B5881A85-FE70-4F64-8607-2CAAE52669C6} + mod_dptools + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {f6c55d93-b927-4483-bb69-15aef3dd2dff} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/applications/mod_easyroute/mod_easyroute.2010.vcxproj b/src/mod/applications/mod_easyroute/mod_easyroute.2010.vcxproj new file mode 100644 index 0000000000..36dafe0b9c --- /dev/null +++ b/src/mod/applications/mod_easyroute/mod_easyroute.2010.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_easyroute + {329FD5B0-EF28-4606-86D0-F6EA21CF8E36} + mod_easyroute + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/applications/mod_enum/mod_enum.2010.vcxproj b/src/mod/applications/mod_enum/mod_enum.2010.vcxproj new file mode 100644 index 0000000000..e7bed783f1 --- /dev/null +++ b/src/mod/applications/mod_enum/mod_enum.2010.vcxproj @@ -0,0 +1,143 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_enum + {71A967D5-0E99-4CEF-A587-98836EE6F2EF} + mod_enum + Win32Proj + + + + DynamicLibrary + NotSet + + + DynamicLibrary + NotSet + + + DynamicLibrary + NotSet + + + DynamicLibrary + NotSet + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + %(RootDir)%(Directory)..\..\..\..\libs\udns;%(AdditionalIncludeDirectories) + + + + + ws2_32.lib;%(AdditionalDependencies) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\udns;%(AdditionalIncludeDirectories) + + + + + ws2_32.lib;%(AdditionalDependencies) + false + + + MachineX64 + + + + + %(RootDir)%(Directory)..\..\..\..\libs\udns;%(AdditionalIncludeDirectories) + + + + + ws2_32.lib;%(AdditionalDependencies) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\udns;%(AdditionalIncludeDirectories) + + + + + ws2_32.lib;%(AdditionalDependencies) + false + + + MachineX64 + + + + + + + + {4043fc6a-9a30-4577-8ad5-9b233c9575d8} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/applications/mod_esf/mod_esf.2010.vcxproj b/src/mod/applications/mod_esf/mod_esf.2010.vcxproj new file mode 100644 index 0000000000..d259ff8a7e --- /dev/null +++ b/src/mod/applications/mod_esf/mod_esf.2010.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_esf + {3850D93A-5F24-4922-BC1C-74D08C37C256} + mod_esf + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/applications/mod_expr/mod_expr.2010.vcxproj b/src/mod/applications/mod_expr/mod_expr.2010.vcxproj new file mode 100644 index 0000000000..0b66d10226 --- /dev/null +++ b/src/mod/applications/mod_expr/mod_expr.2010.vcxproj @@ -0,0 +1,156 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_expr + {65A6273D-FCAB-4C55-B09E-65100141A5D4} + mod_expr + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + /J + + + 4100;4701;%(DisableSpecificWarnings) + + + false + + + + + + + X64 + + + /J + + + 4100;4701;%(DisableSpecificWarnings) + + + false + + + MachineX64 + + + + + /J + + + 4100;4701;%(DisableSpecificWarnings) + + + false + + + + + + + X64 + + + /J + + + 4100;4701;%(DisableSpecificWarnings) + + + false + + + MachineX64 + + + + + + + + + + + + + + + + + + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/applications/mod_fifo/mod_fifo.2010.vcxproj b/src/mod/applications/mod_fifo/mod_fifo.2010.vcxproj new file mode 100644 index 0000000000..c1ef7d0b97 --- /dev/null +++ b/src/mod/applications/mod_fifo/mod_fifo.2010.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_fifo + {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD} + mod_fifo + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/applications/mod_fifo/mod_fifo.c b/src/mod/applications/mod_fifo/mod_fifo.c index 52a922644e..29dbac9b3b 100644 --- a/src/mod/applications/mod_fifo/mod_fifo.c +++ b/src/mod/applications/mod_fifo/mod_fifo.c @@ -39,11 +39,203 @@ SWITCH_MODULE_DEFINITION(mod_fifo, mod_fifo_load, mod_fifo_shutdown, NULL); static switch_status_t load_config(int reload, int del_all); #define MAX_PRI 10 +typedef enum { + NODE_STRATEGY_INVALID = -1, + NODE_STRATEGY_RINGALL = 0, + NODE_STRATEGY_ENTERPRISE +} outbound_strategy_t; + +static outbound_strategy_t default_strategy = NODE_STRATEGY_RINGALL; + + +typedef struct { + int nelm; + int idx; + switch_event_t **data; + switch_memory_pool_t *pool; + switch_mutex_t *mutex; +} fifo_queue_t; + +switch_status_t fifo_queue_create(fifo_queue_t **queue, int size, switch_memory_pool_t *pool) +{ + fifo_queue_t *q; + + q = switch_core_alloc(pool, sizeof(*q)); + q->pool = pool; + q->nelm = size - 1; + q->data = switch_core_alloc(pool, size * sizeof(switch_event_t *)); + switch_mutex_init(&q->mutex, SWITCH_MUTEX_NESTED, pool); + + *queue = q; + + return SWITCH_STATUS_SUCCESS; +} + + +static void change_pos(switch_event_t *event, int pos) +{ + const char *uuid = switch_event_get_header(event, "unique-id"); + switch_core_session_t *session; + switch_channel_t *channel; + char tmp[30] = ""; + + if (zstr(uuid)) return; + + if (!(session = switch_core_session_locate(uuid))) { + return; + } + + channel = switch_core_session_get_channel(session); + + switch_snprintf(tmp, sizeof(tmp), "%d", pos); + switch_channel_set_variable(channel, "fifo_position", tmp); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "fifo_position", tmp); + + switch_core_session_rwunlock(session); + + +} + +static switch_status_t fifo_queue_push(fifo_queue_t *queue, switch_event_t *ptr) +{ + switch_mutex_lock(queue->mutex); + + if (queue->idx == queue->nelm) { + switch_mutex_unlock(queue->mutex); + return SWITCH_STATUS_FALSE; + } + + queue->data[queue->idx++] = ptr; + + + switch_mutex_unlock(queue->mutex); + + return SWITCH_STATUS_SUCCESS; + +} + +static int fifo_queue_size(fifo_queue_t *queue) +{ + int s; + switch_mutex_lock(queue->mutex); + s = queue->idx; + switch_mutex_unlock(queue->mutex); + + return s; +} + +static switch_status_t fifo_queue_pop(fifo_queue_t *queue, switch_event_t **pop, switch_bool_t remove) +{ + int i; + + switch_mutex_lock(queue->mutex); + + if (queue->idx == 0) { + switch_mutex_unlock(queue->mutex); + *pop = NULL; + return SWITCH_STATUS_FALSE; + } + + *pop = queue->data[0]; + + if (remove) { + for (i = 1; i < queue->idx; i++) { + queue->data[i-1] = queue->data[i]; + queue->data[i] = NULL; + change_pos(queue->data[i-1], i); + } + + queue->idx--; + } + + switch_mutex_unlock(queue->mutex); + + return SWITCH_STATUS_SUCCESS; + +} + + +static switch_status_t fifo_queue_pop_nameval(fifo_queue_t *queue, const char *name, const char *val, switch_event_t **pop, switch_bool_t remove) +{ + int i, j; + + switch_mutex_lock(queue->mutex); + + if (queue->idx == 0 || zstr(name) || zstr(val)) { + switch_mutex_unlock(queue->mutex); + return SWITCH_STATUS_FALSE; + } + + for (j = 0; j < queue->idx; j++) { + const char *j_val = switch_event_get_header(queue->data[j], name); + if (j_val && val && !strcmp(j_val, val)) { + *pop = queue->data[j]; + break; + } + } + + if (j == queue->idx) { + switch_mutex_unlock(queue->mutex); + return SWITCH_STATUS_FALSE; + } + + if (remove) { + for (i = j+1; i < queue->idx; i++) { + queue->data[i-1] = queue->data[i]; + queue->data[i] = NULL; + change_pos(queue->data[i-1], i); + } + + queue->idx--; + } + + switch_mutex_unlock(queue->mutex); + + return SWITCH_STATUS_SUCCESS; +} + + +static switch_status_t fifo_queue_popfly(fifo_queue_t *queue, const char *uuid) +{ + int i, j; + + switch_mutex_lock(queue->mutex); + + if (queue->idx == 0 || zstr(uuid)) { + switch_mutex_unlock(queue->mutex); + return SWITCH_STATUS_FALSE; + } + + for (j = 0; j < queue->idx; j++) { + const char *j_uuid = switch_event_get_header(queue->data[j], "unique-id"); + if (j_uuid && !strcmp(j_uuid, uuid)) break; + } + + if (j == queue->idx) { + switch_mutex_unlock(queue->mutex); + return SWITCH_STATUS_FALSE; + } + + for (i = j+1; i < queue->idx; i++) { + queue->data[i-1] = queue->data[i]; + queue->data[i] = NULL; + change_pos(queue->data[i-1], i); + } + + queue->idx--; + + switch_mutex_unlock(queue->mutex); + + return SWITCH_STATUS_SUCCESS; + +} + + + struct fifo_node { char *name; switch_mutex_t *mutex; - switch_queue_t *fifo_list[MAX_PRI]; - switch_hash_t *caller_hash; + fifo_queue_t *fifo_list[MAX_PRI]; switch_hash_t *consumer_hash; int caller_count; int consumer_count; @@ -54,7 +246,9 @@ struct fifo_node { switch_memory_pool_t *pool; int has_outbound; int ready; + int busy; int is_static; + outbound_strategy_t outbound_strategy; }; typedef struct fifo_node fifo_node_t; @@ -66,6 +260,33 @@ struct callback { }; typedef struct callback callback_t; +static const char *strat_parse(outbound_strategy_t s) +{ + switch (s) { + case NODE_STRATEGY_RINGALL: + return "ringall"; + case NODE_STRATEGY_ENTERPRISE: + return "enterprise"; + default: + break; + } + + return "invalid"; +} + +static outbound_strategy_t parse_strat(const char *name) +{ + if (!strcasecmp(name, "ringall")) { + return NODE_STRATEGY_RINGALL; + } + + if (!strcasecmp(name, "enterprise")) { + return NODE_STRATEGY_ENTERPRISE; + } + + return NODE_STRATEGY_INVALID; +} + static int sql2str_callback(void *pArg, int argc, char **argv, char **columnNames) { callback_t *cbt = (callback_t *) pArg; @@ -161,7 +382,7 @@ static int node_consumer_wait_count(fifo_node_t *node) int i, len = 0; for (i = 0; i < MAX_PRI; i++) { - len += switch_queue_size(node->fifo_list[i]); + len += fifo_queue_size(node->fifo_list[i]); } return len; @@ -169,24 +390,10 @@ static int node_consumer_wait_count(fifo_node_t *node) static void node_remove_uuid(fifo_node_t *node, const char *uuid) { - int i, len = 0, done = 0; - void *pop = NULL; + int i = 0; for (i = 0; i < MAX_PRI; i++) { - if (!(len = switch_queue_size(node->fifo_list[i]))) { - continue; - } - while (len) { - if (switch_queue_trypop(node->fifo_list[i], &pop) == SWITCH_STATUS_SUCCESS && pop) { - if (!done && !strcmp((char *) pop, uuid)) { - free(pop); - done++; - } else { - switch_queue_push(node->fifo_list[i], pop); - } - } - len--; - } + fifo_queue_popfly(node->fifo_list[i], uuid); } if (!node_consumer_wait_count(node)) { @@ -265,7 +472,7 @@ static switch_status_t consumer_read_frame_callback(switch_core_session_t *sessi break; } for (x = 0; x < MAX_PRI; x++) { - total += switch_queue_size(node->fifo_list[x]); + total += fifo_queue_size(node->fifo_list[x]); } } @@ -303,13 +510,15 @@ switch_cache_db_handle_t *fifo_get_db_handle(void) options.odbc_options.user = globals.odbc_user; options.odbc_options.pass = globals.odbc_pass; - if (switch_cache_db_get_db_handle(&dbh, SCDB_TYPE_ODBC, &options) != SWITCH_STATUS_SUCCESS) + if (switch_cache_db_get_db_handle(&dbh, SCDB_TYPE_ODBC, &options) != SWITCH_STATUS_SUCCESS) { dbh = NULL; + } return dbh; } else { options.core_db_options.db_path = globals.dbname; - if (switch_cache_db_get_db_handle(&dbh, SCDB_TYPE_CORE_DB, &options) != SWITCH_STATUS_SUCCESS) + if (switch_cache_db_get_db_handle(&dbh, SCDB_TYPE_CORE_DB, &options) != SWITCH_STATUS_SUCCESS) { dbh = NULL; + } return dbh; } } @@ -392,13 +601,13 @@ static fifo_node_t *create_node(const char *name, uint32_t importance, switch_mu node = switch_core_alloc(pool, sizeof(*node)); node->pool = pool; - + node->outbound_strategy = default_strategy; node->name = switch_core_strdup(node->pool, name); for (x = 0; x < MAX_PRI; x++) { - switch_queue_create(&node->fifo_list[x], SWITCH_CORE_QUEUE_LEN, node->pool); + fifo_queue_create(&node->fifo_list[x], SWITCH_CORE_QUEUE_LEN, node->pool); switch_assert(node->fifo_list[x]); } - switch_core_hash_init(&node->caller_hash, node->pool); + switch_core_hash_init(&node->consumer_hash, node->pool); switch_thread_rwlock_create(&node->rwlock, node->pool); switch_mutex_init(&node->mutex, SWITCH_MUTEX_NESTED, node->pool); @@ -453,7 +662,8 @@ static switch_status_t hanguphook(switch_core_session_t *session) if (state == CS_HANGUP || state == CS_ROUTING) { if ((uuid = switch_channel_get_variable(channel, "fifo_outbound_uuid"))) { switch_snprintf(sql, sizeof(sql), - "update fifo_outbound set use_count=use_count-1, outbound_call_count=outbound_call_count+1, next_avail=%ld + lag where uuid='%s'", + "update fifo_outbound set use_count=use_count-1, " + "outbound_call_count=outbound_call_count+1, next_avail=%ld + lag where uuid='%s' and use_count > 0", (long) switch_epoch_time_now(NULL), uuid); fifo_execute_sql(sql, globals.sql_mutex); @@ -471,6 +681,180 @@ struct call_helper { switch_memory_pool_t *pool; }; +#define MAX_ROWS 2048 +struct callback_helper { + int need; + switch_memory_pool_t *pool; + struct call_helper *rows[MAX_ROWS]; + int rowcount; +}; + + + +static void *SWITCH_THREAD_FUNC ringall_thread_run(switch_thread_t *thread, void *obj) +{ + struct callback_helper *cbh = (struct callback_helper *) obj; + char *node_name; + int i = 0; + int timeout = 0; + char sql[256] = ""; + switch_stream_handle_t stream = { 0 }; + fifo_node_t *node = NULL; + char *originate_string; + switch_event_t *ovars = NULL; + switch_status_t status; + switch_core_session_t *session = NULL; + switch_call_cause_t cause = SWITCH_CAUSE_NONE; + char *app_name = NULL, *arg = NULL; + switch_caller_extension_t *extension = NULL; + switch_channel_t *channel; + char *cid_name = NULL, *cid_num = NULL, *id = NULL; + switch_event_t *pop = NULL; + fifo_queue_t *q = NULL; + int x = 0; + + if (!cbh->rowcount) { + goto end; + } + + node_name = cbh->rows[0]->node_name; + + switch_mutex_lock(globals.mutex); + node = switch_core_hash_find(globals.fifo_hash, node_name); + switch_mutex_unlock(globals.mutex); + + if (node) { + switch_mutex_lock(node->mutex); + node->busy = 1; + node->ring_consumer_count++; + switch_mutex_unlock(node->mutex); + } else { + goto end; + } + + SWITCH_STANDARD_STREAM(stream); + + switch_event_create(&ovars, SWITCH_EVENT_REQUEST_PARAMS); + switch_assert(ovars); + + + for (i = 0; i < cbh->rowcount; i++) { + struct call_helper *h = cbh->rows[i]; + char *parsed = NULL; + + switch_event_create_brackets(h->originate_string, '{', '}', ',', &ovars, &parsed); + + if (!h->timeout) h->timeout = 60; + if (timeout < h->timeout) timeout = h->timeout; + + stream.write_function(&stream, "[leg_timeout=%d,fifo_outbound_uuid=%s]%s,", h->timeout, h->uuid, parsed ? parsed : h->originate_string); + switch_safe_free(parsed); + + switch_snprintf(sql, sizeof(sql), "update fifo_outbound set use_count=use_count+1 where uuid='%s'", h->uuid); + fifo_execute_sql(sql, globals.sql_mutex); + } + + + originate_string = (char *) stream.data; + + if (originate_string) { + end_of(originate_string) = '\0'; + } + + if (!timeout) timeout = 60; + + for (x = 0; x < MAX_PRI; x++) { + q = node->fifo_list[x]; + switch_mutex_lock(q->mutex); + + if (fifo_queue_pop_nameval(q, "variable_fifo_vip", "true", &pop, SWITCH_FALSE) == SWITCH_STATUS_SUCCESS && pop) { + goto found; + } + switch_mutex_unlock(q->mutex); + q = NULL; + } + + if (!pop) { + for (x = 0; x < MAX_PRI; x++) { + q = node->fifo_list[x]; + switch_mutex_lock(q->mutex); + + if (fifo_queue_pop(node->fifo_list[x], &pop, SWITCH_FALSE) == SWITCH_STATUS_SUCCESS && pop) { + goto found; + } + } + switch_mutex_unlock(q->mutex); + q = NULL; + } + + found: + + + if (!q) goto end; + + if (!pop) { + if (q) switch_mutex_unlock(q->mutex); + goto end; + } + + if ((cid_name = switch_event_get_header(pop, "caller-caller-id-name"))) { + switch_event_add_header_string(ovars, SWITCH_STACK_BOTTOM, "origination_caller_id_name", cid_name); + } + + if ((cid_num = switch_event_get_header(pop, "caller-caller-id-number"))) { + switch_event_add_header_string(ovars, SWITCH_STACK_BOTTOM, "origination_caller_id_number", cid_num); + } + + if ((id = switch_event_get_header(pop, "unique-id"))) { + switch_event_add_header_string(ovars, SWITCH_STACK_BOTTOM, "fifo_bridge_uuid", id); + } + + switch_mutex_unlock(q->mutex); + + status = switch_ivr_originate(NULL, &session, &cause, originate_string, timeout, NULL, NULL, NULL, NULL, ovars, SOF_NONE, NULL); + free(originate_string); + + if (status != SWITCH_STATUS_SUCCESS) { + for (i = 0; i < cbh->rowcount; i++) { + struct call_helper *h = cbh->rows[i]; + switch_snprintf(sql, sizeof(sql), + "update fifo_outbound set use_count=use_count-1, outbound_fail_count=outbound_fail_count+1, " + "next_avail=%ld + lag where uuid='%s' and use_count > 0", + (long) switch_epoch_time_now(NULL), h->uuid); + fifo_execute_sql(sql, globals.sql_mutex); + } + goto end; + } + + channel = switch_core_session_get_channel(session); + switch_channel_set_variable(channel, "fifo_pop_order", NULL); + + switch_core_event_hook_add_state_change(session, hanguphook); + app_name = "fifo"; + arg = switch_core_session_sprintf(session, "%s out nowait", node_name); + extension = switch_caller_extension_new(session, app_name, arg); + switch_caller_extension_add_application(session, extension, app_name, arg); + switch_channel_set_caller_extension(channel, extension); + switch_channel_set_state(channel, CS_EXECUTE); + switch_core_session_rwunlock(session); + + end: + + switch_event_destroy(&ovars); + if (node) { + switch_mutex_lock(node->mutex); + if (node->ring_consumer_count-- < 0) { + node->ring_consumer_count = 0; + } + node->busy = 0; + switch_mutex_unlock(node->mutex); + } + + switch_core_destroy_memory_pool(&cbh->pool); + + return NULL; +} + static void *SWITCH_THREAD_FUNC o_thread_run(switch_thread_t *thread, void *obj) { struct call_helper *h = (struct call_helper *) obj; @@ -526,7 +910,8 @@ static void *SWITCH_THREAD_FUNC o_thread_run(switch_thread_t *thread, void *obj) if (status != SWITCH_STATUS_SUCCESS) { switch_snprintf(sql, sizeof(sql), - "update fifo_outbound set use_count=use_count-1, outbound_fail_count=outbound_fail_count+1, next_avail=%ld + lag where uuid='%s'", + "update fifo_outbound set use_count=use_count-1, " + "outbound_fail_count=outbound_fail_count+1, next_avail=%ld + lag where uuid='%s' and use_count > 0", (long) switch_epoch_time_now(NULL), h->uuid); fifo_execute_sql(sql, globals.sql_mutex); goto end; @@ -565,7 +950,29 @@ static void *SWITCH_THREAD_FUNC o_thread_run(switch_thread_t *thread, void *obj) return NULL; } -static int place_call_callback(void *pArg, int argc, char **argv, char **columnNames) +static int place_call_ringall_callback(void *pArg, int argc, char **argv, char **columnNames) +{ + struct callback_helper *cbh = (struct callback_helper *) pArg; + struct call_helper *h; + + h = switch_core_alloc(cbh->pool, sizeof(*h)); + h->pool = cbh->pool; + h->uuid = switch_core_strdup(h->pool, argv[0]); + h->node_name = switch_core_strdup(h->pool, argv[1]); + h->originate_string = switch_core_strdup(h->pool, argv[2]); + h->timeout = atoi(argv[5]); + + cbh->rows[cbh->rowcount++] = h; + + cbh->need--; + + if (cbh->rowcount == MAX_ROWS) return -1; + + return cbh->need ? 0 : -1; + +} + +static int place_call_enterprise_callback(void *pArg, int argc, char **argv, char **columnNames) { int *need = (int *) pArg; @@ -596,18 +1003,50 @@ static int place_call_callback(void *pArg, int argc, char **argv, char **columnN static void find_consumers(fifo_node_t *node) { - int need = node_consumer_wait_count(node); char *sql; + + sql = switch_mprintf("select uuid, fifo_name, originate_string, simo_count, use_count, timeout, lag, " "next_avail, expires, static, outbound_call_count, outbound_fail_count, hostname " "from fifo_outbound where taking_calls = 1 and " "(fifo_name = '%q') and (use_count < simo_count) and (next_avail = 0 or next_avail <= %ld) " "order by next_avail", node->name, (long) switch_epoch_time_now(NULL)); - switch_assert(sql); - fifo_execute_sql_callback(globals.sql_mutex, sql, place_call_callback, &need); - free(sql); + switch(node->outbound_strategy) { + case NODE_STRATEGY_ENTERPRISE: + { + int need = node_consumer_wait_count(node); + fifo_execute_sql_callback(globals.sql_mutex, sql, place_call_enterprise_callback, &need); + + } + break; + case NODE_STRATEGY_RINGALL: + { + switch_thread_t *thread; + switch_threadattr_t *thd_attr = NULL; + struct callback_helper *cbh; + switch_memory_pool_t *pool; + + switch_core_new_memory_pool(&pool); + cbh = switch_core_alloc(pool, sizeof(*cbh)); + cbh->pool = pool; + cbh->need = node_consumer_wait_count(node); + fifo_execute_sql_callback(globals.sql_mutex, sql, place_call_ringall_callback, cbh); + + switch_threadattr_create(&thd_attr, cbh->pool); + switch_threadattr_detach_set(thd_attr, 1); + switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); + switch_thread_create(&thread, thd_attr, ringall_thread_run, cbh, cbh->pool); + + } + break; + default: + break; + } + + + switch_safe_free(sql); } static void *SWITCH_THREAD_FUNC node_thread_run(switch_thread_t *thread, void *obj) @@ -626,7 +1065,7 @@ static void *SWITCH_THREAD_FUNC node_thread_run(switch_thread_t *thread, void *o for (hi = switch_hash_first(NULL, globals.fifo_hash); hi; hi = switch_hash_next(hi)) { switch_hash_this(hi, &var, NULL, &val); if ((node = (fifo_node_t *) val)) { - if (node->has_outbound && node->ready) { + if (node->has_outbound && node->ready && !node->busy) { switch_mutex_lock(node->mutex); ppl_waiting = node_consumer_wait_count(node); consumer_total = node->consumer_count; @@ -759,7 +1198,7 @@ static void pres_event_handler(switch_event_t *event) static uint32_t fifo_add_outbound(const char *node_name, const char *url, uint32_t priority) { fifo_node_t *node; - char *str; + switch_event_t *call_event; if (priority >= MAX_PRI) { priority = MAX_PRI - 1; @@ -773,10 +1212,13 @@ static uint32_t fifo_add_outbound(const char *node_name, const char *url, uint32 switch_mutex_unlock(globals.mutex); - str = switch_mprintf("dial:%s", url); - switch_queue_push(node->fifo_list[priority], (void *) str); + switch_event_create(&call_event, SWITCH_EVENT_CHANNEL_DATA); + switch_event_add_header_string(call_event, SWITCH_STACK_BOTTOM, "dial-url", url); + + fifo_queue_push(node->fifo_list[priority], call_event); + call_event = NULL; - return switch_queue_size(node->fifo_list[priority]); + return fifo_queue_size(node->fifo_list[priority]); } @@ -970,6 +1412,7 @@ SWITCH_STANDARD_APP(fifo_function) int freq = 30; int ftmp = 0; int to = 60; + switch_event_t *call_event; if (orbit_exten) { char *ot; @@ -998,8 +1441,6 @@ SWITCH_STANDARD_APP(fifo_function) switch_mutex_lock(node->mutex); node->caller_count++; - switch_core_hash_insert(node->caller_hash, uuid, session); - if ((pri = switch_channel_get_variable(channel, "fifo_priority"))) { p = atoi(pri); } @@ -1020,8 +1461,13 @@ SWITCH_STANDARD_APP(fifo_function) switch_event_fire(&event); } - switch_queue_push(node->fifo_list[p], (void *) strdup(uuid)); - switch_snprintf(tmp, sizeof(tmp), "%d", switch_queue_size(node->fifo_list[p])); + switch_event_create(&call_event, SWITCH_EVENT_CHANNEL_DATA); + switch_channel_event_set_data(channel, call_event); + + + fifo_queue_push(node->fifo_list[p], call_event); + call_event = NULL; + switch_snprintf(tmp, sizeof(tmp), "%d", fifo_queue_size(node->fifo_list[p])); switch_channel_set_variable(channel, "fifo_position", tmp); if (!pri) { @@ -1136,7 +1582,6 @@ SWITCH_STANDARD_APP(fifo_function) switch_mutex_lock(node->mutex); node_remove_uuid(node, uuid); node->caller_count--; - switch_core_hash_delete(node->caller_hash, uuid); switch_mutex_unlock(node->mutex); send_presence(node); check_cancel(node); @@ -1154,10 +1599,9 @@ SWITCH_STANDARD_APP(fifo_function) goto done; } else { /* consumer */ - void *pop = NULL; + switch_event_t *pop = NULL; switch_frame_t *read_frame; switch_status_t status; - char *uuid; switch_core_session_t *other_session; switch_input_args_t args = { 0 }; const char *pop_order = NULL; @@ -1173,8 +1617,10 @@ SWITCH_STANDARD_APP(fifo_function) char buf[5] = ""; const char *strat_str = switch_channel_get_variable(channel, "fifo_strategy"); fifo_strategy_t strat = STRAT_WAITING_LONGER; - char *url = NULL; - + const char *url = NULL; + const char *caller_uuid = NULL; + switch_event_t *call_event; + if (!zstr(strat_str)) { if (!strcasecmp(strat_str, "more_ppl")) { strat = STRAT_MORE_PPL; @@ -1247,7 +1693,7 @@ SWITCH_STANDARD_APP(fifo_function) int x = 0, winner = -1; switch_time_t longest = (0xFFFFFFFFFFFFFFFFULL / 2); uint32_t importance = 0, waiting = 0, most_waiting = 0; - + pop = NULL; if (moh && do_wait) { @@ -1296,20 +1742,50 @@ SWITCH_STANDARD_APP(fifo_function) } if (node) { - if (custom_pop) { + const char *varval; + + if ((varval = switch_channel_get_variable(channel, "fifo_bridge_uuid"))) { for (x = 0; x < MAX_PRI; x++) { - if (switch_queue_trypop(node->fifo_list[pop_array[x]], &pop) == SWITCH_STATUS_SUCCESS && pop) { + if (fifo_queue_pop_nameval(node->fifo_list[pop_array[x]], "unique-id", varval, &pop, SWITCH_TRUE) == SWITCH_STATUS_SUCCESS && pop) { break; } } - } else { + } + + if (!pop && (varval = switch_channel_get_variable(channel, "fifo_target_skill"))) { for (x = 0; x < MAX_PRI; x++) { - if (switch_queue_trypop(node->fifo_list[x], &pop) == SWITCH_STATUS_SUCCESS && pop) { + if (fifo_queue_pop_nameval(node->fifo_list[pop_array[x]], "variable_fifo_skill", + varval, &pop, SWITCH_TRUE) == SWITCH_STATUS_SUCCESS && pop) { break; } } } + if (!pop) { + for (x = 0; x < MAX_PRI; x++) { + if (fifo_queue_pop_nameval(node->fifo_list[pop_array[x]], "variable_fifo_vip", "true", + &pop, SWITCH_TRUE) == SWITCH_STATUS_SUCCESS && pop) { + break; + } + } + } + + if (!pop) { + if (custom_pop) { + for (x = 0; x < MAX_PRI; x++) { + if (fifo_queue_pop(node->fifo_list[pop_array[x]], &pop, SWITCH_TRUE) == SWITCH_STATUS_SUCCESS && pop) { + break; + } + } + } else { + for (x = 0; x < MAX_PRI; x++) { + if (fifo_queue_pop(node->fifo_list[x], &pop, SWITCH_TRUE) == SWITCH_STATUS_SUCCESS && pop) { + break; + } + } + } + } + if (pop && !node_consumer_wait_count(node)) { switch_mutex_lock(node->mutex); node->start_waiting = 0; @@ -1331,14 +1807,16 @@ SWITCH_STANDARD_APP(fifo_function) continue; } - uuid = (char *) pop; + call_event = (switch_event_t *) pop; pop = NULL; + + url = switch_event_get_header(call_event, "dial-url"); + caller_uuid = switch_event_get_header(call_event, "unique-id"); - if (!strncasecmp(uuid, "dial:", 5)) { + if (url) { switch_call_cause_t cause = SWITCH_CAUSE_NONE; const char *o_announce = NULL; - url = uuid + 5; - + if ((o_announce = switch_channel_get_variable(channel, "fifo_outbound_announce"))) { switch_ivr_play_file(session, NULL, o_announce, NULL); } @@ -1367,12 +1845,11 @@ SWITCH_STANDARD_APP(fifo_function) switch_event_fire(&event); } url = NULL; - free(uuid); - uuid = strdup(switch_core_session_get_uuid(other_session)); + caller_uuid = switch_core_session_strdup(session, switch_core_session_get_uuid(other_session)); } } else { - if ((other_session = switch_core_session_locate(uuid))) { + if ((other_session = switch_core_session_locate(caller_uuid))) { switch_channel_t *other_channel = switch_core_session_get_channel(other_session); if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, FIFO_EVENT) == SWITCH_STATUS_SUCCESS) { switch_channel_event_set_data(other_channel, event); @@ -1427,7 +1904,6 @@ SWITCH_STANDARD_APP(fifo_function) switch_mutex_lock(node->mutex); node->caller_count--; - switch_core_hash_delete(node->caller_hash, uuid); switch_mutex_unlock(node->mutex); send_presence(node); check_cancel(node); @@ -1460,7 +1936,7 @@ SWITCH_STANDARD_APP(fifo_function) switch_time_exp_lt(&tm, ts); switch_strftime_nocheck(date, &retsize, sizeof(date), "%Y-%m-%d %T", &tm); switch_channel_set_variable(channel, "fifo_status", "TALKING"); - switch_channel_set_variable(channel, "fifo_target", uuid); + switch_channel_set_variable(channel, "fifo_target", caller_uuid); switch_channel_set_variable(channel, "fifo_timestamp", date); switch_channel_set_variable(other_channel, "fifo_status", "TALKING"); @@ -1512,12 +1988,13 @@ SWITCH_STANDARD_APP(fifo_function) switch_mutex_lock(node->mutex); node->caller_count--; - switch_core_hash_delete(node->caller_hash, uuid); switch_mutex_unlock(node->mutex); send_presence(node); check_cancel(node); switch_core_session_rwunlock(other_session); - switch_safe_free(uuid); + if (call_event) { + switch_event_destroy(&call_event); + } if (!do_wait || !switch_channel_ready(channel)) { break; @@ -1626,7 +2103,6 @@ SWITCH_STANDARD_APP(fifo_function) switch_thread_rwlock_wrlock(node->rwlock); node->ready = 0; switch_mutex_lock(node->mutex); - switch_core_hash_destroy(&node->caller_hash); switch_core_hash_destroy(&node->consumer_hash); switch_mutex_unlock(node->mutex); switch_thread_rwlock_unlock(node->rwlock); @@ -1680,8 +2156,8 @@ static int xml_callback(void *pArg, int argc, char **argv, char **columnNames) switch_xml_set_attr_d(x_out, "lag", argv[6]); switch_xml_set_attr_d(x_out, "outbound-call-count", argv[10]); switch_xml_set_attr_d(x_out, "outbound-fail-count", argv[11]); - switch_xml_set_attr_d(x_out, "taking-calls", argv[12]); - switch_xml_set_attr_d(x_out, "status", argv[13]); + switch_xml_set_attr_d(x_out, "taking-calls", argv[13]); + switch_xml_set_attr_d(x_out, "status", argv[14]); switch_xml_set_attr_d(x_out, "next-available", expires); switch_xml_set_txt_d(x_out, argv[2]); @@ -1764,6 +2240,82 @@ static int xml_hash(switch_xml_t xml, switch_hash_t *hash, char *container, char return cc_off; } + +static int xml_caller(switch_xml_t xml, fifo_node_t *node, char *container, char *tag, int cc_off, int verbose) +{ + switch_xml_t x_tmp, x_caller, x_cp, variables; + int i, x; + switch_core_session_t *session; + switch_channel_t *channel; + + x_tmp = switch_xml_add_child_d(xml, container, cc_off++); + switch_assert(x_tmp); + + for (x = 0; x < MAX_PRI; x++) { + fifo_queue_t *q = node->fifo_list[x]; + + switch_mutex_lock(q->mutex); + + for (i = 0; i < q->idx; i++) { + + int c_off = 0, d_off = 0; + const char *status; + const char *ts; + const char *uuid = switch_event_get_header(q->data[i], "unique-id"); + + if (!uuid) { + continue; + } + + if (!(session = switch_core_session_locate(uuid))) { + continue; + } + + channel = switch_core_session_get_channel(session); + x_caller = switch_xml_add_child_d(x_tmp, tag, c_off++); + switch_assert(x_caller); + + switch_xml_set_attr_d(x_caller, "uuid", switch_core_session_get_uuid(session)); + + if ((status = switch_channel_get_variable(channel, "fifo_status"))) { + switch_xml_set_attr_d(x_caller, "status", status); + } + + if ((ts = switch_channel_get_variable(channel, "fifo_timestamp"))) { + switch_xml_set_attr_d(x_caller, "timestamp", ts); + } + + if ((ts = switch_channel_get_variable(channel, "fifo_target"))) { + switch_xml_set_attr_d(x_caller, "target", ts); + } + + if ((ts = switch_channel_get_variable(channel, "fifo_position"))) { + switch_xml_set_attr_d(x_caller, "position", ts); + } + + if (!(x_cp = switch_xml_add_child_d(x_caller, "caller_profile", d_off++))) { + abort(); + } + if (verbose) { + d_off += switch_ivr_set_xml_profile_data(x_cp, switch_channel_get_caller_profile(channel), d_off); + + if (!(variables = switch_xml_add_child_d(x_caller, "variables", c_off++))) { + abort(); + } + + switch_ivr_set_xml_chan_vars(variables, channel, c_off); + } + + switch_core_session_rwunlock(session); + session = NULL; + } + + switch_mutex_unlock(q->mutex); + } + + return cc_off; +} + static void list_node(fifo_node_t *node, switch_xml_t x_report, int *off, int verbose) { switch_xml_t x_fifo; @@ -1784,8 +2336,10 @@ static void list_node(fifo_node_t *node, switch_xml_t x_report, int *off, int ve switch_snprintf(tmp, sizeof(buffer), "%u", node->importance); switch_xml_set_attr_d(x_fifo, "importance", tmp); + switch_xml_set_attr_d(x_fifo, "outbound_strategy", strat_parse(node->outbound_strategy)); + cc_off = xml_outbound(x_fifo, node, "outbound", "member", cc_off, verbose); - cc_off = xml_hash(x_fifo, node->caller_hash, "callers", "caller", cc_off, verbose); + cc_off = xml_caller(x_fifo, node, "callers", "caller", cc_off, verbose); cc_off = xml_hash(x_fifo, node->consumer_hash, "consumers", "consumer", cc_off, verbose); } @@ -1965,6 +2519,10 @@ static switch_status_t load_config(int reload, int del_all) var = (char *) switch_xml_attr_soft(param, "name"); val = (char *) switch_xml_attr_soft(param, "value"); + if (!strcasecmp(var, "outbound-strategy") && !zstr(val)) { + default_strategy = parse_strat(val); + } + if (!strcasecmp(var, "odbc-dsn") && !zstr(val)) { if (switch_odbc_available()) { globals.odbc_dsn = switch_core_strdup(globals.pool, val); @@ -2024,7 +2582,7 @@ static switch_status_t load_config(int reload, int del_all) if ((fifos = switch_xml_child(cfg, "fifos"))) { for (fifo = switch_xml_child(fifos, "fifo"); fifo; fifo = fifo->next) { - const char *name; + const char *name, *outbound_strategy; const char *importance; int imp = 0; int simo_i = 1; @@ -2033,6 +2591,7 @@ static switch_status_t load_config(int reload, int del_all) fifo_node_t *node; name = switch_xml_attr(fifo, "name"); + outbound_strategy = switch_xml_attr(fifo, "outbound_strategy"); if ((importance = switch_xml_attr(fifo, "importance"))) { if ((imp = atoi(importance)) < 0) { @@ -2055,6 +2614,10 @@ static switch_status_t load_config(int reload, int del_all) switch_mutex_lock(node->mutex); + if (outbound_strategy) { + node->outbound_strategy = parse_strat(outbound_strategy); + } + for (member = switch_xml_child(fifo, "member"); member; member = member->next) { const char *simo = switch_xml_attr_soft(member, "simo"); const char *lag = switch_xml_attr_soft(member, "lag"); @@ -2113,7 +2676,8 @@ static switch_status_t load_config(int reload, int del_all) if (reload) { switch_hash_index_t *hi; - void *val, *pop; + void *val; + switch_event_t *pop; fifo_node_t *node; switch_mutex_lock(globals.mutex); top: @@ -2131,13 +2695,12 @@ static switch_status_t load_config(int reload, int del_all) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "%s removed.\n", node->name); switch_thread_rwlock_wrlock(node->rwlock); for (x = 0; x < MAX_PRI; x++) { - while (switch_queue_trypop(node->fifo_list[x], &pop) == SWITCH_STATUS_SUCCESS) { - free(pop); + while (fifo_queue_pop(node->fifo_list[x], &pop, SWITCH_TRUE) == SWITCH_STATUS_SUCCESS) { + switch_event_destroy(&pop); } } switch_core_hash_delete(globals.fifo_hash, node->name); - switch_core_hash_destroy(&node->caller_hash); switch_core_hash_destroy(&node->consumer_hash); switch_thread_rwlock_unlock(node->rwlock); switch_core_destroy_memory_pool(&node->pool); @@ -2361,7 +2924,8 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_fifo_load) SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_fifo_shutdown) { switch_hash_index_t *hi; - void *val, *pop; + void *val; + switch_event_t *pop = NULL; fifo_node_t *node; switch_memory_pool_t *pool = globals.pool; switch_mutex_t *mutex = globals.mutex; @@ -2385,13 +2949,12 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_fifo_shutdown) switch_thread_rwlock_wrlock(node->rwlock); for (x = 0; x < MAX_PRI; x++) { - while (switch_queue_trypop(node->fifo_list[x], &pop) == SWITCH_STATUS_SUCCESS) { - free(pop); + while (fifo_queue_pop(node->fifo_list[x], &pop, SWITCH_TRUE) == SWITCH_STATUS_SUCCESS) { + switch_event_destroy(&pop); } } switch_core_hash_delete(globals.fifo_hash, node->name); - switch_core_hash_destroy(&node->caller_hash); switch_core_hash_destroy(&node->consumer_hash); switch_thread_rwlock_unlock(node->rwlock); switch_core_destroy_memory_pool(&node->pool); diff --git a/src/mod/applications/mod_fsv/mod_fsv.2010.vcxproj b/src/mod/applications/mod_fsv/mod_fsv.2010.vcxproj new file mode 100644 index 0000000000..3780b46c7e --- /dev/null +++ b/src/mod/applications/mod_fsv/mod_fsv.2010.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_fsv + {E3246D17-E29B-4AB5-962A-C69B0C5837BB} + mod_fsv + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/applications/mod_hash/mod_hash.2010.vcxproj b/src/mod/applications/mod_hash/mod_hash.2010.vcxproj new file mode 100644 index 0000000000..d3babd6e21 --- /dev/null +++ b/src/mod/applications/mod_hash/mod_hash.2010.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_hash + {2E250296-0C08-4342-9C8A-BCBDD0E7DF65} + mod_hash + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/applications/mod_lcr/mod_lcr.2010.vcxproj b/src/mod/applications/mod_lcr/mod_lcr.2010.vcxproj new file mode 100644 index 0000000000..2621049857 --- /dev/null +++ b/src/mod/applications/mod_lcr/mod_lcr.2010.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_lcr + {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439} + mod_lcr + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/applications/mod_lcr/mod_lcr.c b/src/mod/applications/mod_lcr/mod_lcr.c old mode 100755 new mode 100644 index 0e45be39de..3399417532 --- a/src/mod/applications/mod_lcr/mod_lcr.c +++ b/src/mod/applications/mod_lcr/mod_lcr.c @@ -445,7 +445,7 @@ static switch_bool_t db_check(char *sql) } } - switch_cache_db_release_db_handle(&dbh); + switch_cache_db_dismiss_db_handle(&dbh); return ret; } @@ -581,7 +581,7 @@ static switch_bool_t lcr_execute_sql_callback(char *sql, switch_core_db_callback retval = SWITCH_TRUE; } } - switch_cache_db_release_db_handle(&dbh); + switch_cache_db_dismiss_db_handle(&dbh); return retval; } @@ -1175,7 +1175,7 @@ static switch_status_t lcr_load_config() } done: - switch_cache_db_release_db_handle(&dbh); + switch_cache_db_dismiss_db_handle(&dbh); switch_xml_free(xml); return status; } diff --git a/src/mod/applications/mod_nibblebill/mod_nibblebill.2010.vcxproj b/src/mod/applications/mod_nibblebill/mod_nibblebill.2010.vcxproj new file mode 100644 index 0000000000..d2f59e2f02 --- /dev/null +++ b/src/mod/applications/mod_nibblebill/mod_nibblebill.2010.vcxproj @@ -0,0 +1,135 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_nibblebill + {3C977801-FE88-48F2-83D3-FA2EBFF6688E} + mod_nibblebill + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + %(PreprocessorDefinitions) + + + true + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + %(PreprocessorDefinitions) + + + true + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/applications/mod_rss/mod_rss.2010.vcxproj b/src/mod/applications/mod_rss/mod_rss.2010.vcxproj new file mode 100644 index 0000000000..235808af7e --- /dev/null +++ b/src/mod/applications/mod_rss/mod_rss.2010.vcxproj @@ -0,0 +1,137 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_rss + {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4} + mod_rss + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;%(PreprocessorDefinitions) + + + + + false + + + + + + + X64 + + + WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;%(PreprocessorDefinitions) + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {f6c55d93-b927-4483-bb69-15aef3dd2dff} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/applications/mod_rss/mod_rss.c b/src/mod/applications/mod_rss/mod_rss.c index 57b06088fc..2eaae2f16f 100644 --- a/src/mod/applications/mod_rss/mod_rss.c +++ b/src/mod/applications/mod_rss/mod_rss.c @@ -515,7 +515,7 @@ SWITCH_STANDARD_APP(rss_function) dtb.index = 0; dtb.sh = &sh; dtb.speed = TTS_MEAN_SPEED; - switch_set_flag(&dtb, SFLAG_INFO); + //switch_set_flag(&dtb, SFLAG_INFO); switch_copy_string(dtb.voice, voice, sizeof(dtb.voice)); while (entries[0].inuse && switch_channel_ready(channel)) { while (switch_channel_ready(channel)) { diff --git a/src/mod/applications/mod_skel/mod_skel.2010.vcxproj b/src/mod/applications/mod_skel/mod_skel.2010.vcxproj new file mode 100644 index 0000000000..e1f1bf8c84 --- /dev/null +++ b/src/mod/applications/mod_skel/mod_skel.2010.vcxproj @@ -0,0 +1,135 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_skel + {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39} + mod_skel + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/applications/mod_snom/mod_snom.2010.vcxproj b/src/mod/applications/mod_snom/mod_snom.2010.vcxproj new file mode 100644 index 0000000000..dfe2a92444 --- /dev/null +++ b/src/mod/applications/mod_snom/mod_snom.2010.vcxproj @@ -0,0 +1,133 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_snom + {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03} + mod_snom + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;%(PreprocessorDefinitions) + + + + + false + + + + + + + X64 + + + WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;%(PreprocessorDefinitions) + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/applications/mod_spandsp/mod_spandsp.2010.vcxproj b/src/mod/applications/mod_spandsp/mod_spandsp.2010.vcxproj new file mode 100644 index 0000000000..4f1611208a --- /dev/null +++ b/src/mod/applications/mod_spandsp/mod_spandsp.2010.vcxproj @@ -0,0 +1,151 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_spandsp + {1E21AFE0-6FDB-41D2-942D-863607C24B91} + mod_spandsp + Win32Proj + + + + DynamicLibrary + NotSet + + + DynamicLibrary + NotSet + + + DynamicLibrary + NotSet + + + DynamicLibrary + NotSet + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + %(RootDir)%(Directory)..\..\..\..\libs\spandsp\src\msvc;%(RootDir)%(Directory)..\..\..\..\libs\spandsp\src;%(RootDir)%(Directory)..\..\..\..\libs\tiff-3.8.2\libtiff;%(AdditionalIncludeDirectories) + + + + + ws2_32.lib;%(AdditionalDependencies) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\spandsp\src\msvc;%(RootDir)%(Directory)..\..\..\..\libs\spandsp\src;%(RootDir)%(Directory)..\..\..\..\libs\tiff-3.8.2\libtiff;%(AdditionalIncludeDirectories) + + + + + ws2_32.lib;%(AdditionalDependencies) + false + + + MachineX64 + + + + + %(RootDir)%(Directory)..\..\..\..\libs\spandsp\src\msvc;%(RootDir)%(Directory)..\..\..\..\libs\spandsp\src;%(RootDir)%(Directory)..\..\..\..\libs\tiff-3.8.2\libtiff;%(AdditionalIncludeDirectories) + + + + + ws2_32.lib;%(AdditionalDependencies) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\spandsp\src\msvc;%(RootDir)%(Directory)..\..\..\..\libs\spandsp\src;%(RootDir)%(Directory)..\..\..\..\libs\tiff-3.8.2\libtiff;%(AdditionalIncludeDirectories) + + + + + ws2_32.lib;%(AdditionalDependencies) + false + + + MachineX64 + + + + + + + + + + + + + + + + {1cbb0077-18c5-455f-801c-0a0ce7b0bbf5} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/applications/mod_valet_parking/mod_valet_parking.2010.vcxproj b/src/mod/applications/mod_valet_parking/mod_valet_parking.2010.vcxproj new file mode 100644 index 0000000000..5e006e13f9 --- /dev/null +++ b/src/mod/applications/mod_valet_parking/mod_valet_parking.2010.vcxproj @@ -0,0 +1,135 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_valet_parking + {432DB165-1EB2-4781-A9C0-71E62610B20A} + mod_valet_parking + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/applications/mod_vmd/mod_vmd.2010.vcxproj b/src/mod/applications/mod_vmd/mod_vmd.2010.vcxproj new file mode 100644 index 0000000000..dfc60391b8 --- /dev/null +++ b/src/mod/applications/mod_vmd/mod_vmd.2010.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_vmd + {14E4A972-9CFB-436D-B0A5-4943F3F80D47} + mod_vmd + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/applications/mod_voicemail/mod_voicemail.2010.vcxproj b/src/mod/applications/mod_voicemail/mod_voicemail.2010.vcxproj new file mode 100644 index 0000000000..cb6723a623 --- /dev/null +++ b/src/mod/applications/mod_voicemail/mod_voicemail.2010.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_voicemail + {D7F1E3F2-A3F4-474C-8555-15122571AF52} + mod_voicemail + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/asr_tts/mod_cepstral/mod_cepstral.2010.vcxproj b/src/mod/asr_tts/mod_cepstral/mod_cepstral.2010.vcxproj new file mode 100644 index 0000000000..2bc46efdca --- /dev/null +++ b/src/mod/asr_tts/mod_cepstral/mod_cepstral.2010.vcxproj @@ -0,0 +1,143 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_cepstral + {692F6330-4D87-4C82-81DF-40DB5892636E} + mod_cepstral + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + C:\Program Files\Cepstral\sdk\include;%(AdditionalIncludeDirectories) + + + + + swift.lib;%(AdditionalDependencies) + C:\Program Files\Cepstral\sdk\lib\winnt;C:\Program Files\Cepstral\sdk\lib\windows;%(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + C:\Program Files\Cepstral\sdk\include;%(AdditionalIncludeDirectories) + + + + + swift.lib;%(AdditionalDependencies) + C:\Program Files\Cepstral\sdk\lib\winnt;C:\Program Files\Cepstral\sdk\lib\windows;%(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + C:\Program Files\Cepstral\sdk\include;%(AdditionalIncludeDirectories) + + + + + swift.lib;%(AdditionalDependencies) + C:\Program Files\Cepstral\sdk\lib\winnt;C:\Program Files\Cepstral\sdk\lib\windows;%(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + C:\Program Files\Cepstral\sdk\include;%(AdditionalIncludeDirectories) + + + + + swift.lib;%(AdditionalDependencies) + C:\Program Files\Cepstral\sdk\lib\winnt;C:\Program Files\Cepstral\sdk\lib\windows;%(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/asr_tts/mod_flite/mod_flite.2010.vcxproj b/src/mod/asr_tts/mod_flite/mod_flite.2010.vcxproj new file mode 100644 index 0000000000..7ffe03ca40 --- /dev/null +++ b/src/mod/asr_tts/mod_flite/mod_flite.2010.vcxproj @@ -0,0 +1,271 @@ + + + + + Debug Static + Win32 + + + Debug Static + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release Static + Win32 + + + Release Static + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_flite + {66444AEE-554C-11DD-A9F0-8C5D56D89593} + mod_flite + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + true + true + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + ../../../../libs/flite-1.3.99/include;%(AdditionalIncludeDirectories) + APT_LIB_EXPORT;%(PreprocessorDefinitions) + + + + + %(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + ../../../../libs/flite-1.3.99/include;%(AdditionalIncludeDirectories) + APT_LIB_EXPORT;%(PreprocessorDefinitions) + + + + + %(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + ../../../../libs/flite-1.3.99/include;%(AdditionalIncludeDirectories) + APT_LIB_EXPORT;%(PreprocessorDefinitions) + + + + + %(AdditionalDependencies) + %(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + ../../../../libs/flite-1.3.99/include;%(AdditionalIncludeDirectories) + APT_LIB_EXPORT;%(PreprocessorDefinitions) + + + + + %(AdditionalDependencies) + %(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + ../../../../libs/flite-1.3.99/include;%(AdditionalIncludeDirectories) + + + + + %(AdditionalDependencies) + %(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + ../../../../libs/flite-1.3.99/include;%(AdditionalIncludeDirectories) + + + + + %(AdditionalDependencies) + %(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + ../../../../libs/flite-1.3.99/include;%(AdditionalIncludeDirectories) + + + + + %(AdditionalDependencies) + %(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + ../../../../libs/flite-1.3.99/include;%(AdditionalIncludeDirectories) + + + + + %(AdditionalDependencies) + %(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + + + + {d5d2bf72-29fe-4982-a9fa-82fdd086db1b} + false + + + {0ad1177e-1fd8-4643-9391-431467a11084} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.2010.vcxproj b/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.2010.vcxproj new file mode 100644 index 0000000000..72ac117f83 --- /dev/null +++ b/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.2010.vcxproj @@ -0,0 +1,198 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_unimrcp + {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD} + mod_unimrcp + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Configuration)\ + $(Platform)\$(Configuration)\ + + + + APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;LIBSOFIA_SIP_UA_STATIC;%(PreprocessorDefinitions) + + + + + $(SolutionDir)Debug/bin;%(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;LIBSOFIA_SIP_UA_STATIC;%(PreprocessorDefinitions) + + + + + $(SolutionDir)\$(Platform)Debug;%(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;LIBSOFIA_SIP_UA_STATIC;%(PreprocessorDefinitions) + + + + + $(SolutionDir)Release/bin;%(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;LIBSOFIA_SIP_UA_STATIC;%(PreprocessorDefinitions) + + + + + $(SolutionDir)\$(Platform)Debug;%(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + CompileAsC + CompileAsC + CompileAsC + CompileAsC + + + + + {13deeca0-bdd4-4744-a1a2-8eb0a44df3d2} + false + + + {b5a00bfa-6083-4fae-a097-71642d6473b5} + false + + + {72782932-37cc-46ae-8c7f-9a7b1a6ee108} + false + + + {12a49562-bab9-43a3-a21d-15b60bbb4c31} + false + + + {a9edac04-6a5f-4ba7-bc0d-cce7b255b6ea} + false + + + {1c320193-46a6-4b34-9c56-8ab584fc1b56} + false + + + {504b3154-7a4f-459d-9877-b951021c3f1f} + false + + + {746f3632-5bb2-4570-9453-31d6d58a7d8e} + false + + + {deb01acb-d65f-4a62-aed9-58c1054499e9} + false + + + {f057da7f-79e5-4b00-845c-ef446ef055e3} + false + + + {f6c55d93-b927-4483-bb69-15aef3dd2dff} + false + + + {70a49bc2-7500-41d0-b75d-edcc5be987a0} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/codecs/mod_amr/mod_amr.2010.vcxproj b/src/mod/codecs/mod_amr/mod_amr.2010.vcxproj new file mode 100644 index 0000000000..36845bb92e --- /dev/null +++ b/src/mod/codecs/mod_amr/mod_amr.2010.vcxproj @@ -0,0 +1,257 @@ + + + + + Debug Passthrough + Win32 + + + Debug Passthrough + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release Passthrough + Win32 + + + Release Passthrough + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_amr + {8DEB383C-4091-4F42-A56F-C9E46D552D79} + mod_amr + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(PlatformName)\Debug\mod\ + $(SolutionDir)$(PlatformName)\Release\mod\ + $(SolutionDir)$(PlatformName)\Release\mod\ + $(SolutionDir)$(PlatformName)\Debug\mod\ + + + + %(RootDir)%(Directory)..\..\..\..\libs\codec\libamr\src\include;%(AdditionalIncludeDirectories) + + + + + libamr.lib;%(AdditionalDependencies) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\codec\libamr\src\include;%(AdditionalIncludeDirectories) + + + + + libamr.lib;%(AdditionalDependencies) + false + + + MachineX64 + + + + + %(RootDir)%(Directory)..\..\..\..\libs\codec\libamr\src\include;%(AdditionalIncludeDirectories) + + + + + libamr.lib;%(AdditionalDependencies) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\codec\libamr\src\include;%(AdditionalIncludeDirectories) + + + + + libamr.lib;%(AdditionalDependencies) + false + + + MachineX64 + + + + + %(RootDir)%(Directory)..\..\..\..\libs\codec\libamr\src\include;%(AdditionalIncludeDirectories) + AMR_PASSTHROUGH;%(PreprocessorDefinitions) + + + + + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\codec\libamr\src\include;%(AdditionalIncludeDirectories) + AMR_PASSTHROUGH;%(PreprocessorDefinitions) + + + + + false + + + MachineX64 + + + + + %(RootDir)%(Directory)..\..\..\..\libs\codec\libamr\src\include;%(AdditionalIncludeDirectories) + AMR_PASSTHROUGH;%(PreprocessorDefinitions) + + + + + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\codec\libamr\src\include;%(AdditionalIncludeDirectories) + AMR_PASSTHROUGH;%(PreprocessorDefinitions) + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/codecs/mod_bv/mod_bv.2010.vcxproj b/src/mod/codecs/mod_bv/mod_bv.2010.vcxproj new file mode 100644 index 0000000000..06851b5b24 --- /dev/null +++ b/src/mod/codecs/mod_bv/mod_bv.2010.vcxproj @@ -0,0 +1,139 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_bv + {D5C87B19-150D-4EF3-A671-96589BD2D14A} + mod_bv + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + %(RootDir)%(Directory)..\..\..\..\libs\broadvoice\src\broadvoice;%(AdditionalIncludeDirectories) + + + + + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\broadvoice\src\broadvoice;%(AdditionalIncludeDirectories) + + + + + false + + + MachineX64 + + + + + %(RootDir)%(Directory)..\..\..\..\libs\broadvoice\src\broadvoice;%(AdditionalIncludeDirectories) + + + + + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\broadvoice\src\broadvoice;%(AdditionalIncludeDirectories) + + + + + false + + + MachineX64 + + + + + + + + {cf70f278-3364-4395-a2e1-23501c9b8ad2} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/codecs/mod_celt/Makefile b/src/mod/codecs/mod_celt/Makefile index f264210785..cdcc045bdb 100644 --- a/src/mod/codecs/mod_celt/Makefile +++ b/src/mod/codecs/mod_celt/Makefile @@ -15,6 +15,7 @@ $(CELT_DIR): $(CELT_BUILDDIR)/Makefile: $(CELT_DIR) mkdir -p $(CELT_BUILDDIR) cd $(CELT_BUILDDIR) && $(DEFAULT_VARS) $(CELT_DIR)/configure $(DEFAULT_ARGS) --srcdir=$(CELT_DIR) + $(TOUCH_TARGET) $(CELT_LA): $(CELT_BUILDDIR)/Makefile cd $(CELT_BUILDDIR) && $(MAKE) diff --git a/src/mod/codecs/mod_celt/mod_celt.vcxproj b/src/mod/codecs/mod_celt/mod_celt.vcxproj new file mode 100644 index 0000000000..01c55d4217 --- /dev/null +++ b/src/mod/codecs/mod_celt/mod_celt.vcxproj @@ -0,0 +1,142 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {4D418176-3B33-47E6-A63E-01BA34ADD21C} + mod_celt + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + ..\..\..\..\libs\celt-0.7.1\libcelt;%(AdditionalIncludeDirectories) + + + + + false + + + + + + + X64 + + + ..\..\..\..\libs\celt-0.7.1\libcelt;%(AdditionalIncludeDirectories) + + + + + false + + + MachineX64 + + + + + ..\..\..\..\libs\celt-0.7.1\libcelt;%(AdditionalIncludeDirectories) + + + + + false + + + + + + + X64 + + + ..\..\..\..\libs\celt-0.7.1\libcelt;%(AdditionalIncludeDirectories) + + + + + false + + + MachineX64 + + + + + + + + {abb71a76-42b0-47a4-973a-42e3d920c6fd} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/codecs/mod_g723_1/mod_g723_1.2010.vcxproj b/src/mod/codecs/mod_g723_1/mod_g723_1.2010.vcxproj new file mode 100644 index 0000000000..7e9e979798 --- /dev/null +++ b/src/mod/codecs/mod_g723_1/mod_g723_1.2010.vcxproj @@ -0,0 +1,264 @@ + + + + + Debug Passthrough + Win32 + + + Debug Passthrough + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release Passthrough + Win32 + + + Release Passthrough + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_g723_1 + {FEA1EEF7-876F-48DE-88BF-C0E3E606D758} + mod_g723_1 + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(PlatformName)\Debug\mod\ + $(SolutionDir)$(PlatformName)\Debug\mod\ + $(SolutionDir)$(PlatformName)\Release\mod\ + $(SolutionDir)$(PlatformName)\Release\mod\ + + + + %(RootDir)%(Directory)..\..\..\..\libs\codec\libg723\src\include;%(AdditionalIncludeDirectories) + + + + + libg723.lib;%(AdditionalDependencies) + false + + + $(OutDir)mod_g723_1.lib + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\codec\libg723\src\include;%(AdditionalIncludeDirectories) + + + + + libg723.lib;%(AdditionalDependencies) + + + false + + + $(OutDir)mod_g723_1.lib + MachineX64 + + + + + %(RootDir)%(Directory)..\..\..\..\libs\codec\libg723\src\include;%(AdditionalIncludeDirectories) + + + + + libg723.lib;%(AdditionalDependencies) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\codec\libg723\src\include;%(AdditionalIncludeDirectories) + + + + + libg723.lib;%(AdditionalDependencies) + false + + + MachineX64 + + + + + %(RootDir)%(Directory)..\..\..\..\libs\codec\libg723\src\include;%(AdditionalIncludeDirectories) + G723_PASSTHROUGH;%(PreprocessorDefinitions) + + + + + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\codec\libg723\src\include;%(AdditionalIncludeDirectories) + G723_PASSTHROUGH;%(PreprocessorDefinitions) + + + + + false + + + MachineX64 + + + + + %(RootDir)%(Directory)..\..\..\..\libs\codec\libg723\src\include;%(AdditionalIncludeDirectories) + G723_PASSTHROUGH;%(PreprocessorDefinitions) + + + + + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\codec\libg723\src\include;%(AdditionalIncludeDirectories) + G723_PASSTHROUGH;%(PreprocessorDefinitions) + + + + + $(SolutionDir)$(Platform)\release/mod/$(ProjectName).dll + false + + + MachineX64 + + + + + + + + {f6c55d93-b927-4483-bb69-15aef3dd2dff} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/codecs/mod_g729/mod_g729.2010.vcxproj b/src/mod/codecs/mod_g729/mod_g729.2010.vcxproj new file mode 100644 index 0000000000..e7d89eefa7 --- /dev/null +++ b/src/mod/codecs/mod_g729/mod_g729.2010.vcxproj @@ -0,0 +1,263 @@ + + + + + Debug Passthrough + Win32 + + + Debug Passthrough + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release Passthrough + Win32 + + + Release Passthrough + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_g729 + {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0} + mod_g729 + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(PlatformName)\Debug\mod\ + $(SolutionDir)$(PlatformName)\Debug\mod\ + $(SolutionDir)$(PlatformName)\Release\mod\ + $(SolutionDir)$(PlatformName)\Release\mod\ + + + + %(RootDir)%(Directory)..\..\..\..\libs\codec\libg729\src\include;%(AdditionalIncludeDirectories) + + + + + libg729.lib;FreeSwitchCore.lib;%(AdditionalDependencies) + %(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\codec\libg729\src\include;%(AdditionalIncludeDirectories) + + + + + libg729.lib;FreeSwitchCore.lib;%(AdditionalDependencies) + + + %(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + %(RootDir)%(Directory)..\..\..\..\libs\codec\libg729\src\include;%(AdditionalIncludeDirectories) + + + + + libg729.lib;%(AdditionalDependencies) + %(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\codec\libg729\src\include;%(AdditionalIncludeDirectories) + + + + + libg729.lib;%(AdditionalDependencies) + %(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + + + %(RootDir)%(Directory)..\..\..\..\libs\codec\libg729\src\include;%(AdditionalIncludeDirectories) + G729_PASSTHROUGH;%(PreprocessorDefinitions) + + + + + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\codec\libg729\src\include;%(AdditionalIncludeDirectories) + G729_PASSTHROUGH;%(PreprocessorDefinitions) + + + + + false + + + MachineX64 + + + + + %(RootDir)%(Directory)..\..\..\..\libs\codec\libg729\src\include;%(AdditionalIncludeDirectories) + G729_PASSTHROUGH;%(PreprocessorDefinitions) + + + + + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\codec\libg729\src\include;%(AdditionalIncludeDirectories) + G729_PASSTHROUGH;%(PreprocessorDefinitions) + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/codecs/mod_h26x/mod_h26x.2010.vcxproj b/src/mod/codecs/mod_h26x/mod_h26x.2010.vcxproj new file mode 100644 index 0000000000..7c639a226b --- /dev/null +++ b/src/mod/codecs/mod_h26x/mod_h26x.2010.vcxproj @@ -0,0 +1,139 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_h26x + {2C3C2423-234B-4772-8899-D3B137E5CA35} + mod_h26x + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + %(RootDir)%(Directory)..\..\..\..\libs\libresample\include;%(AdditionalIncludeDirectories) + + + + + $(ProjectDir)..\..\..\..\libs\libresample\win;%(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\libresample\include;%(AdditionalIncludeDirectories) + + + + + $(ProjectDir)..\..\..\..\libs\libresample\win;%(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + %(RootDir)%(Directory)..\..\..\..\libs\libresample\include;%(AdditionalIncludeDirectories) + + + + + $(ProjectDir)..\..\..\..\libs\libresample\win;%(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\libresample\include;%(AdditionalIncludeDirectories) + + + + + $(ProjectDir)..\..\..\..\libs\libresample\win;%(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/codecs/mod_ilbc/mod_ilbc.2010.vcxproj b/src/mod/codecs/mod_ilbc/mod_ilbc.2010.vcxproj new file mode 100644 index 0000000000..4e975af142 --- /dev/null +++ b/src/mod/codecs/mod_ilbc/mod_ilbc.2010.vcxproj @@ -0,0 +1,143 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_ilbc + {D3EC0AFF-76FC-4210-A825-9A17410660A3} + mod_ilbc + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + %(RootDir)%(Directory)..\..\..\..\libs\ilbc\src\ilbc;%(AdditionalIncludeDirectories) + + + + + ..\..\..\..\libs\codec\ilbc\$(OutDir);%(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\ilbc\src\ilbc;%(AdditionalIncludeDirectories) + + + + + ..\..\..\..\libs\codec\ilbc\$(OutDir);%(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + %(RootDir)%(Directory)..\..\..\..\libs\ilbc\src\ilbc;%(AdditionalIncludeDirectories) + + + + + ..\..\..\..\libs\codec\ilbc\$(OutDir);%(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\ilbc\src\ilbc;%(AdditionalIncludeDirectories) + + + + + ..\..\..\..\libs\codec\ilbc\$(OutDir);%(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + + + + {9a5ddf08-c88c-4a35-b7f6-d605228446bd} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/codecs/mod_silk/mod_silk.2010.vcxproj b/src/mod/codecs/mod_silk/mod_silk.2010.vcxproj new file mode 100644 index 0000000000..80e84d9a7a --- /dev/null +++ b/src/mod/codecs/mod_silk/mod_silk.2010.vcxproj @@ -0,0 +1,139 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_silk + {AFA983D6-4569-4F88-BA94-555ED00FD9A8} + mod_silk + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + %(RootDir)%(Directory)..\..\..\..\libs\silk\interface;%(AdditionalIncludeDirectories) + + + + + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\silk\interface;%(AdditionalIncludeDirectories) + + + + + false + + + MachineX64 + + + + + %(RootDir)%(Directory)..\..\..\..\libs\silk\interface;%(AdditionalIncludeDirectories) + + + + + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\silk\interface;%(AdditionalIncludeDirectories) + + + + + false + + + MachineX64 + + + + + + + + {56b91d01-9150-4bbf-afa1-5b68ab991b76} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/codecs/mod_siren/mod_siren.2010.vcxproj b/src/mod/codecs/mod_siren/mod_siren.2010.vcxproj new file mode 100644 index 0000000000..1b1ddef4d4 --- /dev/null +++ b/src/mod/codecs/mod_siren/mod_siren.2010.vcxproj @@ -0,0 +1,139 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_siren + {0B6C905B-142E-4999-B39D-92FF7951E921} + mod_siren + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + %(RootDir)%(Directory)..\..\..\..\libs\libg722_1\src\g722_1;%(RootDir)%(Directory)..\..\..\..\libs\libg722_1\src\msvc;%(AdditionalIncludeDirectories) + + + + + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\libg722_1\src\g722_1;%(RootDir)%(Directory)..\..\..\..\libs\libg722_1\src\msvc;%(AdditionalIncludeDirectories) + + + + + false + + + MachineX64 + + + + + %(RootDir)%(Directory)..\..\..\..\libs\libg722_1\src\g722_1;%(RootDir)%(Directory)..\..\..\..\libs\libg722_1\src\msvc;%(AdditionalIncludeDirectories) + + + + + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\libg722_1\src\g722_1;%(RootDir)%(Directory)..\..\..\..\libs\libg722_1\src\msvc;%(AdditionalIncludeDirectories) + + + + + false + + + MachineX64 + + + + + + + + {1bc8a8ec-e03b-44df-bcd9-088650f4d29c} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/codecs/mod_speex/mod_speex.2010.vcxproj b/src/mod/codecs/mod_speex/mod_speex.2010.vcxproj new file mode 100644 index 0000000000..0d472039a4 --- /dev/null +++ b/src/mod/codecs/mod_speex/mod_speex.2010.vcxproj @@ -0,0 +1,146 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_speex + {5580D60E-0F77-4716-9CD4-B8E5986FA375} + mod_speex + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + %(RootDir)%(Directory)..\..\..\..\libs\speex\include;%(RootDir)%(Directory)..\..\..\..\libs\speex\include\speex;%(AdditionalIncludeDirectories) + + + + + $(ProjectDir)..\..\..\..\libs\speex-1.1.11.1\win32\libspeex\$(OutDir);%(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\speex\include;%(RootDir)%(Directory)..\..\..\..\libs\speex\include\speex;%(AdditionalIncludeDirectories) + + + + + $(ProjectDir)..\..\..\..\libs\speex-1.1.11.1\win32\libspeex\$(OutDir);%(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + %(RootDir)%(Directory)..\..\..\..\libs\speex\include;%(RootDir)%(Directory)..\..\..\..\libs\speex\include\speex;%(AdditionalIncludeDirectories) + + + + + $(ProjectDir)..\..\..\..\libs\speex-1.1.11.1\win32\libspeex\$(OutDir);%(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\speex\include;%(RootDir)%(Directory)..\..\..\..\libs\speex\include\speex;%(AdditionalIncludeDirectories) + + + + + $(ProjectDir)..\..\..\..\libs\speex-1.1.11.1\win32\libspeex\$(OutDir);%(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + + + + {03207781-0d1c-4db3-a71d-45c608f28dbd} + false + + + {e972c52f-9e85-4d65-b19c-031e511e9db4} + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/dialplans/mod_dialplan_asterisk/mod_dialplan_asterisk.2010.vcxproj b/src/mod/dialplans/mod_dialplan_asterisk/mod_dialplan_asterisk.2010.vcxproj new file mode 100644 index 0000000000..f93d90e499 --- /dev/null +++ b/src/mod/dialplans/mod_dialplan_asterisk/mod_dialplan_asterisk.2010.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_dialplan_asterisk + {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24} + mod_dialplan_asterisk + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/dialplans/mod_dialplan_directory/mod_dialplan_directory.2010.vcxproj b/src/mod/dialplans/mod_dialplan_directory/mod_dialplan_directory.2010.vcxproj new file mode 100644 index 0000000000..0f222871b2 --- /dev/null +++ b/src/mod/dialplans/mod_dialplan_directory/mod_dialplan_directory.2010.vcxproj @@ -0,0 +1,135 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_dialplan_directory + {A27CCA23-1541-4337-81A4-F0A6413078A0} + mod_dialplan_directory + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {f6c55d93-b927-4483-bb69-15aef3dd2dff} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.2010.vcxproj b/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.2010.vcxproj new file mode 100644 index 0000000000..66c32cef1e --- /dev/null +++ b/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.2010.vcxproj @@ -0,0 +1,135 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_dialplan_xml + {07113B25-D3AF-4E04-BA77-4CD1171F022C} + mod_dialplan_xml + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {f6c55d93-b927-4483-bb69-15aef3dd2dff} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/directories/mod_ldap/mod_ldap.2010.vcxproj b/src/mod/directories/mod_ldap/mod_ldap.2010.vcxproj new file mode 100644 index 0000000000..916adba65b --- /dev/null +++ b/src/mod/directories/mod_ldap/mod_ldap.2010.vcxproj @@ -0,0 +1,291 @@ + + + + + Debug MS-LDAP + Win32 + + + Debug MS-LDAP + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release MS-LDAP + Win32 + + + Release MS-LDAP + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_ldap + {EC3E5C7F-EE09-47E2-80FE-546363D14A98} + mod_ldap + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + true + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + false + false + false + $(SolutionDir)$(PlatformName)\Debug\mod\ + $(SolutionDir)$(PlatformName)\Debug\mod\ + $(SolutionDir)$(PlatformName)\Release\mod\ + $(SolutionDir)$(PlatformName)\Release\mod\ + + + + cscript /nologo "$(ProjectDir)..\..\..\..\w32\vsnet\getlibs.vbs" Mod_ldap Debug + + + %(RootDir)%(Directory)..\..\..\..\libs\openldap\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;LDAP_DEPRECATED;%(PreprocessorDefinitions) + + + + + olber32.lib;oldap_r.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\..\libs\openldap\$(OutDir);%(AdditionalLibraryDirectories) + false + + + + + + + cscript /nologo "$(ProjectDir)..\..\..\..\w32\vsnet\getlibs.vbs" Mod_ldap Debug + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\openldap\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;LDAP_DEPRECATED;%(PreprocessorDefinitions) + + + + + olber32.lib;oldap_r.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\..\libs\openldap\$(OutDir);%(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + cscript /nologo "$(ProjectDir)..\..\..\..\w32\vsnet\getlibs.vbs" Mod_ldap Release + + + %(RootDir)%(Directory)..\..\..\..\libs\openldap\include;%(AdditionalIncludeDirectories) + + + + + olber32.lib;oldap_r.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\..\libs\openldap\$(OutDir);%(AdditionalLibraryDirectories) + false + + + + + + + cscript /nologo "$(ProjectDir)..\..\..\..\w32\vsnet\getlibs.vbs" Mod_ldap Release + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\openldap\include;%(AdditionalIncludeDirectories) + + + + + olber32.lib;oldap_r.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\..\libs\openldap\$(OutDir);%(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + %(RootDir)%(Directory)..\..\..\..\libs\openldap\include;%(AdditionalIncludeDirectories) + MSLDAP;%(PreprocessorDefinitions) + + + + + Wldap32.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\..\libs\openldap\$(OutDir);%(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\openldap\include;%(AdditionalIncludeDirectories) + MSLDAP;%(PreprocessorDefinitions) + + + + + Wldap32.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\..\libs\openldap\$(OutDir);%(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + %(RootDir)%(Directory)..\..\..\..\libs\openldap\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;MSLDAP;%(PreprocessorDefinitions) + MultiThreadedDLL + + + + + Wldap32.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\..\libs\openldap\$(OutDir);%(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\openldap\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;MSLDAP;%(PreprocessorDefinitions) + MultiThreadedDLL + + + + + Wldap32.lib;%(AdditionalDependencies) + + + $(ProjectDir)..\..\..\..\libs\openldap\$(OutDir);%(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/endpoints/mod_dingaling/mod_dingaling.2010.vcxproj b/src/mod/endpoints/mod_dingaling/mod_dingaling.2010.vcxproj new file mode 100644 index 0000000000..150ca184c4 --- /dev/null +++ b/src/mod/endpoints/mod_dingaling/mod_dingaling.2010.vcxproj @@ -0,0 +1,156 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_dingaling + {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3} + mod_dingaling + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + %(RootDir)%(Directory)..\..\..\..\libs\libdingaling\src;%(AdditionalIncludeDirectories) + + + + + /NODEFAULTLIB:LIMBCTD %(AdditionalOptions) + $(ProjectDir)..\..\..\..\libs\libdingaling\$(OutDir);$(ProjectDir)..\..\..\..\libs\iksemel\$(OutDir);%(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\libdingaling\src;%(AdditionalIncludeDirectories) + + + + + /NODEFAULTLIB:LIMBCTD %(AdditionalOptions) + $(ProjectDir)..\..\..\..\libs\libdingaling\$(OutDir);$(ProjectDir)..\..\..\..\libs\iksemel\$(OutDir);%(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + %(RootDir)%(Directory)..\..\..\..\libs\libdingaling\src;%(AdditionalIncludeDirectories) + + + + + $(ProjectDir)..\..\..\..\libs\libdingaling\$(OutDir);$(ProjectDir)..\..\..\..\libs\iksemel\$(OutDir);%(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\libdingaling\src;%(AdditionalIncludeDirectories) + + + + + $(ProjectDir)..\..\..\..\libs\libdingaling\$(OutDir);$(ProjectDir)..\..\..\..\libs\iksemel\$(OutDir);%(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + + + + {1906d736-08bd-4ee1-924f-b536249b9a54} + false + + + {f057da7f-79e5-4b00-845c-ef446ef055e3} + + + {f6c55d93-b927-4483-bb69-15aef3dd2dff} + false + + + {e727e8f6-935d-46fe-8b0e-37834748a0e3} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/endpoints/mod_loopback/mod_loopback.2010.vcxproj b/src/mod/endpoints/mod_loopback/mod_loopback.2010.vcxproj new file mode 100644 index 0000000000..69d4d3bede --- /dev/null +++ b/src/mod/endpoints/mod_loopback/mod_loopback.2010.vcxproj @@ -0,0 +1,133 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_loopback + {B3F424EC-3D8F-417C-B244-3919D5E1A577} + mod_loopback + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;%(PreprocessorDefinitions) + + + + + false + + + + + + + X64 + + + WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;%(PreprocessorDefinitions) + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/endpoints/mod_opal/mod_opal_2010.vcxproj b/src/mod/endpoints/mod_opal/mod_opal_2010.vcxproj new file mode 100644 index 0000000000..efe610d5f2 --- /dev/null +++ b/src/mod/endpoints/mod_opal/mod_opal_2010.vcxproj @@ -0,0 +1,91 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + mod_opal + {05C9FB27-480E-4D53-B3B7-6338E2526666} + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + true + + + + %(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;ALLOW_SMP_DANGERS;%(PreprocessorDefinitions) + + + 4100;4101;%(DisableSpecificWarnings) + + + /NODEFAULTLIB:LIMBCTD %(AdditionalOptions) + opalsd.lib;ptlibsd.lib;%(AdditionalDependencies) + %(AdditionalLibraryDirectories) + false + + + + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + 4100;4101;%(DisableSpecificWarnings) + + + opals.lib;ptlibs.lib;%(AdditionalDependencies) + %(AdditionalLibraryDirectories) + false + + + + + + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/endpoints/mod_portaudio/mod_PortAudio.2010.vcxproj b/src/mod/endpoints/mod_portaudio/mod_PortAudio.2010.vcxproj new file mode 100644 index 0000000000..bf32b949e2 --- /dev/null +++ b/src/mod/endpoints/mod_portaudio/mod_PortAudio.2010.vcxproj @@ -0,0 +1,167 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_PortAudio + {5FD31A25-5D83-4794-8BEE-904DAD84CE71} + mod_PortAudio + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + %(RootDir)%(Directory)..\..\..\..\libs\portaudio\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;ALLOW_SMP_DANGERS;%(PreprocessorDefinitions) + + + 4100;4101;%(DisableSpecificWarnings) + + + /NODEFAULTLIB:LIMBCTD %(AdditionalOptions) + ksuser.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\..\libs\portaudio\winvc\Lib;%(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\portaudio\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;ALLOW_SMP_DANGERS;%(PreprocessorDefinitions) + + + 4100;4101;%(DisableSpecificWarnings) + + + /NODEFAULTLIB:LIMBCTD %(AdditionalOptions) + ksuser.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\..\libs\portaudio\winvc\Lib;%(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + %(RootDir)%(Directory)..\..\..\..\libs\portaudio\include;%(AdditionalIncludeDirectories) + ALLOW_SMP_DANGERS;%(PreprocessorDefinitions) + + + 4100;4101;%(DisableSpecificWarnings) + + + ksuser.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\..\libs\portaudio\winvc\Lib;%(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\portaudio\include;%(AdditionalIncludeDirectories) + ALLOW_SMP_DANGERS;%(PreprocessorDefinitions) + + + 4100;4101;%(DisableSpecificWarnings) + + + ksuser.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\..\libs\portaudio\winvc\Lib;%(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + + + + + + + + + + {0a18a071-125e-442f-aff7-a3f68abecf99} + false + + + {f6c55d93-b927-4483-bb69-15aef3dd2dff} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/endpoints/mod_skinny/mod_skinny.c b/src/mod/endpoints/mod_skinny/mod_skinny.c index 63900dcc37..335edaaa6f 100644 --- a/src/mod/endpoints/mod_skinny/mod_skinny.c +++ b/src/mod/endpoints/mod_skinny/mod_skinny.c @@ -957,10 +957,16 @@ switch_status_t channel_answer_channel(switch_core_session_t *session) switch_channel_get_variable(channel, "skinny_device_name"), atoi(switch_channel_get_variable(channel, "skinny_device_instance")), &listener); if (listener) { + int x = 0; skinny_session_start_media(session, listener, atoi(switch_channel_get_variable(channel, "skinny_line_instance"))); /* Wait for media */ while(!switch_test_flag(tech_pvt, TFLAG_IO)) { switch_cond_next(); + if (++x > 1000) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "Wait tooo long to answer %s:%s\n", + switch_channel_get_variable(channel, "skinny_device_name"), switch_channel_get_variable(channel, "skinny_device_instance")); + return SWITCH_STATUS_FALSE; + } } } else { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "Unable to find listener to answer %s:%s\n", @@ -976,28 +982,26 @@ switch_status_t channel_receive_message(switch_core_session_t *session, switch_c switch (msg->message_id) { case SWITCH_MESSAGE_INDICATE_ANSWER: - { - switch_clear_flag_locked(tech_pvt, TFLAG_EARLY_MEDIA); - channel_answer_channel(session); - } - break; + switch_clear_flag_locked(tech_pvt, TFLAG_EARLY_MEDIA); + return channel_answer_channel(session); + case SWITCH_MESSAGE_INDICATE_DISPLAY: - { - skinny_session_send_call_info_all(session); - } + skinny_session_send_call_info_all(session); + return SWITCH_STATUS_SUCCESS; + case SWITCH_MESSAGE_INDICATE_PROGRESS: - { - if (!switch_test_flag(tech_pvt, TFLAG_EARLY_MEDIA)) { - /* early media */ - switch_set_flag_locked(tech_pvt, TFLAG_EARLY_MEDIA); - channel_answer_channel(session); - } + if (!switch_test_flag(tech_pvt, TFLAG_EARLY_MEDIA)) { + /* early media */ + switch_set_flag_locked(tech_pvt, TFLAG_EARLY_MEDIA); + return channel_answer_channel(session); } + return SWITCH_STATUS_SUCCESS; + default: - break; + return SWITCH_STATUS_SUCCESS; + } - return SWITCH_STATUS_SUCCESS; } /* Make sure when you have 2 sessions in the same scope that you pass the appropriate one to the routines diff --git a/src/mod/endpoints/mod_skinny/mod_skinny_2010.vcxproj b/src/mod/endpoints/mod_skinny/mod_skinny_2010.vcxproj new file mode 100644 index 0000000000..b1fba99099 --- /dev/null +++ b/src/mod/endpoints/mod_skinny/mod_skinny_2010.vcxproj @@ -0,0 +1,101 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + mod_skinny + {CC1DD008-9406-448D-A0AD-33C3186CFADB} + mod_skinny + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + true + + + + %(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;%(PreprocessorDefinitions) + + + 4100;4101;%(DisableSpecificWarnings) + + + /NODEFAULTLIB:LIMBCTD %(AdditionalOptions) + %(AdditionalLibraryDirectories) + false + + + + + + + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + 4100;4101;%(DisableSpecificWarnings) + + + %(AdditionalLibraryDirectories) + false + + + + + + + + + + + + + + + + + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/endpoints/mod_skinny/skinny_protocol.c b/src/mod/endpoints/mod_skinny/skinny_protocol.c index c71b7333da..9486c5c869 100644 --- a/src/mod/endpoints/mod_skinny/skinny_protocol.c +++ b/src/mod/endpoints/mod_skinny/skinny_protocol.c @@ -914,13 +914,19 @@ switch_status_t skinny_perform_send_reply(listener_t *listener, const char *file len = reply->length+8; ptr = (char *) reply; - switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, SWITCH_LOG_DEBUG, - "Sending %s (type=%x,length=%d) to %s:%d.\n", - skinny_message_type2str(reply->type), reply->type, reply->length, - listener->device_name, listener->device_instance); - switch_socket_send(listener->sock, ptr, &len); - - return SWITCH_STATUS_SUCCESS; + if (listener_is_ready(listener)) { + switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, SWITCH_LOG_DEBUG, + "Sending %s (type=%x,length=%d) to %s:%d.\n", + skinny_message_type2str(reply->type), reply->type, reply->length, + listener->device_name, listener->device_instance); + return switch_socket_send(listener->sock, ptr, &len); + } else { + switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, SWITCH_LOG_WARNING, + "Not sending %s (type=%x,length=%d) to %s:%d while not ready.\n", + skinny_message_type2str(reply->type), reply->type, reply->length, + listener->device_name, listener->device_instance); + return SWITCH_STATUS_FALSE; + } } /* For Emacs: diff --git a/src/mod/endpoints/mod_skypopen/mod_skypopen.2010.vcxproj b/src/mod/endpoints/mod_skypopen/mod_skypopen.2010.vcxproj new file mode 100644 index 0000000000..fd3579d509 --- /dev/null +++ b/src/mod/endpoints/mod_skypopen/mod_skypopen.2010.vcxproj @@ -0,0 +1,87 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + mod_skypopen + {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F} + mod_skypopen + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + %(RootDir)%(Directory)..\..\..\..\libs\spandsp\src\msvc;%(RootDir)%(Directory)..\..\..\..\libs\spandsp\src;%(RootDir)%(Directory)..\..\..\..\libs\tiff-3.8.2\libtiff;%(AdditionalIncludeDirectories) + + + Level4 + false + + + rpcrt4.lib "..\..\..\..\debug\libtiff.lib" "..\..\..\..\libs\spandsp\src\debug\spandsp.lib" %(AdditionalOptions) + false + + + + + + + %(RootDir)%(Directory)..\..\..\..\libs\spandsp\src\msvc;%(RootDir)%(Directory)..\..\..\..\libs\spandsp\src;%(RootDir)%(Directory)..\..\..\..\libs\tiff-3.8.2\libtiff;%(AdditionalIncludeDirectories) + + + + + rpcrt4.lib "..\..\..\..\release\libtiff.lib" "..\..\..\..\libs\spandsp\src\release\spandsp.lib" %(AdditionalOptions) + false + + + + + + + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.2010.vcxproj b/src/mod/endpoints/mod_sofia/mod_sofia.2010.vcxproj new file mode 100644 index 0000000000..21505d007d --- /dev/null +++ b/src/mod/endpoints/mod_sofia/mod_sofia.2010.vcxproj @@ -0,0 +1,172 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_sofia + {0DF3ABD0-DDC0-4265-B778-07C66780979B} + mod_sofia + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + %(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\su;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\nua;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\win32;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\url;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\sip;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\msg;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\sdp;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\nta;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\nea;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\soa;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\iptsec;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\bnf;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\tport;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\sresolv;%(AdditionalIncludeDirectories) + LIBSOFIA_SIP_UA_STATIC;PTW32_STATIC_LIB;LIBSRES_STATIC;%(PreprocessorDefinitions) + + + 4201;%(DisableSpecificWarnings) + + + ws2_32.lib;advapi32.lib;iphlpapi.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\..\libs\sofia-sip\win32\pthread;%(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\su;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\nua;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\win32;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\url;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\sip;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\msg;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\sdp;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\nta;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\nea;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\soa;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\iptsec;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\bnf;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\tport;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\sresolv;%(AdditionalIncludeDirectories) + LIBSOFIA_SIP_UA_STATIC;PTW32_STATIC_LIB;LIBSRES_STATIC;%(PreprocessorDefinitions) + + + 4201;%(DisableSpecificWarnings) + + + ws2_32.lib;advapi32.lib;iphlpapi.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\..\libs\sofia-sip\win32\pthread;%(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + %(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\su;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\nua;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\win32;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\url;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\sip;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\msg;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\sdp;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\nta;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\nea;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\soa;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\iptsec;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\bnf;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\tport;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\sresolv;%(AdditionalIncludeDirectories) + LIBSOFIA_SIP_UA_STATIC;PTW32_STATIC_LIB;LIBSRES_STATIC;%(PreprocessorDefinitions) + + + 4201;%(DisableSpecificWarnings) + + + ws2_32.lib;advapi32.lib;iphlpapi.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\..\libs\sofia-sip\win32\pthread;%(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\su;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\nua;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\win32;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\url;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\sip;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\msg;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\sdp;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\nta;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\nea;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\soa;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\iptsec;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\bnf;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\tport;%(RootDir)%(Directory)..\..\..\..\libs\sofia-sip\libsofia-sip-ua\sresolv;%(AdditionalIncludeDirectories) + LIBSOFIA_SIP_UA_STATIC;PTW32_STATIC_LIB;LIBSRES_STATIC;%(PreprocessorDefinitions) + + + 4201;%(DisableSpecificWarnings) + + + ws2_32.lib;advapi32.lib;iphlpapi.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\..\libs\sofia-sip\win32\pthread;%(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + + + + + + + + + + + + + {f6c55d93-b927-4483-bb69-15aef3dd2dff} + false + + + {df018947-0fff-4eb3-bdee-441dc81da7a4} + false + + + {70a49bc2-7500-41d0-b75d-edcc5be987a0} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index a49a198827..79a393a464 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -121,7 +121,7 @@ static switch_status_t sofia_on_init(switch_core_session_t *session) } } - end: + end: switch_mutex_unlock(tech_pvt->sofia_mutex); @@ -242,9 +242,15 @@ char *generate_pai_str(switch_core_session_t *session) { private_object_t *tech_pvt = (private_object_t *) switch_core_session_get_private(session); const char *callee_name = NULL, *callee_number = NULL; - const char *header, *ua = switch_channel_get_variable(tech_pvt->channel, "sip_user_agent"); + const char *var, *header, *ua = switch_channel_get_variable(tech_pvt->channel, "sip_user_agent"); char *pai = NULL; + if (!sofia_test_pflag(tech_pvt->profile, PFLAG_CID_IN_1XX) || + ((var = switch_channel_get_variable(tech_pvt->channel, "sip_cid_in_1xx")) && switch_false(var))) { + return NULL; + } + + if (zstr((callee_name = switch_channel_get_variable(tech_pvt->channel, "effective_callee_id_name"))) && zstr((callee_name = switch_channel_get_variable(tech_pvt->channel, "sip_callee_id_name")))) { callee_name = switch_channel_get_variable(tech_pvt->channel, "callee_id_name"); @@ -511,9 +517,11 @@ switch_status_t sofia_on_hangup(switch_core_session_t *session) switch_channel_set_variable(channel, "sip_hangup_disposition", "send_refuse"); } if (!sofia_test_flag(tech_pvt, TFLAG_BYE)) { + char *cid = generate_pai_str(session); + nua_respond(tech_pvt->nh, sip_cause, sip_status_phrase(sip_cause), TAG_IF(!zstr(reason), SIPTAG_REASON_STR(reason)), - SIPTAG_HEADER_STR(generate_pai_str(session)), TAG_IF(!zstr(bye_headers), SIPTAG_HEADER_STR(bye_headers)), TAG_END()); + TAG_IF(cid, SIPTAG_HEADER_STR(cid)), TAG_IF(!zstr(bye_headers), SIPTAG_HEADER_STR(bye_headers)), TAG_END()); } } } @@ -689,11 +697,12 @@ static switch_status_t sofia_answer_channel(switch_core_session_t *session) if (!sofia_test_flag(tech_pvt, TFLAG_BYE)) { char *extra_headers = sofia_glue_get_extra_headers(channel, SOFIA_SIP_RESPONSE_HEADER_PREFIX); + char *cid = generate_pai_str(session); if (switch_channel_test_flag(tech_pvt->channel, CF_PROXY_MODE) && tech_pvt->early_sdp && strcmp(tech_pvt->early_sdp, tech_pvt->local_sdp_str)) { /* The SIP RFC for SOA forbids sending a 183 with one sdp then a 200 with another but it won't do us much good unless we do so in this case we will abandon the SOA rules and go rogue. - */ + */ sofia_clear_flag(tech_pvt, TFLAG_ENABLE_SOA); } @@ -702,7 +711,7 @@ static switch_status_t sofia_answer_channel(switch_core_session_t *session) NUTAG_AUTOANSWER(0), TAG_IF(call_info, SIPTAG_CALL_INFO_STR(call_info)), TAG_IF(sticky, NUTAG_PROXY(tech_pvt->record_route)), - SIPTAG_HEADER_STR(generate_pai_str(session)), + TAG_IF(cid, SIPTAG_HEADER_STR(cid)), NUTAG_SESSION_TIMER(session_timeout), SIPTAG_CONTACT_STR(tech_pvt->reply_contact), SIPTAG_CALL_INFO_STR(switch_channel_get_variable(tech_pvt->channel, SOFIA_SIP_HEADER_PREFIX "call_info")), @@ -717,7 +726,7 @@ static switch_status_t sofia_answer_channel(switch_core_session_t *session) NUTAG_MEDIA_ENABLE(0), TAG_IF(call_info, SIPTAG_CALL_INFO_STR(call_info)), TAG_IF(sticky, NUTAG_PROXY(tech_pvt->record_route)), - SIPTAG_HEADER_STR(generate_pai_str(session)), + TAG_IF(cid, SIPTAG_HEADER_STR(cid)), NUTAG_SESSION_TIMER(session_timeout), SIPTAG_CONTACT_STR(tech_pvt->reply_contact), SIPTAG_CALL_INFO_STR(switch_channel_get_variable(tech_pvt->channel, SOFIA_SIP_HEADER_PREFIX "call_info")), @@ -1091,7 +1100,7 @@ static switch_status_t sofia_read_frame(switch_core_session_t *session, switch_f tech_pvt->mismatch_count = 0; tech_pvt->last_ts = 0; } - skip: + skip: if ((bytes = tech_pvt->read_impl.encoded_bytes_per_packet)) { frames = (tech_pvt->read_frame.datalen / bytes); @@ -1936,7 +1945,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi } else if (code == 484 && msg->numeric_arg) { const char *to = switch_channel_get_variable(channel, "sip_to_uri"); const char *max_forwards = switch_channel_get_variable(channel, SWITCH_MAX_FORWARDS_VARIABLE); - + char *cid = generate_pai_str(session); char *to_uri = NULL; if (to) { @@ -1953,7 +1962,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi nua_respond(tech_pvt->nh, code, su_strdup(nua_handle_home(tech_pvt->nh), reason), TAG_IF(to_uri, SIPTAG_CONTACT_STR(to_uri)), SIPTAG_SUPPORTED_STR(NULL), SIPTAG_ACCEPT_STR(NULL), - SIPTAG_HEADER_STR(generate_pai_str(session)), + TAG_IF(cid, SIPTAG_HEADER_STR(cid)), TAG_IF(!zstr(extra_headers), SIPTAG_HEADER_STR(extra_headers)), TAG_IF(!zstr(max_forwards), SIPTAG_MAX_FORWARDS_STR(max_forwards)), TAG_END()); @@ -2031,7 +2040,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi !switch_channel_test_flag(channel, CF_EARLY_MEDIA) && !switch_channel_test_flag(channel, CF_ANSWERED)) { char *extra_header = sofia_glue_get_extra_headers(channel, SOFIA_SIP_PROGRESS_HEADER_PREFIX); const char *call_info = switch_channel_get_variable(channel, "presence_call_info_full"); - + char *cid = generate_pai_str(session); switch (ring_ready_val) { @@ -2039,7 +2048,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi nua_respond(tech_pvt->nh, SIP_182_QUEUED, SIPTAG_CONTACT_STR(tech_pvt->reply_contact), - SIPTAG_HEADER_STR(generate_pai_str(session)), + TAG_IF(cid, SIPTAG_HEADER_STR(cid)), TAG_IF(call_info, SIPTAG_CALL_INFO_STR(call_info)), TAG_IF(!zstr(extra_header), SIPTAG_HEADER_STR(extra_header)), TAG_IF(switch_stristr("update_display", tech_pvt->x_freeswitch_support_remote), @@ -2051,7 +2060,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi nua_respond(tech_pvt->nh, SIP_180_RINGING, SIPTAG_CONTACT_STR(tech_pvt->reply_contact), - SIPTAG_HEADER_STR(generate_pai_str(session)), + TAG_IF(cid, SIPTAG_HEADER_STR(cid)), TAG_IF(call_info, SIPTAG_CALL_INFO_STR(call_info)), TAG_IF(!zstr(extra_header), SIPTAG_HEADER_STR(extra_header)), TAG_IF(switch_stristr("update_display", tech_pvt->x_freeswitch_support_remote), @@ -2147,12 +2156,13 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi if (!sofia_test_flag(tech_pvt, TFLAG_BYE)) { char *extra_header = sofia_glue_get_extra_headers(channel, SOFIA_SIP_PROGRESS_HEADER_PREFIX); + char *cid = generate_pai_str(session); if (switch_channel_test_flag(tech_pvt->channel, CF_PROXY_MODE) && tech_pvt->early_sdp && strcmp(tech_pvt->early_sdp, tech_pvt->local_sdp_str)) { /* The SIP RFC for SOA forbids sending a 183 with one sdp then a 200 with another but it won't do us much good unless we do so in this case we will abandon the SOA rules and go rogue. - */ + */ sofia_clear_flag(tech_pvt, TFLAG_ENABLE_SOA); } @@ -2163,7 +2173,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi SIP_183_SESSION_PROGRESS, NUTAG_AUTOANSWER(0), TAG_IF(sticky, NUTAG_PROXY(tech_pvt->record_route)), - SIPTAG_HEADER_STR(generate_pai_str(session)), + TAG_IF(cid, SIPTAG_HEADER_STR(cid)), SIPTAG_CONTACT_STR(tech_pvt->reply_contact), SOATAG_REUSE_REJECTED(1), SOATAG_ORDERED_USER(1), @@ -2179,7 +2189,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi NUTAG_AUTOANSWER(0), NUTAG_MEDIA_ENABLE(0), TAG_IF(sticky, NUTAG_PROXY(tech_pvt->record_route)), - SIPTAG_HEADER_STR(generate_pai_str(session)), + TAG_IF(cid, SIPTAG_HEADER_STR(cid)), SIPTAG_CONTACT_STR(tech_pvt->reply_contact), SIPTAG_CONTENT_TYPE_STR("application/sdp"), SIPTAG_PAYLOAD_STR(tech_pvt->local_sdp_str), @@ -2197,7 +2207,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi break; } - end_lock: + end_lock: //if (msg->message_id == SWITCH_MESSAGE_INDICATE_ANSWER || msg->message_id == SWITCH_MESSAGE_INDICATE_PROGRESS) { //sofia_send_callee_id(session, NULL, NULL); @@ -2205,7 +2215,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi switch_mutex_unlock(tech_pvt->sofia_mutex); - end: + end: if (switch_channel_down(channel) || !tech_pvt || sofia_test_flag(tech_pvt, TFLAG_BYE)) { status = SWITCH_STATUS_FALSE; @@ -3148,7 +3158,7 @@ static switch_status_t cmd_profile(char **argv, int argc, switch_stream_handle_t stream->write_function(stream, "-ERR Unknown command!\n"); - done: + done: if (profile) { sofia_glue_release_profile(profile); } @@ -3446,7 +3456,7 @@ SWITCH_STANDARD_API(sofia_gateway_data_function) sofia_reg_release_gateway(gateway); - end: + end: switch_safe_free(mydata); return SWITCH_STATUS_SUCCESS; } @@ -3549,7 +3559,7 @@ SWITCH_STANDARD_API(sofia_function) stream->write_function(stream, "Unknown Command [%s]\n", argv[0]); } - done: + done: switch_safe_free(mycmd); return status; } @@ -3936,7 +3946,7 @@ static switch_call_cause_t sofia_outgoing_channel(switch_core_session_t *session if (switch_core_session_compare(session, nsession)) { /* It's another sofia channel! so lets cache what they use as a pt for telephone event so we can keep it the same - */ + */ private_object_t *ctech_pvt; ctech_pvt = switch_core_session_get_private(session); switch_assert(ctech_pvt != NULL); @@ -3969,14 +3979,14 @@ static switch_call_cause_t sofia_outgoing_channel(switch_core_session_t *session goto done; - error: + error: if (nsession) { switch_core_session_destroy(&nsession); } if (pool) { *pool = NULL; } - done: + done: if (profile) { if (cause == SWITCH_CAUSE_SUCCESS) { @@ -4130,12 +4140,12 @@ static void general_event_handler(switch_event_t *event) sql = switch_mprintf("select sip_user,sip_host,contact,profile_name,'%q','%q','%q' " "from sip_registrations where mwi_user='%s' and mwi_host='%q'", ct, es, switch_str_nil(body), switch_str_nil(user), switch_str_nil(host) - ); + ); } else { sql = switch_mprintf("select sip_user,sip_host,contact,profile_name,'%q','%q','%q' " "from sip_registrations where sip_user='%s' and sip_host='%q'", ct, es, switch_str_nil(body), switch_str_nil(user), switch_str_nil(host) - ); + ); } } @@ -4289,7 +4299,7 @@ static void general_event_handler(switch_event_t *event) sofia_glue_release_profile(profile); } - done: + done: switch_safe_free(local_dup); @@ -4453,7 +4463,7 @@ static switch_status_t list_profile_gateway(const char *line, const char *cursor status = SWITCH_STATUS_SUCCESS; } - end: + end: switch_safe_free(dup); @@ -4543,6 +4553,12 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_sofia_load) return SWITCH_STATUS_GENERR; } + if (switch_event_bind_removable(modname, SWITCH_EVENT_CUSTOM, MY_EVENT_RECOVERY, sofia_glue_track_event_handler, NULL, + &mod_sofia_globals.recovery_node) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind!\n"); + return SWITCH_STATUS_GENERR; + } + if (switch_event_bind(modname, SWITCH_EVENT_TRAP, SWITCH_EVENT_SUBCLASS_ANY, general_event_handler, NULL) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind!\n"); return SWITCH_STATUS_GENERR; @@ -4637,6 +4653,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_sofia_shutdown) switch_event_unbind(&mod_sofia_globals.roster_node); switch_event_unbind(&mod_sofia_globals.custom_node); switch_event_unbind(&mod_sofia_globals.mwi_node); + switch_event_unbind(&mod_sofia_globals.recovery_node); switch_event_unbind_callback(general_event_handler); while (mod_sofia_globals.threads) { diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index 6c986cc223..3723d3582c 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -83,6 +83,8 @@ typedef struct private_object private_object_t; #define MY_EVENT_REINVITE "sofia::reinvite" #define MY_EVENT_GATEWAY_ADD "sofia::gateway_add" #define MY_EVENT_GATEWAY_DEL "sofia::gateway_delete" +#define MY_EVENT_RECOVERY "sofia::recovery" +#define MY_EVENT_RECOVERY_SEND "sofia::recovery_send" #define MULTICAST_EVENT "multicast::event" #define SOFIA_REPLACES_HEADER "_sofia_replaces_" @@ -209,9 +211,11 @@ typedef enum { PFLAG_PASS_CALLEE_ID, PFLAG_LOG_AUTH_FAIL, PFLAG_TRACK_CALLS, + PFLAG_TRACK_CALLS_EVENTS, PFLAG_DESTROY, PFLAG_EXTENDED_INFO_PARSING, PFLAG_T38_PASSTHRU, + PFLAG_CID_IN_1XX, /* No new flags below this line */ PFLAG_MAX } PFLAGS; @@ -294,6 +298,7 @@ struct mod_sofia_globals { switch_event_node_t *roster_node; switch_event_node_t *custom_node; switch_event_node_t *mwi_node; + switch_event_node_t *recovery_node; int guess_mask; char guess_mask_str[16]; int debug_presence; @@ -760,8 +765,7 @@ void sofia_handle_sip_i_refer(nua_t *nua, sofia_profile_t *profile, nua_handle_t void sofia_handle_sip_i_info(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, switch_core_session_t *session, sip_t const *sip, tagi_t tags[]); -void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sofia_private_t *sofia_private, sip_t const *sip, - tagi_t tags[]); +void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sofia_private_t *sofia_private, sip_t const *sip, tagi_t tags[]); void sofia_reg_handle_sip_i_register(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sofia_private_t *sofia_private, sip_t const *sip, tagi_t tags[]); @@ -791,6 +795,7 @@ char *sofia_reg_find_reg_url(sofia_profile_t *profile, const char *user, const c void event_handler(switch_event_t *event); void sofia_presence_event_handler(switch_event_t *event); void sofia_presence_mwi_event_handler(switch_event_t *event); +void sofia_glue_track_event_handler(switch_event_t *event); void sofia_presence_cancel(void); switch_status_t config_sofia(int reload, char *profile_name); void sofia_reg_auth_challenge(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sofia_regtype_t regtype, const char *realm, int stale); @@ -909,7 +914,7 @@ void sofia_reg_release_gateway__(const char *file, const char *func, int line, s /* * Transport handling helper functions */ -sofia_transport_t sofia_glue_via2transport(const sip_via_t *via); +sofia_transport_t sofia_glue_via2transport(const sip_via_t * via); sofia_transport_t sofia_glue_url2transport(const url_t *url); sofia_transport_t sofia_glue_str2transport(const char *str); @@ -921,8 +926,7 @@ char *sofia_glue_strip_uri(const char *str); int sofia_glue_check_nat(sofia_profile_t *profile, const char *network_ip); int sofia_glue_transport_has_tls(const sofia_transport_t tp); const char *sofia_glue_get_unknown_header(sip_t const *sip, const char *name); -switch_status_t sofia_glue_build_crypto(private_object_t *tech_pvt, int index, switch_rtp_crypto_key_type_t type, - switch_rtp_crypto_direction_t direction); +switch_status_t sofia_glue_build_crypto(private_object_t *tech_pvt, int index, switch_rtp_crypto_key_type_t type, switch_rtp_crypto_direction_t direction); void sofia_glue_tech_patch_sdp(private_object_t *tech_pvt); switch_status_t sofia_glue_tech_proxy_remote_addr(private_object_t *tech_pvt); void sofia_presence_event_thread_start(void); diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 7731bf839b..b4634ea049 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -2249,6 +2249,12 @@ switch_status_t reconfig_sofia(sofia_profile_t *profile) } else { sofia_clear_pflag(profile, PFLAG_T38_PASSTHRU); } + } else if (!strcasecmp(var, "cid-in-1xx")) { + if (switch_true(val)) { + sofia_set_pflag(profile, PFLAG_CID_IN_1XX); + } else { + sofia_clear_pflag(profile, PFLAG_CID_IN_1XX); + } } else if (!strcasecmp(var, "dtmf-type")) { if (!strcasecmp(val, "rfc2833")) { profile->dtmf_type = DTMF_2833; @@ -2820,6 +2826,7 @@ switch_status_t config_sofia(int reload, char *profile_name) profile->shutdown_type = "false"; profile->local_network = "localnet.auto"; sofia_set_flag(profile, TFLAG_ENABLE_SOA); + sofia_set_pflag(profile, PFLAG_CID_IN_1XX); for (param = switch_xml_child(settings, "param"); param; param = param->next) { char *var = (char *) switch_xml_attr_soft(param, "name"); @@ -2861,6 +2868,12 @@ switch_status_t config_sofia(int reload, char *profile_name) } else { sofia_clear_pflag(profile, PFLAG_T38_PASSTHRU); } + } else if (!strcasecmp(var, "cid-in-1xx")) { + if (switch_true(val)) { + sofia_set_pflag(profile, PFLAG_CID_IN_1XX); + } else { + sofia_clear_pflag(profile, PFLAG_CID_IN_1XX); + } } else if (!strcasecmp(var, "disable-hold")) { if (switch_true(val)) { sofia_set_pflag(profile, PFLAG_DISABLE_HOLD); @@ -2936,8 +2949,13 @@ switch_status_t config_sofia(int reload, char *profile_name) } else { sofia_clear_pflag(profile, PFLAG_UUID_AS_CALLID); } - } else if (!strcasecmp(var, "track-calls") && switch_true(val)) { - sofia_set_pflag(profile, PFLAG_TRACK_CALLS); + } else if (!strcasecmp(var, "track-calls")) { + if (switch_true(val)) { + sofia_set_pflag(profile, PFLAG_TRACK_CALLS); + } else if (!strcasecmp(val, "events")) { + sofia_set_pflag(profile, PFLAG_TRACK_CALLS); + sofia_set_pflag(profile, PFLAG_TRACK_CALLS_EVENTS); + } } else if (!strcasecmp(var, "NDLB-received-in-nat-reg-contact") && switch_true(val)) { sofia_set_pflag(profile, PFLAG_RECIEVED_IN_NAT_REG_CONTACT); } else if (!strcasecmp(var, "aggressive-nat-detection") && switch_true(val)) { diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 5df57a811e..c4621a9b8a 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -4574,9 +4574,28 @@ int sofia_glue_recover(switch_bool_t flush) return r; } +void sofia_glue_track_event_handler(switch_event_t *event) +{ + char *sql, *buf = NULL; + char *profile_name = NULL; + + switch_assert(event); // Just a sanity check + + if ((buf = switch_event_get_header_nil(event, "sql")) && (profile_name = switch_event_get_header_nil(event, "profile_name"))) { + sofia_profile_t *profile; + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s\n", switch_event_get_header_nil(event, "Event-Calling-Function")); + if ((profile = sofia_glue_find_profile(profile_name))) { + sql = switch_mprintf("%s", buf); + sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE); + sofia_glue_release_profile(profile); + } + } + + return; +} void sofia_glue_tech_untrack(sofia_profile_t *profile, switch_core_session_t *session, switch_bool_t force) { - char *sql; + char *sql = NULL; private_object_t *tech_pvt = (private_object_t *) switch_core_session_get_private(session); if (!sofia_test_pflag(profile, PFLAG_TRACK_CALLS) || (sofia_test_flag(tech_pvt, TFLAG_RECOVERING))) { @@ -4584,23 +4603,38 @@ void sofia_glue_tech_untrack(sofia_profile_t *profile, switch_core_session_t *se } if (sofia_test_pflag(profile, PFLAG_TRACK_CALLS) && (sofia_test_flag(tech_pvt, TFLAG_TRACKED) || force)) { + switch_event_t *event = NULL; if (force) { sql = switch_mprintf("delete from sip_recovery where uuid='%q'", switch_core_session_get_uuid(session)); - + } else { sql = switch_mprintf("delete from sip_recovery where runtime_uuid='%q' and uuid='%q'", switch_core_get_uuid(), switch_core_session_get_uuid(session)); } + + if (sofia_test_pflag(profile, PFLAG_TRACK_CALLS_EVENTS)) { + if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, MY_EVENT_RECOVERY_SEND) == SWITCH_STATUS_SUCCESS) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "sql", sql); + switch_event_fire(&event); + } + } + sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE); sofia_clear_flag(tech_pvt, TFLAG_TRACKED); + + switch_safe_free(sql); } + + } void sofia_glue_tech_track(sofia_profile_t *profile, switch_core_session_t *session) { - switch_event_t *event; private_object_t *tech_pvt = (private_object_t *) switch_core_session_get_private(session); + switch_xml_t cdr = NULL; + char *xml_cdr_text = NULL; + char *sql = NULL; if (!sofia_test_pflag(profile, PFLAG_TRACK_CALLS) || sofia_test_flag(tech_pvt, TFLAG_RECOVERING)) { return; @@ -4610,27 +4644,34 @@ void sofia_glue_tech_track(sofia_profile_t *profile, switch_core_session_t *sess sofia_glue_tech_untrack(profile, session, SWITCH_TRUE); } - if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_DATA) == SWITCH_STATUS_SUCCESS) { - switch_xml_t cdr = NULL; - char *xml_cdr_text = NULL; - - if (switch_ivr_generate_xml_cdr(session, &cdr) == SWITCH_STATUS_SUCCESS) { - xml_cdr_text = switch_xml_toxml(cdr, SWITCH_FALSE); - switch_xml_free(cdr); - } - - if (xml_cdr_text) { - char *sql; - sql = switch_mprintf("insert into sip_recovery (runtime_uuid, profile_name, hostname, uuid, metadata) values ('%q','%q','%q','%q','%q')", - switch_core_get_uuid(), profile->name, mod_sofia_globals.hostname, switch_core_session_get_uuid(session), xml_cdr_text); - - sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE); - free(xml_cdr_text); - sofia_set_flag(tech_pvt, TFLAG_TRACKED); - } - + if (switch_ivr_generate_xml_cdr(session, &cdr) == SWITCH_STATUS_SUCCESS) { + xml_cdr_text = switch_xml_toxml(cdr, SWITCH_FALSE); + switch_xml_free(cdr); } + if (xml_cdr_text) { + sql = switch_mprintf("insert into sip_recovery (runtime_uuid, profile_name, hostname, uuid, metadata) values ('%q','%q','%q','%q','%q')", + switch_core_get_uuid(), profile->name, mod_sofia_globals.hostname, switch_core_session_get_uuid(session), xml_cdr_text); + + if (sofia_test_pflag(profile, PFLAG_TRACK_CALLS_EVENTS)) { + switch_event_t *event = NULL; + + if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, MY_EVENT_RECOVERY_SEND) == SWITCH_STATUS_SUCCESS) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "sql", sql); + switch_event_fire(&event); + } + } + + + sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE); + free(xml_cdr_text); + sofia_set_flag(tech_pvt, TFLAG_TRACKED); + + } + + + switch_safe_free(sql); + } int sofia_glue_init_sql(sofia_profile_t *profile) @@ -5134,7 +5175,7 @@ void sofia_glue_actually_execute_sql_trans(sofia_profile_t *profile, char *sql, switch_cache_db_persistant_execute_trans(dbh, sql, 1); - end: + end: switch_cache_db_release_db_handle(&dbh); @@ -5158,7 +5199,7 @@ void sofia_glue_actually_execute_sql(sofia_profile_t *profile, char *sql, switch switch_cache_db_execute_sql(dbh, sql, NULL); - end: + end: switch_cache_db_release_db_handle(&dbh); @@ -5190,7 +5231,7 @@ switch_bool_t sofia_glue_execute_sql_callback(sofia_profile_t *profile, free(errmsg); } - end: + end: switch_cache_db_release_db_handle(&dbh); @@ -5323,7 +5364,7 @@ sofia_destination_t *sofia_glue_get_destination(char *data) dst->route_uri = route_uri; return dst; - mem_fail: + mem_fail: switch_safe_free(contact); switch_safe_free(to); switch_safe_free(route); diff --git a/src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.2010.vcxproj b/src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.2010.vcxproj new file mode 100644 index 0000000000..64fbf8a202 --- /dev/null +++ b/src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.2010.vcxproj @@ -0,0 +1,141 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_cdr_csv + {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E} + mod_cdr_csv + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + %(AdditionalIncludeDirectories) + + + + + false + + + + + + + X64 + + + %(AdditionalIncludeDirectories) + + + + + false + + + MachineX64 + + + + + %(AdditionalIncludeDirectories) + + + + + %(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(AdditionalIncludeDirectories) + + + + + %(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.2010.vcxproj b/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.2010.vcxproj new file mode 100644 index 0000000000..b1e37a62ed --- /dev/null +++ b/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.2010.vcxproj @@ -0,0 +1,139 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_event_multicast + {784113EF-44D9-4949-835D-7065D3C7AD08} + mod_event_multicast + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + ws2_32.lib;%(AdditionalDependencies) + false + + + + + + + X64 + + + + + + + ws2_32.lib;%(AdditionalDependencies) + false + + + MachineX64 + + + + + + + + + ws2_32.lib;%(AdditionalDependencies) + false + + + + + + + X64 + + + + + + + ws2_32.lib;%(AdditionalDependencies) + false + + + MachineX64 + + + + + + + + {f6c55d93-b927-4483-bb69-15aef3dd2dff} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/event_handlers/mod_event_socket/mod_event_socket.2010.vcxproj b/src/mod/event_handlers/mod_event_socket/mod_event_socket.2010.vcxproj new file mode 100644 index 0000000000..48c5b500ca --- /dev/null +++ b/src/mod/event_handlers/mod_event_socket/mod_event_socket.2010.vcxproj @@ -0,0 +1,135 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_event_socket + {05515420-16DE-4E63-BE73-85BE85BA5142} + mod_event_socket + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {f6c55d93-b927-4483-bb69-15aef3dd2dff} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/formats/mod_file_string/mod_file_string.2010.vcxproj b/src/mod/formats/mod_file_string/mod_file_string.2010.vcxproj new file mode 100644 index 0000000000..9a543f0a12 --- /dev/null +++ b/src/mod/formats/mod_file_string/mod_file_string.2010.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_file_string + {70564D74-199A-4452-9C60-19ED5F242F0D} + mod_file_string + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/formats/mod_local_stream/mod_local_stream.2010.vcxproj b/src/mod/formats/mod_local_stream/mod_local_stream.2010.vcxproj new file mode 100644 index 0000000000..30b3003c1e --- /dev/null +++ b/src/mod/formats/mod_local_stream/mod_local_stream.2010.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_local_stream + {2CA40887-1622-46A1-A7F9-17FD7E7E545B} + mod_local_stream + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/formats/mod_native_file/mod_native_file.2010.vcxproj b/src/mod/formats/mod_native_file/mod_native_file.2010.vcxproj new file mode 100644 index 0000000000..21b58ee45e --- /dev/null +++ b/src/mod/formats/mod_native_file/mod_native_file.2010.vcxproj @@ -0,0 +1,137 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_native_file + {9254C4B0-6F60-42B6-BB3A-36D63FC001C7} + mod_native_file + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;%(PreprocessorDefinitions) + + + + + false + + + + + + + X64 + + + WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;%(PreprocessorDefinitions) + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {f6c55d93-b927-4483-bb69-15aef3dd2dff} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/formats/mod_shout/mod_shout.vcxproj b/src/mod/formats/mod_shout/mod_shout.vcxproj new file mode 100644 index 0000000000..3450ef1adc --- /dev/null +++ b/src/mod/formats/mod_shout/mod_shout.vcxproj @@ -0,0 +1,193 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {38FE0559-9910-43A8-9E45-3E5004C27692} + mod_shout + + + + DynamicLibrary + MultiByte + true + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + true + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + Disabled + ../../../../libs/curl/include;../../../../libs/lame-3.97/include;..\..\..\..\libs\win32\libshout;..\..\..\..\libs\libshout-2.2.2\include;..\..\..\..\libs\mpg123\src;..\..\..\..\libs\win32\mpg123;%(AdditionalIncludeDirectories) + CURL_STATICLIB;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Level3 + false + ProgramDatabase + false + + + LIBCMTD.LIB;LIBCMT.LIB;%(IgnoreSpecificDefaultLibraries) + true + MachineX86 + + + + + X64 + + + Disabled + ../../../../libs/curl/include;../../../../libs/lame-3.97/include;..\..\..\..\libs\win32\libshout;..\..\..\..\libs\libshout-2.2.2\include;..\..\..\..\libs\mpg123\src;..\..\..\..\libs\win32\mpg123;%(AdditionalIncludeDirectories) + CURL_STATICLIB;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Level3 + false + ProgramDatabase + false + + + LIBCMTD.LIB;LIBCMT.LIB;%(IgnoreSpecificDefaultLibraries) + true + MachineX64 + + + + + MaxSpeed + true + ../../../../libs/curl/include;../../../../libs/lame-3.97/include;..\..\..\..\libs\win32\libshout;..\..\..\..\libs\libshout-2.2.2\include;..\..\..\..\libs\mpg123\src;..\..\..\..\libs\win32\mpg123;%(AdditionalIncludeDirectories) + CURL_STATICLIB;%(PreprocessorDefinitions) + MultiThreadedDLL + true + Level3 + false + ProgramDatabase + + + LIBCMTD.LIB;LIBCMT.LIB;%(IgnoreSpecificDefaultLibraries) + false + true + true + UseLinkTimeCodeGeneration + MachineX86 + + + + + X64 + + + MaxSpeed + true + ../../../../libs/curl/include;../../../../libs/lame-3.97/include;..\..\..\..\libs\win32\libshout;..\..\..\..\libs\libshout-2.2.2\include;..\..\..\..\libs\mpg123\src;..\..\..\..\libs\win32\mpg123;%(AdditionalIncludeDirectories) + CURL_STATICLIB;%(PreprocessorDefinitions) + MultiThreadedDLL + true + Level3 + false + ProgramDatabase + + + LIBCMTD.LIB;LIBCMT.LIB;%(IgnoreSpecificDefaultLibraries) + false + true + true + UseLinkTimeCodeGeneration + MachineX64 + + + + + + + + + + + + + {87ee9da4-de1e-4448-8324-183c98dca588} + false + + + {e316772f-5d8f-4f2a-8f71-094c3e859d34} + false + + + {0feeaec6-4399-4c46-b7db-62ece80d15b4} + + + {d3d8b329-20be-475e-9e83-653cea0e0ef5} + false + + + {419c8f80-d858-4b48-a25c-af4007608137} + false + + + {df018947-0fff-4eb3-bdee-441dc81da7a4} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/formats/mod_sndfile/mod_sndfile.2010.vcxproj b/src/mod/formats/mod_sndfile/mod_sndfile.2010.vcxproj new file mode 100644 index 0000000000..ba79a16c17 --- /dev/null +++ b/src/mod/formats/mod_sndfile/mod_sndfile.2010.vcxproj @@ -0,0 +1,149 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_sndfile + {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6} + mod_sndfile + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + %(RootDir)%(Directory)..\..\..\..\libs\win32\libsndfile\;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;%(PreprocessorDefinitions) + + + + + ..\..\..\..\libs\libsndfile\Win32\$(OutDir);%(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\win32\libsndfile\;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;%(PreprocessorDefinitions) + + + + + ..\..\..\..\libs\libsndfile\Win32\$(OutDir);%(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + %(RootDir)%(Directory)..\..\..\..\libs\win32\libsndfile\;%(AdditionalIncludeDirectories) + + + + + ..\..\..\..\libs\libsndfile\Win32\$(OutDir);%(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\win32\libsndfile\;%(AdditionalIncludeDirectories) + + + + + ..\..\..\..\libs\libsndfile\Win32\$(OutDir);%(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + + + + {f6c55d93-b927-4483-bb69-15aef3dd2dff} + false + + + {3d0370ca-bed2-4657-a475-32375cbcb6e4} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/formats/mod_tone_stream/mod_tone_stream.2010.vcxproj b/src/mod/formats/mod_tone_stream/mod_tone_stream.2010.vcxproj new file mode 100644 index 0000000000..e25af90c70 --- /dev/null +++ b/src/mod/formats/mod_tone_stream/mod_tone_stream.2010.vcxproj @@ -0,0 +1,135 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_tone_stream + {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52} + mod_tone_stream + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {89385c74-5860-4174-9caf-a39e7c48909c} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/languages/mod_lua/lua/lua.2010.vcxproj b/src/mod/languages/mod_lua/lua/lua.2010.vcxproj new file mode 100644 index 0000000000..13f6e011e2 --- /dev/null +++ b/src/mod/languages/mod_lua/lua/lua.2010.vcxproj @@ -0,0 +1,223 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + lua51 + {D0B36172-CD76-454A-9B89-990025266C2A} + lua51 + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(PlatformName)\$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(PlatformName)\$(Configuration)\ + $(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + .;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_WIN32;LUA_BUILD_AS_DLL;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + ProgramDatabase + 4127; 4505;%(DisableSpecificWarnings) + false + + + + + true + false + + + .\$(IntDir)lua5.1.lib + MachineX86 + + + + + X64 + + + .;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_WIN32;LUA_BUILD_AS_DLL;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + ProgramDatabase + 4127; 4505;%(DisableSpecificWarnings) + false + + + + + true + false + + + .\$(IntDir)lua5.1.lib + MachineX64 + + + + + .;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;_WIN32;LUA_BUILD_AS_DLL;%(PreprocessorDefinitions) + MultiThreadedDLL + + + ProgramDatabase + 4127; 4505;%(DisableSpecificWarnings) + + + + + false + + + .\$(IntDir)lua5.1.lib + MachineX86 + + + + + X64 + + + .;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;_WIN32;LUA_BUILD_AS_DLL;%(PreprocessorDefinitions) + MultiThreadedDLL + + + ProgramDatabase + 4127; 4505;%(DisableSpecificWarnings) + + + + + false + + + .\$(IntDir)lua5.1.lib + MachineX64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/mod/languages/mod_lua/mod_lua.2010.vcxproj b/src/mod/languages/mod_lua/mod_lua.2010.vcxproj new file mode 100644 index 0000000000..7bab01a7ff --- /dev/null +++ b/src/mod/languages/mod_lua/mod_lua.2010.vcxproj @@ -0,0 +1,156 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_lua + {7B077E7F-1BE7-4291-AB86-55E527B25CAC} + mod_lua + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + .;./lua;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_WIN32;%(PreprocessorDefinitions) + + + 4127; 4505;%(DisableSpecificWarnings) + false + + + false + + + + + + + X64 + + + .;./lua;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_WIN32;%(PreprocessorDefinitions) + + + 4127; 4505;%(DisableSpecificWarnings) + false + + + false + + + MachineX64 + + + + + .;./lua;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;_WIN32;%(PreprocessorDefinitions) + + + 4127; 4505;%(DisableSpecificWarnings) + + + false + + + + + + + X64 + + + .;./lua;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;_WIN32;%(PreprocessorDefinitions) + + + 4127; 4505;%(DisableSpecificWarnings) + + + false + + + MachineX64 + + + + + + + 6385;%(DisableSpecificWarnings) + 6385;%(DisableSpecificWarnings) + 6385;%(DisableSpecificWarnings) + 6385;%(DisableSpecificWarnings) + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + {d0b36172-cd76-454a-9b89-990025266c2a} + false + + + + + + \ No newline at end of file diff --git a/src/mod/languages/mod_managed/managed/FreeSWITCH.Managed.2010.csproj b/src/mod/languages/mod_managed/managed/FreeSWITCH.Managed.2010.csproj new file mode 100644 index 0000000000..10c0d89723 --- /dev/null +++ b/src/mod/languages/mod_managed/managed/FreeSWITCH.Managed.2010.csproj @@ -0,0 +1,77 @@ + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0} + Library + Properties + FreeSWITCH.Managed + FreeSWITCH.Managed + v3.5 + 512 + + + + + 3.5 + + + + true + full + false + ..\..\..\..\..\managed\debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + ..\..\..\..\..\managed\release\ + TRACE + prompt + 4 + + + + + 3.5 + + + 3.5 + + + 3.5 + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/mod/languages/mod_managed/mod_managed.2010.vcxproj b/src/mod/languages/mod_managed/mod_managed.2010.vcxproj new file mode 100644 index 0000000000..962f2cf157 --- /dev/null +++ b/src/mod/languages/mod_managed/mod_managed.2010.vcxproj @@ -0,0 +1,392 @@ + + + + + Debug_CLR + Win32 + + + Debug_CLR + x64 + + + Debug_Mono + Win32 + + + Debug_Mono + x64 + + + Release_CLR + Win32 + + + Release_CLR + x64 + + + Release_Mono + Win32 + + + Release_Mono + x64 + + + + {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E} + mod_managed + Win32Proj + mod_managed + + + + DynamicLibrary + Unicode + false + true + + + DynamicLibrary + MultiByte + false + + + DynamicLibrary + Unicode + true + true + + + DynamicLibrary + MultiByte + true + + + DynamicLibrary + Unicode + false + true + + + DynamicLibrary + MultiByte + false + + + DynamicLibrary + Unicode + true + true + + + DynamicLibrary + MultiByte + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Configuration)\ + $(Configuration)\ + true + true + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false + false + $(Configuration)\ + $(Configuration)\ + true + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + + + + Disabled + %(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;%(PreprocessorDefinitions) + false + Default + MultiThreadedDebugDLL + + + Level4 + true + ProgramDatabase + 4505;%(DisableSpecificWarnings) + + + shlwapi.lib;mscoree.lib;%(AdditionalDependencies) + + + true + true + NotSet + false + NotSet + + + + + X64 + + + Disabled + %(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;%(PreprocessorDefinitions) + false + Default + MultiThreadedDebugDLL + + + Level4 + true + ProgramDatabase + 4505;%(DisableSpecificWarnings) + + + shlwapi.lib;mscoree.lib;%(AdditionalDependencies) + $(SolutionDir)$(Platform)\Debug/mod/$(ProjectName).dll + + + true + true + NotSet + false + MachineX64 + + + + + Full + true + %(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;MOD_MONO_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level4 + ProgramDatabase + 4505;%(DisableSpecificWarnings) + + + + + true + Windows + true + true + MachineX86 + + + + + X64 + + + Full + true + %(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;MOD_MONO_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level4 + ProgramDatabase + 4505;%(DisableSpecificWarnings) + + + $(SolutionDir)$(Platform)\release/mod/$(ProjectName).dll + + + true + Windows + true + true + MachineX64 + + + + + Disabled + C:\Program Files\Mono\lib\glib-2.0\include;C:\Program Files\Mono\include\glib-2.0;C:\Program Files\Mono\include\mono-1.0;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_MONO_EXPORTS;MOD_EXPORTS;%(PreprocessorDefinitions) + false + Default + MultiThreadedDebugDLL + + + Level4 + true + ProgramDatabase + 4505;%(DisableSpecificWarnings) + + + shlwapi.lib;mono.lib;C:\program Files\Mono\lib\glib-2.0.lib;%(AdditionalDependencies) + + + true + + + NotSet + false + NotSet + + + + + X64 + + + Disabled + C:\Program Files\Mono\lib\glib-2.0\include;C:\Program Files\Mono\include\glib-2.0;C:\Program Files\Mono\include\mono-1.0;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_MONO_EXPORTS;MOD_EXPORTS;%(PreprocessorDefinitions) + false + Default + MultiThreadedDebugDLL + + + Level4 + true + ProgramDatabase + 4505;%(DisableSpecificWarnings) + + + shlwapi.lib;mono.lib;C:\program Files\Mono\lib\glib-2.0.lib;%(AdditionalDependencies) + + + true + + + NotSet + false + MachineX64 + + + + + MaxSpeed + true + ..\..\..\..\libs\apr\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;MOD_MONO_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + 4505;%(DisableSpecificWarnings) + + + + + true + Windows + true + true + MachineX86 + + + + + X64 + + + MaxSpeed + true + ..\..\..\..\libs\apr\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;MOD_MONO_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + 4505;%(DisableSpecificWarnings) + + + + + true + Windows + true + true + MachineX64 + + + + + + + + + + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + {834e2b2f-5483-4b80-8fe3-fe48ff76e5c0} + false + + + + + + \ No newline at end of file diff --git a/src/mod/languages/mod_spidermonkey/mod_spidermonkey.2010.vcxproj b/src/mod/languages/mod_spidermonkey/mod_spidermonkey.2010.vcxproj new file mode 100644 index 0000000000..fd7c7c82a4 --- /dev/null +++ b/src/mod/languages/mod_spidermonkey/mod_spidermonkey.2010.vcxproj @@ -0,0 +1,165 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_spidermonkey + {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} + mod_spidermonkey + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + Disabled + %(AdditionalIncludeDirectories) + SM_EXPORTS;JS_HAS_FILE_OBJECT=1;%(PreprocessorDefinitions) + + + + + $(Platform)\$(Configuration)\$(ProjectName).lib + %(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + Disabled + %(AdditionalIncludeDirectories) + SM_EXPORTS;JS_HAS_FILE_OBJECT=1;%(PreprocessorDefinitions) + + + + + $(Platform)\$(Configuration)\$(ProjectName).lib + %(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + %(AdditionalIncludeDirectories) + SM_EXPORTS;JS_HAS_FILE_OBJECT=1;%(PreprocessorDefinitions) + + + + + $(Platform)\$(Configuration)\$(ProjectName).lib + %(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(AdditionalIncludeDirectories) + SM_EXPORTS;JS_HAS_FILE_OBJECT=1;%(PreprocessorDefinitions) + + + + + $(Platform)\$(Configuration)\$(ProjectName).lib + %(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + + + + {f6c55d93-b927-4483-bb69-15aef3dd2dff} + false + + + {87ee9da4-de1e-4448-8324-183c98dca588} + false + + + {204fa0de-305d-4414-ae2e-f195a23f390d} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c b/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c index 09af60f9cb..4f6c7aadc4 100644 --- a/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c +++ b/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c @@ -2864,6 +2864,7 @@ static JSBool session_construct(JSContext * cx, JSObject * obj, uintN argc, jsva &jss->session, &jss->cause, uuid, 60, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL) == SWITCH_STATUS_SUCCESS) { switch_set_flag(jss, S_HUP); switch_channel_set_state(switch_core_session_get_channel(jss->session), CS_SOFT_EXECUTE); + switch_channel_wait_for_state_timeout(switch_core_session_get_channel(jss->session), CS_SOFT_EXECUTE, 5000); *rval = BOOLEAN_TO_JSVAL(JS_TRUE); } else { *rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, switch_channel_cause2str(jss->cause))); diff --git a/src/mod/languages/mod_spidermonkey/mod_spidermonkey_core_db.2010.vcxproj b/src/mod/languages/mod_spidermonkey/mod_spidermonkey_core_db.2010.vcxproj new file mode 100644 index 0000000000..65ab85c2cb --- /dev/null +++ b/src/mod/languages/mod_spidermonkey/mod_spidermonkey_core_db.2010.vcxproj @@ -0,0 +1,181 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_spidermonkey_core_db + {ACFFF684-4D19-4D48-AF12-88EA1D778BDF} + mod_spidermonkey_core_db + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\mod_spidermonkey_core_db\ + $(PlatformName)\$(Configuration)\mod_spidermonkey_core_db + $(PlatformName)\$(Configuration)\mod_spidermonkey_core_db + $(PlatformName)\$(Configuration)\mod_spidermonkey_core_db + + + + + + + + %(AdditionalIncludeDirectories) + + + + + %(AdditionalLibraryDirectories) + false + + + + + + + + + + + X64 + + + %(AdditionalIncludeDirectories) + + + + + $(SolutionDir)$(Platform)\$(Configuration)/mod/$(ProjectName).dll + %(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + + + + + %(AdditionalIncludeDirectories) + + + + + %(AdditionalLibraryDirectories) + false + + + + + + + + + + + X64 + + + %(AdditionalIncludeDirectories) + + + + + $(SolutionDir)$(Platform)\$(Configuration)/mod/$(ProjectName).dll + %(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + + + + {f6c55d93-b927-4483-bb69-15aef3dd2dff} + false + + + {204fa0de-305d-4414-ae2e-f195a23f390d} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + {1ad3f51e-bbb6-4090-ba39-9dfab1ef1f5f} + false + + + + + + \ No newline at end of file diff --git a/src/mod/languages/mod_spidermonkey/mod_spidermonkey_curl.2010.vcxproj b/src/mod/languages/mod_spidermonkey/mod_spidermonkey_curl.2010.vcxproj new file mode 100644 index 0000000000..9bcd25813e --- /dev/null +++ b/src/mod/languages/mod_spidermonkey/mod_spidermonkey_curl.2010.vcxproj @@ -0,0 +1,181 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_spidermonkey_curl + {36E854E3-CE12-4348-A125-CCF3F9D74813} + mod_spidermonkey_curl + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\mod_spidermonkey_curl\ + $(PlatformName)\$(Configuration)\mod_spidermonkey_curl + $(PlatformName)\$(Configuration)\mod_spidermonkey_curl + $(PlatformName)\$(Configuration)\mod_spidermonkey_curl + + + + + + + + %(AdditionalIncludeDirectories) + + + + + %(AdditionalLibraryDirectories) + false + + + + + + + + + + + X64 + + + %(AdditionalIncludeDirectories) + + + + + $(SolutionDir)$(Platform)\$(Configuration)/mod/$(ProjectName).dll + %(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + + + + + %(AdditionalIncludeDirectories) + + + + + %(AdditionalLibraryDirectories) + false + + + + + + + + + + + X64 + + + %(AdditionalIncludeDirectories) + + + + + $(SolutionDir)$(Platform)\$(Configuration)/mod/$(ProjectName).dll + %(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + + + + {87ee9da4-de1e-4448-8324-183c98dca588} + false + + + {204fa0de-305d-4414-ae2e-f195a23f390d} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + {1ad3f51e-bbb6-4090-ba39-9dfab1ef1f5f} + false + + + + + + \ No newline at end of file diff --git a/src/mod/languages/mod_spidermonkey/mod_spidermonkey_odbc.2010.vcxproj b/src/mod/languages/mod_spidermonkey/mod_spidermonkey_odbc.2010.vcxproj new file mode 100644 index 0000000000..178a64aaab --- /dev/null +++ b/src/mod/languages/mod_spidermonkey/mod_spidermonkey_odbc.2010.vcxproj @@ -0,0 +1,191 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_spidermonkey_odbc + {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF} + mod_spidermonkey_odbc + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\mod_spidermonkey_odbc\ + $(PlatformName)\$(Configuration)\mod_spidermonkey_odbc + $(PlatformName)\$(Configuration)\mod_spidermonkey_odbc + $(PlatformName)\$(Configuration)\mod_spidermonkey_odbc + + + + + + + + %(AdditionalIncludeDirectories) + + + + + %(AdditionalLibraryDirectories) + false + + + + + + + + + + + X64 + + + %(AdditionalIncludeDirectories) + + + + + $(SolutionDir)$(Platform)\$(Configuration)/mod/$(ProjectName).dll + %(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + + + + + true + %(AdditionalIncludeDirectories) + MultiThreadedDLL + + + + + %(AdditionalLibraryDirectories) + true + true + UseLinkTimeCodeGeneration + false + + + + + + + + + + + X64 + + + true + %(AdditionalIncludeDirectories) + MultiThreadedDLL + + + + + $(SolutionDir)$(Platform)\$(Configuration)/mod/$(ProjectName).dll + %(AdditionalLibraryDirectories) + true + true + UseLinkTimeCodeGeneration + false + + + MachineX64 + + + + + + + + {f6c55d93-b927-4483-bb69-15aef3dd2dff} + false + + + {204fa0de-305d-4414-ae2e-f195a23f390d} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + {1ad3f51e-bbb6-4090-ba39-9dfab1ef1f5f} + false + + + + + + \ No newline at end of file diff --git a/src/mod/languages/mod_spidermonkey/mod_spidermonkey_socket.2010.vcxproj b/src/mod/languages/mod_spidermonkey/mod_spidermonkey_socket.2010.vcxproj new file mode 100644 index 0000000000..9f1cab8b06 --- /dev/null +++ b/src/mod/languages/mod_spidermonkey/mod_spidermonkey_socket.2010.vcxproj @@ -0,0 +1,161 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_spidermonkey_socket + {028C7278-05D7-4E18-82FE-BE231B844F41} + mod_spidermonkey_socket + Win32Proj + + + + DynamicLibrary + Unicode + true + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + true + + + DynamicLibrary + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\mod_spidermonkey_socket\ + $(PlatformName)\$(Configuration)\mod_spidermonkey_socket + $(PlatformName)\$(Configuration)\mod_spidermonkey_socket + $(PlatformName)\$(Configuration)\mod_spidermonkey_socket + + + + %(AdditionalIncludeDirectories) + + + + + %(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(AdditionalIncludeDirectories) + + + + + $(SolutionDir)$(Platform)\$(Configuration)/mod/$(ProjectName).dll + %(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + %(AdditionalIncludeDirectories) + + + + + false + + + + + + + X64 + + + %(AdditionalIncludeDirectories) + + + + + $(SolutionDir)$(Platform)\$(Configuration)/mod/$(ProjectName).dll + false + + + MachineX64 + + + + + + + + {204fa0de-305d-4414-ae2e-f195a23f390d} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + {1ad3f51e-bbb6-4090-ba39-9dfab1ef1f5f} + false + + + + + + \ No newline at end of file diff --git a/src/mod/languages/mod_spidermonkey/mod_spidermonkey_teletone.2010.vcxproj b/src/mod/languages/mod_spidermonkey/mod_spidermonkey_teletone.2010.vcxproj new file mode 100644 index 0000000000..8a90a43712 --- /dev/null +++ b/src/mod/languages/mod_spidermonkey/mod_spidermonkey_teletone.2010.vcxproj @@ -0,0 +1,191 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_spidermonkey_teletone + {8F992C49-6C51-412F-B2A3-34EAB708EB65} + mod_spidermonkey_teletone + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(PlatformName)\$(Configuration)\mod_spidermonkey_teletone\ + $(PlatformName)\$(Configuration)\mod_spidermonkey_teletone + $(PlatformName)\$(Configuration)\mod_spidermonkey_teletone + $(PlatformName)\$(Configuration)\mod_spidermonkey_teletone + + + + + + + + %(RootDir)%(Directory)..\..\..\..\libs\libteletone\src;%(AdditionalIncludeDirectories) + + + + + %(AdditionalLibraryDirectories) + false + + + + + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\libteletone\src;%(AdditionalIncludeDirectories) + + + + + $(SolutionDir)$(Platform)\$(Configuration)/mod/$(ProjectName).dll + %(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + + + + + %(RootDir)%(Directory)..\..\..\..\libs\libteletone\src;%(AdditionalIncludeDirectories) + + + + + %(AdditionalLibraryDirectories) + true + true + UseLinkTimeCodeGeneration + false + + + + + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\libteletone\src;%(AdditionalIncludeDirectories) + + + + + $(SolutionDir)$(Platform)\$(Configuration)/mod/$(ProjectName).dll + %(AdditionalLibraryDirectories) + true + true + UseLinkTimeCodeGeneration + false + + + MachineX64 + + + + + + + + {89385c74-5860-4174-9caf-a39e7c48909c} + false + + + {f6c55d93-b927-4483-bb69-15aef3dd2dff} + false + + + {204fa0de-305d-4414-ae2e-f195a23f390d} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + {1ad3f51e-bbb6-4090-ba39-9dfab1ef1f5f} + false + + + + + + \ No newline at end of file diff --git a/src/mod/loggers/mod_console/mod_console.2010.vcxproj b/src/mod/loggers/mod_console/mod_console.2010.vcxproj new file mode 100644 index 0000000000..b862f8ac80 --- /dev/null +++ b/src/mod/loggers/mod_console/mod_console.2010.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_console + {1C453396-D912-4213-89FD-9B489162B7B5} + mod_console + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/loggers/mod_logfile/mod_logfile.2010.vcxproj b/src/mod/loggers/mod_logfile/mod_logfile.2010.vcxproj new file mode 100644 index 0000000000..6248553afb --- /dev/null +++ b/src/mod/loggers/mod_logfile/mod_logfile.2010.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_logfile + {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909} + mod_logfile + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/say/mod_say_de/mod_say_de.2010.vcxproj b/src/mod/say/mod_say_de/mod_say_de.2010.vcxproj new file mode 100644 index 0000000000..dda5ed38e5 --- /dev/null +++ b/src/mod/say/mod_say_de/mod_say_de.2010.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_say_de + {5BC072DB-3826-48EA-AF34-FE32AA01E83B} + mod_say_de + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/say/mod_say_en/mod_say_en.2010.vcxproj b/src/mod/say/mod_say_en/mod_say_en.2010.vcxproj new file mode 100644 index 0000000000..4f684dade4 --- /dev/null +++ b/src/mod/say/mod_say_en/mod_say_en.2010.vcxproj @@ -0,0 +1,135 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_say_en + {988CACF7-3FCB-4992-BE69-77872AE67DC8} + mod_say_en + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {f6c55d93-b927-4483-bb69-15aef3dd2dff} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/say/mod_say_es/mod_say_es.2010.vcxproj b/src/mod/say/mod_say_es/mod_say_es.2010.vcxproj new file mode 100644 index 0000000000..1300e0d666 --- /dev/null +++ b/src/mod/say/mod_say_es/mod_say_es.2010.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_say_es + {FA429E98-8B03-45E6-A096-A4BC5E821DE4} + mod_say_es + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/say/mod_say_fr/mod_say_fr.2010.vcxproj b/src/mod/say/mod_say_fr/mod_say_fr.2010.vcxproj new file mode 100644 index 0000000000..8d208914a3 --- /dev/null +++ b/src/mod/say/mod_say_fr/mod_say_fr.2010.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_say_fr + {06E3A538-AB32-44F2-B477-755FF9CB5D37} + mod_say_fr + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/say/mod_say_it/mod_say_it.2010.vcxproj b/src/mod/say/mod_say_it/mod_say_it.2010.vcxproj new file mode 100644 index 0000000000..ca6c9f8aeb --- /dev/null +++ b/src/mod/say/mod_say_it/mod_say_it.2010.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_say_it + {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05} + mod_say_it + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/say/mod_say_nl/mod_say_nl.2010.vcxproj b/src/mod/say/mod_say_nl/mod_say_nl.2010.vcxproj new file mode 100644 index 0000000000..3bd62896e9 --- /dev/null +++ b/src/mod/say/mod_say_nl/mod_say_nl.2010.vcxproj @@ -0,0 +1,143 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_say_nl + {A4B122CF-5196-476B-8C0E-D8BD59AC3C14} + mod_say_nl + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + Disabled + %(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + + + false + + + + + + + X64 + + + Disabled + %(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/say/mod_say_ru/mod_say_ru.2010.vcxproj b/src/mod/say/mod_say_ru/mod_say_ru.2010.vcxproj new file mode 100644 index 0000000000..7d265ed723 --- /dev/null +++ b/src/mod/say/mod_say_ru/mod_say_ru.2010.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_say_ru + {0382E8FD-CFDC-41C0-8B03-792C7C84FC31} + mod_say_ru + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/say/mod_say_zh/mod_say_zh.2010.vcxproj b/src/mod/say/mod_say_zh/mod_say_zh.2010.vcxproj new file mode 100644 index 0000000000..d9a8d01e85 --- /dev/null +++ b/src/mod/say/mod_say_zh/mod_say_zh.2010.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_say_zh + {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E} + mod_say_zh + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.2010.vcxproj b/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.2010.vcxproj new file mode 100644 index 0000000000..310abe6067 --- /dev/null +++ b/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.2010.vcxproj @@ -0,0 +1,149 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_xml_cdr + {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836} + mod_xml_cdr + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + %(AdditionalIncludeDirectories) + + + + + false + + + + + + + X64 + + + %(AdditionalIncludeDirectories) + + + + + false + + + MachineX64 + + + + + %(AdditionalIncludeDirectories) + + + + + %(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(AdditionalIncludeDirectories) + + + + + %(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + + + + {f6c55d93-b927-4483-bb69-15aef3dd2dff} + false + + + {87ee9da4-de1e-4448-8324-183c98dca588} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/xml_int/mod_xml_curl/mod_xml_curl.2010.vcxproj b/src/mod/xml_int/mod_xml_curl/mod_xml_curl.2010.vcxproj new file mode 100644 index 0000000000..0d30ff3489 --- /dev/null +++ b/src/mod/xml_int/mod_xml_curl/mod_xml_curl.2010.vcxproj @@ -0,0 +1,147 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_xml_curl + {AB91A099-7690-4ECF-8994-E458F4EA1ED4} + mod_xml_curl + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + %(AdditionalIncludeDirectories) + + + + + %(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(AdditionalIncludeDirectories) + + + + + %(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + %(AdditionalIncludeDirectories) + + + + + %(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(AdditionalIncludeDirectories) + + + + + %(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + + + + {87ee9da4-de1e-4448-8324-183c98dca588} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.2010.vcxproj b/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.2010.vcxproj new file mode 100644 index 0000000000..a57eaf0b6d --- /dev/null +++ b/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.2010.vcxproj @@ -0,0 +1,167 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_xml_rpc + {CBEC7225-0C21-4DA8-978E-1F158F8AD950} + mod_xml_rpc + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + %(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\include;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\lib\abyss\src;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\lib\util\include;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\Windows;%(AdditionalIncludeDirectories) + ABYSS_WIN32;%(PreprocessorDefinitions) + + + + + ..\..\..\..\libs\xmlrpc\lib;..\..\..\..\libs\xmlrpc\lib\abyss\src\$(OutDir);..\..\..\..\libs\apr-util\xml\expat\lib\LibD;%(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\include;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\lib\abyss\src;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\lib\util\include;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\Windows;%(AdditionalIncludeDirectories) + ABYSS_WIN32;%(PreprocessorDefinitions) + + + + + %(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + %(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\include;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\lib\abyss\src;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\lib\util\include;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\Windows;%(AdditionalIncludeDirectories) + ABYSS_WIN32;%(PreprocessorDefinitions) + + + + + ..\..\..\..\libs\xmlrpc\lib;..\..\..\..\libs\xmlrpc\lib\abyss\src\$(OutDir);..\..\..\..\libs\apr-util\xml\expat\lib\LibR;%(AdditionalLibraryDirectories) + false + + + + + + + X64 + + + %(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\include;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\lib\abyss\src;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\lib\util\include;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\Windows;%(AdditionalIncludeDirectories) + ABYSS_WIN32;%(PreprocessorDefinitions) + + + + + %(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + + + + {87ee9da4-de1e-4448-8324-183c98dca588} + false + + + {d2396dd7-7d38-473a-abb7-6f96d65ae1b9} + false + + + {0d108721-eae8-4baf-8102-d8960ec93647} + false + + + {cee544a9-0303-44c2-8ece-efa7d7bcbbba} + false + + + {b535402e-38d2-4d54-8360-423acbd17192} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/switch_apr.c b/src/switch_apr.c index d579999356..ba44ad224a 100644 --- a/src/switch_apr.c +++ b/src/switch_apr.c @@ -89,11 +89,6 @@ SWITCH_DECLARE(int) switch_thread_equal(switch_thread_id_t tid1, switch_thread_i } -SWITCH_DECLARE(void) switch_pool_clear(switch_memory_pool_t *p) -{ - apr_pool_clear(p); -} - SWITCH_DECLARE(unsigned int) switch_ci_hashfunc_default(const char *char_key, switch_ssize_t *klen) { unsigned int hash = 0; diff --git a/src/switch_channel.c b/src/switch_channel.c index 7eb8bd0c74..9a85d5efbd 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -1761,6 +1761,9 @@ SWITCH_DECLARE(void) switch_channel_event_set_basic_data(switch_channel_t *chann switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Channel-Presence-Data", v); } + if ((v = switch_channel_get_variable(channel, "call_uuid"))) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Channel-Call-UUID", v); + } if (switch_channel_test_flag(channel, CF_ANSWERED)) { switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Answer-State", "answered"); diff --git a/src/switch_core.c b/src/switch_core.c index 37dabbc6e9..d48cd46dfc 100644 --- a/src/switch_core.c +++ b/src/switch_core.c @@ -1772,6 +1772,9 @@ SWITCH_DECLARE(int32_t) switch_core_session_ctl(switch_session_ctl_t cmd, void * } } break; + case SCSC_SHUTDOWN_CHECK: + newintval = !!switch_test_flag((&runtime), SCF_SHUTDOWN_REQUESTED); + break; case SCSC_SHUTDOWN: #ifdef _MSC_VER diff --git a/src/switch_core_memory.c b/src/switch_core_memory.c index 42ef86a08f..39d0403c42 100644 --- a/src/switch_core_memory.c +++ b/src/switch_core_memory.c @@ -318,6 +318,29 @@ SWITCH_DECLARE(void) switch_core_memory_pool_tag(switch_memory_pool_t *pool, con apr_pool_tag(pool, tag); } +SWITCH_DECLARE(void) switch_pool_clear(switch_memory_pool_t *p) +{ +#ifdef PER_POOL_LOCK + apr_thread_mutex_t *my_mutex; + apr_pool_mutex_set(p, NULL); +#endif + + apr_pool_clear(p); + +#ifdef PER_POOL_LOCK + + if ((apr_thread_mutex_create(&my_mutex, APR_THREAD_MUTEX_NESTED, p)) != APR_SUCCESS) { + abort(); + } + + apr_pool_mutex_set(p, my_mutex); + +#endif + +} + + + SWITCH_DECLARE(switch_status_t) switch_core_perform_new_memory_pool(switch_memory_pool_t **pool, const char *file, const char *func, int line) { char *tmp; @@ -503,6 +526,7 @@ static void *SWITCH_THREAD_FUNC pool_thread(switch_thread_t *thread, void *obj) switch_mutex_unlock(memory_manager.mem_lock); #endif #else + apr_pool_mutex_set(pop, NULL); apr_pool_clear(pop); if (switch_queue_trypush(memory_manager.pool_recycle_queue, pop) != SWITCH_STATUS_SUCCESS) { #ifdef USE_MEM_LOCK diff --git a/src/switch_core_sqldb.c b/src/switch_core_sqldb.c index 488fb0748c..e9849502be 100644 --- a/src/switch_core_sqldb.c +++ b/src/switch_core_sqldb.c @@ -53,7 +53,7 @@ static struct { /*! \brief Open the default system database */ -SWITCH_DECLARE(switch_status_t) _switch_core_db_handle(switch_cache_db_handle_t ** dbh, const char *file, const char *func, int line) +SWITCH_DECLARE(switch_status_t) _switch_core_db_handle(switch_cache_db_handle_t **dbh, const char *file, const char *func, int line) { switch_cache_db_connection_options_t options = { {0} }; switch_status_t r; @@ -77,7 +77,7 @@ SWITCH_DECLARE(switch_status_t) _switch_core_db_handle(switch_cache_db_handle_t } -#define SQL_CACHE_TIMEOUT 300 +#define SQL_CACHE_TIMEOUT 120 static void sql_close(time_t prune) { @@ -89,7 +89,7 @@ static void sql_close(time_t prune) char *key; switch_mutex_lock(sql_manager.dbh_mutex); - top: + top: locked = 0; for (hi = switch_hash_first(NULL, sql_manager.dbh_hash); hi; hi = switch_hash_next(hi)) { @@ -103,7 +103,7 @@ static void sql_close(time_t prune) diff = (time_t) prune - dbh->last_used; } - if (prune > 0 && diff < SQL_CACHE_TIMEOUT) { + if (prune > 0 && diff < SQL_CACHE_TIMEOUT && !switch_test_flag(dbh, CDF_PRUNE)) { continue; } @@ -152,16 +152,43 @@ SWITCH_DECLARE(void) switch_cache_db_flush_handles(void) -SWITCH_DECLARE(void) switch_cache_db_release_db_handle(switch_cache_db_handle_t ** dbh) +SWITCH_DECLARE(void) switch_cache_db_release_db_handle(switch_cache_db_handle_t **dbh) { if (dbh && *dbh) { + + switch ((*dbh)->type) { + case SCDB_TYPE_ODBC: + { + switch_clear_flag((*dbh), CDF_INUSE); + } + break; + default: + break; + } + switch_mutex_unlock((*dbh)->mutex); *dbh = NULL; } } -SWITCH_DECLARE(void) switch_cache_db_destroy_db_handle(switch_cache_db_handle_t ** dbh) +SWITCH_DECLARE(void) switch_cache_db_dismiss_db_handle(switch_cache_db_handle_t **dbh) +{ + if (dbh && *dbh) { + + if ((*dbh)->type == SCDB_TYPE_CORE_DB) { + switch_set_flag((*dbh), CDF_PRUNE); + } else { + switch_clear_flag((*dbh), CDF_INUSE); + } + + switch_mutex_unlock((*dbh)->mutex); + *dbh = NULL; + } +} + + +SWITCH_DECLARE(void) switch_cache_db_destroy_db_handle(switch_cache_db_handle_t **dbh) { if (dbh && *dbh) { switch_mutex_lock(sql_manager.dbh_mutex); @@ -198,6 +225,7 @@ SWITCH_DECLARE(void) switch_cache_db_detach(void) void *val; char *key; switch_cache_db_handle_t *dbh = NULL; + int prune = 0; snprintf(thread_str, sizeof(thread_str) - 1, "%lu", (unsigned long) (intptr_t) switch_thread_self()); switch_mutex_lock(sql_manager.dbh_mutex); @@ -208,9 +236,14 @@ SWITCH_DECLARE(void) switch_cache_db_detach(void) if ((dbh = (switch_cache_db_handle_t *) val)) { if (switch_mutex_trylock(dbh->mutex) == SWITCH_STATUS_SUCCESS) { if (strstr(dbh->name, thread_str)) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG10, - "Detach cached DB handle %s [%s]\n", thread_str, switch_cache_db_type_name(dbh->type)); - switch_clear_flag(dbh, CDF_INUSE); + if (dbh->type == SCDB_TYPE_CORE_DB) { + switch_set_flag(dbh, CDF_PRUNE); + prune++; + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG10, + "Detach cached DB handle %s [%s]\n", thread_str, switch_cache_db_type_name(dbh->type)); + switch_clear_flag(dbh, CDF_INUSE); + } } switch_mutex_unlock(dbh->mutex); } @@ -218,9 +251,14 @@ SWITCH_DECLARE(void) switch_cache_db_detach(void) } switch_mutex_unlock(sql_manager.dbh_mutex); + + if (prune) { + sql_close(switch_epoch_time_now(NULL)); + } + } -SWITCH_DECLARE(switch_status_t) _switch_cache_db_get_db_handle(switch_cache_db_handle_t ** dbh, +SWITCH_DECLARE(switch_status_t) _switch_cache_db_get_db_handle(switch_cache_db_handle_t **dbh, switch_cache_db_handle_type_t type, switch_cache_db_connection_options_t *connection_options, const char *file, const char *func, int line) @@ -281,7 +319,8 @@ SWITCH_DECLARE(switch_status_t) _switch_cache_db_get_db_handle(switch_cache_db_h if ((new_dbh = (switch_cache_db_handle_t *) val)) { if (hash == new_dbh->hash && !strncasecmp(new_dbh->name, db_str, strlen(db_str)) && - !switch_test_flag(new_dbh, CDF_INUSE) && switch_mutex_trylock(new_dbh->mutex) == SWITCH_STATUS_SUCCESS) { + !switch_test_flag(new_dbh, CDF_INUSE) && !switch_test_flag(new_dbh, CDF_PRUNE) + && switch_mutex_trylock(new_dbh->mutex) == SWITCH_STATUS_SUCCESS) { switch_set_flag(new_dbh, CDF_INUSE); switch_set_string(new_dbh->name, thread_str); new_dbh->hash = switch_ci_hashfunc_default(db_str, &hlen); @@ -357,7 +396,7 @@ SWITCH_DECLARE(switch_status_t) _switch_cache_db_get_db_handle(switch_cache_db_h switch_core_hash_insert(sql_manager.dbh_hash, new_dbh->name, new_dbh); } - end: + end: if (new_dbh) new_dbh->last_used = switch_epoch_time_now(NULL); @@ -426,7 +465,7 @@ static switch_status_t switch_cache_db_execute_sql_real(switch_cache_db_handle_t /** OMFG you cruel bastards. Who chooses 64k as a max buffer len for a sql statement, have you ever heard of transactions? - **/ +**/ static switch_status_t switch_cache_db_execute_sql_chunked(switch_cache_db_handle_t *dbh, char *sql, uint32_t chunk_size, char **err) { switch_status_t status = SWITCH_STATUS_FALSE; @@ -567,7 +606,7 @@ SWITCH_DECLARE(char *) switch_cache_db_execute_sql2str(switch_cache_db_handle_t break; } - end: + end: if (dbh->io_mutex) { switch_mutex_unlock(dbh->io_mutex); @@ -634,7 +673,7 @@ SWITCH_DECLARE(switch_status_t) switch_cache_db_persistant_execute_trans(switch_ switch_mutex_lock(dbh->io_mutex); } - again: + again: while (begin_retries > 0) { again = 0; @@ -688,7 +727,7 @@ SWITCH_DECLARE(switch_status_t) switch_cache_db_persistant_execute_trans(switch_ } } - done: + done: switch_cache_db_execute_sql_real(dbh, "COMMIT", NULL); @@ -825,7 +864,8 @@ static void *SWITCH_THREAD_FUNC switch_core_sql_thread(switch_thread_t *thread, } while (!sql_manager.event_db) { - if (switch_core_db_handle(&sql_manager.event_db) == SWITCH_STATUS_SUCCESS && sql_manager.event_db) break; + if (switch_core_db_handle(&sql_manager.event_db) == SWITCH_STATUS_SUCCESS && sql_manager.event_db) + break; switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Error getting core db, Retrying\n"); switch_yield(500000); sanity--; @@ -924,9 +964,13 @@ static void *SWITCH_THREAD_FUNC switch_core_sql_thread(switch_thread_t *thread, return NULL; } +#define MAX_SQL 5 +#define new_sql() switch_assert(sql_idx+1 < MAX_SQL); sql[sql_idx++] + static void core_event_handler(switch_event_t *event) { - char *sql = NULL; + char *sql[MAX_SQL] = { 0 }; + int sql_idx = 0; switch_assert(event); @@ -937,18 +981,18 @@ static void core_event_handler(switch_event_t *event) const char *manager = switch_event_get_header(event, "task-sql_manager"); if (id) { - sql = switch_mprintf("insert into tasks values(%q,'%q','%q',%q, '%q')", - id, - switch_event_get_header_nil(event, "task-desc"), - switch_event_get_header_nil(event, "task-group"), manager ? manager : "0", switch_core_get_variable("hostname") - ); + new_sql() = switch_mprintf("insert into tasks values(%q,'%q','%q',%q, '%q')", + id, + switch_event_get_header_nil(event, "task-desc"), + switch_event_get_header_nil(event, "task-group"), manager ? manager : "0", switch_core_get_variable("hostname") + ); } } break; case SWITCH_EVENT_DEL_SCHEDULE: case SWITCH_EVENT_EXE_SCHEDULE: - sql = switch_mprintf("delete from tasks where task_id=%q and hostname='%q'", - switch_event_get_header_nil(event, "task-id"), switch_core_get_variable("hostname")); + new_sql() = switch_mprintf("delete from tasks where task_id=%q and hostname='%q'", + switch_event_get_header_nil(event, "task-id"), switch_core_get_variable("hostname")); break; case SWITCH_EVENT_RE_SCHEDULE: { @@ -956,48 +1000,49 @@ static void core_event_handler(switch_event_t *event) const char *manager = switch_event_get_header(event, "task-sql_manager"); if (id) { - sql = switch_mprintf("update tasks set task_desc='%q',task_group='%q', task_sql_manager=%q where task_id=%q and hostname='%q'", - switch_event_get_header_nil(event, "task-desc"), - switch_event_get_header_nil(event, "task-group"), manager ? manager : "0", id, switch_core_get_variable("hostname")); + new_sql() = switch_mprintf("update tasks set task_desc='%q',task_group='%q', task_sql_manager=%q where task_id=%q and hostname='%q'", + switch_event_get_header_nil(event, "task-desc"), + switch_event_get_header_nil(event, "task-group"), manager ? manager : "0", id, + switch_core_get_variable("hostname")); } } break; case SWITCH_EVENT_CHANNEL_DESTROY: - sql = switch_mprintf("delete from channels where uuid='%q' and hostname='%q'", - switch_event_get_header_nil(event, "unique-id"), switch_core_get_variable("hostname")); + new_sql() = switch_mprintf("delete from channels where uuid='%q' and hostname='%q'", + switch_event_get_header_nil(event, "unique-id"), switch_core_get_variable("hostname")); break; case SWITCH_EVENT_CHANNEL_UUID: { - sql = switch_mprintf("update channels set uuid='%q' where uuid='%q' and hostname='%q';" - "update calls set caller_uuid='%q' where caller_uuid='%q' and hostname='%q';" - "update calls set callee_uuid='%q' where callee_uuid='%q' and hostname='%q'", - switch_event_get_header_nil(event, "unique-id"), - switch_event_get_header_nil(event, "old-unique-id"), - switch_core_get_variable("hostname"), - switch_event_get_header_nil(event, "unique-id"), - switch_event_get_header_nil(event, "old-unique-id"), - switch_core_get_variable("hostname"), - switch_event_get_header_nil(event, "unique-id"), - switch_event_get_header_nil(event, "old-unique-id"), switch_core_get_variable("hostname") - ); + new_sql() = switch_mprintf("update channels set uuid='%q' where uuid='%q' and hostname='%q';" + "update calls set caller_uuid='%q' where caller_uuid='%q' and hostname='%q';" + "update calls set callee_uuid='%q' where callee_uuid='%q' and hostname='%q'", + switch_event_get_header_nil(event, "unique-id"), + switch_event_get_header_nil(event, "old-unique-id"), + switch_core_get_variable("hostname"), + switch_event_get_header_nil(event, "unique-id"), + switch_event_get_header_nil(event, "old-unique-id"), + switch_core_get_variable("hostname"), + switch_event_get_header_nil(event, "unique-id"), + switch_event_get_header_nil(event, "old-unique-id"), switch_core_get_variable("hostname") + ); break; } case SWITCH_EVENT_CHANNEL_CREATE: - sql = switch_mprintf("insert into channels (uuid,direction,created,created_epoch, name,state,callstate,dialplan,context,hostname) " - "values('%q','%q','%q','%ld','%q','%q','%q','%q','%q','%q')", - switch_event_get_header_nil(event, "unique-id"), - switch_event_get_header_nil(event, "call-direction"), - switch_event_get_header_nil(event, "event-date-local"), - (long) switch_epoch_time_now(NULL), - switch_event_get_header_nil(event, "channel-name"), - switch_event_get_header_nil(event, "channel-state"), - switch_event_get_header_nil(event, "channel-call-state"), - switch_event_get_header_nil(event, "caller-dialplan"), - switch_event_get_header_nil(event, "caller-context"), switch_core_get_variable("hostname") - ); + new_sql() = switch_mprintf("insert into channels (uuid,direction,created,created_epoch, name,state,callstate,dialplan,context,hostname) " + "values('%q','%q','%q','%ld','%q','%q','%q','%q','%q','%q')", + switch_event_get_header_nil(event, "unique-id"), + switch_event_get_header_nil(event, "call-direction"), + switch_event_get_header_nil(event, "event-date-local"), + (long) switch_epoch_time_now(NULL), + switch_event_get_header_nil(event, "channel-name"), + switch_event_get_header_nil(event, "channel-state"), + switch_event_get_header_nil(event, "channel-call-state"), + switch_event_get_header_nil(event, "caller-dialplan"), + switch_event_get_header_nil(event, "caller-context"), switch_core_get_variable("hostname") + ); break; case SWITCH_EVENT_CODEC: - sql = + new_sql() = switch_mprintf ("update channels set read_codec='%q',read_rate='%q',write_codec='%q',write_rate='%q' where uuid='%q' and hostname='%q'", switch_event_get_header_nil(event, "channel-read-codec-name"), @@ -1009,15 +1054,28 @@ static void core_event_handler(switch_event_t *event) case SWITCH_EVENT_CHANNEL_HOLD: case SWITCH_EVENT_CHANNEL_UNHOLD: case SWITCH_EVENT_CHANNEL_EXECUTE: - sql = switch_mprintf("update channels set application='%q',application_data='%q'," - "presence_id='%q',presence_data='%q' where uuid='%q' and hostname='%q'", - switch_event_get_header_nil(event, "application"), - switch_event_get_header_nil(event, "application-data"), - switch_event_get_header_nil(event, "channel-presence-id"), - switch_event_get_header_nil(event, "channel-presence-data"), - switch_event_get_header_nil(event, "unique-id"), switch_core_get_variable("hostname") + new_sql() = switch_mprintf("update channels set application='%q',application_data='%q'," + "presence_id='%q',presence_data='%q' where uuid='%q' and hostname='%q'", + switch_event_get_header_nil(event, "application"), + switch_event_get_header_nil(event, "application-data"), + switch_event_get_header_nil(event, "channel-presence-id"), + switch_event_get_header_nil(event, "channel-presence-data"), + switch_event_get_header_nil(event, "unique-id"), switch_core_get_variable("hostname") + + ); + break; + + case SWITCH_EVENT_CHANNEL_ORIGINATE: + { + new_sql() = switch_mprintf("update channels set " + "presence_id='%q',presence_data='%q', call_uuid='%q' where uuid='%q' and hostname='%q'", + switch_event_get_header_nil(event, "channel-presence-id"), + switch_event_get_header_nil(event, "channel-presence-data"), + switch_event_get_header_nil(event, "channel-call-uuid"), + switch_event_get_header_nil(event, "unique-id"), switch_core_get_variable("hostname")); + + } - ); break; case SWITCH_EVENT_CALL_UPDATE: { @@ -1027,30 +1085,29 @@ static void core_event_handler(switch_event_t *event) if (!name) { name = switch_event_get_header(event, "caller-callee-id-name"); } - + if (!number) { number = switch_event_get_header(event, "caller-callee-id-number"); } if (!zstr(name) && !zstr(number)) { - sql = switch_mprintf("update channels set state='%s',callstate='%s',callee_name='%q'," - "callee_num='%q',callee_direction='%q' where uuid='%s' and hostname='%q'", - switch_event_get_header_nil(event, "channel-state"), - switch_event_get_header_nil(event, "channel-call-state"), - switch_str_nil(name), - switch_str_nil(number), - switch_event_get_header_nil(event, "direction"), - switch_event_get_header_nil(event, "unique-id"), switch_core_get_variable("hostname")); + new_sql() = switch_mprintf("update channels set state='%s',callstate='%s',callee_name='%q'," + "callee_num='%q',callee_direction='%q' where uuid='%s' and hostname='%q'", + switch_event_get_header_nil(event, "channel-state"), + switch_event_get_header_nil(event, "channel-call-state"), + switch_str_nil(name), + switch_str_nil(number), + switch_event_get_header_nil(event, "direction"), + switch_event_get_header_nil(event, "unique-id"), switch_core_get_variable("hostname")); } } break; case SWITCH_EVENT_CHANNEL_CALLSTATE: { - sql = switch_mprintf("update channels set callstate='%q' where uuid='%q' and hostname='%q'", - switch_event_get_header_nil(event, "channel-call-state"), - switch_event_get_header_nil(event, "unique-id"), - switch_core_get_variable("hostname")); - + new_sql() = switch_mprintf("update channels set callstate='%q' where uuid='%q' and hostname='%q'", + switch_event_get_header_nil(event, "channel-call-state"), + switch_event_get_header_nil(event, "unique-id"), switch_core_get_variable("hostname")); + } break; case SWITCH_EVENT_CHANNEL_STATE: @@ -1067,55 +1124,65 @@ static void core_event_handler(switch_event_t *event) case CS_DESTROY: break; case CS_ROUTING: - sql = switch_mprintf("update channels set state='%s',cid_name='%q',cid_num='%q'," - "ip_addr='%s',dest='%q',dialplan='%q',context='%q',presence_id='%q',presence_data='%q' " - "where uuid='%s' and hostname='%q'", - switch_event_get_header_nil(event, "channel-state"), - switch_event_get_header_nil(event, "caller-caller-id-name"), - switch_event_get_header_nil(event, "caller-caller-id-number"), - switch_event_get_header_nil(event, "caller-network-addr"), - switch_event_get_header_nil(event, "caller-destination-number"), - switch_event_get_header_nil(event, "caller-dialplan"), - switch_event_get_header_nil(event, "caller-context"), - switch_event_get_header_nil(event, "channel-presence-id"), - switch_event_get_header_nil(event, "channel-presence-data"), - switch_event_get_header_nil(event, "unique-id"), switch_core_get_variable("hostname")); + new_sql() = switch_mprintf("update channels set state='%s',cid_name='%q',cid_num='%q'," + "ip_addr='%s',dest='%q',dialplan='%q',context='%q',presence_id='%q',presence_data='%q' " + "where uuid='%s' and hostname='%q'", + switch_event_get_header_nil(event, "channel-state"), + switch_event_get_header_nil(event, "caller-caller-id-name"), + switch_event_get_header_nil(event, "caller-caller-id-number"), + switch_event_get_header_nil(event, "caller-network-addr"), + switch_event_get_header_nil(event, "caller-destination-number"), + switch_event_get_header_nil(event, "caller-dialplan"), + switch_event_get_header_nil(event, "caller-context"), + switch_event_get_header_nil(event, "channel-presence-id"), + switch_event_get_header_nil(event, "channel-presence-data"), + switch_event_get_header_nil(event, "unique-id"), switch_core_get_variable("hostname")); break; default: - sql = switch_mprintf("update channels set state='%s' where uuid='%s' and hostname='%q'", - switch_event_get_header_nil(event, "channel-state"), - switch_event_get_header_nil(event, "unique-id"), switch_core_get_variable("hostname")); + new_sql() = switch_mprintf("update channels set state='%s' where uuid='%s' and hostname='%q'", + switch_event_get_header_nil(event, "channel-state"), + switch_event_get_header_nil(event, "unique-id"), switch_core_get_variable("hostname")); break; } + break; + + } case SWITCH_EVENT_CHANNEL_BRIDGE: - sql = switch_mprintf("insert into calls values ('%s', '%ld', '%s','%q','%q','%q','%q','%s','%q','%q','%q','%q','%s','%q')", - switch_event_get_header_nil(event, "event-date-local"), - (long) switch_epoch_time_now(NULL), - switch_event_get_header_nil(event, "event-calling-function"), - switch_event_get_header_nil(event, "caller-caller-id-name"), - switch_event_get_header_nil(event, "caller-caller-id-number"), - switch_event_get_header_nil(event, "caller-destination-number"), - switch_event_get_header_nil(event, "caller-channel-name"), - switch_event_get_header_nil(event, "caller-unique-id"), - switch_event_get_header_nil(event, "Other-Leg-caller-id-name"), - switch_event_get_header_nil(event, "Other-Leg-caller-id-number"), - switch_event_get_header_nil(event, "Other-Leg-destination-number"), - switch_event_get_header_nil(event, "Other-Leg-channel-name"), - switch_event_get_header_nil(event, "Other-Leg-unique-id"), switch_core_get_variable("hostname") - ); + new_sql() = switch_mprintf("update channels set call_uuid='%q' where uuid='%s' and hostname='%q'", + switch_event_get_header_nil(event, "channel-call-uuid"), + switch_event_get_header_nil(event, "unique-id"), switch_core_get_variable("hostname")); + new_sql() = switch_mprintf("insert into calls (call_uuid,call_created,call_created_epoch,function,caller_cid_name," + "caller_cid_num,caller_dest_num,caller_chan_name,caller_uuid,callee_cid_name," + "callee_cid_num,callee_dest_num,callee_chan_name,callee_uuid,hostname) " + "values ('%s', '%s', '%ld', '%s','%q','%q','%q','%q','%s','%q','%q','%q','%q','%s','%q')", + switch_event_get_header_nil(event, "channel-call-uuid"), + switch_event_get_header_nil(event, "event-date-local"), + (long) switch_epoch_time_now(NULL), + switch_event_get_header_nil(event, "event-calling-function"), + switch_event_get_header_nil(event, "caller-caller-id-name"), + switch_event_get_header_nil(event, "caller-caller-id-number"), + switch_event_get_header_nil(event, "caller-destination-number"), + switch_event_get_header_nil(event, "caller-channel-name"), + switch_event_get_header_nil(event, "caller-unique-id"), + switch_event_get_header_nil(event, "Other-Leg-caller-id-name"), + switch_event_get_header_nil(event, "Other-Leg-caller-id-number"), + switch_event_get_header_nil(event, "Other-Leg-destination-number"), + switch_event_get_header_nil(event, "Other-Leg-channel-name"), + switch_event_get_header_nil(event, "Other-Leg-unique-id"), switch_core_get_variable("hostname") + ); break; case SWITCH_EVENT_CHANNEL_UNBRIDGE: - sql = switch_mprintf("delete from calls where caller_uuid='%s' and hostname='%q'", - switch_event_get_header_nil(event, "caller-unique-id"), switch_core_get_variable("hostname")); + new_sql() = switch_mprintf("delete from calls where caller_uuid='%s' and hostname='%q'", + switch_event_get_header_nil(event, "caller-unique-id"), switch_core_get_variable("hostname")); break; case SWITCH_EVENT_SHUTDOWN: - sql = switch_mprintf("delete from channels where hostname='%q';" - "delete from interfaces where hostname='%q';" - "delete from calls where hostname='%q'", - switch_core_get_variable("hostname"), switch_core_get_variable("hostname"), switch_core_get_variable("hostname") - ); + new_sql() = switch_mprintf("delete from channels where hostname='%q';" + "delete from interfaces where hostname='%q';" + "delete from calls where hostname='%q'", + switch_core_get_variable("hostname"), switch_core_get_variable("hostname"), switch_core_get_variable("hostname") + ); break; case SWITCH_EVENT_LOG: return; @@ -1128,12 +1195,12 @@ static void core_event_handler(switch_event_t *event) const char *key = switch_event_get_header_nil(event, "key"); const char *filename = switch_event_get_header_nil(event, "filename"); if (!zstr(type) && !zstr(name)) { - sql = + new_sql() = switch_mprintf ("insert into interfaces (type,name,description,syntax,ikey,filename,hostname) values('%q','%q','%q','%q','%q','%q','%q')", type, name, switch_str_nil(description), switch_str_nil(syntax), switch_str_nil(key), switch_str_nil(filename), switch_core_get_variable("hostname") - ); + ); } break; } @@ -1142,8 +1209,8 @@ static void core_event_handler(switch_event_t *event) const char *type = switch_event_get_header_nil(event, "type"); const char *name = switch_event_get_header_nil(event, "name"); if (!zstr(type) && !zstr(name)) { - sql = switch_mprintf("delete from interfaces where type='%q' and name='%q' and hostname='%q'", type, name, - switch_core_get_variable("hostname")); + new_sql() = switch_mprintf("delete from interfaces where type='%q' and name='%q' and hostname='%q'", type, name, + switch_core_get_variable("hostname")); } break; } @@ -1154,9 +1221,9 @@ static void core_event_handler(switch_event_t *event) if (zstr(type)) { break; } - sql = switch_mprintf("update channels set secure='%s' where uuid='%s' and hostname='%q'", - type, switch_event_get_header_nil(event, "caller-unique-id"), switch_core_get_variable("hostname") - ); + new_sql() = switch_mprintf("update channels set secure='%s' where uuid='%s' and hostname='%q'", + type, switch_event_get_header_nil(event, "caller-unique-id"), switch_core_get_variable("hostname") + ); break; } case SWITCH_EVENT_NAT: @@ -1164,14 +1231,14 @@ static void core_event_handler(switch_event_t *event) const char *op = switch_event_get_header_nil(event, "op"); switch_bool_t sticky = switch_true(switch_event_get_header_nil(event, "sticky")); if (!strcmp("add", op)) { - sql = switch_mprintf("insert into nat (port, proto, sticky, hostname) values (%s, %s, %d,'%q')", - switch_event_get_header_nil(event, "port"), - switch_event_get_header_nil(event, "proto"), sticky, switch_core_get_variable("hostname") - ); + new_sql() = switch_mprintf("insert into nat (port, proto, sticky, hostname) values (%s, %s, %d,'%q')", + switch_event_get_header_nil(event, "port"), + switch_event_get_header_nil(event, "proto"), sticky, switch_core_get_variable("hostname") + ); } else if (!strcmp("del", op)) { - sql = switch_mprintf("delete from nat where port=%s and proto=%s and hostname='%q'", - switch_event_get_header_nil(event, "port"), - switch_event_get_header_nil(event, "proto"), switch_core_get_variable("hostname")); + new_sql() = switch_mprintf("delete from nat where port=%s and proto=%s and hostname='%q'", + switch_event_get_header_nil(event, "port"), + switch_event_get_header_nil(event, "proto"), switch_core_get_variable("hostname")); } else if (!strcmp("status", op)) { /* call show nat api */ } else if (!strcmp("status_response", op)) { @@ -1185,13 +1252,17 @@ static void core_event_handler(switch_event_t *event) break; } - if (sql) { - if (switch_stristr("update channels", sql) || switch_stristr("delete from channels", sql)) { - switch_queue_push(sql_manager.sql_queue[1], sql); - } else { - switch_queue_push(sql_manager.sql_queue[0], sql); + if (sql_idx) { + int i = 0; + + for (i = 0; i < sql_idx; i++) { + if (switch_stristr("update channels", sql[i]) || switch_stristr("delete from channels", sql[i])) { + switch_queue_push(sql_manager.sql_queue[1], sql[i]); + } else { + switch_queue_push(sql_manager.sql_queue[0], sql[i]); + } + sql[i] = NULL; } - sql = NULL; } } @@ -1247,11 +1318,15 @@ static char create_channels_sql[] = " callstate VARCHAR(64),\n" " callee_name VARCHAR(1024),\n" " callee_num VARCHAR(256),\n" - " callee_direction VARCHAR(5)\n" - ");\ncreate index uuindex on channels (uuid,hostname);\n"; + " callee_direction VARCHAR(5),\n" + " call_uuid VARCHAR(256)\n" + ");\n" + "create index uuindex on channels (uuid,hostname);\n" + "create index uuindex2 on channels (call_uuid,hostname);\n"; static char create_calls_sql[] = "CREATE TABLE calls (\n" + " call_uuid VARCHAR(255),\n" " call_created VARCHAR(128),\n" " call_created_epoch INTEGER,\n" " function VARCHAR(1024),\n" @@ -1266,7 +1341,10 @@ static char create_calls_sql[] = " callee_chan_name VARCHAR(1024),\n" " callee_uuid VARCHAR(256),\n" " hostname VARCHAR(256)\n" - ");\n" "create index eruuindex on calls (caller_uuid,hostname);\n" "create index eeuuindex on calls (callee_uuid,hostname);\n"; + ");\n" + "create index eruuindex on calls (caller_uuid,hostname);\n" + "create index eeuuindex on calls (callee_uuid,hostname);\n" + "create index eeuuindex2 on calls (call_uuid,hostname);\n"; static char create_interfaces_sql[] = "CREATE TABLE interfaces (\n" @@ -1309,7 +1387,7 @@ switch_status_t switch_core_sqldb_start(switch_memory_pool_t *pool, switch_bool_ switch_core_hash_init(&sql_manager.dbh_hash, sql_manager.memory_pool); - top: + top: /* Activate SQL database */ if (switch_core_db_handle(&dbh) != SWITCH_STATUS_SUCCESS) { @@ -1369,8 +1447,8 @@ switch_status_t switch_core_sqldb_start(switch_memory_pool_t *pool, switch_bool_ case SCDB_TYPE_ODBC: { char *err; - switch_cache_db_test_reactive(dbh, "select callee_direction from channels", "DROP TABLE channels", create_channels_sql); - switch_cache_db_test_reactive(dbh, "select hostname from calls", "DROP TABLE calls", create_calls_sql); + switch_cache_db_test_reactive(dbh, "select call_uuid from channels", "DROP TABLE channels", create_channels_sql); + switch_cache_db_test_reactive(dbh, "select call_uuid from calls", "DROP TABLE calls", create_calls_sql); switch_cache_db_test_reactive(dbh, "select ikey from interfaces", "DROP TABLE interfaces", create_interfaces_sql); switch_cache_db_test_reactive(dbh, "select hostname from tasks", "DROP TABLE tasks", create_tasks_sql); diff --git a/src/switch_event.c b/src/switch_event.c index c5b22f8868..130032c0ed 100644 --- a/src/switch_event.c +++ b/src/switch_event.c @@ -1047,6 +1047,85 @@ SWITCH_DECLARE(switch_status_t) switch_event_serialize(switch_event_t *event, ch return SWITCH_STATUS_SUCCESS; } + +SWITCH_DECLARE(switch_status_t) switch_event_create_brackets(char *data, char a, char b, char c, switch_event_t **event, char **new_data) +{ + char *vdata, *vdatap; + char *end, *check_a, *check_b; + switch_event_t *e = *event; + char *var_array[1024] = { 0 }; + int var_count = 0; + char *next; + + vdata = strdup(data); + vdatap = vdata; + + end = switch_find_end_paren(vdata, a, b); + + check_a = end; + + while (check_a && (check_b = strchr(check_a, a))) { + if ((check_b = switch_find_end_paren(check_b, a, b))) { + check_a = check_b; + } + } + + if (check_a) end = check_a; + + if (end) { + vdata++; + *end++ = '\0'; + } else { + vdata = NULL; + return SWITCH_STATUS_FALSE; + } + + if (!e) { + switch_event_create_plain(&e, SWITCH_EVENT_CHANNEL_DATA); + } + + + for (;;) { + if ((next = strchr(vdata, b))) { + char *pnext; + *next++ = '\0'; + + if ((pnext = strchr(next, a))) { + next = pnext + 1; + } + } + + if ((var_count = switch_separate_string(vdata, c, var_array, (sizeof(var_array) / sizeof(var_array[0]))))) { + int x = 0; + for (x = 0; x < var_count; x++) { + char *inner_var_array[2] = { 0 }; + int inner_var_count; + + if ((inner_var_count = switch_separate_string(var_array[x], '=', + inner_var_array, (sizeof(inner_var_array) / sizeof(inner_var_array[0])))) == 2) { + switch_event_add_header_string(e, SWITCH_STACK_BOTTOM, inner_var_array[0], inner_var_array[1]); + } + } + } + + if (next) { + vdata = next; + } else { + break; + } + + } + + *event = e; + *new_data = strdup(end); + free(vdatap); + + return SWITCH_STATUS_SUCCESS; + +} + + + SWITCH_DECLARE(switch_status_t) switch_event_create_json(switch_event_t **event, const char *json) { switch_event_t *new_event; diff --git a/src/switch_ivr_originate.c b/src/switch_ivr_originate.c index 03dbd4dd25..1edc491be5 100644 --- a/src/switch_ivr_originate.c +++ b/src/switch_ivr_originate.c @@ -2223,7 +2223,9 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess } if (cid_name_override) { - switch_event_add_header_string(var_event, SWITCH_STACK_BOTTOM, "origination_caller_id_name", cid_name_override); + if (!cid_tmp) { + switch_event_add_header_string(var_event, SWITCH_STACK_BOTTOM, "origination_caller_id_name", cid_name_override); + } } else { cid_name_override = switch_event_get_header(var_event, "origination_caller_id_name"); } @@ -2233,7 +2235,9 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess } if (cid_num_override) { - switch_event_add_header_string(var_event, SWITCH_STACK_BOTTOM, "origination_caller_id_number", cid_num_override); + if (!cid_tmp) { + switch_event_add_header_string(var_event, SWITCH_STACK_BOTTOM, "origination_caller_id_number", cid_num_override); + } } else { cid_num_override = switch_event_get_header(var_event, "origination_caller_id_number"); } @@ -2309,7 +2313,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess } if (p == end) { - end = NULL; + end = strchr(p, '['); } p++; @@ -2326,9 +2330,11 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess char *vdata; const char *current_variable; char variable_buffer[512] = ""; - switch_event_t *local_var_event = NULL, *originate_var_event = NULL; + switch_event_t *local_var_event = NULL, *originate_var_event = NULL, *event = NULL; + char *check_a = NULL, *check_b = NULL; end = NULL; + chan_type = peer_names[i]; while (chan_type && *chan_type && *chan_type == ' ') { @@ -2338,6 +2344,16 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess vdata = chan_type; end = switch_find_end_paren(vdata, '[', ']'); + check_a = end; + + while (check_a && (check_b = strchr(check_a, '['))) { + if ((check_b = switch_find_end_paren(check_b, '[', ']'))) { + check_a = check_b; + } + } + + if (check_a) end = check_a; + if (end) { vdata++; *end++ = '\0'; @@ -2525,20 +2541,44 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess if (vdata) { char *var_array[1024] = { 0 }; int var_count = 0; + char *next; + switch_event_create_plain(&local_var_event, SWITCH_EVENT_CHANNEL_DATA); + + + for (;;) { + if ((next = strchr(vdata, ']'))) { + char *pnext; + *next++ = '\0'; - if ((var_count = switch_separate_string(vdata, '|', var_array, (sizeof(var_array) / sizeof(var_array[0]))))) { - int x = 0; - for (x = 0; x < var_count; x++) { - char *inner_var_array[2] = { 0 }; - int inner_var_count; - if ((inner_var_count = - switch_separate_string(var_array[x], '=', - inner_var_array, (sizeof(inner_var_array) / sizeof(inner_var_array[0])))) == 2) { - switch_event_add_header_string(local_var_event, SWITCH_STACK_BOTTOM, inner_var_array[0], inner_var_array[1]); + if ((pnext = strchr(next, '['))) { + next = pnext + 1; } } + + if ((var_count = switch_separate_string(vdata, '|', var_array, (sizeof(var_array) / sizeof(var_array[0]))))) { + int x = 0; + for (x = 0; x < var_count; x++) { + char *inner_var_array[2] = { 0 }; + int inner_var_count; + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "local variable string %d = [%s]\n", + x, var_array[x]); + if ((inner_var_count = + switch_separate_string(var_array[x], '=', + inner_var_array, (sizeof(inner_var_array) / sizeof(inner_var_array[0])))) == 2) { + switch_event_add_header_string(local_var_event, SWITCH_STACK_BOTTOM, inner_var_array[0], inner_var_array[1]); + + } + } + } + + if (next) { + vdata = next; + } else { + break; + } + } } @@ -2582,16 +2622,11 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess if (local_clobber) { if (var_event) { - switch_event_t *event; switch_event_header_t *header; /* install the vars from the {} params */ for (header = var_event->headers; header; header = header->next) { switch_channel_set_variable(originate_status[i].peer_channel, header->name, header->value); } - switch_event_create(&event, SWITCH_EVENT_CHANNEL_ORIGINATE); - switch_assert(event); - switch_channel_event_set_data(originate_status[i].peer_channel, event); - switch_event_fire(&event); } } @@ -2606,19 +2641,19 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess if (!local_clobber) { if (var_event) { - switch_event_t *event; switch_event_header_t *header; /* install the vars from the {} params */ for (header = var_event->headers; header; header = header->next) { switch_channel_set_variable(originate_status[i].peer_channel, header->name, header->value); } - switch_event_create(&event, SWITCH_EVENT_CHANNEL_ORIGINATE); - switch_assert(event); - switch_channel_event_set_data(originate_status[i].peer_channel, event); - switch_event_fire(&event); } } + switch_event_create(&event, SWITCH_EVENT_CHANNEL_ORIGINATE); + switch_assert(event); + switch_channel_event_set_data(originate_status[i].peer_channel, event); + switch_event_fire(&event); + if (originate_status[i].peer_channel) { const char *vvar; diff --git a/src/switch_nat.c b/src/switch_nat.c index 843e139b24..66d75e8210 100644 --- a/src/switch_nat.c +++ b/src/switch_nat.c @@ -459,14 +459,14 @@ static switch_status_t switch_nat_add_mapping_pmp(switch_port_t port, switch_nat } while (r == NATPMP_TRYAGAIN); if (r == 0) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "mapped public port %hu protocol %s to localport %hu\n", + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "mapped public port %hu protocol %s to localport %hu\n", response.pnu.newportmapping.mappedpublicport, response.type == NATPMP_RESPTYPE_UDPPORTMAPPING ? "UDP" : (response.type == NATPMP_RESPTYPE_TCPPORTMAPPING ? "TCP" : "UNKNOWN"), response.pnu.newportmapping.privateport); if (external_port) { *external_port = response.pnu.newportmapping.mappedpublicport; } else if (response.pnu.newportmapping.mappedpublicport != response.pnu.newportmapping.privateport) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "External port %hu protocol %s was not available, it was instead mapped to %hu", + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "External port %hu protocol %s was not available, it was instead mapped to %hu\n", response.pnu.newportmapping.privateport, response.type == NATPMP_RESPTYPE_UDPPORTMAPPING ? "UDP" : (response.type == NATPMP_RESPTYPE_TCPPORTMAPPING ? "TCP" : "UNKNOWN"), response.pnu.newportmapping.mappedpublicport); @@ -638,7 +638,7 @@ SWITCH_DECLARE(void) switch_nat_republish(void) switch_stream_handle_t stream = { 0 }; SWITCH_STANDARD_STREAM(stream); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Refreshing nat maps\n"); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "Refreshing nat maps\n"); switch_api_execute("show", "nat_map as xml", NULL, &stream); diff --git a/w32/Console/FreeSwitchConsole.2010.vcxproj b/w32/Console/FreeSwitchConsole.2010.vcxproj new file mode 100644 index 0000000000..21900b0a60 --- /dev/null +++ b/w32/Console/FreeSwitchConsole.2010.vcxproj @@ -0,0 +1,223 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + FreeSwitchConsole + {1AF3A893-F7BE-43DD-B697-8AB2397C0D67} + FreeSwitchConsole + Win32Proj + + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(PlatformName)\$(Configuration)\ + $(Configuration)\ + false + $(SolutionDir)$(PlatformName)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + $(SolutionDir)$(PlatformName)\$(Configuration)\ + $(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + + + + $(IntDir)BuildLog $(ProjectName).htm + + + Disabled + %(RootDir)%(Directory)include;%(RootDir)%(Directory)..\libs\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level4 + true + ProgramDatabase + true + + + $(OutDir);%(AdditionalLibraryDirectories) + true + Console + true + + + MachineX86 + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + X64 + + + Disabled + %(RootDir)%(Directory)include;%(RootDir)%(Directory)..\libs\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level4 + true + ProgramDatabase + true + + + $(OutDir);%(AdditionalLibraryDirectories) + true + Console + true + + + MachineX64 + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + %(RootDir)%(Directory)include;%(RootDir)%(Directory)..\libs\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level4 + true + ProgramDatabase + + + $(OutDir);%(AdditionalLibraryDirectories) + true + Console + true + true + true + + + MachineX86 + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + X64 + + + %(RootDir)%(Directory)include;%(RootDir)%(Directory)..\libs\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level4 + true + ProgramDatabase + + + $(OutDir);%(AdditionalLibraryDirectories) + true + Console + true + true + true + + + MachineX64 + + + + + + + + + + + + + + + + + + + + + + {f6c55d93-b927-4483-bb69-15aef3dd2dff} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/w32/Library/FreeSwitchCore.2010.vcxproj b/w32/Library/FreeSwitchCore.2010.vcxproj new file mode 100644 index 0000000000..9dc0f7899c --- /dev/null +++ b/w32/Library/FreeSwitchCore.2010.vcxproj @@ -0,0 +1,813 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + FreeSwitchCoreLib + {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} + FreeSwitchCoreLib + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Configuration)\ + true + $(SolutionDir)$(PlatformName)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + $(Configuration)\ + $(Configuration)\ + false + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + $(SolutionDir)$(PlatformName)\$(Configuration)\ + FreeSwitch + FreeSwitch + FreeSwitch + FreeSwitch + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + Disabled + ..\..\src\include;..\..\libs\include;..\..\libs\srtp\include;..\..\libs\srtp\crypto\include;..\..\libs\libteletone\src;..\..\libs\win32\sqlite;..\..\libs\pcre;..\..\libs\stfu;..\..\libs\speex\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;FREESWITCHCORE_EXPORTS;PCRE_STATIC;STATICLIB;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Use + switch.h + $(IntDir)$(TargetName).pch + + + Level4 + true + ProgramDatabase + %(ForcedIncludeFiles) + false + Default + + + true + + + rpcrt4.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\libs\apr\$(OutDir);$(ProjectDir)..\..\libs\sqlite\$(OutDir) DLL;$(ProjectDir)..\..\libs\apr-util\$(OutDir);$(ProjectDir)..\..\libs\apr-iconv\$(OutDir);$(ProjectDir)..\..\libs\libresample\win;$(ProjectDir)..\..\libs\srtp\$(OutDir);%(AdditionalLibraryDirectories) + %(AddModuleNamesToAssembly) + true + Windows + + + + + false + + + + + MachineX86 + + + + + if not exist "$(OutDir)conf" xcopy "$(SolutionDir)conf\*.*" "$(OutDir)conf\" /C /D /Y /S +if not exist "$(OutDir)db" md "$(OutDir)db" +if not exist "$(OutDir)log" md "$(OutDir)log" +if not exist "$(OutDir)htdocs" md "$(OutDir)htdocs" +if not exist "$(OutDir)htdocs" xcopy "$(SolutionDir)htdocs\*.*" "$(OutDir)htdocs\" /C /D /Y /S + + + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + X64 + + + Disabled + ..\..\src\include;..\..\libs\include;..\..\libs\srtp\include;..\..\libs\srtp\crypto\include;..\..\libs\libteletone\src;..\..\libs\win32\sqlite;..\..\libs\pcre;..\..\libs\stfu;..\..\libs\speex\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;FREESWITCHCORE_EXPORTS;PCRE_STATIC;STATICLIB;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Use + switch.h + $(IntDir)$(TargetName).pch + + + Level4 + false + ProgramDatabase + %(ForcedIncludeFiles) + false + + + true + + + rpcrt4.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\libs\apr\$(OutDir);$(ProjectDir)..\..\libs\sqlite\$(OutDir) DLL;$(ProjectDir)..\..\libs\apr-util\$(OutDir);$(ProjectDir)..\..\libs\apr-iconv\$(OutDir);$(ProjectDir)..\..\libs\libresample\win;$(ProjectDir)..\..\libs\srtp\$(OutDir);%(AdditionalLibraryDirectories) + %(AddModuleNamesToAssembly) + true + Windows + + + + + false + + + $(OutDir)FreeSwitchCore.lib + MachineX64 + + + if not exist "$(OutDir)conf" xcopy "$(SolutionDir)conf\*.*" "$(OutDir)conf\" /C /D /Y /S +if not exist "$(OutDir)db" md "$(OutDir)db" +if not exist "$(OutDir)log" md "$(OutDir)log" +if not exist "$(OutDir)htdocs" md "$(OutDir)htdocs" +if not exist "$(OutDir)htdocs" xcopy "$(SolutionDir)htdocs\*.*" "$(OutDir)htdocs\" /C /D /Y /S + + + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + Disabled + ..\..\src\include;..\..\libs\include;..\..\libs\srtp\include;..\..\libs\srtp\crypto\include;..\..\libs\libteletone\src;..\..\libs\win32\sqlite;..\..\libs\pcre;..\..\libs\stfu;..\..\libs\speex\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;FREESWITCHCORE_EXPORTS;STATICLIB;CRASH_PROT;PCRE_STATIC;%(PreprocessorDefinitions) + MultiThreadedDLL + Use + switch.h + $(IntDir)$(TargetName).pch + + + Level4 + true + ProgramDatabase + false + + + true + + + rpcrt4.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\libs\apr\$(OutDir);$(ProjectDir)..\..\libs\sqlite\$(OutDir) DLL;$(ProjectDir)..\..\libs\apr-util\$(OutDir);$(ProjectDir)..\..\libs\apr-iconv\$(OutDir);$(ProjectDir)..\..\libs\libresample\win;$(ProjectDir)..\..\libs\srtp\$(OutDir);%(AdditionalLibraryDirectories) + true + Windows + true + true + false + + + $(OutDir)FreeSwitchCore.lib + MachineX86 + + + if not exist "$(OutDir)conf" xcopy "$(SolutionDir)conf\*.*" "$(OutDir)conf\" /C /D /Y /S +if not exist "$(OutDir)db" md "$(OutDir)db" +if not exist "$(OutDir)log" md "$(OutDir)log" +if not exist "$(OutDir)htdocs" md "$(OutDir)htdocs" +if not exist "$(OutDir)htdocs" xcopy "$(SolutionDir)htdocs\*.*" "$(OutDir)htdocs\" /C /D /Y /S + + + + + + + $(IntDir)BuildLog $(ProjectName).htm + + + + + + + X64 + + + Disabled + ..\..\src\include;..\..\libs\include;..\..\libs\srtp\include;..\..\libs\srtp\crypto\include;..\..\libs\libteletone\src;..\..\libs\win32\sqlite;..\..\libs\pcre;..\..\libs\stfu;..\..\libs\speex\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;FREESWITCHCORE_EXPORTS;STATICLIB;CRASH_PROT;PCRE_STATIC;%(PreprocessorDefinitions) + MultiThreadedDLL + Use + switch.h + $(IntDir)$(TargetName).pch + + + Level4 + false + ProgramDatabase + false + + + true + + + rpcrt4.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\libs\apr\$(OutDir);$(ProjectDir)..\..\libs\sqlite\$(OutDir) DLL;$(ProjectDir)..\..\libs\apr-util\$(OutDir);$(ProjectDir)..\..\libs\apr-iconv\$(OutDir);$(ProjectDir)..\..\libs\libresample\win;$(ProjectDir)..\..\libs\srtp\$(OutDir);%(AdditionalLibraryDirectories) + true + Windows + true + true + false + + + $(OutDir)FreeSwitchCore.lib + MachineX64 + + + if not exist "$(OutDir)conf" xcopy "$(SolutionDir)conf\*.*" "$(OutDir)conf\" /C /D /Y /S +if not exist "$(OutDir)db" md "$(OutDir)db" +if not exist "$(OutDir)log" md "$(OutDir)log" +if not exist "$(OutDir)htdocs" md "$(OutDir)htdocs" +if not exist "$(OutDir)htdocs" xcopy "$(SolutionDir)htdocs\*.*" "$(OutDir)htdocs\" /C /D /Y /S + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create + Create + Create + Create + + + + + + + + + + + + + + + + + + + + 6385;%(DisableSpecificWarnings) + 6385;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + /analyze:stacksize17000 %(AdditionalOptions) + /analyze:stacksize17000 %(AdditionalOptions) + + + + + + + + + + 4389;4127;%(DisableSpecificWarnings) + 4389;4127;%(DisableSpecificWarnings) + 4389;4127;%(DisableSpecificWarnings) + 4389;4127;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + + + + + 4100;4127;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + 4100;4127;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + + + + + 4100;4127;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + 4100;4127;%(DisableSpecificWarnings) + + + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + + + + + 4100;4127;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + 4100;4127;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + + + + + 4100;4127;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + 4100;4127;%(DisableSpecificWarnings) + + + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + + + + + 4100;4127;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + 4100;4127;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + + + + + 4100;4127;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + 4100;4127;%(DisableSpecificWarnings) + + + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + + + + + 4100;4127;4389;4706;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + 4100;4127;4389;4706;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + + + + + 4100;4127;4389;4706;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + 4100;4127;4389;4706;%(DisableSpecificWarnings) + + + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + + + + + 4100;4127;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + 4100;4127;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + + + + + 4100;4127;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + 4100;4127;%(DisableSpecificWarnings) + + + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + + + + + 4100;4127;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + 4100;4127;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + + + + + 4100;4127;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + 4100;4127;%(DisableSpecificWarnings) + + + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + + + + + 4100;4127;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + 4100;4127;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + + + + + 4100;4127;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + 4100;4127;%(DisableSpecificWarnings) + + + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + + + + + 4100;4127;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + 4100;4127;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + + + + + 4100;4127;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + 4100;4127;%(DisableSpecificWarnings) + + + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + + + + + 4100;4127;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + 4100;4127;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + + + + + 4100;4127;%(DisableSpecificWarnings) + _CRT_SECURE_NO_DEPRECATE;STATICLIB;%(PreprocessorDefinitions) + + + 4100;4127;%(DisableSpecificWarnings) + + + + + + + + + 4100;%(DisableSpecificWarnings) + + + 4100;%(DisableSpecificWarnings) + + + + + + + 4100;%(DisableSpecificWarnings) + + + 4100;%(DisableSpecificWarnings) + + + + + + + + + 4100;%(DisableSpecificWarnings) + + + 4100;%(DisableSpecificWarnings) + + + + + + + 4100;%(DisableSpecificWarnings) + + + 4100;%(DisableSpecificWarnings) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Document + true + true + true + true + + + Generating switch_version.h + cscript /nologo "$(ProjectDir)..\..\libs\win32\util.vbs" Version "$(ProjectDir)" "$(ProjectDir)..\..\" "$(ProjectDir)..\..\src\include\switch_version.h.template" "$(ProjectDir)..\..\src\include\switch_version.h" + + ..\..\src\include\switch.h;..\..\src\include\switch_apr.h;..\..\src\include\switch_buffer.h;..\..\src\include\switch_caller.h;..\..\src\include\switch_channel.h;..\..\src\include\switch_console.h;..\..\src\include\switch_core.h;..\..\src\include\switch_event.h;..\..\src\include\switch_frame.h;..\..\src\include\switch_ivr.h;..\..\src\include\switch_loadable_module.h;..\..\src\include\switch_log.h;..\..\src\include\switch_module_interfaces.h;..\..\src\include\switch_platform.h;..\..\src\include\switch_resample.h;..\..\src\include\switch_rtp.h;..\..\src\include\switch_sqlite.h;..\..\src\include\switch_stun.h;..\..\src\include\switch_types.h;..\..\src\include\switch_utils.h;..\..\src\include\switch_xml.h;..\..\src\switch_buffer.c;..\..\src\switch_caller.c;..\..\src\switch_channel.c;..\..\src\switch_config.c;..\..\src\switch_console.c;..\..\src\switch_core.c;..\..\src\switch_event.c;..\..\src\switch_ivr.c;..\..\src\switch_loadable_module.c;..\..\src\switch_log.c;..\..\src\switch_resample.c;..\..\src\switch_rtp.c;..\..\src\switch_stun.c;..\..\src\switch_utils.c;..\..\src\switch_xml.c;%(AdditionalInputs) + ..\..\src\include\switch_version.h;lastversion;%(Outputs) + Generating switch_version.h + cscript /nologo "$(ProjectDir)..\..\libs\win32\util.vbs" Version "$(ProjectDir)" "$(ProjectDir)..\..\" "$(ProjectDir)..\..\src\include\switch_version.h.template" "$(ProjectDir)..\..\src\include\switch_version.h" + + ..\..\src\include\switch.h;..\..\src\include\switch_apr.h;..\..\src\include\switch_buffer.h;..\..\src\include\switch_caller.h;..\..\src\include\switch_channel.h;..\..\src\include\switch_console.h;..\..\src\include\switch_core.h;..\..\src\include\switch_event.h;..\..\src\include\switch_frame.h;..\..\src\include\switch_ivr.h;..\..\src\include\switch_loadable_module.h;..\..\src\include\switch_log.h;..\..\src\include\switch_module_interfaces.h;..\..\src\include\switch_platform.h;..\..\src\include\switch_resample.h;..\..\src\include\switch_rtp.h;..\..\src\include\switch_sqlite.h;..\..\src\include\switch_stun.h;..\..\src\include\switch_types.h;..\..\src\include\switch_utils.h;..\..\src\include\switch_xml.h;..\..\src\switch_buffer.c;..\..\src\switch_caller.c;..\..\src\switch_channel.c;..\..\src\switch_config.c;..\..\src\switch_console.c;..\..\src\switch_core.c;..\..\src\switch_event.c;..\..\src\switch_ivr.c;..\..\src\switch_loadable_module.c;..\..\src\switch_log.c;..\..\src\switch_resample.c;..\..\src\switch_rtp.c;..\..\src\switch_stun.c;..\..\src\switch_utils.c;..\..\src\switch_xml.c;%(AdditionalInputs) + ..\..\src\include\switch_version.h;lastversion;%(Outputs) + Generating switch_version.h + cscript /nologo "$(ProjectDir)..\..\libs\win32\util.vbs" Version "$(ProjectDir)" "$(ProjectDir)..\..\" "$(ProjectDir)..\..\src\include\switch_version.h.template" "$(ProjectDir)..\..\src\include\switch_version.h" + + ..\..\src\include\switch.h;..\..\src\include\switch_apr.h;..\..\src\include\switch_buffer.h;..\..\src\include\switch_caller.h;..\..\src\include\switch_channel.h;..\..\src\include\switch_console.h;..\..\src\include\switch_core.h;..\..\src\include\switch_event.h;..\..\src\include\switch_frame.h;..\..\src\include\switch_ivr.h;..\..\src\include\switch_loadable_module.h;..\..\src\include\switch_log.h;..\..\src\include\switch_module_interfaces.h;..\..\src\include\switch_platform.h;..\..\src\include\switch_resample.h;..\..\src\include\switch_rtp.h;..\..\src\include\switch_sqlite.h;..\..\src\include\switch_stun.h;..\..\src\include\switch_types.h;..\..\src\include\switch_utils.h;..\..\src\include\switch_xml.h;..\..\src\switch_buffer.c;..\..\src\switch_caller.c;..\..\src\switch_channel.c;..\..\src\switch_config.c;..\..\src\switch_console.c;..\..\src\switch_core.c;..\..\src\switch_event.c;..\..\src\switch_ivr.c;..\..\src\switch_loadable_module.c;..\..\src\switch_log.c;..\..\src\switch_resample.c;..\..\src\switch_rtp.c;..\..\src\switch_stun.c;..\..\src\switch_utils.c;..\..\src\switch_xml.c;%(AdditionalInputs) + ..\..\src\include\switch_version.h;lastversion;%(Outputs) + Generating switch_version.h + cscript /nologo "$(ProjectDir)..\..\libs\win32\util.vbs" Version "$(ProjectDir)" "$(ProjectDir)..\..\" "$(ProjectDir)..\..\src\include\switch_version.h.template" "$(ProjectDir)..\..\src\include\switch_version.h" + + ..\..\src\include\switch.h;..\..\src\include\switch_apr.h;..\..\src\include\switch_buffer.h;..\..\src\include\switch_caller.h;..\..\src\include\switch_channel.h;..\..\src\include\switch_console.h;..\..\src\include\switch_core.h;..\..\src\include\switch_event.h;..\..\src\include\switch_frame.h;..\..\src\include\switch_ivr.h;..\..\src\include\switch_loadable_module.h;..\..\src\include\switch_log.h;..\..\src\include\switch_module_interfaces.h;..\..\src\include\switch_platform.h;..\..\src\include\switch_resample.h;..\..\src\include\switch_rtp.h;..\..\src\include\switch_sqlite.h;..\..\src\include\switch_stun.h;..\..\src\include\switch_types.h;..\..\src\include\switch_utils.h;..\..\src\include\switch_xml.h;..\..\src\switch_buffer.c;..\..\src\switch_caller.c;..\..\src\switch_channel.c;..\..\src\switch_config.c;..\..\src\switch_console.c;..\..\src\switch_core.c;..\..\src\switch_event.c;..\..\src\switch_ivr.c;..\..\src\switch_loadable_module.c;..\..\src\switch_log.c;..\..\src\switch_resample.c;..\..\src\switch_rtp.c;..\..\src\switch_stun.c;..\..\src\switch_utils.c;..\..\src\switch_xml.c;%(AdditionalInputs) + ..\..\src\include\switch_version.h;lastversion;%(Outputs) + + + + + {89385c74-5860-4174-9caf-a39e7c48909c} + false + + + {03207781-0d1c-4db3-a71d-45c608f28dbd} + false + + + {eef031cb-fed8-451e-a471-91ec8d4f6750} + false + + + {f057da7f-79e5-4b00-845c-ef446ef055e3} + false + + + {f6c55d93-b927-4483-bb69-15aef3dd2dff} + false + true + false + true + false + + + {8d04b550-d240-4a44-8a18-35da3f7038d9} + false + + + {6edfefd5-3596-4fa9-8eba-b331547b35a3} + false + + + + + + \ No newline at end of file diff --git a/w32/apr.props b/w32/apr.props new file mode 100644 index 0000000000..856e7e3ffb --- /dev/null +++ b/w32/apr.props @@ -0,0 +1,12 @@ + + + + <_ProjectFileVersion>10.0.30319.1 + + + + $(SolutionDir)libs\apr\include;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + \ No newline at end of file diff --git a/w32/curl.props b/w32/curl.props new file mode 100644 index 0000000000..de23612923 --- /dev/null +++ b/w32/curl.props @@ -0,0 +1,12 @@ + + + + <_ProjectFileVersion>10.0.30319.1 + + + + $(SolutionDir)libs\curl\include;%(AdditionalIncludeDirectories) + HAVE_CURL;CURL_STATICLIB;%(PreprocessorDefinitions) + + + \ No newline at end of file diff --git a/w32/module_debug.props b/w32/module_debug.props new file mode 100644 index 0000000000..85c1d0c1d2 --- /dev/null +++ b/w32/module_debug.props @@ -0,0 +1,22 @@ + + + + + + + <_ProjectFileVersion>10.0.30319.1 + false + + + + Disabled + _DEBUG;DEBUG;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + ProgramDatabase + true + + + + + \ No newline at end of file diff --git a/w32/module_release.props b/w32/module_release.props new file mode 100644 index 0000000000..8d9029d303 --- /dev/null +++ b/w32/module_release.props @@ -0,0 +1,23 @@ + + + + + + + <_ProjectFileVersion>10.0.30319.1 + false + + + + true + NDEBUG;%(PreprocessorDefinitions) + MultiThreadedDLL + ProgramDatabase + + + true + true + UseLinkTimeCodeGeneration + + + \ No newline at end of file diff --git a/w32/modules.props b/w32/modules.props new file mode 100644 index 0000000000..06c9c831d9 --- /dev/null +++ b/w32/modules.props @@ -0,0 +1,23 @@ + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(PlatformName)\$(Configuration)\mod\ + $(PlatformName)\$(Configuration)\ + + + + $(SolutionDir)\src\include;%(AdditionalIncludeDirectories) + WIN32;_WINDOWS;_USRDLL;MOD_EXPORTS;%(PreprocessorDefinitions) + Level4 + + + $(OutDir)$(TargetName)$(TargetExt) + true + $(OutDir)$(TargetName).pdb + + + \ No newline at end of file diff --git a/w32/spidermonkey.props b/w32/spidermonkey.props new file mode 100644 index 0000000000..8300ac9138 --- /dev/null +++ b/w32/spidermonkey.props @@ -0,0 +1,18 @@ + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + $(SolutionDir)libs\js\src;$(SolutionDir)libs\js\nsprpub\pr\include;$(SolutionDir)src\mod\languages\mod_spidermonkey;%(AdditionalIncludeDirectories) + XP_WIN;JSFILE;EXPORT_JS_API;JS_THREADSAFE;%(PreprocessorDefinitions) + + + ..\..\..\..\libs\nspr-4.6.1.winnt5.$(OutDir)nspr-4.6.1\lib;%(AdditionalLibraryDirectories) + + + \ No newline at end of file diff --git a/w32/winlibs.props b/w32/winlibs.props new file mode 100644 index 0000000000..05674c70c5 --- /dev/null +++ b/w32/winlibs.props @@ -0,0 +1,12 @@ + + + + <_ProjectFileVersion>10.0.30319.1 + <_PropertySheetDisplayName>Freeswitch Core Windows Libraries + + + + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;Ws2_32.lib;Iphlpapi.lib;Winmm.lib;%(AdditionalDependencies) + + + \ No newline at end of file