Merge branch 'master' into release
authorLars Op den Kamp <lars@opdenkamp.eu>
Mon, 13 May 2013 13:09:14 +0000 (15:09 +0200)
committerLars Op den Kamp <lars@opdenkamp.eu>
Mon, 13 May 2013 13:09:14 +0000 (15:09 +0200)
55 files changed:
.gitignore
ChangeLog
README
debian/changelog
include/cectypes.h
project/LibCecSharp.sln [deleted file]
project/LibCecSharp.vcproj [deleted file]
project/LibCecSharp/LibCecSharp.rc [new file with mode: 0644]
project/LibCecSharp/LibCecSharp.vcxproj [new file with mode: 0644]
project/LibCecSharp/LibCecSharp.vcxproj.filters [new file with mode: 0644]
project/LibCecSharp/resource.h [new file with mode: 0644]
project/libCEC.nsi
project/libcec.filters [deleted file]
project/libcec.sln
project/libcec/libcec.rc [moved from project/libcec.rc with 55% similarity]
project/libcec/libcec.vcxproj [moved from project/libcec.vcxproj with 61% similarity]
project/libcec/libcec.vcxproj.filters [moved from project/libcec.vcxproj.filters with 51% similarity]
project/libcec/resource.h [new file with mode: 0644]
project/testclient/resource.h [new file with mode: 0644]
project/testclient/testclient.rc [moved from project/testclient.rc with 55% similarity]
project/testclient/testclient.vcxproj [moved from project/testclient.vcxproj with 89% similarity]
project/testclient/testclient.vcxproj.filters [moved from project/testclient.vcxproj.filters with 71% similarity]
src/CecSharpTester/CecSharpClient.cs
src/CecSharpTester/CecSharpTester.csproj
src/CecSharpTester/Properties/AssemblyInfo.cs
src/LibCecSharp/AssemblyInfo.cpp
src/LibCecSharp/CecSharpTypes.h
src/LibCecSharp/resource.h [deleted file]
src/LibCecTray/LibCECTray.csproj
src/LibCecTray/Program.cs
src/LibCecTray/Properties/AssemblyInfo.cs
src/LibCecTray/Properties/Resources.Designer.cs
src/LibCecTray/Properties/Resources.resx
src/LibCecTray/controller/CECController.cs
src/LibCecTray/controller/actions/ConnectToDevice.cs
src/LibCecTray/controller/applications/ApplicationController.cs
src/LibCecTray/controller/applications/Applications.cs
src/LibCecTray/controller/applications/ConfigureApplication.cs
src/LibCecTray/controller/applications/internal/WMCController.cs
src/LibCecTray/controller/applications/internal/XBMCController.cs
src/LibCecTray/ui/AsyncControls.cs [new file with mode: 0644]
src/LibCecTray/ui/AsyncForm.cs
src/LibCecTray/ui/CECTray.Designer.cs
src/LibCecTray/ui/CECTray.cs
src/LibCecTray/ui/IAsyncControls.cs [new file with mode: 0644]
src/lib/CECProcessor.cpp
src/lib/CECTypeUtils.h
src/lib/adapter/TDA995x/TDA995xCECAdapterCommunication.cpp
src/lib/devices/CECBusDevice.cpp
src/lib/implementations/CECCommandHandler.cpp
src/lib/implementations/CECCommandHandler.h
src/lib/implementations/RLCommandHandler.cpp
src/lib/implementations/RLCommandHandler.h
src/lib/platform/posix/serialport.cpp
support/create-installer.bat

index b912fbb4ec73ba9242c05397c7d8198b6df80a05..633685896c761dc9838718bc993eeb607805405a 100644 (file)
@@ -14,6 +14,7 @@
 *.pdb
 *.suo
 *.user
+*.aps
 
 *~
 
@@ -62,8 +63,17 @@ project/ipch/
 project/libcec.sdf
 project/obj
 project/Properties
-
+project/_*
 project/x64
+project/LibCecSharp/x64
+project/LibCecSharp/Debug
+project/LibCecSharp/Release
+project/libcec/x64
+project/libcec/Debug
+project/libcec/Release
+project/testclient/x64
+project/testclient/Debug
+project/testclient/Release
 
 project/RPi/toolchain
 project/RPi/firmware
index ab93e67103474a54af6068a0c39bfca0a31119a4..0a17f5e052fba8c72d81d8576e5b8d813eeb94c7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,32 @@
+libcec (2.1.3-1) unstable; urgency=low
+
+  * changed / added:
+    * ask users to send an email when receiving an unhandled vendor command
+    * toshiba: map top menu and dvd menu buttons. closes #148
+    * LibCecSharp: sync alert types
+    * LibCecSharp: added CurrentVersion to the version enum
+    * CecSharpClient: use CurrentVersion instead of a hardcoded version
+    * CecTray: power management
+    * CecTray: split up asyncform
+    * CecTray: try/catch xml exceptions when reading the xml config. bugzid:
+      2082
+    * CecTray: use CurrentVersion instead of a hardcoded version
+    * CecTray: display a warning if we can't poll the TV
+    * CecTray: display alerts from libCEC
+    * CecTray: don't use lazy loading for the main controller, but pass the
+      instance. bugzid: 2082
+    * windows: converted to vs2012
+  * fixed:
+    * toshiba: toshiba handler wasn't initialised, and toshiba uses more than
+      one vendor id
+    * libCEC marked itself as inactive source when the stream path changed to
+      a device with a different physical address. bugzid: 2157
+    * TDA995x: report proper firmware revision (credits: @warped-rudi)
+    * TDA995x: avoid callback when already stopped (credits: @warped-rudi)
+    * windows: fix resource files and backwards compat dll names
+
+ -- Pulse-Eight Packaging <packaging@pulse-eight.com>  Sat, 11 May 2013 10:06:00 +0000
+
 libcec (2.1.1-1) unstable; urgency=low
 
   * changed / added:
diff --git a/README b/README
index f25c53946cbc5d64fd1772c48977a9fa3f0f191d..3f2ee2214009c741e1bf2ccb2a7cc4e37b0104fe 100644 (file)
--- a/README
+++ b/README
@@ -52,15 +52,16 @@ To compile, execute the following command:
                               === Windows ===
 ===============================================================================
 
-To compile libCEC on Windows, you'll need Visual C++ 2010 or Visual Studio 2010
-The installer needs the Windows DDK (Driver Development Kit) and Nullsoft's
-NSIS.
+To compile libCEC on Windows, you'll need Visual Studio 2012 and Visual Studio
+or Visual C++ 2008. The latter is needed to build LibCecSharp for .Net
+Framework 2.0.
 
-To compile LibCecSharp on Windows, you'll need Visual C++ 2008 or Visual Studio
-2008, because it is compiled against .NET 2.0.
+The adapter detection code needs the Windows DDK (Driver Development Kit).
+
+To create an installer, you'll need Nullsoft's NSIS.
 
 To compile libCEC, follow these instructions:
-* open /project/libcec.sln with Visual C++ 2010 or Visual Studio 2010.
+* open /project/libcec.sln with Visual Studio 2012.
 * build the project.
 
 To build an installer on Windows:
@@ -68,12 +69,6 @@ To build an installer on Windows:
 * go to /project and execute create-installer.bat to create the installer.
 * the installer is stored as /build/libCEC-installer.exe
 
-You will need both Visual Studio 2008 and Visual Studio 2010 to build the
-installer from the command line. To build with Visual C++ 2008 and 2010,
-you will need to manually build libcec with Visual C++ 2010 and then
-build LibCecSharp.sln with Visual Studio 2008. See create-installer.bat
-for the required steps.
-
 ===============================================================================
                            === Raspberry Pi ===
 ===============================================================================
index ab93e67103474a54af6068a0c39bfca0a31119a4..0a17f5e052fba8c72d81d8576e5b8d813eeb94c7 100644 (file)
@@ -1,3 +1,32 @@
+libcec (2.1.3-1) unstable; urgency=low
+
+  * changed / added:
+    * ask users to send an email when receiving an unhandled vendor command
+    * toshiba: map top menu and dvd menu buttons. closes #148
+    * LibCecSharp: sync alert types
+    * LibCecSharp: added CurrentVersion to the version enum
+    * CecSharpClient: use CurrentVersion instead of a hardcoded version
+    * CecTray: power management
+    * CecTray: split up asyncform
+    * CecTray: try/catch xml exceptions when reading the xml config. bugzid:
+      2082
+    * CecTray: use CurrentVersion instead of a hardcoded version
+    * CecTray: display a warning if we can't poll the TV
+    * CecTray: display alerts from libCEC
+    * CecTray: don't use lazy loading for the main controller, but pass the
+      instance. bugzid: 2082
+    * windows: converted to vs2012
+  * fixed:
+    * toshiba: toshiba handler wasn't initialised, and toshiba uses more than
+      one vendor id
+    * libCEC marked itself as inactive source when the stream path changed to
+      a device with a different physical address. bugzid: 2157
+    * TDA995x: report proper firmware revision (credits: @warped-rudi)
+    * TDA995x: avoid callback when already stopped (credits: @warped-rudi)
+    * windows: fix resource files and backwards compat dll names
+
+ -- Pulse-Eight Packaging <packaging@pulse-eight.com>  Sat, 11 May 2013 10:06:00 +0000
+
 libcec (2.1.1-1) unstable; urgency=low
 
   * changed / added:
index e8670f8e7df2fa1c900e8f378f929b68533076a2..01adebee49e856d20da9a882aa978d6e8799fc8a 100644 (file)
@@ -831,6 +831,7 @@ typedef enum cec_vendor_id
   CEC_VENDOR_LOEWE     = 0x000982,
   CEC_VENDOR_ONKYO     = 0x0009B0,
   CEC_VENDOR_MEDION    = 0x000CB8,
+  CEC_VENDOR_TOSHIBA2  = 0x000CE7,
   CEC_VENDOR_AKAI      = 0x0020C7,
   CEC_VENDOR_AOC       = 0x002467,
   CEC_VENDOR_PANASONIC = 0x008045,
@@ -915,6 +916,16 @@ typedef struct cec_datapacket
     return *this;
   }
 
+  bool operator ==(const struct cec_datapacket& packet) const
+  {
+    if (size != packet.size)
+      return false;
+    for (uint8_t iPtr = 0; iPtr < size; iPtr++)
+      if (packet.data[iPtr] != data[iPtr])
+        return false;
+    return true;
+  }
+
   bool    IsEmpty(void) const             { return size == 0; }   /**< @return True when this packet is empty, false otherwise. */
   bool    IsFull(void) const              { return size == 100; } /**< @return True when this packet is false, false otherwise. */
 
@@ -1407,7 +1418,9 @@ typedef enum cec_client_version
   CEC_CLIENT_VERSION_2_0_5   = 0x2005,
   CEC_CLIENT_VERSION_2_1_0   = 0x2100,
   CEC_CLIENT_VERSION_2_1_1   = 0x2101,
-  CEC_CLIENT_VERSION_CURRENT = 0x2101
+  CEC_CLIENT_VERSION_2_1_2   = 0x2102,
+  CEC_CLIENT_VERSION_2_1_3   = 0x2103,
+  CEC_CLIENT_VERSION_CURRENT = 0x2103
 } cec_client_version;
 
 typedef enum cec_server_version
@@ -1437,7 +1450,9 @@ typedef enum cec_server_version
   CEC_SERVER_VERSION_2_0_5   = 0x2005,
   CEC_SERVER_VERSION_2_1_0   = 0x2100,
   CEC_SERVER_VERSION_2_1_1   = 0x2101,
-  CEC_SERVER_VERSION_CURRENT = 0x2101
+  CEC_SERVER_VERSION_2_1_2   = 0x2102,
+  CEC_SERVER_VERSION_2_1_3   = 0x2103,
+  CEC_SERVER_VERSION_CURRENT = 0x2103
 } cec_server_version;
 
 struct libcec_configuration
diff --git a/project/LibCecSharp.sln b/project/LibCecSharp.sln
deleted file mode 100644 (file)
index 7b9b1db..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual Studio 2008
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CecSharpTester", "..\src\CecSharpTester\CecSharpTester.csproj", "{B6A7F3A9-F47C-41E5-9754-0BFF233B1172}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LibCecSharp", "LibCecSharp.vcproj", "{E54D4581-CD59-4687-BB10-694B8192EABA}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibCECTray", "..\src\LibCecTray\LibCECTray.csproj", "{58C106FE-C159-46D3-97E1-73AB83232670}"
-EndProject
-Global
-       GlobalSection(SolutionConfigurationPlatforms) = preSolution
-               Debug|x64 = Debug|x64
-               Debug|x86 = Debug|x86
-               Release|x64 = Release|x64
-               Release|x86 = Release|x86
-       EndGlobalSection
-       GlobalSection(ProjectConfigurationPlatforms) = postSolution
-               {B6A7F3A9-F47C-41E5-9754-0BFF233B1172}.Debug|x64.ActiveCfg = Debug|x64
-               {B6A7F3A9-F47C-41E5-9754-0BFF233B1172}.Debug|x64.Build.0 = Debug|x64
-               {B6A7F3A9-F47C-41E5-9754-0BFF233B1172}.Debug|x86.ActiveCfg = Debug|x86
-               {B6A7F3A9-F47C-41E5-9754-0BFF233B1172}.Debug|x86.Build.0 = Debug|x86
-               {B6A7F3A9-F47C-41E5-9754-0BFF233B1172}.Release|x64.ActiveCfg = Release|x64
-               {B6A7F3A9-F47C-41E5-9754-0BFF233B1172}.Release|x64.Build.0 = Release|x64
-               {B6A7F3A9-F47C-41E5-9754-0BFF233B1172}.Release|x86.ActiveCfg = Release|x86
-               {B6A7F3A9-F47C-41E5-9754-0BFF233B1172}.Release|x86.Build.0 = Release|x86
-               {E54D4581-CD59-4687-BB10-694B8192EABA}.Debug|x64.ActiveCfg = Debug|x64
-               {E54D4581-CD59-4687-BB10-694B8192EABA}.Debug|x64.Build.0 = Debug|x64
-               {E54D4581-CD59-4687-BB10-694B8192EABA}.Debug|x86.ActiveCfg = Debug|Win32
-               {E54D4581-CD59-4687-BB10-694B8192EABA}.Debug|x86.Build.0 = Debug|Win32
-               {E54D4581-CD59-4687-BB10-694B8192EABA}.Release|x64.ActiveCfg = Release|x64
-               {E54D4581-CD59-4687-BB10-694B8192EABA}.Release|x64.Build.0 = Release|x64
-               {E54D4581-CD59-4687-BB10-694B8192EABA}.Release|x86.ActiveCfg = Release|Win32
-               {E54D4581-CD59-4687-BB10-694B8192EABA}.Release|x86.Build.0 = Release|Win32
-               {58C106FE-C159-46D3-97E1-73AB83232670}.Debug|x64.ActiveCfg = Debug|x64
-               {58C106FE-C159-46D3-97E1-73AB83232670}.Debug|x64.Build.0 = Debug|x64
-               {58C106FE-C159-46D3-97E1-73AB83232670}.Debug|x86.ActiveCfg = Debug|x86
-               {58C106FE-C159-46D3-97E1-73AB83232670}.Debug|x86.Build.0 = Debug|x86
-               {58C106FE-C159-46D3-97E1-73AB83232670}.Release|x64.ActiveCfg = Release|x64
-               {58C106FE-C159-46D3-97E1-73AB83232670}.Release|x64.Build.0 = Release|x64
-               {58C106FE-C159-46D3-97E1-73AB83232670}.Release|x86.ActiveCfg = Release|x86
-               {58C106FE-C159-46D3-97E1-73AB83232670}.Release|x86.Build.0 = Release|x86
-       EndGlobalSection
-       GlobalSection(SolutionProperties) = preSolution
-               HideSolutionNode = FALSE
-       EndGlobalSection
-EndGlobal
diff --git a/project/LibCecSharp.vcproj b/project/LibCecSharp.vcproj
deleted file mode 100644 (file)
index 7bce4c0..0000000
+++ /dev/null
@@ -1,381 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-       ProjectType="Visual C++"
-       Version="9,00"
-       Name="LibCecSharp"
-       ProjectGUID="{E54D4581-CD59-4687-BB10-694B8192EABA}"
-       RootNamespace="LibCecSharp"
-       Keyword="ManagedCProj"
-       AssemblyReferenceSearchPaths="&quot;$(SolutionDir)..&quot;"
-       TargetFrameworkVersion="131072"
-       >
-       <Platforms>
-               <Platform
-                       Name="Win32"
-               />
-               <Platform
-                       Name="x64"
-               />
-       </Platforms>
-       <ToolFiles>
-       </ToolFiles>
-       <Configurations>
-               <Configuration
-                       Name="Debug|Win32"
-                       OutputDirectory="$(SolutionDir)..\build\"
-                       IntermediateDirectory="$(ConfigurationName)"
-                       ConfigurationType="2"
-                       CharacterSet="1"
-                       ManagedExtensions="1"
-                       >
-                       <Tool
-                               Name="VCPreBuildEventTool"
-                       />
-                       <Tool
-                               Name="VCCustomBuildTool"
-                       />
-                       <Tool
-                               Name="VCXMLDataGeneratorTool"
-                       />
-                       <Tool
-                               Name="VCWebServiceProxyGeneratorTool"
-                       />
-                       <Tool
-                               Name="VCMIDLTool"
-                               TargetEnvironment="3"
-                       />
-                       <Tool
-                               Name="VCCLCompilerTool"
-                               Optimization="0"
-                               AdditionalIncludeDirectories="$(SolutionDir)..\include;$(SolutionDir)..\src;$(SolutionDir)..\src\lib\platform\windows"
-                               PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_WARNINGS"
-                               RuntimeLibrary="3"
-                               UsePrecompiledHeader="0"
-                               GenerateXMLDocumentationFiles="true"
-                               WarningLevel="3"
-                               WarnAsError="true"
-                               DebugInformationFormat="3"
-                       />
-                       <Tool
-                               Name="VCManagedResourceCompilerTool"
-                       />
-                       <Tool
-                               Name="VCResourceCompilerTool"
-                       />
-                       <Tool
-                               Name="VCPreLinkEventTool"
-                       />
-                       <Tool
-                               Name="VCLinkerTool"
-                               AdditionalDependencies="&quot;$(OutDir)libcec.lib&quot;"
-                               LinkIncremental="2"
-                               GenerateDebugInformation="true"
-                               AssemblyDebug="1"
-                               TargetMachine="1"
-                       />
-                       <Tool
-                               Name="VCALinkTool"
-                       />
-                       <Tool
-                               Name="VCManifestTool"
-                       />
-                       <Tool
-                               Name="VCXDCMakeTool"
-                       />
-                       <Tool
-                               Name="VCBscMakeTool"
-                       />
-                       <Tool
-                               Name="VCFxCopTool"
-                       />
-                       <Tool
-                               Name="VCAppVerifierTool"
-                       />
-                       <Tool
-                               Name="VCPostBuildEventTool"
-                       />
-               </Configuration>
-               <Configuration
-                       Name="Debug|x64"
-                       OutputDirectory="$(SolutionDir)..\build\"
-                       IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
-                       ConfigurationType="2"
-                       CharacterSet="1"
-                       ManagedExtensions="1"
-                       >
-                       <Tool
-                               Name="VCPreBuildEventTool"
-                       />
-                       <Tool
-                               Name="VCCustomBuildTool"
-                       />
-                       <Tool
-                               Name="VCXMLDataGeneratorTool"
-                       />
-                       <Tool
-                               Name="VCWebServiceProxyGeneratorTool"
-                       />
-                       <Tool
-                               Name="VCMIDLTool"
-                               TargetEnvironment="3"
-                       />
-                       <Tool
-                               Name="VCCLCompilerTool"
-                               Optimization="0"
-                               AdditionalIncludeDirectories="$(SolutionDir)..\include;$(SolutionDir)..\src;$(SolutionDir)..\src\lib\platform\windows"
-                               PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_WARNINGS"
-                               RuntimeLibrary="3"
-                               UsePrecompiledHeader="0"
-                               GenerateXMLDocumentationFiles="true"
-                               WarningLevel="3"
-                               WarnAsError="true"
-                               DebugInformationFormat="3"
-                       />
-                       <Tool
-                               Name="VCManagedResourceCompilerTool"
-                       />
-                       <Tool
-                               Name="VCResourceCompilerTool"
-                       />
-                       <Tool
-                               Name="VCPreLinkEventTool"
-                       />
-                       <Tool
-                               Name="VCLinkerTool"
-                               AdditionalDependencies="&quot;$(OutDir)libcec.x64.lib&quot;"
-                               OutputFile="&quot;$(OutDir)\$(ProjectName).x64.dll&quot;"
-                               LinkIncremental="2"
-                               GenerateDebugInformation="true"
-                               AssemblyDebug="1"
-                               TargetMachine="17"
-                       />
-                       <Tool
-                               Name="VCALinkTool"
-                       />
-                       <Tool
-                               Name="VCManifestTool"
-                       />
-                       <Tool
-                               Name="VCXDCMakeTool"
-                       />
-                       <Tool
-                               Name="VCBscMakeTool"
-                       />
-                       <Tool
-                               Name="VCFxCopTool"
-                       />
-                       <Tool
-                               Name="VCAppVerifierTool"
-                       />
-                       <Tool
-                               Name="VCPostBuildEventTool"
-                       />
-               </Configuration>
-               <Configuration
-                       Name="Release|Win32"
-                       OutputDirectory="$(SolutionDir)..\build\"
-                       IntermediateDirectory="$(ConfigurationName)"
-                       ConfigurationType="2"
-                       CharacterSet="1"
-                       ManagedExtensions="1"
-                       WholeProgramOptimization="1"
-                       >
-                       <Tool
-                               Name="VCPreBuildEventTool"
-                       />
-                       <Tool
-                               Name="VCCustomBuildTool"
-                       />
-                       <Tool
-                               Name="VCXMLDataGeneratorTool"
-                       />
-                       <Tool
-                               Name="VCWebServiceProxyGeneratorTool"
-                       />
-                       <Tool
-                               Name="VCMIDLTool"
-                               TargetEnvironment="3"
-                       />
-                       <Tool
-                               Name="VCCLCompilerTool"
-                               AdditionalIncludeDirectories="$(SolutionDir)..\include;$(SolutionDir)..\src;$(SolutionDir)..\src\lib\platform\windows"
-                               PreprocessorDefinitions="NDEBUG;_CRT_SECURE_NO_WARNINGS"
-                               RuntimeLibrary="2"
-                               UsePrecompiledHeader="0"
-                               GenerateXMLDocumentationFiles="true"
-                               WarningLevel="3"
-                               WarnAsError="true"
-                               DebugInformationFormat="3"
-                       />
-                       <Tool
-                               Name="VCManagedResourceCompilerTool"
-                       />
-                       <Tool
-                               Name="VCResourceCompilerTool"
-                       />
-                       <Tool
-                               Name="VCPreLinkEventTool"
-                       />
-                       <Tool
-                               Name="VCLinkerTool"
-                               AdditionalDependencies="&quot;$(OutDir)libcec.lib&quot;"
-                               LinkIncremental="1"
-                               GenerateDebugInformation="true"
-                               TargetMachine="1"
-                       />
-                       <Tool
-                               Name="VCALinkTool"
-                       />
-                       <Tool
-                               Name="VCManifestTool"
-                       />
-                       <Tool
-                               Name="VCXDCMakeTool"
-                       />
-                       <Tool
-                               Name="VCBscMakeTool"
-                       />
-                       <Tool
-                               Name="VCFxCopTool"
-                       />
-                       <Tool
-                               Name="VCAppVerifierTool"
-                       />
-                       <Tool
-                               Name="VCPostBuildEventTool"
-                       />
-               </Configuration>
-               <Configuration
-                       Name="Release|x64"
-                       OutputDirectory="$(SolutionDir)..\build\"
-                       IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
-                       ConfigurationType="2"
-                       CharacterSet="1"
-                       ManagedExtensions="1"
-                       WholeProgramOptimization="1"
-                       >
-                       <Tool
-                               Name="VCPreBuildEventTool"
-                       />
-                       <Tool
-                               Name="VCCustomBuildTool"
-                       />
-                       <Tool
-                               Name="VCXMLDataGeneratorTool"
-                       />
-                       <Tool
-                               Name="VCWebServiceProxyGeneratorTool"
-                       />
-                       <Tool
-                               Name="VCMIDLTool"
-                               TargetEnvironment="3"
-                       />
-                       <Tool
-                               Name="VCCLCompilerTool"
-                               AdditionalIncludeDirectories="$(SolutionDir)..\include;$(SolutionDir)..\src;$(SolutionDir)..\src\lib\platform\windows"
-                               PreprocessorDefinitions="NDEBUG;_CRT_SECURE_NO_WARNINGS"
-                               RuntimeLibrary="2"
-                               UsePrecompiledHeader="0"
-                               GenerateXMLDocumentationFiles="true"
-                               WarningLevel="3"
-                               WarnAsError="true"
-                               DebugInformationFormat="3"
-                       />
-                       <Tool
-                               Name="VCManagedResourceCompilerTool"
-                       />
-                       <Tool
-                               Name="VCResourceCompilerTool"
-                       />
-                       <Tool
-                               Name="VCPreLinkEventTool"
-                       />
-                       <Tool
-                               Name="VCLinkerTool"
-                               AdditionalDependencies="&quot;$(OutDir)libcec.x64.lib&quot;"
-                       />
-                       <Tool
-                               Name="VCALinkTool"
-                       />
-                       <Tool
-                               Name="VCManifestTool"
-                       />
-                       <Tool
-                               Name="VCXDCMakeTool"
-                       />
-                       <Tool
-                               Name="VCBscMakeTool"
-                       />
-                       <Tool
-                               Name="VCFxCopTool"
-                       />
-                       <Tool
-                               Name="VCAppVerifierTool"
-                       />
-                       <Tool
-                               Name="VCPostBuildEventTool"
-                       />
-               </Configuration>
-       </Configurations>
-       <References>
-               <AssemblyReference
-                       RelativePath="System.dll"
-                       AssemblyName="System, Version=2.0.0.0, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"
-                       MinFrameworkVersion="131072"
-               />
-               <AssemblyReference
-                       RelativePath="System.Data.dll"
-                       AssemblyName="System.Data, Version=2.0.0.0, PublicKeyToken=b77a5c561934e089, processorArchitecture=x86"
-                       MinFrameworkVersion="131072"
-               />
-               <AssemblyReference
-                       RelativePath="System.XML.dll"
-                       AssemblyName="System.Xml, Version=2.0.0.0, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"
-                       MinFrameworkVersion="131072"
-               />
-       </References>
-       <Files>
-               <Filter
-                       Name="Source Files"
-                       Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-                       UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-                       >
-                       <File
-                               RelativePath="..\src\LibCecSharp\AssemblyInfo.cpp"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\src\LibCecSharp\LibCecSharp.cpp"
-                               >
-                       </File>
-               </Filter>
-               <Filter
-                       Name="Header Files"
-                       Filter="h;hpp;hxx;hm;inl;inc;xsd"
-                       UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-                       >
-                       <File
-                               RelativePath="..\include\cec.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\src\LibCecSharp\CecSharpTypes.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\include\cectypes.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\src\LibCecSharp\resource.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\src\lib\platform\windows\stdint.h"
-                               >
-                       </File>
-               </Filter>
-       </Files>
-       <Globals>
-       </Globals>
-</VisualStudioProject>
diff --git a/project/LibCecSharp/LibCecSharp.rc b/project/LibCecSharp/LibCecSharp.rc
new file mode 100644 (file)
index 0000000..81ae7b4
Binary files /dev/null and b/project/LibCecSharp/LibCecSharp.rc differ
diff --git a/project/LibCecSharp/LibCecSharp.vcxproj b/project/LibCecSharp/LibCecSharp.vcxproj
new file mode 100644 (file)
index 0000000..b909be6
--- /dev/null
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{E54D4581-CD59-4687-BB10-694B8192EABA}</ProjectGuid>
+    <RootNamespace>LibCecSharp</RootNamespace>
+    <Keyword>ManagedCProj</Keyword>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <PlatformToolset>v90</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+    <CLRSupport>true</CLRSupport>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <PlatformToolset>v90</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+    <CLRSupport>true</CLRSupport>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <PlatformToolset>v90</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+    <CLRSupport>true</CLRSupport>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <PlatformToolset>v90</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+    <CLRSupport>true</CLRSupport>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>11.0.50727.1</_ProjectFileVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ReferencePath>$(SolutionDir)..;$(ReferencePath)</ReferencePath>
+    <OutDir>$(SolutionDir)..\build\</OutDir>
+    <IntDir>$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ReferencePath>$(SolutionDir)..;$(ReferencePath)</ReferencePath>
+    <OutDir>$(SolutionDir)..\build\x64\</OutDir>
+    <IntDir>$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental>true</LinkIncremental>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ReferencePath>$(SolutionDir)..;$(ReferencePath)</ReferencePath>
+    <OutDir>$(SolutionDir)..\build\</OutDir>
+    <IntDir>$(Configuration)\</IntDir>
+    <LinkIncremental>false</LinkIncremental>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ReferencePath>$(SolutionDir)..;$(ReferencePath)</ReferencePath>
+    <OutDir>$(SolutionDir)..\build\x64\</OutDir>
+    <IntDir>$(Platform)\$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(SolutionDir)..\include;$(SolutionDir)..\src;$(SolutionDir)..\src\lib\platform\windows;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader />
+      <GenerateXMLDocumentationFiles>true</GenerateXMLDocumentationFiles>
+      <WarningLevel>Level3</WarningLevel>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(OutDir)libcec.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AssemblyDebug>true</AssemblyDebug>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(SolutionDir)..\include;$(SolutionDir)..\src;$(SolutionDir)..\src\lib\platform\windows;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader />
+      <GenerateXMLDocumentationFiles>true</GenerateXMLDocumentationFiles>
+      <WarningLevel>Level3</WarningLevel>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(OutDir)libcec.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AssemblyDebug>true</AssemblyDebug>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(SolutionDir)..\include;$(SolutionDir)..\src;$(SolutionDir)..\src\lib\platform\windows;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader />
+      <GenerateXMLDocumentationFiles>true</GenerateXMLDocumentationFiles>
+      <WarningLevel>Level3</WarningLevel>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(OutDir)libcec.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(SolutionDir)..\include;$(SolutionDir)..\src;$(SolutionDir)..\src\lib\platform\windows;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader />
+      <GenerateXMLDocumentationFiles>true</GenerateXMLDocumentationFiles>
+      <WarningLevel>Level3</WarningLevel>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(OutDir)libcec.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <Reference Include="System">
+      <CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+    </Reference>
+    <Reference Include="System.Data">
+      <CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+    </Reference>
+    <Reference Include="System.Xml">
+      <CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\LibCecSharp\AssemblyInfo.cpp" />
+    <ClCompile Include="..\..\src\LibCecSharp\LibCecSharp.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\cec.h" />
+    <ClInclude Include="..\..\src\LibCecSharp\CecSharpTypes.h" />
+    <ClInclude Include="..\..\include\cectypes.h" />
+    <ClInclude Include="..\..\src\lib\platform\windows\stdint.h" />
+    <ClInclude Include="resource.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="LibCecSharp.rc" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/project/LibCecSharp/LibCecSharp.vcxproj.filters b/project/LibCecSharp/LibCecSharp.vcxproj.filters
new file mode 100644 (file)
index 0000000..c879eb2
--- /dev/null
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\LibCecSharp\AssemblyInfo.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\LibCecSharp\LibCecSharp.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\cec.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\src\LibCecSharp\CecSharpTypes.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\cectypes.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\src\lib\platform\windows\stdint.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="resource.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="LibCecSharp.rc" />
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/project/LibCecSharp/resource.h b/project/LibCecSharp/resource.h
new file mode 100644 (file)
index 0000000..69b5323
Binary files /dev/null and b/project/LibCecSharp/resource.h differ
index a7516d669721ef9ff478421db375a59afad05425..a539dc7bc4898b1884b3b3ad8b2362875aa906ad 100644 (file)
@@ -7,7 +7,7 @@
 !include "LogicLib.nsh"
 !include "x64.nsh"
 
-Name "Pulse-Eight libCEC version 2.1.1"
+Name "Pulse-Eight libCEC"
 OutFile "..\build\libCEC-installer.exe"
 
 XPStyle on
@@ -153,15 +153,15 @@ Section "CEC Debug Client" SecCecClient
   SetOutPath "$INSTDIR"
   File /x p8-usbcec-driver-installer.exe /x cec-tray.exe "..\build\*.exe"
   SetOutPath "$INSTDIR\x64"
-  File /nonfatal /x cec-tray.exe "..\build\x64\*.exe"
+  File /nonfatal "..\build\x64\*.exe"
 
   !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
   SetOutPath "$INSTDIR"
 
   CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
   ${If} ${RunningX64}
-    CreateShortCut "$SMPROGRAMS\$StartMenuFolder\CEC Test client (x64).lnk" "$INSTDIR\x64\cec-client.x64.exe" \
-      "" "$INSTDIR\cec-client.x64.exe" 0 SW_SHOWNORMAL \
+    CreateShortCut "$SMPROGRAMS\$StartMenuFolder\CEC Test client (x64).lnk" "$INSTDIR\x64\cec-client.exe" \
+      "" "$INSTDIR\x64\cec-client.exe" 0 SW_SHOWNORMAL \
       "" "Start the CEC Test client (x64)."
   ${Else}
     CreateShortCut "$SMPROGRAMS\$StartMenuFolder\CEC Test client.lnk" "$INSTDIR\cec-client.exe" \
diff --git a/project/libcec.filters b/project/libcec.filters
deleted file mode 100644 (file)
index efb6144..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Resource Files">
-      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
-      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\client.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\HTSPData.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\HTSPDemux.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\thread.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\..\..\..\addons\library.xbmc.addon\dlfcn-win32.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\HTSPConnection.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\..\..\..\addons\library.xbmc.addon\dlfcn-win32.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\thread.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tools.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\client.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\HTSPData.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\HTSPDemux.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\HTSPConnection.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-</Project>
\ No newline at end of file
index 83d6d89a119dce27f3818cadc30679e0c58e6e05..ea5221042ffcc3ef9dd1063f19a2f6120f7ad9ef 100644 (file)
@@ -1,37 +1,72 @@
 ï»¿
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual C++ Express 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcec", "libcec.vcxproj", "{C04B0FB1-667D-4F1C-BDAE-A07CDFFAAAA0}"
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcec", "libcec\libcec.vcxproj", "{C04B0FB1-667D-4F1C-BDAE-A07CDFFAAAA0}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testclient", "testclient.vcxproj", "{F01222BF-6B3D-43BD-B254-434031CB9887}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testclient", "testclient\testclient.vcxproj", "{F01222BF-6B3D-43BD-B254-434031CB9887}"
        ProjectSection(ProjectDependencies) = postProject
                {C04B0FB1-667D-4F1C-BDAE-A07CDFFAAAA0} = {C04B0FB1-667D-4F1C-BDAE-A07CDFFAAAA0}
        EndProjectSection
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LibCecSharp", "LibCecSharp\LibCecSharp.vcxproj", "{E54D4581-CD59-4687-BB10-694B8192EABA}"
+       ProjectSection(ProjectDependencies) = postProject
+               {C04B0FB1-667D-4F1C-BDAE-A07CDFFAAAA0} = {C04B0FB1-667D-4F1C-BDAE-A07CDFFAAAA0}
+       EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{B119505D-5CD1-48E4-BED1-9C2BF26153D5}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CecSharpTester", "..\src\CecSharpTester\CecSharpTester.csproj", "{B6A7F3A9-F47C-41E5-9754-0BFF233B1172}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibCECTray", "..\src\LibCecTray\LibCECTray.csproj", "{58C106FE-C159-46D3-97E1-73AB83232670}"
+EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
-               Debug|Win32 = Debug|Win32
                Debug|x64 = Debug|x64
-               Release|Win32 = Release|Win32
+               Debug|x86 = Debug|x86
                Release|x64 = Release|x64
+               Release|x86 = Release|x86
        EndGlobalSection
        GlobalSection(ProjectConfigurationPlatforms) = postSolution
-               {C04B0FB1-667D-4F1C-BDAE-A07CDFFAAAA0}.Debug|Win32.ActiveCfg = Debug|Win32
-               {C04B0FB1-667D-4F1C-BDAE-A07CDFFAAAA0}.Debug|Win32.Build.0 = Debug|Win32
                {C04B0FB1-667D-4F1C-BDAE-A07CDFFAAAA0}.Debug|x64.ActiveCfg = Debug|x64
                {C04B0FB1-667D-4F1C-BDAE-A07CDFFAAAA0}.Debug|x64.Build.0 = Debug|x64
-               {C04B0FB1-667D-4F1C-BDAE-A07CDFFAAAA0}.Release|Win32.ActiveCfg = Release|Win32
-               {C04B0FB1-667D-4F1C-BDAE-A07CDFFAAAA0}.Release|Win32.Build.0 = Release|Win32
+               {C04B0FB1-667D-4F1C-BDAE-A07CDFFAAAA0}.Debug|x86.ActiveCfg = Debug|Win32
+               {C04B0FB1-667D-4F1C-BDAE-A07CDFFAAAA0}.Debug|x86.Build.0 = Debug|Win32
                {C04B0FB1-667D-4F1C-BDAE-A07CDFFAAAA0}.Release|x64.ActiveCfg = Release|x64
                {C04B0FB1-667D-4F1C-BDAE-A07CDFFAAAA0}.Release|x64.Build.0 = Release|x64
-               {F01222BF-6B3D-43BD-B254-434031CB9887}.Debug|Win32.ActiveCfg = Debug|Win32
-               {F01222BF-6B3D-43BD-B254-434031CB9887}.Debug|Win32.Build.0 = Debug|Win32
+               {C04B0FB1-667D-4F1C-BDAE-A07CDFFAAAA0}.Release|x86.ActiveCfg = Release|Win32
+               {C04B0FB1-667D-4F1C-BDAE-A07CDFFAAAA0}.Release|x86.Build.0 = Release|Win32
                {F01222BF-6B3D-43BD-B254-434031CB9887}.Debug|x64.ActiveCfg = Debug|x64
                {F01222BF-6B3D-43BD-B254-434031CB9887}.Debug|x64.Build.0 = Debug|x64
-               {F01222BF-6B3D-43BD-B254-434031CB9887}.Release|Win32.ActiveCfg = Release|Win32
-               {F01222BF-6B3D-43BD-B254-434031CB9887}.Release|Win32.Build.0 = Release|Win32
+               {F01222BF-6B3D-43BD-B254-434031CB9887}.Debug|x86.ActiveCfg = Debug|Win32
+               {F01222BF-6B3D-43BD-B254-434031CB9887}.Debug|x86.Build.0 = Debug|Win32
                {F01222BF-6B3D-43BD-B254-434031CB9887}.Release|x64.ActiveCfg = Release|x64
                {F01222BF-6B3D-43BD-B254-434031CB9887}.Release|x64.Build.0 = Release|x64
+               {F01222BF-6B3D-43BD-B254-434031CB9887}.Release|x86.ActiveCfg = Release|Win32
+               {F01222BF-6B3D-43BD-B254-434031CB9887}.Release|x86.Build.0 = Release|Win32
+               {E54D4581-CD59-4687-BB10-694B8192EABA}.Debug|x64.ActiveCfg = Debug|x64
+               {E54D4581-CD59-4687-BB10-694B8192EABA}.Debug|x64.Build.0 = Debug|x64
+               {E54D4581-CD59-4687-BB10-694B8192EABA}.Debug|x86.ActiveCfg = Debug|Win32
+               {E54D4581-CD59-4687-BB10-694B8192EABA}.Debug|x86.Build.0 = Debug|Win32
+               {E54D4581-CD59-4687-BB10-694B8192EABA}.Release|x64.ActiveCfg = Release|x64
+               {E54D4581-CD59-4687-BB10-694B8192EABA}.Release|x64.Build.0 = Release|x64
+               {E54D4581-CD59-4687-BB10-694B8192EABA}.Release|x86.ActiveCfg = Release|Win32
+               {E54D4581-CD59-4687-BB10-694B8192EABA}.Release|x86.Build.0 = Release|Win32
+               {B6A7F3A9-F47C-41E5-9754-0BFF233B1172}.Debug|x64.ActiveCfg = Debug|x64
+               {B6A7F3A9-F47C-41E5-9754-0BFF233B1172}.Debug|x64.Build.0 = Debug|x64
+               {B6A7F3A9-F47C-41E5-9754-0BFF233B1172}.Debug|x86.ActiveCfg = Debug|x86
+               {B6A7F3A9-F47C-41E5-9754-0BFF233B1172}.Debug|x86.Build.0 = Debug|x86
+               {B6A7F3A9-F47C-41E5-9754-0BFF233B1172}.Release|x64.ActiveCfg = Release|x64
+               {B6A7F3A9-F47C-41E5-9754-0BFF233B1172}.Release|x64.Build.0 = Release|x64
+               {B6A7F3A9-F47C-41E5-9754-0BFF233B1172}.Release|x86.ActiveCfg = Release|x86
+               {B6A7F3A9-F47C-41E5-9754-0BFF233B1172}.Release|x86.Build.0 = Release|x86
+               {58C106FE-C159-46D3-97E1-73AB83232670}.Debug|x64.ActiveCfg = Debug|x64
+               {58C106FE-C159-46D3-97E1-73AB83232670}.Debug|x64.Build.0 = Debug|x64
+               {58C106FE-C159-46D3-97E1-73AB83232670}.Debug|x86.ActiveCfg = Debug|x86
+               {58C106FE-C159-46D3-97E1-73AB83232670}.Debug|x86.Build.0 = Debug|x86
+               {58C106FE-C159-46D3-97E1-73AB83232670}.Release|x64.ActiveCfg = Release|x64
+               {58C106FE-C159-46D3-97E1-73AB83232670}.Release|x64.Build.0 = Release|x64
+               {58C106FE-C159-46D3-97E1-73AB83232670}.Release|x86.ActiveCfg = Release|x86
+               {58C106FE-C159-46D3-97E1-73AB83232670}.Release|x86.Build.0 = Release|x86
        EndGlobalSection
        GlobalSection(SolutionProperties) = preSolution
                HideSolutionNode = FALSE
similarity index 55%
rename from project/libcec.rc
rename to project/libcec/libcec.rc
index 0f65c996e1e71a34e343e11233905d17a9ca1645..dd5aea5f2eba5e4eb92b4fbf31b6c0cb7a13027b 100644 (file)
Binary files a/project/libcec.rc and b/project/libcec/libcec.rc differ
similarity index 61%
rename from project/libcec.vcxproj
rename to project/libcec/libcec.vcxproj
index 271d0dffbb1159abcff265d168665cb9932557f1..b8db0b1366f7a436291396a3b505b026f0f9a279 100644 (file)
     </ProjectConfiguration>
   </ItemGroup>
   <ItemGroup>
-    <ClInclude Include="..\include\cec.h" />
-    <ClInclude Include="..\include\cecc.h" />
-    <ClInclude Include="..\include\cecloader.h" />
-    <ClInclude Include="..\include\cectypes.h" />
-    <ClInclude Include="..\src\lib\adapter\AdapterCommunication.h" />
-    <ClInclude Include="..\src\lib\adapter\AdapterFactory.h" />
-    <ClInclude Include="..\src\lib\adapter\Pulse-Eight\USBCECAdapterCommands.h" />
-    <ClInclude Include="..\src\lib\adapter\Pulse-Eight\USBCECAdapterCommunication.h" />
-    <ClInclude Include="..\src\lib\adapter\Pulse-Eight\USBCECAdapterDetection.h" />
-    <ClInclude Include="..\src\lib\adapter\Pulse-Eight\USBCECAdapterMessage.h" />
-    <ClInclude Include="..\src\lib\adapter\Pulse-Eight\USBCECAdapterMessageQueue.h" />
-    <ClInclude Include="..\src\lib\CECClient.h" />
-    <ClInclude Include="..\src\lib\CECInputBuffer.h" />
-    <ClInclude Include="..\src\lib\CECProcessor.h" />
-    <ClInclude Include="..\src\lib\CECTypeUtils.h" />
-    <ClInclude Include="..\src\lib\devices\CECAudioSystem.h" />
-    <ClInclude Include="..\src\lib\devices\CECBusDevice.h" />
-    <ClInclude Include="..\src\lib\devices\CECDeviceMap.h" />
-    <ClInclude Include="..\src\lib\devices\CECPlaybackDevice.h" />
-    <ClInclude Include="..\src\lib\devices\CECRecordingDevice.h" />
-    <ClInclude Include="..\src\lib\devices\CECTuner.h" />
-    <ClInclude Include="..\src\lib\devices\CECTV.h" />
-    <ClInclude Include="..\src\lib\implementations\ANCommandHandler.h" />
-    <ClInclude Include="..\src\lib\implementations\CECCommandHandler.h" />
-    <ClInclude Include="..\src\lib\implementations\PHCommandHandler.h" />
-    <ClInclude Include="..\src\lib\implementations\RLCommandHandler.h" />
-    <ClInclude Include="..\src\lib\implementations\SLCommandHandler.h" />
-    <ClInclude Include="..\src\lib\implementations\VLCommandHandler.h" />
-    <ClInclude Include="..\src\lib\LibCEC.h" />
-    <ClInclude Include="..\src\lib\platform\adl\adl-edid.h" />
-    <ClInclude Include="..\src\lib\platform\adl\adl_defines.h" />
-    <ClInclude Include="..\src\lib\platform\adl\adl_sdk.h" />
-    <ClInclude Include="..\src\lib\platform\adl\adl_structures.h" />
-    <ClInclude Include="..\src\lib\platform\nvidia\nv-edid.h" />
-    <ClInclude Include="..\src\lib\platform\os.h" />
-    <ClInclude Include="..\src\lib\platform\sockets\serialport.h" />
-    <ClInclude Include="..\src\lib\platform\sockets\socket.h" />
-    <ClInclude Include="..\src\lib\platform\sockets\tcp.h" />
-    <ClInclude Include="..\src\lib\platform\threads\mutex.h" />
-    <ClInclude Include="..\src\lib\platform\threads\threads.h" />
-    <ClInclude Include="..\src\lib\platform\util\baudrate.h" />
-    <ClInclude Include="..\src\lib\platform\util\buffer.h" />
-    <ClInclude Include="..\src\lib\platform\util\edid.h" />
-    <ClInclude Include="..\src\lib\platform\util\StdString.h" />
-    <ClInclude Include="..\src\lib\platform\util\timeutils.h" />
-    <ClInclude Include="..\src\lib\platform\windows\dlfcn-win32.h" />
-    <ClInclude Include="..\src\lib\platform\windows\os-socket.h" />
-    <ClInclude Include="..\src\lib\platform\windows\os-threads.h" />
-    <ClInclude Include="..\src\lib\platform\windows\os-types.h" />
-    <ClInclude Include="..\src\lib\platform\windows\stdint.h" />
+    <ClInclude Include="..\..\include\cec.h" />
+    <ClInclude Include="..\..\include\cecc.h" />
+    <ClInclude Include="..\..\include\cecloader.h" />
+    <ClInclude Include="..\..\include\cectypes.h" />
+    <ClInclude Include="..\..\src\lib\adapter\AdapterCommunication.h" />
+    <ClInclude Include="..\..\src\lib\adapter\AdapterFactory.h" />
+    <ClInclude Include="..\..\src\lib\adapter\Pulse-Eight\USBCECAdapterCommands.h" />
+    <ClInclude Include="..\..\src\lib\adapter\Pulse-Eight\USBCECAdapterCommunication.h" />
+    <ClInclude Include="..\..\src\lib\adapter\Pulse-Eight\USBCECAdapterDetection.h" />
+    <ClInclude Include="..\..\src\lib\adapter\Pulse-Eight\USBCECAdapterMessage.h" />
+    <ClInclude Include="..\..\src\lib\adapter\Pulse-Eight\USBCECAdapterMessageQueue.h" />
+    <ClInclude Include="..\..\src\lib\CECClient.h" />
+    <ClInclude Include="..\..\src\lib\CECInputBuffer.h" />
+    <ClInclude Include="..\..\src\lib\CECProcessor.h" />
+    <ClInclude Include="..\..\src\lib\CECTypeUtils.h" />
+    <ClInclude Include="..\..\src\lib\devices\CECAudioSystem.h" />
+    <ClInclude Include="..\..\src\lib\devices\CECBusDevice.h" />
+    <ClInclude Include="..\..\src\lib\devices\CECDeviceMap.h" />
+    <ClInclude Include="..\..\src\lib\devices\CECPlaybackDevice.h" />
+    <ClInclude Include="..\..\src\lib\devices\CECRecordingDevice.h" />
+    <ClInclude Include="..\..\src\lib\devices\CECTuner.h" />
+    <ClInclude Include="..\..\src\lib\devices\CECTV.h" />
+    <ClInclude Include="..\..\src\lib\implementations\ANCommandHandler.h" />
+    <ClInclude Include="..\..\src\lib\implementations\CECCommandHandler.h" />
+    <ClInclude Include="..\..\src\lib\implementations\PHCommandHandler.h" />
+    <ClInclude Include="..\..\src\lib\implementations\RLCommandHandler.h" />
+    <ClInclude Include="..\..\src\lib\implementations\SLCommandHandler.h" />
+    <ClInclude Include="..\..\src\lib\implementations\VLCommandHandler.h" />
+    <ClInclude Include="..\..\src\lib\LibCEC.h" />
+    <ClInclude Include="..\..\src\lib\platform\adl\adl-edid.h" />
+    <ClInclude Include="..\..\src\lib\platform\adl\adl_defines.h" />
+    <ClInclude Include="..\..\src\lib\platform\adl\adl_sdk.h" />
+    <ClInclude Include="..\..\src\lib\platform\adl\adl_structures.h" />
+    <ClInclude Include="..\..\src\lib\platform\nvidia\nv-edid.h" />
+    <ClInclude Include="..\..\src\lib\platform\os.h" />
+    <ClInclude Include="..\..\src\lib\platform\sockets\serialport.h" />
+    <ClInclude Include="..\..\src\lib\platform\sockets\socket.h" />
+    <ClInclude Include="..\..\src\lib\platform\sockets\tcp.h" />
+    <ClInclude Include="..\..\src\lib\platform\threads\mutex.h" />
+    <ClInclude Include="..\..\src\lib\platform\threads\threads.h" />
+    <ClInclude Include="..\..\src\lib\platform\util\baudrate.h" />
+    <ClInclude Include="..\..\src\lib\platform\util\buffer.h" />
+    <ClInclude Include="..\..\src\lib\platform\util\edid.h" />
+    <ClInclude Include="..\..\src\lib\platform\util\StdString.h" />
+    <ClInclude Include="..\..\src\lib\platform\util\timeutils.h" />
+    <ClInclude Include="..\..\src\lib\platform\windows\dlfcn-win32.h" />
+    <ClInclude Include="..\..\src\lib\platform\windows\os-socket.h" />
+    <ClInclude Include="..\..\src\lib\platform\windows\os-threads.h" />
+    <ClInclude Include="..\..\src\lib\platform\windows\os-types.h" />
+    <ClInclude Include="..\..\src\lib\platform\windows\stdint.h" />
+    <ClInclude Include="resource.h" />
   </ItemGroup>
   <ItemGroup>
-    <ClCompile Include="..\src\lib\adapter\AdapterFactory.cpp" />
-    <ClCompile Include="..\src\lib\adapter\Pulse-Eight\USBCECAdapterCommands.cpp" />
-    <ClCompile Include="..\src\lib\adapter\Pulse-Eight\USBCECAdapterCommunication.cpp" />
-    <ClCompile Include="..\src\lib\adapter\Pulse-Eight\USBCECAdapterDetection.cpp" />
-    <ClCompile Include="..\src\lib\adapter\Pulse-Eight\USBCECAdapterMessage.cpp" />
-    <ClCompile Include="..\src\lib\adapter\Pulse-Eight\USBCECAdapterMessageQueue.cpp" />
-    <ClCompile Include="..\src\lib\CECClient.cpp" />
-    <ClCompile Include="..\src\lib\CECProcessor.cpp" />
-    <ClCompile Include="..\src\lib\devices\CECAudioSystem.cpp" />
-    <ClCompile Include="..\src\lib\devices\CECBusDevice.cpp" />
-    <ClCompile Include="..\src\lib\devices\CECDeviceMap.cpp" />
-    <ClCompile Include="..\src\lib\devices\CECPlaybackDevice.cpp" />
-    <ClCompile Include="..\src\lib\devices\CECRecordingDevice.cpp" />
-    <ClCompile Include="..\src\lib\devices\CECTuner.cpp" />
-    <ClCompile Include="..\src\lib\devices\CECTV.cpp" />
-    <ClCompile Include="..\src\lib\implementations\ANCommandHandler.cpp" />
-    <ClCompile Include="..\src\lib\implementations\CECCommandHandler.cpp" />
-    <ClCompile Include="..\src\lib\implementations\PHCommandHandler.cpp" />
-    <ClCompile Include="..\src\lib\implementations\RLCommandHandler.cpp" />
-    <ClCompile Include="..\src\lib\implementations\SLCommandHandler.cpp" />
-    <ClCompile Include="..\src\lib\implementations\VLCommandHandler.cpp" />
-    <ClCompile Include="..\src\lib\LibCEC.cpp" />
-    <ClCompile Include="..\src\lib\LibCECC.cpp" />
-    <ClCompile Include="..\src\lib\LibCECDll.cpp" />
-    <ClCompile Include="..\src\lib\platform\adl\adl-edid.cpp" />
-    <ClCompile Include="..\src\lib\platform\nvidia\nv-edid.cpp" />
-    <ClCompile Include="..\src\lib\platform\windows\dlfcn-win32.cpp" />
-    <ClCompile Include="..\src\lib\platform\windows\os-edid.cpp" />
-    <ClCompile Include="..\src\lib\platform\windows\os-threads.cpp" />
-    <ClCompile Include="..\src\lib\platform\windows\serialport.cpp" />
+    <ClCompile Include="..\..\src\lib\adapter\AdapterFactory.cpp" />
+    <ClCompile Include="..\..\src\lib\adapter\Pulse-Eight\USBCECAdapterCommands.cpp" />
+    <ClCompile Include="..\..\src\lib\adapter\Pulse-Eight\USBCECAdapterCommunication.cpp" />
+    <ClCompile Include="..\..\src\lib\adapter\Pulse-Eight\USBCECAdapterDetection.cpp" />
+    <ClCompile Include="..\..\src\lib\adapter\Pulse-Eight\USBCECAdapterMessage.cpp" />
+    <ClCompile Include="..\..\src\lib\adapter\Pulse-Eight\USBCECAdapterMessageQueue.cpp" />
+    <ClCompile Include="..\..\src\lib\CECClient.cpp" />
+    <ClCompile Include="..\..\src\lib\CECProcessor.cpp" />
+    <ClCompile Include="..\..\src\lib\devices\CECAudioSystem.cpp" />
+    <ClCompile Include="..\..\src\lib\devices\CECBusDevice.cpp" />
+    <ClCompile Include="..\..\src\lib\devices\CECDeviceMap.cpp" />
+    <ClCompile Include="..\..\src\lib\devices\CECPlaybackDevice.cpp" />
+    <ClCompile Include="..\..\src\lib\devices\CECRecordingDevice.cpp" />
+    <ClCompile Include="..\..\src\lib\devices\CECTuner.cpp" />
+    <ClCompile Include="..\..\src\lib\devices\CECTV.cpp" />
+    <ClCompile Include="..\..\src\lib\implementations\ANCommandHandler.cpp" />
+    <ClCompile Include="..\..\src\lib\implementations\CECCommandHandler.cpp" />
+    <ClCompile Include="..\..\src\lib\implementations\PHCommandHandler.cpp" />
+    <ClCompile Include="..\..\src\lib\implementations\RLCommandHandler.cpp" />
+    <ClCompile Include="..\..\src\lib\implementations\SLCommandHandler.cpp" />
+    <ClCompile Include="..\..\src\lib\implementations\VLCommandHandler.cpp" />
+    <ClCompile Include="..\..\src\lib\LibCEC.cpp" />
+    <ClCompile Include="..\..\src\lib\LibCECC.cpp" />
+    <ClCompile Include="..\..\src\lib\LibCECDll.cpp" />
+    <ClCompile Include="..\..\src\lib\platform\adl\adl-edid.cpp" />
+    <ClCompile Include="..\..\src\lib\platform\nvidia\nv-edid.cpp" />
+    <ClCompile Include="..\..\src\lib\platform\windows\dlfcn-win32.cpp" />
+    <ClCompile Include="..\..\src\lib\platform\windows\os-edid.cpp" />
+    <ClCompile Include="..\..\src\lib\platform\windows\os-threads.cpp" />
+    <ClCompile Include="..\..\src\lib\platform\windows\serialport.cpp" />
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="libcec.rc" />
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v110</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v110</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v110</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v110</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
     <OutDir>$(SolutionDir)..\build\</OutDir>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <OutDir>$(SolutionDir)..\build\</OutDir>
+    <OutDir>$(SolutionDir)..\build\x64\</OutDir>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <TargetName>libcec</TargetName>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <TargetName>$(ProjectName).x64</TargetName>
+    <TargetName>$(ProjectName)</TargetName>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <IncludePath>$(SolutionDir)..\include;$(IncludePath)</IncludePath>
     <LibraryPath>C:\WinDDK\7600.16385.1\lib\win7\i386;$(LibraryPath)</LibraryPath>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <OutDir>$(SolutionDir)..\build\</OutDir>
-    <TargetName>$(ProjectName).x64</TargetName>
+    <OutDir>$(SolutionDir)..\build\x64\</OutDir>
+    <TargetName>$(ProjectName)</TargetName>
     <IncludePath>$(SolutionDir)..\include;$(IncludePath)</IncludePath>
     <LibraryPath>C:\WinDDK\7600.16385.1\lib\win7\amd64;$(LibraryPath)</LibraryPath>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
+</Project>
\ No newline at end of file
similarity index 51%
rename from project/libcec.vcxproj.filters
rename to project/libcec/libcec.vcxproj.filters
index f966a2be058d71bc8feaf2b96fe53f7c774f0e6c..b9e41ed1a4d96b407495f927d4338bd2d8e05787 100644 (file)
     </Filter>
   </ItemGroup>
   <ItemGroup>
-    <ClInclude Include="..\src\lib\CECProcessor.h" />
-    <ClInclude Include="..\src\lib\LibCEC.h" />
-    <ClInclude Include="..\include\cec.h">
+    <ClInclude Include="..\..\src\lib\CECProcessor.h" />
+    <ClInclude Include="..\..\src\lib\LibCEC.h" />
+    <ClInclude Include="..\..\include\cec.h">
       <Filter>exports</Filter>
     </ClInclude>
-    <ClInclude Include="..\include\cecc.h">
+    <ClInclude Include="..\..\include\cecc.h">
       <Filter>exports</Filter>
     </ClInclude>
-    <ClInclude Include="..\include\cecloader.h">
+    <ClInclude Include="..\..\include\cecloader.h">
       <Filter>exports</Filter>
     </ClInclude>
-    <ClInclude Include="..\include\cectypes.h">
+    <ClInclude Include="..\..\include\cectypes.h">
       <Filter>exports</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\implementations\ANCommandHandler.h">
+    <ClInclude Include="..\..\src\lib\implementations\ANCommandHandler.h">
       <Filter>implementations</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\implementations\CECCommandHandler.h">
+    <ClInclude Include="..\..\src\lib\implementations\CECCommandHandler.h">
       <Filter>implementations</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\implementations\SLCommandHandler.h">
+    <ClInclude Include="..\..\src\lib\implementations\SLCommandHandler.h">
       <Filter>implementations</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\devices\CECBusDevice.h">
+    <ClInclude Include="..\..\src\lib\devices\CECBusDevice.h">
       <Filter>devices</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\implementations\VLCommandHandler.h">
+    <ClInclude Include="..\..\src\lib\implementations\VLCommandHandler.h">
       <Filter>implementations</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\devices\CECAudioSystem.h">
+    <ClInclude Include="..\..\src\lib\devices\CECAudioSystem.h">
       <Filter>devices</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\devices\CECPlaybackDevice.h">
+    <ClInclude Include="..\..\src\lib\devices\CECPlaybackDevice.h">
       <Filter>devices</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\devices\CECRecordingDevice.h">
+    <ClInclude Include="..\..\src\lib\devices\CECRecordingDevice.h">
       <Filter>devices</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\devices\CECTuner.h">
+    <ClInclude Include="..\..\src\lib\devices\CECTuner.h">
       <Filter>devices</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\devices\CECTV.h">
+    <ClInclude Include="..\..\src\lib\devices\CECTV.h">
       <Filter>devices</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\platform\os.h">
+    <ClInclude Include="..\..\src\lib\platform\os.h">
       <Filter>platform</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\platform\sockets\serialport.h">
+    <ClInclude Include="..\..\src\lib\platform\sockets\serialport.h">
       <Filter>platform\sockets</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\platform\sockets\socket.h">
+    <ClInclude Include="..\..\src\lib\platform\sockets\socket.h">
       <Filter>platform\sockets</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\platform\sockets\tcp.h">
+    <ClInclude Include="..\..\src\lib\platform\sockets\tcp.h">
       <Filter>platform\sockets</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\platform\util\baudrate.h">
+    <ClInclude Include="..\..\src\lib\platform\util\baudrate.h">
       <Filter>platform\util</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\platform\util\buffer.h">
+    <ClInclude Include="..\..\src\lib\platform\util\buffer.h">
       <Filter>platform\util</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\platform\util\StdString.h">
+    <ClInclude Include="..\..\src\lib\platform\util\StdString.h">
       <Filter>platform\util</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\platform\util\timeutils.h">
+    <ClInclude Include="..\..\src\lib\platform\util\timeutils.h">
       <Filter>platform\util</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\platform\threads\mutex.h">
+    <ClInclude Include="..\..\src\lib\platform\threads\mutex.h">
       <Filter>platform\threads</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\platform\threads\threads.h">
+    <ClInclude Include="..\..\src\lib\platform\threads\threads.h">
       <Filter>platform\threads</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\platform\windows\os-socket.h">
+    <ClInclude Include="..\..\src\lib\platform\windows\os-socket.h">
       <Filter>platform\windows</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\platform\windows\os-threads.h">
+    <ClInclude Include="..\..\src\lib\platform\windows\os-threads.h">
       <Filter>platform\windows</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\platform\windows\os-types.h">
+    <ClInclude Include="..\..\src\lib\platform\windows\os-types.h">
       <Filter>platform\windows</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\platform\windows\stdint.h">
+    <ClInclude Include="..\..\src\lib\platform\windows\stdint.h">
       <Filter>platform\windows</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\implementations\RLCommandHandler.h">
+    <ClInclude Include="..\..\src\lib\implementations\RLCommandHandler.h">
       <Filter>implementations</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\implementations\PHCommandHandler.h">
+    <ClInclude Include="..\..\src\lib\implementations\PHCommandHandler.h">
       <Filter>implementations</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\CECClient.h" />
-    <ClInclude Include="..\src\lib\CECInputBuffer.h" />
-    <ClInclude Include="..\src\lib\devices\CECDeviceMap.h">
+    <ClInclude Include="..\..\src\lib\CECClient.h" />
+    <ClInclude Include="..\..\src\lib\CECInputBuffer.h" />
+    <ClInclude Include="..\..\src\lib\devices\CECDeviceMap.h">
       <Filter>devices</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\CECTypeUtils.h" />
-    <ClInclude Include="..\src\lib\platform\util\edid.h">
+    <ClInclude Include="..\..\src\lib\CECTypeUtils.h" />
+    <ClInclude Include="..\..\src\lib\platform\util\edid.h">
       <Filter>platform\util</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\platform\adl\adl_defines.h">
+    <ClInclude Include="..\..\src\lib\platform\adl\adl_defines.h">
       <Filter>platform\adl</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\platform\adl\adl_sdk.h">
+    <ClInclude Include="..\..\src\lib\platform\adl\adl_sdk.h">
       <Filter>platform\adl</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\platform\adl\adl_structures.h">
+    <ClInclude Include="..\..\src\lib\platform\adl\adl_structures.h">
       <Filter>platform\adl</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\platform\adl\adl-edid.h">
+    <ClInclude Include="..\..\src\lib\platform\adl\adl-edid.h">
       <Filter>platform\adl</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\platform\windows\dlfcn-win32.h">
+    <ClInclude Include="..\..\src\lib\platform\windows\dlfcn-win32.h">
       <Filter>platform\windows</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\platform\nvidia\nv-edid.h">
+    <ClInclude Include="..\..\src\lib\platform\nvidia\nv-edid.h">
       <Filter>platform\nvidia</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\adapter\AdapterCommunication.h">
+    <ClInclude Include="..\..\src\lib\adapter\AdapterCommunication.h">
       <Filter>adapter</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\adapter\Pulse-Eight\USBCECAdapterCommands.h">
+    <ClInclude Include="..\..\src\lib\adapter\Pulse-Eight\USBCECAdapterCommands.h">
       <Filter>adapter\Pulse-Eight</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\adapter\Pulse-Eight\USBCECAdapterCommunication.h">
+    <ClInclude Include="..\..\src\lib\adapter\Pulse-Eight\USBCECAdapterCommunication.h">
       <Filter>adapter\Pulse-Eight</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\adapter\Pulse-Eight\USBCECAdapterDetection.h">
+    <ClInclude Include="..\..\src\lib\adapter\Pulse-Eight\USBCECAdapterDetection.h">
       <Filter>adapter\Pulse-Eight</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\adapter\Pulse-Eight\USBCECAdapterMessage.h">
+    <ClInclude Include="..\..\src\lib\adapter\Pulse-Eight\USBCECAdapterMessage.h">
       <Filter>adapter\Pulse-Eight</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\adapter\Pulse-Eight\USBCECAdapterMessageQueue.h">
+    <ClInclude Include="..\..\src\lib\adapter\Pulse-Eight\USBCECAdapterMessageQueue.h">
       <Filter>adapter\Pulse-Eight</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\adapter\AdapterFactory.h">
+    <ClInclude Include="..\..\src\lib\adapter\AdapterFactory.h">
       <Filter>adapter</Filter>
     </ClInclude>
+    <ClInclude Include="resource.h" />
   </ItemGroup>
   <ItemGroup>
-    <ClCompile Include="..\src\lib\CECProcessor.cpp" />
-    <ClCompile Include="..\src\lib\LibCEC.cpp" />
-    <ClCompile Include="..\src\lib\LibCECC.cpp" />
-    <ClCompile Include="..\src\lib\LibCECDll.cpp" />
-    <ClCompile Include="..\src\lib\implementations\ANCommandHandler.cpp">
+    <ClCompile Include="..\..\src\lib\CECProcessor.cpp" />
+    <ClCompile Include="..\..\src\lib\LibCEC.cpp" />
+    <ClCompile Include="..\..\src\lib\LibCECC.cpp" />
+    <ClCompile Include="..\..\src\lib\LibCECDll.cpp" />
+    <ClCompile Include="..\..\src\lib\implementations\ANCommandHandler.cpp">
       <Filter>implementations</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\lib\implementations\CECCommandHandler.cpp">
+    <ClCompile Include="..\..\src\lib\implementations\CECCommandHandler.cpp">
       <Filter>implementations</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\lib\implementations\SLCommandHandler.cpp">
+    <ClCompile Include="..\..\src\lib\implementations\SLCommandHandler.cpp">
       <Filter>implementations</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\lib\devices\CECBusDevice.cpp">
+    <ClCompile Include="..\..\src\lib\devices\CECBusDevice.cpp">
       <Filter>devices</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\lib\implementations\VLCommandHandler.cpp">
+    <ClCompile Include="..\..\src\lib\implementations\VLCommandHandler.cpp">
       <Filter>implementations</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\lib\devices\CECAudioSystem.cpp">
+    <ClCompile Include="..\..\src\lib\devices\CECAudioSystem.cpp">
       <Filter>devices</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\lib\devices\CECPlaybackDevice.cpp">
+    <ClCompile Include="..\..\src\lib\devices\CECPlaybackDevice.cpp">
       <Filter>devices</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\lib\devices\CECRecordingDevice.cpp">
+    <ClCompile Include="..\..\src\lib\devices\CECRecordingDevice.cpp">
       <Filter>devices</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\lib\devices\CECTuner.cpp">
+    <ClCompile Include="..\..\src\lib\devices\CECTuner.cpp">
       <Filter>devices</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\lib\devices\CECTV.cpp">
+    <ClCompile Include="..\..\src\lib\devices\CECTV.cpp">
       <Filter>devices</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\lib\platform\windows\os-threads.cpp">
+    <ClCompile Include="..\..\src\lib\platform\windows\os-threads.cpp">
       <Filter>platform\windows</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\lib\platform\windows\serialport.cpp">
+    <ClCompile Include="..\..\src\lib\platform\windows\serialport.cpp">
       <Filter>platform\windows</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\lib\implementations\RLCommandHandler.cpp">
+    <ClCompile Include="..\..\src\lib\implementations\RLCommandHandler.cpp">
       <Filter>implementations</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\lib\implementations\PHCommandHandler.cpp">
+    <ClCompile Include="..\..\src\lib\implementations\PHCommandHandler.cpp">
       <Filter>implementations</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\lib\CECClient.cpp" />
-    <ClCompile Include="..\src\lib\devices\CECDeviceMap.cpp">
+    <ClCompile Include="..\..\src\lib\CECClient.cpp" />
+    <ClCompile Include="..\..\src\lib\devices\CECDeviceMap.cpp">
       <Filter>devices</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\lib\platform\windows\os-edid.cpp">
+    <ClCompile Include="..\..\src\lib\platform\windows\os-edid.cpp">
       <Filter>platform\windows</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\lib\platform\adl\adl-edid.cpp">
+    <ClCompile Include="..\..\src\lib\platform\adl\adl-edid.cpp">
       <Filter>platform\adl</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\lib\platform\windows\dlfcn-win32.cpp">
+    <ClCompile Include="..\..\src\lib\platform\windows\dlfcn-win32.cpp">
       <Filter>platform\windows</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\lib\platform\nvidia\nv-edid.cpp">
+    <ClCompile Include="..\..\src\lib\platform\nvidia\nv-edid.cpp">
       <Filter>platform\nvidia</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\lib\adapter\Pulse-Eight\USBCECAdapterCommands.cpp">
+    <ClCompile Include="..\..\src\lib\adapter\Pulse-Eight\USBCECAdapterCommands.cpp">
       <Filter>adapter\Pulse-Eight</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\lib\adapter\Pulse-Eight\USBCECAdapterCommunication.cpp">
+    <ClCompile Include="..\..\src\lib\adapter\Pulse-Eight\USBCECAdapterCommunication.cpp">
       <Filter>adapter\Pulse-Eight</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\lib\adapter\Pulse-Eight\USBCECAdapterDetection.cpp">
+    <ClCompile Include="..\..\src\lib\adapter\Pulse-Eight\USBCECAdapterDetection.cpp">
       <Filter>adapter\Pulse-Eight</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\lib\adapter\Pulse-Eight\USBCECAdapterMessage.cpp">
+    <ClCompile Include="..\..\src\lib\adapter\Pulse-Eight\USBCECAdapterMessage.cpp">
       <Filter>adapter\Pulse-Eight</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\lib\adapter\Pulse-Eight\USBCECAdapterMessageQueue.cpp">
+    <ClCompile Include="..\..\src\lib\adapter\Pulse-Eight\USBCECAdapterMessageQueue.cpp">
       <Filter>adapter\Pulse-Eight</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\lib\adapter\AdapterFactory.cpp">
+    <ClCompile Include="..\..\src\lib\adapter\AdapterFactory.cpp">
       <Filter>adapter</Filter>
     </ClCompile>
   </ItemGroup>
diff --git a/project/libcec/resource.h b/project/libcec/resource.h
new file mode 100644 (file)
index 0000000..84edc7f
Binary files /dev/null and b/project/libcec/resource.h differ
diff --git a/project/testclient/resource.h b/project/testclient/resource.h
new file mode 100644 (file)
index 0000000..84edc7f
Binary files /dev/null and b/project/testclient/resource.h differ
similarity index 55%
rename from project/testclient.rc
rename to project/testclient/testclient.rc
index 20d3b9090f22fbf33a9b10ac4c9f43c79ffc89fb..5be543716e369255152c5004e85f15ffad62da76 100644 (file)
Binary files a/project/testclient.rc and b/project/testclient/testclient.rc differ
similarity index 89%
rename from project/testclient.vcxproj
rename to project/testclient/testclient.vcxproj
index 53cebe527c346f88137e1532b88e95893f4f0014..9e910ac7dd123d1aee1a5be462a0fa01bdaef38b 100644 (file)
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v110</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v110</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v110</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v110</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
     <TargetName>cec-client</TargetName>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <OutDir>$(SolutionDir)..\build\</OutDir>
-    <TargetName>cec-client.x64</TargetName>
+    <OutDir>$(SolutionDir)..\build\x64\</OutDir>
+    <TargetName>cec-client</TargetName>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <OutDir>$(SolutionDir)..\build\</OutDir>
     <TargetName>cec-client</TargetName>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <OutDir>$(SolutionDir)..\build\</OutDir>
-    <TargetName>cec-client.x64</TargetName>
+    <OutDir>$(SolutionDir)..\build\x64\</OutDir>
+    <TargetName>cec-client</TargetName>
   </PropertyGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
@@ -86,7 +90,7 @@
       <TreatWarningAsError>true</TreatWarningAsError>
       <DisableSpecificWarnings>
       </DisableSpecificWarnings>
-      <AdditionalIncludeDirectories>$(SolutiontDir)..\include;$(SolutionDir)..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>$(SolutiontDir)..\..\include;$(SolutionDir)..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
       <TreatWarningAsError>true</TreatWarningAsError>
       <DisableSpecificWarnings>
       </DisableSpecificWarnings>
-      <AdditionalIncludeDirectories>$(SolutiontDir)..\include;$(SolutionDir)..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>$(SolutiontDir)..\..\include;$(SolutionDir)..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>
-    <ClInclude Include="..\include\cec.h" />
-    <ClInclude Include="..\include\cecloader.h" />
+    <ClInclude Include="..\..\include\cec.h" />
+    <ClInclude Include="..\..\include\cecloader.h" />
+    <ClInclude Include="resource.h" />
   </ItemGroup>
   <ItemGroup>
-    <ClCompile Include="..\src\lib\platform\windows\os-threads.cpp" />
-    <ClCompile Include="..\src\testclient\main.cpp" />
+    <ClCompile Include="..\..\src\lib\platform\windows\os-threads.cpp" />
+    <ClCompile Include="..\..\src\testclient\main.cpp" />
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="testclient.rc" />
similarity index 71%
rename from project/testclient.vcxproj.filters
rename to project/testclient/testclient.vcxproj.filters
index 0fd21fb85474a02309eeccc6f3f852b19d581ad8..dc4300d999ab3bb295e4a3188974d53488aa7ff2 100644 (file)
@@ -9,16 +9,17 @@
     </Filter>
   </ItemGroup>
   <ItemGroup>
-    <ClInclude Include="..\include\cec.h">
+    <ClInclude Include="..\..\include\cec.h">
       <Filter>exports</Filter>
     </ClInclude>
-    <ClInclude Include="..\include\cecloader.h">
+    <ClInclude Include="..\..\include\cecloader.h">
       <Filter>exports</Filter>
     </ClInclude>
+    <ClInclude Include="resource.h" />
   </ItemGroup>
   <ItemGroup>
-    <ClCompile Include="..\src\testclient\main.cpp" />
-    <ClCompile Include="..\src\lib\platform\windows\os-threads.cpp">
+    <ClCompile Include="..\..\src\testclient\main.cpp" />
+    <ClCompile Include="..\..\src\lib\platform\windows\os-threads.cpp">
       <Filter>platform</Filter>
     </ClCompile>
   </ItemGroup>
index e3d22f6948a889a5bf3abe1d6c1548e9a7514998..d2ab99000aca1854e1eb5728f7d82b33f2a8f0b3 100644 (file)
@@ -43,7 +43,7 @@ namespace CecSharpClient
       Config = new LibCECConfiguration();
       Config.DeviceTypes.Types[0] = CecDeviceType.RecordingDevice;
       Config.DeviceName = "CEC Tester";
-      Config.ClientVersion = CecClientVersion.Version2_1_0;
+      Config.ClientVersion = CecClientVersion.CurrentVersion;
       Config.SetCallbacks(this);
       LogLevel = (int)CecLogLevel.All;
 
index eb00508e79d592a2a47c96d6e5ae1c56e261a92e..158f9d55fc39b6dac56f75bd9494b36e3768aeb8 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
     <AssemblyName>CecSharpTester</AssemblyName>
     <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <OldToolsVersion>3.5</OldToolsVersion>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>..\..\build\</OutputPath>
+    <OutputPath>..\..\build\x64\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DebugType>full</DebugType>
     <PlatformTarget>x64</PlatformTarget>
     <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
-    <OutputPath>..\..\build\</OutputPath>
+    <OutputPath>..\..\build\x64\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <Optimize>true</Optimize>
     <DebugType>pdbonly</DebugType>
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="CecSharpClient.cs" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\..\project\LibCecSharp.vcproj">
+    <ProjectReference Include="..\..\project\LibCecSharp\LibCecSharp.vcxproj">
       <Project>{E54D4581-CD59-4687-BB10-694B8192EABA}</Project>
       <Name>LibCecSharp</Name>
     </ProjectReference>
   </ItemGroup>
-  <ItemGroup>
-    <Folder Include="Properties\" />
-  </ItemGroup>
+  <ItemGroup />
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
index c955c60ed057882b8316b2338e511f2cdd10388b..de041e6f5f6c16cd7874d0c0106bd0cca67c6728 100644 (file)
@@ -8,9 +8,9 @@ using System.Runtime.InteropServices;
 [assembly: AssemblyTitle("CecSharpClient")]
 [assembly: AssemblyDescription("")]
 [assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("Pulse-Eight Ltd.")]
+[assembly: AssemblyCompany("Pulse-Eight Limited")]
 [assembly: AssemblyProduct("CecSharpClient")]
-[assembly: AssemblyCopyright("Copyright (c) Pulse-Eight Ltd. 2011-2013")]
+[assembly: AssemblyCopyright("Copyright (c) Pulse-Eight Limited 2011-2013")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
 
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
 // You can specify all the values or you can default the Build and Revision Numbers 
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("2.1.1.0")]
-[assembly: AssemblyFileVersion("2.1.1.0")]
+[assembly: AssemblyVersion("2.1.3.0")]
+[assembly: AssemblyFileVersion("2.1.3.0")]
index 8bf6de300f7313060d13e9e9b3b8e1fea5563fa0..50e65ec37773effd7fedadd6062a34184c31aced 100644 (file)
@@ -7,13 +7,13 @@ using namespace System::Security::Permissions;
 [assembly:AssemblyTitleAttribute("LibCecSharp")];
 [assembly:AssemblyDescriptionAttribute("")];
 [assembly:AssemblyConfigurationAttribute("")];
-[assembly:AssemblyCompanyAttribute("Pulse-Eight Ltd.")];
+[assembly:AssemblyCompanyAttribute("Pulse-Eight Limited")];
 [assembly:AssemblyProductAttribute("LibCecSharp")];
-[assembly:AssemblyCopyrightAttribute("Copyright (c) Pulse-Eight Ltd. 2011-2013")];
+[assembly:AssemblyCopyrightAttribute("Copyright (c) Pulse-Eight Limited 2011-2013")];
 [assembly:AssemblyTrademarkAttribute("")];
 [assembly:AssemblyCultureAttribute("")];
 
-[assembly:AssemblyVersionAttribute("2.1.1.0")];
+[assembly:AssemblyVersionAttribute("2.1.3.0")];
 
 [assembly:ComVisible(false)];
 [assembly:CLSCompliantAttribute(true)];
index ac2b93b91f95cbb945c3633a991a1151415cbbaf..89c9d3bd49eb2257a899176b8c85421fc35fac8b 100644 (file)
@@ -200,7 +200,27 @@ namespace CecSharp
     /// The device needs servicing. This is set when the firmware can be upgraded, or when a problem with the firmware is detected.
     /// The latest firmware flash tool can be downloaded from http://packages.pulse-eight.net/
     /// </summary>
-    ServiceDevice = 1
+    ServiceDevice = 0,
+    /// <summary>
+    /// The connection to the adapter was lost, probably because the device got unplugged.
+    /// </summary>
+    ConnectionLost,
+    /// <summary>
+    /// No permission from the OS to access the adapter.
+    /// </summary>
+    PermissionError,
+    /// <summary>
+    /// The device is being used by another program.
+    /// </summary>
+    PortBusy,
+    /// <summary>
+    /// The physical address that is assigned to the adapter is already being used.
+    /// </summary>
+    PhysicalAddressError,
+    /// <summary>
+    /// The TV does not respond to polls.
+    /// </summary>
+    TVPollFailed
   };
 
   /// <summary>
@@ -1195,7 +1215,19 @@ namespace CecSharp
     /// <summary>
     /// v2.1.1
     /// </summary>
-    Version2_1_1   = 0x2101
+    Version2_1_1   = 0x2101,
+    /// <summary>
+    /// v2.1.2
+    /// </summary>
+    Version2_1_2   = 0x2102,
+    /// <summary>
+    /// v2.1.3
+    /// </summary>
+    Version2_1_3   = 0x2103,
+    /// <summary>
+    /// The current version
+    /// </summary>
+    CurrentVersion = 0x2103
   };
 
   /// <summary>
@@ -1302,7 +1334,19 @@ namespace CecSharp
     /// <summary>
     /// v2.1.1
     /// </summary>
-    Version2_1_1   = 0x2101
+    Version2_1_1   = 0x2101,
+    /// <summary>
+    /// v2.1.2
+    /// </summary>
+    Version2_1_2   = 0x2102,
+    /// <summary>
+    /// v2.1.3
+    /// </summary>
+    Version2_1_3   = 0x2103,
+    /// <summary>
+    /// The current version
+    /// </summary>
+    CurrentVersion = 0x2103
   };
 
   /// <summary>
@@ -1693,8 +1737,8 @@ namespace CecSharp
       PhysicalAddress     = CEC_DEFAULT_PHYSICAL_ADDRESS;
       BaseDevice          = (CecLogicalAddress)CEC_DEFAULT_BASE_DEVICE;
       HDMIPort            = CEC_DEFAULT_HDMI_PORT;
-      ClientVersion       = CecClientVersion::Version2_1_1;
-      ServerVersion       = CecServerVersion::Version2_1_1;
+      ClientVersion       = CecClientVersion::CurrentVersion;
+      ServerVersion       = CecServerVersion::CurrentVersion;
       TvVendor            = CecVendorId::Unknown;
 
       GetSettingsFromROM  = false;
diff --git a/src/LibCecSharp/resource.h b/src/LibCecSharp/resource.h
deleted file mode 100644 (file)
index d5ac7c4..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Visual C++ generated include file.
-// Used by app.rc
index 430ae9c93b1595b88acc263c7017673d4025255a..bfa1d9f81533752c5af000eab71e1b47979775bd 100644 (file)
@@ -1,15 +1,15 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>..\..\build\</OutputPath>
+    <OutputPath>..\..\build\x64\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DebugType>full</DebugType>
     <PlatformTarget>x64</PlatformTarget>
     <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
-    <OutputPath>..\..\build\</OutputPath>
+    <OutputPath>..\..\build\x64\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <Optimize>true</Optimize>
     <DebugType>pdbonly</DebugType>
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
     <ApplicationIcon>..\..\project\favicon.ico</ApplicationIcon>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <OldToolsVersion>3.5</OldToolsVersion>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
     <Compile Include="ui\About.Designer.cs">
       <DependentUpon>About.cs</DependentUpon>
     </Compile>
+    <Compile Include="ui\AsyncControls.cs" />
     <Compile Include="ui\AsyncForm.cs">
       <SubType>Form</SubType>
     </Compile>
     <Compile Include="controller\applications\KeyInput.cs" />
     <Compile Include="Program.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="ui\IAsyncControls.cs" />
     <EmbeddedResource Include="controller\applications\ApplicationControllerUI.resx">
       <DependentUpon>ApplicationControllerUI.cs</DependentUpon>
       <SubType>Designer</SubType>
     <Content Include="project\favicon.ico" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\..\project\LibCecSharp.vcproj">
+    <ProjectReference Include="..\..\project\LibCecSharp\LibCecSharp.vcxproj">
       <Project>{E54D4581-CD59-4687-BB10-694B8192EABA}</Project>
       <Name>LibCecSharp</Name>
     </ProjectReference>
index 32dc7af2b8675f7207703931933d17fe2183ef89..3ab9cf7317e7d5f6a9827768d720ecf4c5f1bdf1 100644 (file)
@@ -42,7 +42,15 @@ namespace LibCECTray
     private static CECTray _instance;
     public static CECTray Instance
     {
-      get { return _instance ?? (_instance = new CECTray()); }
+      get
+      {
+        if (_instance == null)
+        {
+          _instance = new CECTray();
+          _instance.Initialise();
+        }
+        return _instance;
+      }
     }
 
     [STAThread]
index 31f6311a2c723dcb17c05ca4794970615dd56a4c..edb540034f22690fb2e35ebb6600ebf457861f11 100644 (file)
@@ -7,9 +7,9 @@ using System.Runtime.InteropServices;
 [assembly: AssemblyTitle("CECTray")]
 [assembly: AssemblyDescription("")]
 [assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("Pulse-Eight Ltd.")]
+[assembly: AssemblyCompany("Pulse-Eight Limited")]
 [assembly: AssemblyProduct("libCEC Tray")]
-[assembly: AssemblyCopyright("Copyright (c) Pulse-Eight Ltd. 2011-2013")]
+[assembly: AssemblyCopyright("Copyright (c) Pulse-Eight Limited 2011-2013")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
 
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
 // You can specify all the values or you can default the Build and Revision Numbers 
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("2.1.1.0")]
-[assembly: AssemblyFileVersion("2.1.1.0")]
+[assembly: AssemblyVersion("2.1.3.0")]
+[assembly: AssemblyFileVersion("2.1.3.0")]
index 1f62e34a18705a61edf4478322c00491d717feb0..67e867834234ae62ba436e25533a6f9b00896572 100644 (file)
@@ -1,7 +1,7 @@
 ï»¿//------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:2.0.50727.5466
+//     Runtime Version:4.0.30319.17929
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.
@@ -19,7 +19,7 @@ namespace LibCECTray.Properties {
     // class via a tool like ResGen or Visual Studio.
     // To add or remove a member, edit your .ResX file then rerun ResGen
     // with the /str option, or rebuild your VS project.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
     internal class Resources {
@@ -294,6 +294,65 @@ namespace LibCECTray.Properties {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to The connection to the adapter was lost, probably because the device got unplugged..
+        /// </summary>
+        internal static string alert_connection_lost {
+            get {
+                return ResourceManager.GetString("alert_connection_lost", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to No permission from the OS to access the adapter. Please check your permissions..
+        /// </summary>
+        internal static string alert_permission_error {
+            get {
+                return ResourceManager.GetString("alert_permission_error", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The physical address that is assigned to the adapter is already being used. Please check your settings..
+        /// </summary>
+        internal static string alert_physical_address_error {
+            get {
+                return ResourceManager.GetString("alert_physical_address_error", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The device is being used by another program..
+        /// </summary>
+        internal static string alert_port_busy {
+            get {
+                return ResourceManager.GetString("alert_port_busy", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The device needs servicing. Please download and run the latest firmware upgrade from http://packages.pulse-eight.net/.
+        /// </summary>
+        internal static string alert_service_device {
+            get {
+                return ResourceManager.GetString("alert_service_device", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The TV does not respond to CEC polls. This is caused by one of the following:
+        ///a) the TV does not support CEC;
+        ///b) CEC has been disabled in the TV&apos;s settings;
+        ///c) the HDMI cable between the TV and adapter is faulty.
+        ///
+        ///CEC will not work (properly) if the TV does not support CEC, or has CEC disabled in it&apos;s settings..
+        /// </summary>
+        internal static string alert_tv_poll_failed {
+            get {
+                return ResourceManager.GetString("alert_tv_poll_failed", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Send &apos;inactive source&apos; when shutting down the application.
         /// </summary>
@@ -402,6 +461,15 @@ namespace LibCECTray.Properties {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Warning from libCEC.
+        /// </summary>
+        internal static string cec_alert {
+            get {
+                return ResourceManager.GetString("cec_alert", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to cec-log.txt.
         /// </summary>
index 8cf1fae8f719dfc00c9420e8a056edebd90bc006..1daef7c2457d0461829b942cbe239e3f9cf3856b 100644 (file)
   <data name="app_pause_playback_on_deactivate" xml:space="preserve">
     <value>Pause playback when switching to another source</value>
   </data>
+  <data name="alert_connection_lost" xml:space="preserve">
+    <value>The connection to the adapter was lost, probably because the device got unplugged.</value>
+  </data>
+  <data name="alert_permission_error" xml:space="preserve">
+    <value>No permission from the OS to access the adapter. Please check your permissions.</value>
+  </data>
+  <data name="alert_physical_address_error" xml:space="preserve">
+    <value>The physical address that is assigned to the adapter is already being used. Please check your settings.</value>
+  </data>
+  <data name="alert_port_busy" xml:space="preserve">
+    <value>The device is being used by another program.</value>
+  </data>
+  <data name="alert_service_device" xml:space="preserve">
+    <value>The device needs servicing. Please download and run the latest firmware upgrade from http://packages.pulse-eight.net/</value>
+  </data>
+  <data name="alert_tv_poll_failed" xml:space="preserve">
+    <value>The TV does not respond to CEC polls. This is caused by one of the following:
+a) the TV does not support CEC;
+b) CEC has been disabled in the TV's settings;
+c) the HDMI cable between the TV and adapter is faulty.
+
+CEC will not work (properly) if the TV does not support CEC, or has CEC disabled in it's settings.</value>
+  </data>
+  <data name="cec_alert" xml:space="preserve">
+    <value>Warning from libCEC</value>
+  </data>
 </root>
\ No newline at end of file
index 94fac2e4349e0bc4c76ecb83aab13f2ac6f8232e..ec0b0d6ba6a343757705cc3ff7b23035d2027383 100644 (file)
@@ -367,6 +367,32 @@ namespace LibCECTray.controller
       return 1;
     }
 
+    public override int ReceiveAlert(CecAlert alert, CecParameter data)
+    {
+      switch (alert)
+      {
+        case CecAlert.ServiceDevice:
+          MessageBox.Show(Resources.alert_service_device, Resources.cec_alert, MessageBoxButtons.OK, MessageBoxIcon.Warning);
+          break;
+        case CecAlert.ConnectionLost:
+          MessageBox.Show(Resources.alert_connection_lost, Resources.cec_alert, MessageBoxButtons.OK, MessageBoxIcon.Warning);
+          break;
+        case CecAlert.PermissionError:
+          MessageBox.Show(Resources.alert_permission_error, Resources.cec_alert, MessageBoxButtons.OK, MessageBoxIcon.Warning);
+          break;
+        case CecAlert.PortBusy:
+          MessageBox.Show(Resources.alert_port_busy, Resources.cec_alert, MessageBoxButtons.OK, MessageBoxIcon.Warning);
+          break;
+        case CecAlert.PhysicalAddressError:
+          MessageBox.Show(Resources.alert_physical_address_error, Resources.cec_alert, MessageBoxButtons.OK, MessageBoxIcon.Warning);
+          break;
+        case CecAlert.TVPollFailed:
+          MessageBox.Show(Resources.alert_tv_poll_failed, Resources.cec_alert, MessageBoxButtons.OK, MessageBoxIcon.Warning);
+          break;
+      }
+      return 1;
+    }
+
     public override int ConfigurationChanged(LibCECConfiguration config)
     {
       Settings.PhysicalAddress.Value = Config.PhysicalAddress;
@@ -444,7 +470,7 @@ namespace LibCECTray.controller
       {
         if (_config == null)
         {
-          _config = new LibCECConfiguration { DeviceName = "CEC Tray", ClientVersion = CecClientVersion.Version2_1_0 };
+          _config = new LibCECConfiguration { DeviceName = "CEC Tray", ClientVersion = CecClientVersion.CurrentVersion };
           _config.DeviceTypes.Types[0] = CecDeviceType.RecordingDevice;
           _config.SetCallbacks(this);
 
index f2ccfc054f722a9a74d463ed2000313d3bb180ac..6a832c5f9096c48b8ce71b1b9181dbfb3cf687a6 100644 (file)
@@ -108,6 +108,11 @@ namespace LibCECTray.controller.actions
       SendEvent(UpdateEventType.StatusText, Resources.action_polling_active_devices);
       SendEvent(UpdateEventType.PollDevices);
 
+      if (!_lib.IsActiveDevice(CecLogicalAddress.Tv))
+      {
+        MessageBox.Show(Resources.alert_tv_poll_failed, Resources.cec_alert, MessageBoxButtons.OK, MessageBoxIcon.Warning);
+      }
+
       SendEvent(UpdateEventType.ProgressBar, 100);
       SendEvent(UpdateEventType.StatusText, Resources.ready);
     }
index ae9a226f26cfba18f7bc84b94ee68404d08ff710..3c7b83f1a0657054993c9862d6168e77c6987248 100644 (file)
@@ -49,9 +49,9 @@ namespace LibCECTray.controller.applications
   /// </summary>
   class ApplicationController
   {
-    public ApplicationController(CECSettings settings, string uiName, string processName, string filename, string workingDirectory)
+    public ApplicationController(CECController controller, string uiName, string processName, string filename, string workingDirectory)
     {
-      Settings = settings;
+      Controller = controller;
       UiName = uiName;
       ProcessName = processName;
       ApplicationFilename = filename;
@@ -60,13 +60,13 @@ namespace LibCECTray.controller.applications
       IsInternal = false;
     }
 
-    public static ApplicationController FromString(CECSettings settings, string serialisedConfig)
+    public static ApplicationController FromString(CECController controller, CECSettings settings, string serialisedConfig)
     {
       var splitString = serialisedConfig.Split(';');
       if (splitString.Length != 4)
         throw new InvalidDataException("incorrect number of parameters");
 
-      return new ApplicationController(settings, splitString[0], splitString[1], splitString[2], splitString[3]);
+      return new ApplicationController(controller, splitString[0], splitString[1], splitString[2], splitString[3]);
     }
 
     public string AsString()
@@ -383,7 +383,10 @@ namespace LibCECTray.controller.applications
       get { return _buttonConfig ?? (_buttonConfig = new CecButtonConfig(this)); }
     }
 
-    public CECSettings Settings;
+    public CECSettings Settings
+    {
+      get { return Controller.Settings; }
+    }
     protected DataGridView CecButtonGridView;
 
     public virtual ApplicationAction DefaultValue(CecKeypress key)
@@ -407,6 +410,8 @@ namespace LibCECTray.controller.applications
 
     private bool _applicationRunning;
 
+    protected readonly CECController Controller;
+
     #endregion
   }
 }
index 2835f1c16baa11b54c0ca9f53a822519efda5ff1..1a11d1310fbf1b7c336d4cd71a9758f7389a62ce 100644 (file)
@@ -74,7 +74,7 @@ namespace LibCECTray.controller.applications
           {
             if (item.Length > 0)
             {
-              var app = ApplicationController.FromString(_controller.Settings, item);
+              var app = ApplicationController.FromString(_controller, _controller.Settings, item);
               if (app != null)
                 _controllers.Add(app.ProcessName, app);
             }
@@ -100,9 +100,9 @@ namespace LibCECTray.controller.applications
       get
       {
         var defaultValues = new Dictionary<string, ApplicationController>();
-        WMCController wmcController = new WMCController(_controller.Settings);
+        WMCController wmcController = new WMCController(_controller);
         defaultValues.Add(wmcController.ProcessName, wmcController);
-        XBMCController xbmcController = new XBMCController(_controller.Settings);
+        XBMCController xbmcController = new XBMCController(_controller);
         defaultValues.Add(xbmcController.ProcessName, xbmcController);
 
         return defaultValues;
@@ -122,7 +122,8 @@ namespace LibCECTray.controller.applications
     public static void Initialise(CECController controller)
     {
       _controller = controller;
-      _instance = new Applications();
+      if (_instance == null)
+        _instance = new Applications();
       controller.Settings["global_applications"] = _instance;
       controller.Settings.Load(_instance);
 
index 2e5897709dca21958797e3aa5491bd0163e371d8..ad0682057b0c7b38bbd9cc01f015d96514b5dc55 100644 (file)
@@ -132,7 +132,7 @@ namespace LibCECTray.controller.applications
       }
       else if (_cecController != null)
       {
-        ApplicationController newController = new ApplicationController(_settings, tbUiName.Text, tbProcessName.Text, tbFilename.Text, tbWorkingDir.Text);
+        ApplicationController newController = new ApplicationController(_cecController, tbUiName.Text, tbProcessName.Text, tbFilename.Text, tbWorkingDir.Text);
         if (_cecController.RegisterApplication(newController))
           newController.Settings.Persist();
       }
@@ -145,8 +145,8 @@ namespace LibCECTray.controller.applications
       Dispose();
     }
 
-    private ApplicationController _controller;
-    private CECController _cecController;
-    private CECSettings _settings;
+    private readonly ApplicationController _controller;
+    private readonly CECController _cecController;
+    private readonly CECSettings _settings;
   }
 }
index 17d7cc73297f814a22afef6b5c7073a68e7c494e..201fcda0705d993625835adbee4c217e819dfc12 100644 (file)
@@ -39,8 +39,8 @@ namespace LibCECTray.controller.applications.@internal
 {
   internal class WMCController : ApplicationController
   {
-    public WMCController(CECSettings settings) :
-      base(settings,
+    public WMCController(CECController controller) :
+      base(controller,
            Resources.application_windows_media_center,
            "ehshell",
            "ehshell.exe",
index 075178c3c47f69db8a692eb4f01154444dacedf0..6b961008986ed01cd26ae12f724eda227c62be1a 100644 (file)
@@ -44,8 +44,8 @@ namespace LibCECTray.controller.applications.@internal
 {
        internal class XBMCController : ApplicationController
        {
-    public XBMCController(CECSettings settings) :
-      base(settings,
+    public XBMCController(CECController controller) :
+      base(controller,
            Resources.application_xbmc,
            "XBMC",
            "XBMC.exe",
@@ -93,8 +93,13 @@ namespace LibCECTray.controller.applications.@internal
       if (File.Exists(filename))
       {
         XmlTextReader reader = new XmlTextReader(filename);
-        while (reader.Read())
+        while (true)
         {
+          try
+          {
+            if (!reader.Read())
+              break;
+          } catch (XmlException) {}
           gotConfig = true;
           switch (reader.NodeType)
           {
diff --git a/src/LibCecTray/ui/AsyncControls.cs b/src/LibCecTray/ui/AsyncControls.cs
new file mode 100644 (file)
index 0000000..755ba0c
--- /dev/null
@@ -0,0 +1,357 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Windows.Forms;
+using CecSharp;
+using LibCECTray.controller.applications;
+
+namespace LibCECTray.ui
+{
+    /// <summary>
+    /// Utility methods to change GUI content from another thread
+    /// </summary>
+    class AsyncControls
+    {
+        /// <summary>
+        /// Enable or disable a control
+        /// </summary>
+        /// <param name="container">The control that contains the control to change</param>
+        /// <param name="control">The control to change</param>
+        /// <param name="val">True to enable, false to disable</param>
+        public static void SetControlEnabled(Control container, Control control, bool val)
+        {
+            if (container == null || control == null) return;
+            if (container.InvokeRequired)
+            {
+                SetControlEnabledCallback d = SetControlEnabled;
+                try
+                {
+                    container.Invoke(d, new object[] { container, control, val });
+                }
+                catch { }
+            }
+            else
+            {
+                control.Enabled = val;
+            }
+        }
+        private delegate void SetControlEnabledCallback(Control container, Control control, bool val);
+
+        /// <summary>
+        /// Change the text label of a control
+        /// </summary>
+        /// <param name="container">The control that contains the control to change</param>
+        /// <param name="control">The control to change</param>
+        /// <param name="val">The new text</param>
+        public static void SetControlText(Control container, Control control, string val)
+        {
+            if (container == null || control == null) return;
+            if (container.InvokeRequired)
+            {
+                SetControlTextCallback d = SetControlText;
+                try
+                {
+                    container.Invoke(d, new object[] { container, control, val });
+                }
+                catch { }
+            }
+            else
+            {
+                control.Text = val;
+            }
+        }
+        private delegate void SetControlTextCallback(Control container, Control control, string val);
+
+        /// <summary>
+        /// Change the checked status of a checkbox
+        /// </summary>
+        /// <param name="container">The control that contains the control to change</param>
+        /// <param name="control">The control to change</param>
+        /// <param name="val">True to change to checked, false to change to unchecked</param>
+        public static void SetCheckboxChecked(Control container, CheckBox control, bool val)
+        {
+            if (container.InvokeRequired)
+            {
+                SetCheckboxCheckedCallback d = SetCheckboxChecked;
+                try
+                {
+                    container.Invoke(d, new object[] { container, control, val });
+                }
+                catch { }
+            }
+            else
+            {
+                control.Checked = val;
+            }
+        }
+        private delegate void SetCheckboxCheckedCallback(Control container, CheckBox control, bool val);
+
+        /// <summary>
+        /// Change the checked status of an item in a CheckedListBox
+        /// </summary>
+        /// <param name="container">The control that contains the control to change</param>
+        /// <param name="control">The control to change</param>
+        /// <param name="index">The index of the checkbox in the list to change</param>
+        /// <param name="val">True to change to checked, false to change to unchecked</param>
+        public static void SetCheckboxItemChecked(Control container, CheckedListBox control, int index, bool val)
+        {
+            if (container.InvokeRequired)
+            {
+                SetCheckboxItemCheckedCallback d = SetCheckboxItemChecked;
+                try
+                {
+                    container.Invoke(d, new object[] { container, control, index, val });
+                }
+                catch (Exception) { }
+            }
+            else
+            {
+                control.SetItemChecked(index, val);
+            }
+        }
+        private delegate void SetCheckboxItemCheckedCallback(Control container, CheckedListBox control, int index, bool val);
+
+        /// <summary>
+        /// Changes the toolstrip menu text
+        /// </summary>
+        /// <param name="container">The control that contains the control to change</param>
+        /// <param name="item">The toolstrip menu item to change</param>
+        /// <param name="val">The new value</param>
+        public static void SetToolStripMenuText(Control container, ToolStripMenuItem item, string val)
+        {
+            if (container.InvokeRequired)
+            {
+                SetToolStripMenuTextCallback d = SetToolStripMenuText;
+                try
+                {
+                    container.Invoke(d, new object[] { container, item, val });
+                }
+                catch (Exception) { }
+            }
+            else
+            {
+                item.Text = val;
+            }
+        }
+        private delegate void SetToolStripMenuTextCallback(Control container, ToolStripMenuItem item, string val);
+
+        /// <summary>
+        /// Changes the progress value of a progress bar
+        /// </summary>
+        /// <param name="container">The control that contains the control to change</param>
+        /// <param name="control">The control to change</param>
+        /// <param name="val">The new percentage</param>
+        public static void SetProgressValue(Control container, ProgressBar control, int val)
+        {
+            if (container.InvokeRequired)
+            {
+                SetProgressValueCallback d = SetProgressValue;
+                try
+                {
+                    container.Invoke(d, new object[] { container, control, val });
+                }
+                catch (Exception) { }
+            }
+            else
+            {
+                control.Value = val;
+            }
+        }
+        private delegate void SetProgressValueCallback(Control container, ProgressBar control, int val);
+
+        /// <summary>
+        /// Replaces the items of a combobox
+        /// </summary>
+        /// <param name="container">The control that contains the control to change</param>
+        /// <param name="control">The control to change</param>
+        /// <param name="selectedIndex">The new selection index</param>
+        /// <param name="val">The new content</param>
+        public static void SetComboBoxItems(Control container, ComboBox control, int selectedIndex, object[] val)
+        {
+            if (container.InvokeRequired)
+            {
+                SetComboBoxItemsCallback d = SetComboBoxItems;
+                try
+                {
+                    container.Invoke(d, new object[] { container, control, selectedIndex, val });
+                }
+                catch (Exception) { }
+            }
+            else
+            {
+                control.Items.Clear();
+                control.Items.AddRange(val);
+                if (control.Items.Count > 0)
+                    control.SelectedIndex = selectedIndex;
+            }
+        }
+        private delegate void SetComboBoxItemsCallback(Control container, ComboBox control, int selectedIndex, object[] val);
+
+        /// <summary>
+        /// Make a control visible or invisible
+        /// </summary>
+        /// <param name="container">The control that contains the control to change</param>
+        /// <param name="control">The control to change</param>
+        /// <param name="val">True to make it visible, false to make it invisible</param>
+        public static void SetControlVisible(Control container, Control control, bool val)
+        {
+            if (container.InvokeRequired)
+            {
+                SetControlVisibleCallback d = SetControlVisible;
+                try
+                {
+                    container.Invoke(d, new object[] { container, control, val });
+                }
+                catch (Exception) { }
+            }
+            else
+            {
+                control.Visible = val;
+            }
+        }
+        private delegate void SetControlVisibleCallback(Control container, Control control, bool val);
+
+        /// <summary>
+        /// Display a new dialog
+        /// </summary>
+        /// <param name="container">The control that contains the control to change</param>
+        /// <param name="control">The control to display</param>
+        /// <param name="modal">True to make it a modal dialog</param>
+        public static void DisplayDialog(Control container, Form control, bool modal)
+        {
+            if (container.InvokeRequired)
+            {
+                DisplayDialogCallback d = DisplayDialog;
+                try
+                {
+                    container.Invoke(d, new object[] { container, control, modal });
+                }
+                catch (Exception) { }
+            }
+            else
+            {
+                if (modal)
+                    control.ShowDialog(container);
+                else
+                    control.Show(container);
+            }
+        }
+        private delegate void DisplayDialogCallback(Control container, Form control, bool modal);
+
+        /// <summary>
+        /// Hides a control
+        /// </summary>
+        /// <param name="container">The control to hide</param>
+        /// <param name="val">True to hide, false to show</param>
+        public static void SafeHide(Control container, bool val)
+        {
+            if (container.InvokeRequired)
+            {
+                SafeHideCallback d = SafeHide;
+                try
+                {
+                    container.Invoke(d, new object[] { container, val });
+                }
+                catch (Exception) { }
+            }
+            else
+            {
+                if (val)
+                    container.Hide();
+                else
+                    container.Show();
+            }
+        }
+        private delegate void SafeHideCallback(Control container, bool val);
+
+        /// <summary>
+        /// Change the selected index
+        /// </summary>
+        /// <param name="container">The control that contains the control to change</param>
+        /// <param name="control">The control to change</param>
+        /// <param name="index">The new selected index</param>
+        public static void SetSelectedIndex(Control container, ComboBox control, int index)
+        {
+            if (container.InvokeRequired)
+            {
+                SetSelectedIndexCallback d = SetSelectedIndex;
+                try
+                {
+                    container.Invoke(d, new object[] { container, control, index });
+                }
+                catch (Exception) { }
+            }
+            else
+            {
+                control.SelectedIndex = index;
+            }
+        }
+        private delegate void SetSelectedIndexCallback(Control container, ComboBox control, int index);
+
+        /// <summary>
+        /// Get the name of the selected tab in a TabControl
+        /// </summary>
+        /// <param name="container">The tab container</param>
+        /// <param name="tabPages">The tab pages</param>
+        /// <returns>The name of the selected tab</returns>
+        public static string GetSelectedTabName(TabControl container, TabControl.TabPageCollection tabPages)
+        {
+            if (container.InvokeRequired)
+            {
+                GetSelectedTabNameCallback d = GetSelectedTabName;
+                try
+                {
+                    return container.Invoke(d, new object[] { container, tabPages }) as string;
+                }
+                catch (Exception) { }
+            }
+            else
+            {
+                return tabPages[container.SelectedIndex].Name;
+            }
+            return string.Empty;
+        }
+        private delegate string GetSelectedTabNameCallback(TabControl container, TabControl.TabPageCollection tabPages);
+
+        /// <summary>
+        /// Selects the row with the given CecKeypress for a datagrid
+        /// </summary>
+        /// <param name="container">The datagrid container</param>
+        /// <param name="dgView">The datagrid</param>
+        /// <param name="key">The key to selected</param>
+        public static void SelectKeypressRow(Control container, DataGridView dgView, CecKeypress key)
+        {
+            if (dgView.InvokeRequired)
+            {
+                SelectKeypressRowCallback d = SelectKeypressRow;
+                try
+                {
+                    container.Invoke(d, new object[] { container, dgView, key });
+                }
+                catch (Exception) { }
+            }
+            else
+            {
+                var rowIndex = -1;
+                foreach (DataGridViewRow row in dgView.Rows)
+                {
+                    CecButtonConfigItem item = row.DataBoundItem as CecButtonConfigItem;
+                    if (item != null && item.Key.Keycode == key.Keycode)
+                    {
+                        rowIndex = row.Index;
+                        row.Selected = true;
+                        item.Enabled = true;
+                    }
+                    else
+                    {
+                        row.Selected = false;
+                    }
+                }
+                if (rowIndex > -1)
+                    dgView.FirstDisplayedScrollingRowIndex = rowIndex;
+            }
+        }
+        private delegate void SelectKeypressRowCallback(Control container, DataGridView dgView, CecKeypress key);
+    }
+
+}
index 464547bad2a57b173f633b7f61598065cdf15504..bba4e35d8e49d996be8a39ef6347ff56e7788eb5 100644 (file)
@@ -37,370 +37,6 @@ using LibCECTray.controller.applications;
 
 namespace LibCECTray.ui
 {
-  interface IAsyncControls
-  {
-    void SetControlEnabled(Control control, bool val);
-    void SetControlText(Control control, string val);
-    void SetToolStripMenuText(ToolStripMenuItem item, string val);
-    void SetCheckboxChecked(CheckBox control, bool val);
-    void SetCheckboxItemChecked(CheckedListBox control, int index, bool val);
-    void SetProgressValue(ProgressBar control, int val);
-    void SetComboBoxItems(ComboBox control, int selectedIndex, object[] val);
-    void SetControlVisible(Control control, bool val);
-    void DisplayDialog(Form control, bool modal);
-    void SafeHide(bool val);
-    void SetSelectedIndex(ComboBox control, int index);
-    string GetSelectedTabName(TabControl container, TabControl.TabPageCollection tabPages);
-    void SelectKeypressRow(Control container, DataGridView dgView, CecKeypress key);
-  }
-
-  /// <summary>
-  /// Utility methods to change GUI content from another thread
-  /// </summary>
-  class AsyncControls
-  {
-    /// <summary>
-    /// Enable or disable a control
-    /// </summary>
-    /// <param name="container">The control that contains the control to change</param>
-    /// <param name="control">The control to change</param>
-    /// <param name="val">True to enable, false to disable</param>
-    public static void SetControlEnabled(Control container, Control control, bool val)
-    {
-      if (container == null || control == null) return;
-      if (container.InvokeRequired)
-      {
-        SetControlEnabledCallback d = SetControlEnabled;
-        try
-        {
-          container.Invoke(d, new object[] { container, control, val });
-        }
-        catch { }
-      }
-      else
-      {
-        control.Enabled = val;
-      }
-    }
-    private delegate void SetControlEnabledCallback(Control container, Control control, bool val);
-
-    /// <summary>
-    /// Change the text label of a control
-    /// </summary>
-    /// <param name="container">The control that contains the control to change</param>
-    /// <param name="control">The control to change</param>
-    /// <param name="val">The new text</param>
-    public static void SetControlText(Control container, Control control, string val)
-    {
-      if (container == null || control == null) return;
-      if (container.InvokeRequired)
-      {
-        SetControlTextCallback d = SetControlText;
-        try
-        {
-          container.Invoke(d, new object[] { container, control, val });
-        }
-        catch { }
-      }
-      else
-      {
-        control.Text = val;
-      }
-    }
-    private delegate void SetControlTextCallback(Control container, Control control, string val);
-
-    /// <summary>
-    /// Change the checked status of a checkbox
-    /// </summary>
-    /// <param name="container">The control that contains the control to change</param>
-    /// <param name="control">The control to change</param>
-    /// <param name="val">True to change to checked, false to change to unchecked</param>
-    public static void SetCheckboxChecked(Control container, CheckBox control, bool val)
-    {
-      if (container.InvokeRequired)
-      {
-        SetCheckboxCheckedCallback d = SetCheckboxChecked;
-        try
-        {
-          container.Invoke(d, new object[] { container, control, val });
-        }
-        catch { }
-      }
-      else
-      {
-        control.Checked = val;
-      }
-    }
-    private delegate void SetCheckboxCheckedCallback(Control container, CheckBox control, bool val);
-
-    /// <summary>
-    /// Change the checked status of an item in a CheckedListBox
-    /// </summary>
-    /// <param name="container">The control that contains the control to change</param>
-    /// <param name="control">The control to change</param>
-    /// <param name="index">The index of the checkbox in the list to change</param>
-    /// <param name="val">True to change to checked, false to change to unchecked</param>
-    public static void SetCheckboxItemChecked(Control container, CheckedListBox control, int index, bool val)
-    {
-      if (container.InvokeRequired)
-      {
-        SetCheckboxItemCheckedCallback d = SetCheckboxItemChecked;
-        try
-        {
-          container.Invoke(d, new object[] { container, control, index, val });
-        }
-        catch (Exception) { }
-      }
-      else
-      {
-        control.SetItemChecked(index, val);
-      }
-    }
-    private delegate void SetCheckboxItemCheckedCallback(Control container, CheckedListBox control, int index, bool val);
-
-    /// <summary>
-    /// Changes the toolstrip menu text
-    /// </summary>
-    /// <param name="container">The control that contains the control to change</param>
-    /// <param name="item">The toolstrip menu item to change</param>
-    /// <param name="val">The new value</param>
-    public static void SetToolStripMenuText(Control container, ToolStripMenuItem item, string val)
-    {
-      if (container.InvokeRequired)
-      {
-        SetToolStripMenuTextCallback d = SetToolStripMenuText;
-        try
-        {
-          container.Invoke(d, new object[] { container, item, val });
-        }
-        catch (Exception) { }
-      }
-      else
-      {
-        item.Text = val;
-      }
-    }
-    private delegate void SetToolStripMenuTextCallback(Control container, ToolStripMenuItem item, string val);
-
-    /// <summary>
-    /// Changes the progress value of a progress bar
-    /// </summary>
-    /// <param name="container">The control that contains the control to change</param>
-    /// <param name="control">The control to change</param>
-    /// <param name="val">The new percentage</param>
-    public static void SetProgressValue(Control container, ProgressBar control, int val)
-    {
-      if (container.InvokeRequired)
-      {
-        SetProgressValueCallback d = SetProgressValue;
-        try
-        {
-          container.Invoke(d, new object[] { container, control, val });
-        }
-        catch (Exception) { }
-      }
-      else
-      {
-        control.Value = val;
-      }
-    }
-    private delegate void SetProgressValueCallback(Control container, ProgressBar control, int val);
-
-    /// <summary>
-    /// Replaces the items of a combobox
-    /// </summary>
-    /// <param name="container">The control that contains the control to change</param>
-    /// <param name="control">The control to change</param>
-    /// <param name="selectedIndex">The new selection index</param>
-    /// <param name="val">The new content</param>
-    public static void SetComboBoxItems(Control container, ComboBox control, int selectedIndex, object[] val)
-    {
-      if (container.InvokeRequired)
-      {
-        SetComboBoxItemsCallback d = SetComboBoxItems;
-        try
-        {
-          container.Invoke(d, new object[] { container, control, selectedIndex, val });
-        }
-        catch (Exception) { }
-      }
-      else
-      {
-        control.Items.Clear();
-        control.Items.AddRange(val);
-        if (control.Items.Count > 0)
-          control.SelectedIndex = selectedIndex;
-      }
-    }
-    private delegate void SetComboBoxItemsCallback(Control container, ComboBox control, int selectedIndex, object[] val);
-
-    /// <summary>
-    /// Make a control visible or invisible
-    /// </summary>
-    /// <param name="container">The control that contains the control to change</param>
-    /// <param name="control">The control to change</param>
-    /// <param name="val">True to make it visible, false to make it invisible</param>
-    public static void SetControlVisible(Control container, Control control, bool val)
-    {
-      if (container.InvokeRequired)
-      {
-        SetControlVisibleCallback d = SetControlVisible;
-        try
-        {
-          container.Invoke(d, new object[] { container, control, val });
-        }
-        catch (Exception) { }
-      }
-      else
-      {
-        control.Visible = val;
-      }
-    }
-    private delegate void SetControlVisibleCallback(Control container, Control control, bool val);
-
-    /// <summary>
-    /// Display a new dialog
-    /// </summary>
-    /// <param name="container">The control that contains the control to change</param>
-    /// <param name="control">The control to display</param>
-    /// <param name="modal">True to make it a modal dialog</param>
-    public static void DisplayDialog(Control container, Form control, bool modal)
-    {
-      if (container.InvokeRequired)
-      {
-        DisplayDialogCallback d = DisplayDialog;
-        try
-        {
-          container.Invoke(d, new object[] { container, control, modal });
-        }
-        catch (Exception) { }
-      }
-      else
-      {
-        if (modal)
-          control.ShowDialog(container);
-        else
-          control.Show(container);
-      }
-    }
-    private delegate void DisplayDialogCallback(Control container, Form control, bool modal);
-
-    /// <summary>
-    /// Hides a control
-    /// </summary>
-    /// <param name="container">The control to hide</param>
-    /// <param name="val">True to hide, false to show</param>
-    public static void SafeHide(Control container, bool val)
-    {
-      if (container.InvokeRequired)
-      {
-        SafeHideCallback d = SafeHide;
-        try
-        {
-          container.Invoke(d, new object[] { container, val });
-        }
-        catch (Exception) { }
-      }
-      else
-      {
-        if (val)
-          container.Hide();
-        else
-          container.Show();
-      }
-    }
-    private delegate void SafeHideCallback(Control container, bool val);
-
-    /// <summary>
-    /// Change the selected index
-    /// </summary>
-    /// <param name="container">The control that contains the control to change</param>
-    /// <param name="control">The control to change</param>
-    /// <param name="index">The new selected index</param>
-    public static void SetSelectedIndex(Control container, ComboBox control, int index)
-    {
-      if (container.InvokeRequired)
-      {
-        SetSelectedIndexCallback d = SetSelectedIndex;
-        try
-        {
-          container.Invoke(d, new object[] { container, control, index });
-        }
-        catch (Exception) { }
-      }
-      else
-      {
-        control.SelectedIndex = index;
-      }
-    }
-    private delegate void SetSelectedIndexCallback(Control container, ComboBox control, int index);
-
-    /// <summary>
-    /// Get the name of the selected tab in a TabControl
-    /// </summary>
-    /// <param name="container">The tab container</param>
-    /// <param name="tabPages">The tab pages</param>
-    /// <returns>The name of the selected tab</returns>
-    public static string GetSelectedTabName(TabControl container, TabControl.TabPageCollection tabPages)
-    {
-      if (container.InvokeRequired)
-      {
-        GetSelectedTabNameCallback d = GetSelectedTabName;
-        try
-        {
-          return container.Invoke(d, new object[] { container, tabPages }) as string;
-        }
-        catch (Exception) { }
-      }
-      else
-      {
-        return tabPages[container.SelectedIndex].Name;
-      }
-      return string.Empty;
-    }
-    private delegate string GetSelectedTabNameCallback(TabControl container, TabControl.TabPageCollection tabPages);
-
-    /// <summary>
-    /// Selects the row with the given CecKeypress for a datagrid
-    /// </summary>
-    /// <param name="container">The datagrid container</param>
-    /// <param name="dgView">The datagrid</param>
-    /// <param name="key">The key to selected</param>
-    public static void SelectKeypressRow(Control container, DataGridView dgView, CecKeypress key)
-    {
-      if (dgView.InvokeRequired)
-      {
-        SelectKeypressRowCallback d = SelectKeypressRow;
-        try
-        {
-          container.Invoke(d, new object[] { container, dgView, key });
-        }
-        catch (Exception) { }
-      }
-      else
-      {
-        var rowIndex = -1;
-        foreach (DataGridViewRow row in dgView.Rows)
-        {
-          CecButtonConfigItem item = row.DataBoundItem as CecButtonConfigItem;
-          if (item != null && item.Key.Keycode == key.Keycode)
-          {
-            rowIndex = row.Index;
-            row.Selected = true;
-            item.Enabled = true;
-          }
-          else
-          {
-            row.Selected = false;
-          }
-        }
-        if (rowIndex > -1)
-          dgView.FirstDisplayedScrollingRowIndex = rowIndex;
-      }
-    }
-    private delegate void SelectKeypressRowCallback(Control container, DataGridView dgView, CecKeypress key);
-  }
-
   /// <summary>
   /// Form that implements IAsyncControls
   /// </summary>
index 34db4123f4213faec88e1e68c6d5429f3d43881e..85c690f258fc970f2d989cc52f28a4fe71279324 100644 (file)
     /// </summary>
     private void InitializeComponent()
     {
-      this.components = new System.ComponentModel.Container();
-      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CECTray));
-      this.pProgress = new System.Windows.Forms.ProgressBar();
-      this.lStatus = new System.Windows.Forms.Label();
-      this.helpPortNumber = new System.Windows.Forms.ToolTip(this.components);
-      this.cbPortNumber = new System.Windows.Forms.ComboBox();
-      this.helpConnectedHDMIDevice = new System.Windows.Forms.ToolTip(this.components);
-      this.cbConnectedDevice = new System.Windows.Forms.ComboBox();
-      this.helpPhysicalAddress = new System.Windows.Forms.ToolTip(this.components);
-      this.tbPhysicalAddress = new System.Windows.Forms.TextBox();
-      this.helpDeviceType = new System.Windows.Forms.ToolTip(this.components);
-      this.cbDeviceType = new System.Windows.Forms.ComboBox();
-      this.cbVendorId = new System.Windows.Forms.ComboBox();
-      this.trayIcon = new System.Windows.Forms.NotifyIcon(this.components);
-      this.trayIconMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
-      this.tsAdvanced = new System.Windows.Forms.ToolStripMenuItem();
-      this.tsMenuShowHide = new System.Windows.Forms.ToolStripMenuItem();
-      this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
-      this.tsMenuClose = new System.Windows.Forms.ToolStripMenuItem();
-      this.LogOutput = new System.Windows.Forms.TabPage();
-      this.bSaveLog = new System.Windows.Forms.Button();
-      this.bClearLog = new System.Windows.Forms.Button();
-      this.cbLogDebug = new System.Windows.Forms.CheckBox();
-      this.cbLogTraffic = new System.Windows.Forms.CheckBox();
-      this.cbLogNotice = new System.Windows.Forms.CheckBox();
-      this.cbLogWarning = new System.Windows.Forms.CheckBox();
-      this.cbLogError = new System.Windows.Forms.CheckBox();
-      this.tbLog = new System.Windows.Forms.TextBox();
-      this.tbTestCommands = new System.Windows.Forms.TabPage();
-      this.bRescanDevices = new System.Windows.Forms.Button();
-      this.bMute = new System.Windows.Forms.Button();
-      this.bVolDown = new System.Windows.Forms.Button();
-      this.bVolUp = new System.Windows.Forms.Button();
-      this.bActivateSource = new System.Windows.Forms.Button();
-      this.bScan = new System.Windows.Forms.Button();
-      this.bStandby = new System.Windows.Forms.Button();
-      this.bSendImageViewOn = new System.Windows.Forms.Button();
-      this.lDestination = new System.Windows.Forms.Label();
-      this.cbCommandDestination = new System.Windows.Forms.ComboBox();
-      this.Configuration = new System.Windows.Forms.TabPage();
-      this.cbOverrideAddress = new System.Windows.Forms.CheckBox();
-      this.bReloadConfig = new System.Windows.Forms.Button();
-      this.cbVendorOverride = new System.Windows.Forms.CheckBox();
-      this.lPowerOff = new System.Windows.Forms.Label();
-      this.cbPowerOffDevices = new System.Windows.Forms.CheckedListBox();
-      this.lWakeDevices = new System.Windows.Forms.Label();
-      this.cbWakeDevices = new System.Windows.Forms.CheckedListBox();
-      this.cbActivateSource = new System.Windows.Forms.CheckBox();
-      this.lPlayerConfig = new System.Windows.Forms.Label();
-      this.lAdapterConfig = new System.Windows.Forms.Label();
-      this.bClose = new System.Windows.Forms.Button();
-      this.bSaveConfig = new System.Windows.Forms.Button();
-      this.lDeviceType = new System.Windows.Forms.Label();
-      this.lConnectedDevice = new System.Windows.Forms.Label();
-      this.lPortNumber = new System.Windows.Forms.Label();
-      this.tabPanel = new System.Windows.Forms.TabControl();
-      this.menuStrip1 = new System.Windows.Forms.MenuStrip();
-      this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-      this.hideToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-      this.advancedModeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-      this.closeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-      this.applicationsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-      this.addNewApplicationToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-      this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-      this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-      this.cbStartMinimised = new System.Windows.Forms.CheckBox();
-      this.trayIconMenu.SuspendLayout();
-      this.LogOutput.SuspendLayout();
-      this.tbTestCommands.SuspendLayout();
-      this.Configuration.SuspendLayout();
-      this.tabPanel.SuspendLayout();
-      this.menuStrip1.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // pProgress
-      // 
-      this.pProgress.Location = new System.Drawing.Point(314, 407);
-      this.pProgress.Name = "pProgress";
-      this.pProgress.Size = new System.Drawing.Size(298, 23);
-      this.pProgress.TabIndex = 1;
-      // 
-      // lStatus
-      // 
-      this.lStatus.AutoSize = true;
-      this.lStatus.Location = new System.Drawing.Point(12, 416);
-      this.lStatus.Name = "lStatus";
-      this.lStatus.Size = new System.Drawing.Size(61, 13);
-      this.lStatus.TabIndex = 2;
-      this.lStatus.Text = "Initialising...";
-      // 
-      // cbPortNumber
-      // 
-      this.cbPortNumber.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Append;
-      this.cbPortNumber.Enabled = false;
-      this.cbPortNumber.FormattingEnabled = true;
-      this.cbPortNumber.Location = new System.Drawing.Point(174, 40);
-      this.cbPortNumber.Name = "cbPortNumber";
-      this.cbPortNumber.Size = new System.Drawing.Size(133, 21);
-      this.cbPortNumber.TabIndex = 11;
-      this.cbPortNumber.Text = "global_hdmi_port";
-      this.helpPortNumber.SetToolTip(this.cbPortNumber, "The HDMI port number, to which you connected your USB-CEC adapter.");
-      // 
-      // cbConnectedDevice
-      // 
-      this.cbConnectedDevice.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Append;
-      this.cbConnectedDevice.Enabled = false;
-      this.cbConnectedDevice.FormattingEnabled = true;
-      this.cbConnectedDevice.Location = new System.Drawing.Point(174, 67);
-      this.cbConnectedDevice.Name = "cbConnectedDevice";
-      this.cbConnectedDevice.Size = new System.Drawing.Size(133, 21);
-      this.cbConnectedDevice.TabIndex = 5;
-      this.cbConnectedDevice.Text = "global_connected_to_hdmi_device";
-      this.helpConnectedHDMIDevice.SetToolTip(this.cbConnectedDevice, "The HDMI device to which the USB-CEC adapter is connected");
-      // 
-      // tbPhysicalAddress
-      // 
-      this.tbPhysicalAddress.Enabled = false;
-      this.tbPhysicalAddress.Location = new System.Drawing.Point(174, 95);
-      this.tbPhysicalAddress.MaxLength = 4;
-      this.tbPhysicalAddress.Name = "tbPhysicalAddress";
-      this.tbPhysicalAddress.Size = new System.Drawing.Size(38, 20);
-      this.tbPhysicalAddress.TabIndex = 6;
-      this.tbPhysicalAddress.Text = "global_override_physical_address";
-      this.helpPhysicalAddress.SetToolTip(this.tbPhysicalAddress, "The physical address of the adapter. Leave this untouched if you want to autodete" +
-              "ct this value.");
-      // 
-      // cbDeviceType
-      // 
-      this.cbDeviceType.Enabled = false;
-      this.cbDeviceType.FormattingEnabled = true;
-      this.cbDeviceType.Location = new System.Drawing.Point(174, 123);
-      this.cbDeviceType.Name = "cbDeviceType";
-      this.cbDeviceType.Size = new System.Drawing.Size(133, 21);
-      this.cbDeviceType.TabIndex = 14;
-      this.cbDeviceType.Text = "global_device_type";
-      this.helpDeviceType.SetToolTip(this.cbDeviceType, "Set this to \'Player\' when your TV is having problems with \'Recorder\'");
-      // 
-      // cbVendorId
-      // 
-      this.cbVendorId.Enabled = false;
-      this.cbVendorId.FormattingEnabled = true;
-      this.cbVendorId.Location = new System.Drawing.Point(174, 153);
-      this.cbVendorId.Name = "cbVendorId";
-      this.cbVendorId.Size = new System.Drawing.Size(133, 21);
-      this.cbVendorId.TabIndex = 28;
-      this.cbVendorId.Text = "global_override_tv_vendor";
-      this.helpDeviceType.SetToolTip(this.cbVendorId, "Only set this value when autodetection isn\'t working");
-      // 
-      // trayIcon
-      // 
-      this.trayIcon.ContextMenuStrip = this.trayIconMenu;
-      this.trayIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("trayIcon.Icon")));
-      this.trayIcon.Text = "Pulse-Eight USB-CEC Adapter";
-      this.trayIcon.Visible = true;
-      this.trayIcon.Click += new System.EventHandler(this.TrayIconClick);
-      // 
-      // trayIconMenu
-      // 
-      this.trayIconMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.components = new System.ComponentModel.Container();
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CECTray));
+            this.pProgress = new System.Windows.Forms.ProgressBar();
+            this.lStatus = new System.Windows.Forms.Label();
+            this.helpPortNumber = new System.Windows.Forms.ToolTip(this.components);
+            this.cbPortNumber = new System.Windows.Forms.ComboBox();
+            this.helpConnectedHDMIDevice = new System.Windows.Forms.ToolTip(this.components);
+            this.cbConnectedDevice = new System.Windows.Forms.ComboBox();
+            this.helpPhysicalAddress = new System.Windows.Forms.ToolTip(this.components);
+            this.tbPhysicalAddress = new System.Windows.Forms.TextBox();
+            this.helpDeviceType = new System.Windows.Forms.ToolTip(this.components);
+            this.cbDeviceType = new System.Windows.Forms.ComboBox();
+            this.cbVendorId = new System.Windows.Forms.ComboBox();
+            this.trayIcon = new System.Windows.Forms.NotifyIcon(this.components);
+            this.trayIconMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
+            this.tsAdvanced = new System.Windows.Forms.ToolStripMenuItem();
+            this.tsMenuShowHide = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+            this.tsMenuClose = new System.Windows.Forms.ToolStripMenuItem();
+            this.LogOutput = new System.Windows.Forms.TabPage();
+            this.bSaveLog = new System.Windows.Forms.Button();
+            this.bClearLog = new System.Windows.Forms.Button();
+            this.cbLogDebug = new System.Windows.Forms.CheckBox();
+            this.cbLogTraffic = new System.Windows.Forms.CheckBox();
+            this.cbLogNotice = new System.Windows.Forms.CheckBox();
+            this.cbLogWarning = new System.Windows.Forms.CheckBox();
+            this.cbLogError = new System.Windows.Forms.CheckBox();
+            this.tbLog = new System.Windows.Forms.TextBox();
+            this.tbTestCommands = new System.Windows.Forms.TabPage();
+            this.bRescanDevices = new System.Windows.Forms.Button();
+            this.bMute = new System.Windows.Forms.Button();
+            this.bVolDown = new System.Windows.Forms.Button();
+            this.bVolUp = new System.Windows.Forms.Button();
+            this.bActivateSource = new System.Windows.Forms.Button();
+            this.bScan = new System.Windows.Forms.Button();
+            this.bStandby = new System.Windows.Forms.Button();
+            this.bSendImageViewOn = new System.Windows.Forms.Button();
+            this.lDestination = new System.Windows.Forms.Label();
+            this.cbCommandDestination = new System.Windows.Forms.ComboBox();
+            this.Configuration = new System.Windows.Forms.TabPage();
+            this.cbStartMinimised = new System.Windows.Forms.CheckBox();
+            this.cbOverrideAddress = new System.Windows.Forms.CheckBox();
+            this.bReloadConfig = new System.Windows.Forms.Button();
+            this.cbVendorOverride = new System.Windows.Forms.CheckBox();
+            this.lPowerOff = new System.Windows.Forms.Label();
+            this.cbPowerOffDevices = new System.Windows.Forms.CheckedListBox();
+            this.lWakeDevices = new System.Windows.Forms.Label();
+            this.cbWakeDevices = new System.Windows.Forms.CheckedListBox();
+            this.cbActivateSource = new System.Windows.Forms.CheckBox();
+            this.lPlayerConfig = new System.Windows.Forms.Label();
+            this.lAdapterConfig = new System.Windows.Forms.Label();
+            this.bClose = new System.Windows.Forms.Button();
+            this.bSaveConfig = new System.Windows.Forms.Button();
+            this.lDeviceType = new System.Windows.Forms.Label();
+            this.lConnectedDevice = new System.Windows.Forms.Label();
+            this.lPortNumber = new System.Windows.Forms.Label();
+            this.tabPanel = new System.Windows.Forms.TabControl();
+            this.menuStrip1 = new System.Windows.Forms.MenuStrip();
+            this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.hideToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.advancedModeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.closeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.applicationsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.addNewApplicationToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.trayIconMenu.SuspendLayout();
+            this.LogOutput.SuspendLayout();
+            this.tbTestCommands.SuspendLayout();
+            this.Configuration.SuspendLayout();
+            this.tabPanel.SuspendLayout();
+            this.menuStrip1.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // pProgress
+            // 
+            this.pProgress.Location = new System.Drawing.Point(314, 407);
+            this.pProgress.Name = "pProgress";
+            this.pProgress.Size = new System.Drawing.Size(298, 23);
+            this.pProgress.TabIndex = 1;
+            // 
+            // lStatus
+            // 
+            this.lStatus.AutoSize = true;
+            this.lStatus.Location = new System.Drawing.Point(12, 416);
+            this.lStatus.Name = "lStatus";
+            this.lStatus.Size = new System.Drawing.Size(61, 13);
+            this.lStatus.TabIndex = 2;
+            this.lStatus.Text = "Initialising...";
+            // 
+            // cbPortNumber
+            // 
+            this.cbPortNumber.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Append;
+            this.cbPortNumber.Enabled = false;
+            this.cbPortNumber.FormattingEnabled = true;
+            this.cbPortNumber.Location = new System.Drawing.Point(174, 40);
+            this.cbPortNumber.Name = "cbPortNumber";
+            this.cbPortNumber.Size = new System.Drawing.Size(133, 21);
+            this.cbPortNumber.TabIndex = 11;
+            this.cbPortNumber.Text = "global_hdmi_port";
+            this.helpPortNumber.SetToolTip(this.cbPortNumber, "The HDMI port number, to which you connected your USB-CEC adapter.");
+            // 
+            // cbConnectedDevice
+            // 
+            this.cbConnectedDevice.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Append;
+            this.cbConnectedDevice.Enabled = false;
+            this.cbConnectedDevice.FormattingEnabled = true;
+            this.cbConnectedDevice.Location = new System.Drawing.Point(174, 67);
+            this.cbConnectedDevice.Name = "cbConnectedDevice";
+            this.cbConnectedDevice.Size = new System.Drawing.Size(133, 21);
+            this.cbConnectedDevice.TabIndex = 5;
+            this.cbConnectedDevice.Text = "global_connected_to_hdmi_device";
+            this.helpConnectedHDMIDevice.SetToolTip(this.cbConnectedDevice, "The HDMI device to which the USB-CEC adapter is connected");
+            // 
+            // tbPhysicalAddress
+            // 
+            this.tbPhysicalAddress.Enabled = false;
+            this.tbPhysicalAddress.Location = new System.Drawing.Point(174, 95);
+            this.tbPhysicalAddress.MaxLength = 4;
+            this.tbPhysicalAddress.Name = "tbPhysicalAddress";
+            this.tbPhysicalAddress.Size = new System.Drawing.Size(38, 20);
+            this.tbPhysicalAddress.TabIndex = 6;
+            this.tbPhysicalAddress.Text = "global_override_physical_address";
+            this.helpPhysicalAddress.SetToolTip(this.tbPhysicalAddress, "The physical address of the adapter. Leave this untouched if you want to autodete" +
+        "ct this value.");
+            // 
+            // cbDeviceType
+            // 
+            this.cbDeviceType.Enabled = false;
+            this.cbDeviceType.FormattingEnabled = true;
+            this.cbDeviceType.Location = new System.Drawing.Point(174, 123);
+            this.cbDeviceType.Name = "cbDeviceType";
+            this.cbDeviceType.Size = new System.Drawing.Size(133, 21);
+            this.cbDeviceType.TabIndex = 14;
+            this.cbDeviceType.Text = "global_device_type";
+            this.helpDeviceType.SetToolTip(this.cbDeviceType, "Set this to \'Player\' when your TV is having problems with \'Recorder\'");
+            // 
+            // cbVendorId
+            // 
+            this.cbVendorId.Enabled = false;
+            this.cbVendorId.FormattingEnabled = true;
+            this.cbVendorId.Location = new System.Drawing.Point(174, 153);
+            this.cbVendorId.Name = "cbVendorId";
+            this.cbVendorId.Size = new System.Drawing.Size(133, 21);
+            this.cbVendorId.TabIndex = 28;
+            this.cbVendorId.Text = "global_override_tv_vendor";
+            this.helpDeviceType.SetToolTip(this.cbVendorId, "Only set this value when autodetection isn\'t working");
+            // 
+            // trayIcon
+            // 
+            this.trayIcon.ContextMenuStrip = this.trayIconMenu;
+            this.trayIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("trayIcon.Icon")));
+            this.trayIcon.Text = "Pulse-Eight USB-CEC Adapter";
+            this.trayIcon.Visible = true;
+            this.trayIcon.Click += new System.EventHandler(this.TrayIconClick);
+            // 
+            // trayIconMenu
+            // 
+            this.trayIconMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
             this.tsAdvanced,
             this.tsMenuShowHide,
             this.toolStripSeparator1,
             this.tsMenuClose});
-      this.trayIconMenu.Name = "trayIconMenu";
-      this.trayIconMenu.Size = new System.Drawing.Size(162, 76);
-      // 
-      // tsAdvanced
-      // 
-      this.tsAdvanced.Name = "tsAdvanced";
-      this.tsAdvanced.Size = new System.Drawing.Size(161, 22);
-      this.tsAdvanced.Text = "Advanced mode";
-      this.tsAdvanced.Click += new System.EventHandler(this.TsAdvancedClick);
-      // 
-      // tsMenuShowHide
-      // 
-      this.tsMenuShowHide.Name = "tsMenuShowHide";
-      this.tsMenuShowHide.Size = new System.Drawing.Size(161, 22);
-      this.tsMenuShowHide.Text = "Hide";
-      this.tsMenuShowHide.Click += new System.EventHandler(this.TsMenuShowHideClick);
-      // 
-      // toolStripSeparator1
-      // 
-      this.toolStripSeparator1.Name = "toolStripSeparator1";
-      this.toolStripSeparator1.Size = new System.Drawing.Size(158, 6);
-      // 
-      // tsMenuClose
-      // 
-      this.tsMenuClose.Name = "tsMenuClose";
-      this.tsMenuClose.Size = new System.Drawing.Size(161, 22);
-      this.tsMenuClose.Text = "Exit";
-      this.tsMenuClose.Click += new System.EventHandler(this.TsMenuCloseClick);
-      // 
-      // LogOutput
-      // 
-      this.LogOutput.Controls.Add(this.bSaveLog);
-      this.LogOutput.Controls.Add(this.bClearLog);
-      this.LogOutput.Controls.Add(this.cbLogDebug);
-      this.LogOutput.Controls.Add(this.cbLogTraffic);
-      this.LogOutput.Controls.Add(this.cbLogNotice);
-      this.LogOutput.Controls.Add(this.cbLogWarning);
-      this.LogOutput.Controls.Add(this.cbLogError);
-      this.LogOutput.Controls.Add(this.tbLog);
-      this.LogOutput.Location = new System.Drawing.Point(4, 22);
-      this.LogOutput.Name = "LogOutput";
-      this.LogOutput.Padding = new System.Windows.Forms.Padding(3);
-      this.LogOutput.Size = new System.Drawing.Size(592, 344);
-      this.LogOutput.TabIndex = 1;
-      this.LogOutput.Text = "Log Output";
-      this.LogOutput.UseVisualStyleBackColor = true;
-      // 
-      // bSaveLog
-      // 
-      this.bSaveLog.Location = new System.Drawing.Point(429, 318);
-      this.bSaveLog.Name = "bSaveLog";
-      this.bSaveLog.Size = new System.Drawing.Size(75, 23);
-      this.bSaveLog.TabIndex = 7;
-      this.bSaveLog.Text = "Persist";
-      this.bSaveLog.UseVisualStyleBackColor = true;
-      this.bSaveLog.Click += new System.EventHandler(this.BSaveLogClick);
-      // 
-      // bClearLog
-      // 
-      this.bClearLog.Location = new System.Drawing.Point(510, 318);
-      this.bClearLog.Name = "bClearLog";
-      this.bClearLog.Size = new System.Drawing.Size(75, 23);
-      this.bClearLog.TabIndex = 6;
-      this.bClearLog.Text = "Clear";
-      this.bClearLog.UseVisualStyleBackColor = true;
-      this.bClearLog.Click += new System.EventHandler(this.BClearLogClick);
-      // 
-      // cbLogDebug
-      // 
-      this.cbLogDebug.AutoSize = true;
-      this.cbLogDebug.Checked = true;
-      this.cbLogDebug.CheckState = System.Windows.Forms.CheckState.Checked;
-      this.cbLogDebug.Location = new System.Drawing.Point(268, 324);
-      this.cbLogDebug.Name = "cbLogDebug";
-      this.cbLogDebug.Size = new System.Drawing.Size(58, 17);
-      this.cbLogDebug.TabIndex = 5;
-      this.cbLogDebug.Text = "Debug";
-      this.cbLogDebug.UseVisualStyleBackColor = true;
-      // 
-      // cbLogTraffic
-      // 
-      this.cbLogTraffic.AutoSize = true;
-      this.cbLogTraffic.Checked = true;
-      this.cbLogTraffic.CheckState = System.Windows.Forms.CheckState.Checked;
-      this.cbLogTraffic.Location = new System.Drawing.Point(206, 324);
-      this.cbLogTraffic.Name = "cbLogTraffic";
-      this.cbLogTraffic.Size = new System.Drawing.Size(56, 17);
-      this.cbLogTraffic.TabIndex = 4;
-      this.cbLogTraffic.Text = "Traffic";
-      this.cbLogTraffic.UseVisualStyleBackColor = true;
-      // 
-      // cbLogNotice
-      // 
-      this.cbLogNotice.AutoSize = true;
-      this.cbLogNotice.Checked = true;
-      this.cbLogNotice.CheckState = System.Windows.Forms.CheckState.Checked;
-      this.cbLogNotice.Location = new System.Drawing.Point(137, 324);
-      this.cbLogNotice.Name = "cbLogNotice";
-      this.cbLogNotice.Size = new System.Drawing.Size(62, 17);
-      this.cbLogNotice.TabIndex = 3;
-      this.cbLogNotice.Text = "Notices";
-      this.cbLogNotice.UseVisualStyleBackColor = true;
-      // 
-      // cbLogWarning
-      // 
-      this.cbLogWarning.AutoSize = true;
-      this.cbLogWarning.Checked = true;
-      this.cbLogWarning.CheckState = System.Windows.Forms.CheckState.Checked;
-      this.cbLogWarning.Location = new System.Drawing.Point(65, 324);
-      this.cbLogWarning.Name = "cbLogWarning";
-      this.cbLogWarning.Size = new System.Drawing.Size(66, 17);
-      this.cbLogWarning.TabIndex = 2;
-      this.cbLogWarning.Text = "Warning";
-      this.cbLogWarning.UseVisualStyleBackColor = true;
-      // 
-      // cbLogError
-      // 
-      this.cbLogError.AutoSize = true;
-      this.cbLogError.Checked = true;
-      this.cbLogError.CheckState = System.Windows.Forms.CheckState.Checked;
-      this.cbLogError.Location = new System.Drawing.Point(6, 324);
-      this.cbLogError.Name = "cbLogError";
-      this.cbLogError.Size = new System.Drawing.Size(53, 17);
-      this.cbLogError.TabIndex = 1;
-      this.cbLogError.Text = "Errors";
-      this.cbLogError.UseVisualStyleBackColor = true;
-      // 
-      // tbLog
-      // 
-      this.tbLog.Location = new System.Drawing.Point(6, 0);
-      this.tbLog.Multiline = true;
-      this.tbLog.Name = "tbLog";
-      this.tbLog.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
-      this.tbLog.Size = new System.Drawing.Size(580, 312);
-      this.tbLog.TabIndex = 0;
-      // 
-      // tbTestCommands
-      // 
-      this.tbTestCommands.Controls.Add(this.bRescanDevices);
-      this.tbTestCommands.Controls.Add(this.bMute);
-      this.tbTestCommands.Controls.Add(this.bVolDown);
-      this.tbTestCommands.Controls.Add(this.bVolUp);
-      this.tbTestCommands.Controls.Add(this.bActivateSource);
-      this.tbTestCommands.Controls.Add(this.bScan);
-      this.tbTestCommands.Controls.Add(this.bStandby);
-      this.tbTestCommands.Controls.Add(this.bSendImageViewOn);
-      this.tbTestCommands.Controls.Add(this.lDestination);
-      this.tbTestCommands.Controls.Add(this.cbCommandDestination);
-      this.tbTestCommands.Location = new System.Drawing.Point(4, 22);
-      this.tbTestCommands.Name = "tbTestCommands";
-      this.tbTestCommands.Padding = new System.Windows.Forms.Padding(3);
-      this.tbTestCommands.Size = new System.Drawing.Size(592, 344);
-      this.tbTestCommands.TabIndex = 3;
-      this.tbTestCommands.Text = "CEC tester";
-      this.tbTestCommands.UseVisualStyleBackColor = true;
-      // 
-      // bRescanDevices
-      // 
-      this.bRescanDevices.Enabled = false;
-      this.bRescanDevices.Location = new System.Drawing.Point(424, 65);
-      this.bRescanDevices.Name = "bRescanDevices";
-      this.bRescanDevices.Size = new System.Drawing.Size(150, 23);
-      this.bRescanDevices.TabIndex = 9;
-      this.bRescanDevices.Text = "Re-scan devices";
-      this.bRescanDevices.UseVisualStyleBackColor = true;
-      this.bRescanDevices.Click += new System.EventHandler(this.BRescanDevicesClick);
-      // 
-      // bMute
-      // 
-      this.bMute.Enabled = false;
-      this.bMute.Location = new System.Drawing.Point(164, 65);
-      this.bMute.Name = "bMute";
-      this.bMute.Size = new System.Drawing.Size(150, 23);
-      this.bMute.TabIndex = 8;
-      this.bMute.Text = "Mute";
-      this.bMute.UseVisualStyleBackColor = true;
-      this.bMute.Click += new System.EventHandler(this.BMuteClick);
-      // 
-      // bVolDown
-      // 
-      this.bVolDown.Enabled = false;
-      this.bVolDown.Location = new System.Drawing.Point(164, 36);
-      this.bVolDown.Name = "bVolDown";
-      this.bVolDown.Size = new System.Drawing.Size(150, 23);
-      this.bVolDown.TabIndex = 7;
-      this.bVolDown.Text = "Volume down";
-      this.bVolDown.UseVisualStyleBackColor = true;
-      this.bVolDown.Click += new System.EventHandler(this.BVolDownClick);
-      // 
-      // bVolUp
-      // 
-      this.bVolUp.Enabled = false;
-      this.bVolUp.Location = new System.Drawing.Point(164, 7);
-      this.bVolUp.Name = "bVolUp";
-      this.bVolUp.Size = new System.Drawing.Size(150, 23);
-      this.bVolUp.TabIndex = 6;
-      this.bVolUp.Text = "Volume up";
-      this.bVolUp.UseVisualStyleBackColor = true;
-      this.bVolUp.Click += new System.EventHandler(this.BVolUpClick);
-      // 
-      // bActivateSource
-      // 
-      this.bActivateSource.Enabled = false;
-      this.bActivateSource.Location = new System.Drawing.Point(8, 65);
-      this.bActivateSource.Name = "bActivateSource";
-      this.bActivateSource.Size = new System.Drawing.Size(150, 23);
-      this.bActivateSource.TabIndex = 5;
-      this.bActivateSource.Text = "Make device active";
-      this.bActivateSource.UseVisualStyleBackColor = true;
-      this.bActivateSource.Click += new System.EventHandler(this.BActivateSourceClick);
-      // 
-      // bScan
-      // 
-      this.bScan.Enabled = false;
-      this.bScan.Location = new System.Drawing.Point(8, 94);
-      this.bScan.Name = "bScan";
-      this.bScan.Size = new System.Drawing.Size(150, 23);
-      this.bScan.TabIndex = 4;
-      this.bScan.Text = "Device information";
-      this.bScan.UseVisualStyleBackColor = true;
-      this.bScan.Click += new System.EventHandler(this.BScanClick);
-      // 
-      // bStandby
-      // 
-      this.bStandby.Enabled = false;
-      this.bStandby.Location = new System.Drawing.Point(8, 36);
-      this.bStandby.Name = "bStandby";
-      this.bStandby.Size = new System.Drawing.Size(150, 23);
-      this.bStandby.TabIndex = 3;
-      this.bStandby.Text = "Put device in standby";
-      this.bStandby.UseVisualStyleBackColor = true;
-      this.bStandby.Click += new System.EventHandler(this.BStandbyClick);
-      // 
-      // bSendImageViewOn
-      // 
-      this.bSendImageViewOn.Enabled = false;
-      this.bSendImageViewOn.Location = new System.Drawing.Point(8, 7);
-      this.bSendImageViewOn.Name = "bSendImageViewOn";
-      this.bSendImageViewOn.Size = new System.Drawing.Size(150, 23);
-      this.bSendImageViewOn.TabIndex = 2;
-      this.bSendImageViewOn.Text = "Power on device";
-      this.bSendImageViewOn.UseVisualStyleBackColor = true;
-      this.bSendImageViewOn.Click += new System.EventHandler(this.BSendImageViewOnClick);
-      // 
-      // lDestination
-      // 
-      this.lDestination.AutoSize = true;
-      this.lDestination.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-      this.lDestination.Location = new System.Drawing.Point(420, 3);
-      this.lDestination.Name = "lDestination";
-      this.lDestination.Size = new System.Drawing.Size(138, 24);
-      this.lDestination.TabIndex = 1;
-      this.lDestination.Text = "Target device";
-      // 
-      // cbCommandDestination
-      // 
-      this.cbCommandDestination.FormattingEnabled = true;
-      this.cbCommandDestination.Items.AddRange(new object[] {
+            this.trayIconMenu.Name = "trayIconMenu";
+            this.trayIconMenu.Size = new System.Drawing.Size(152, 76);
+            // 
+            // tsAdvanced
+            // 
+            this.tsAdvanced.Name = "tsAdvanced";
+            this.tsAdvanced.Size = new System.Drawing.Size(151, 22);
+            this.tsAdvanced.Text = "Advanced mode";
+            this.tsAdvanced.Click += new System.EventHandler(this.TsAdvancedClick);
+            // 
+            // tsMenuShowHide
+            // 
+            this.tsMenuShowHide.Name = "tsMenuShowHide";
+            this.tsMenuShowHide.Size = new System.Drawing.Size(151, 22);
+            this.tsMenuShowHide.Text = "Hide";
+            this.tsMenuShowHide.Click += new System.EventHandler(this.TsMenuShowHideClick);
+            // 
+            // toolStripSeparator1
+            // 
+            this.toolStripSeparator1.Name = "toolStripSeparator1";
+            this.toolStripSeparator1.Size = new System.Drawing.Size(148, 6);
+            // 
+            // tsMenuClose
+            // 
+            this.tsMenuClose.Name = "tsMenuClose";
+            this.tsMenuClose.Size = new System.Drawing.Size(151, 22);
+            this.tsMenuClose.Text = "Exit";
+            this.tsMenuClose.Click += new System.EventHandler(this.TsMenuCloseClick);
+            // 
+            // LogOutput
+            // 
+            this.LogOutput.Controls.Add(this.bSaveLog);
+            this.LogOutput.Controls.Add(this.bClearLog);
+            this.LogOutput.Controls.Add(this.cbLogDebug);
+            this.LogOutput.Controls.Add(this.cbLogTraffic);
+            this.LogOutput.Controls.Add(this.cbLogNotice);
+            this.LogOutput.Controls.Add(this.cbLogWarning);
+            this.LogOutput.Controls.Add(this.cbLogError);
+            this.LogOutput.Controls.Add(this.tbLog);
+            this.LogOutput.Location = new System.Drawing.Point(4, 22);
+            this.LogOutput.Name = "LogOutput";
+            this.LogOutput.Padding = new System.Windows.Forms.Padding(3);
+            this.LogOutput.Size = new System.Drawing.Size(592, 344);
+            this.LogOutput.TabIndex = 1;
+            this.LogOutput.Text = "Log Output";
+            this.LogOutput.UseVisualStyleBackColor = true;
+            // 
+            // bSaveLog
+            // 
+            this.bSaveLog.Location = new System.Drawing.Point(429, 318);
+            this.bSaveLog.Name = "bSaveLog";
+            this.bSaveLog.Size = new System.Drawing.Size(75, 23);
+            this.bSaveLog.TabIndex = 7;
+            this.bSaveLog.Text = "Save";
+            this.bSaveLog.UseVisualStyleBackColor = true;
+            this.bSaveLog.Click += new System.EventHandler(this.BSaveLogClick);
+            // 
+            // bClearLog
+            // 
+            this.bClearLog.Location = new System.Drawing.Point(510, 318);
+            this.bClearLog.Name = "bClearLog";
+            this.bClearLog.Size = new System.Drawing.Size(75, 23);
+            this.bClearLog.TabIndex = 6;
+            this.bClearLog.Text = "Clear";
+            this.bClearLog.UseVisualStyleBackColor = true;
+            this.bClearLog.Click += new System.EventHandler(this.BClearLogClick);
+            // 
+            // cbLogDebug
+            // 
+            this.cbLogDebug.AutoSize = true;
+            this.cbLogDebug.Checked = true;
+            this.cbLogDebug.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.cbLogDebug.Location = new System.Drawing.Point(268, 324);
+            this.cbLogDebug.Name = "cbLogDebug";
+            this.cbLogDebug.Size = new System.Drawing.Size(58, 17);
+            this.cbLogDebug.TabIndex = 5;
+            this.cbLogDebug.Text = "Debug";
+            this.cbLogDebug.UseVisualStyleBackColor = true;
+            // 
+            // cbLogTraffic
+            // 
+            this.cbLogTraffic.AutoSize = true;
+            this.cbLogTraffic.Checked = true;
+            this.cbLogTraffic.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.cbLogTraffic.Location = new System.Drawing.Point(206, 324);
+            this.cbLogTraffic.Name = "cbLogTraffic";
+            this.cbLogTraffic.Size = new System.Drawing.Size(56, 17);
+            this.cbLogTraffic.TabIndex = 4;
+            this.cbLogTraffic.Text = "Traffic";
+            this.cbLogTraffic.UseVisualStyleBackColor = true;
+            // 
+            // cbLogNotice
+            // 
+            this.cbLogNotice.AutoSize = true;
+            this.cbLogNotice.Checked = true;
+            this.cbLogNotice.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.cbLogNotice.Location = new System.Drawing.Point(137, 324);
+            this.cbLogNotice.Name = "cbLogNotice";
+            this.cbLogNotice.Size = new System.Drawing.Size(62, 17);
+            this.cbLogNotice.TabIndex = 3;
+            this.cbLogNotice.Text = "Notices";
+            this.cbLogNotice.UseVisualStyleBackColor = true;
+            // 
+            // cbLogWarning
+            // 
+            this.cbLogWarning.AutoSize = true;
+            this.cbLogWarning.Checked = true;
+            this.cbLogWarning.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.cbLogWarning.Location = new System.Drawing.Point(65, 324);
+            this.cbLogWarning.Name = "cbLogWarning";
+            this.cbLogWarning.Size = new System.Drawing.Size(66, 17);
+            this.cbLogWarning.TabIndex = 2;
+            this.cbLogWarning.Text = "Warning";
+            this.cbLogWarning.UseVisualStyleBackColor = true;
+            // 
+            // cbLogError
+            // 
+            this.cbLogError.AutoSize = true;
+            this.cbLogError.Checked = true;
+            this.cbLogError.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.cbLogError.Location = new System.Drawing.Point(6, 324);
+            this.cbLogError.Name = "cbLogError";
+            this.cbLogError.Size = new System.Drawing.Size(53, 17);
+            this.cbLogError.TabIndex = 1;
+            this.cbLogError.Text = "Errors";
+            this.cbLogError.UseVisualStyleBackColor = true;
+            // 
+            // tbLog
+            // 
+            this.tbLog.Location = new System.Drawing.Point(6, 0);
+            this.tbLog.Multiline = true;
+            this.tbLog.Name = "tbLog";
+            this.tbLog.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+            this.tbLog.Size = new System.Drawing.Size(580, 312);
+            this.tbLog.TabIndex = 0;
+            // 
+            // tbTestCommands
+            // 
+            this.tbTestCommands.Controls.Add(this.bRescanDevices);
+            this.tbTestCommands.Controls.Add(this.bMute);
+            this.tbTestCommands.Controls.Add(this.bVolDown);
+            this.tbTestCommands.Controls.Add(this.bVolUp);
+            this.tbTestCommands.Controls.Add(this.bActivateSource);
+            this.tbTestCommands.Controls.Add(this.bScan);
+            this.tbTestCommands.Controls.Add(this.bStandby);
+            this.tbTestCommands.Controls.Add(this.bSendImageViewOn);
+            this.tbTestCommands.Controls.Add(this.lDestination);
+            this.tbTestCommands.Controls.Add(this.cbCommandDestination);
+            this.tbTestCommands.Location = new System.Drawing.Point(4, 22);
+            this.tbTestCommands.Name = "tbTestCommands";
+            this.tbTestCommands.Padding = new System.Windows.Forms.Padding(3);
+            this.tbTestCommands.Size = new System.Drawing.Size(592, 344);
+            this.tbTestCommands.TabIndex = 3;
+            this.tbTestCommands.Text = "CEC tester";
+            this.tbTestCommands.UseVisualStyleBackColor = true;
+            // 
+            // bRescanDevices
+            // 
+            this.bRescanDevices.Enabled = false;
+            this.bRescanDevices.Location = new System.Drawing.Point(424, 65);
+            this.bRescanDevices.Name = "bRescanDevices";
+            this.bRescanDevices.Size = new System.Drawing.Size(150, 23);
+            this.bRescanDevices.TabIndex = 9;
+            this.bRescanDevices.Text = "Re-scan devices";
+            this.bRescanDevices.UseVisualStyleBackColor = true;
+            this.bRescanDevices.Click += new System.EventHandler(this.BRescanDevicesClick);
+            // 
+            // bMute
+            // 
+            this.bMute.Enabled = false;
+            this.bMute.Location = new System.Drawing.Point(164, 65);
+            this.bMute.Name = "bMute";
+            this.bMute.Size = new System.Drawing.Size(150, 23);
+            this.bMute.TabIndex = 8;
+            this.bMute.Text = "Mute";
+            this.bMute.UseVisualStyleBackColor = true;
+            this.bMute.Click += new System.EventHandler(this.BMuteClick);
+            // 
+            // bVolDown
+            // 
+            this.bVolDown.Enabled = false;
+            this.bVolDown.Location = new System.Drawing.Point(164, 36);
+            this.bVolDown.Name = "bVolDown";
+            this.bVolDown.Size = new System.Drawing.Size(150, 23);
+            this.bVolDown.TabIndex = 7;
+            this.bVolDown.Text = "Volume down";
+            this.bVolDown.UseVisualStyleBackColor = true;
+            this.bVolDown.Click += new System.EventHandler(this.BVolDownClick);
+            // 
+            // bVolUp
+            // 
+            this.bVolUp.Enabled = false;
+            this.bVolUp.Location = new System.Drawing.Point(164, 7);
+            this.bVolUp.Name = "bVolUp";
+            this.bVolUp.Size = new System.Drawing.Size(150, 23);
+            this.bVolUp.TabIndex = 6;
+            this.bVolUp.Text = "Volume up";
+            this.bVolUp.UseVisualStyleBackColor = true;
+            this.bVolUp.Click += new System.EventHandler(this.BVolUpClick);
+            // 
+            // bActivateSource
+            // 
+            this.bActivateSource.Enabled = false;
+            this.bActivateSource.Location = new System.Drawing.Point(8, 65);
+            this.bActivateSource.Name = "bActivateSource";
+            this.bActivateSource.Size = new System.Drawing.Size(150, 23);
+            this.bActivateSource.TabIndex = 5;
+            this.bActivateSource.Text = "Make device active";
+            this.bActivateSource.UseVisualStyleBackColor = true;
+            this.bActivateSource.Click += new System.EventHandler(this.BActivateSourceClick);
+            // 
+            // bScan
+            // 
+            this.bScan.Enabled = false;
+            this.bScan.Location = new System.Drawing.Point(8, 94);
+            this.bScan.Name = "bScan";
+            this.bScan.Size = new System.Drawing.Size(150, 23);
+            this.bScan.TabIndex = 4;
+            this.bScan.Text = "Device information";
+            this.bScan.UseVisualStyleBackColor = true;
+            this.bScan.Click += new System.EventHandler(this.BScanClick);
+            // 
+            // bStandby
+            // 
+            this.bStandby.Enabled = false;
+            this.bStandby.Location = new System.Drawing.Point(8, 36);
+            this.bStandby.Name = "bStandby";
+            this.bStandby.Size = new System.Drawing.Size(150, 23);
+            this.bStandby.TabIndex = 3;
+            this.bStandby.Text = "Put device in standby";
+            this.bStandby.UseVisualStyleBackColor = true;
+            this.bStandby.Click += new System.EventHandler(this.BStandbyClick);
+            // 
+            // bSendImageViewOn
+            // 
+            this.bSendImageViewOn.Enabled = false;
+            this.bSendImageViewOn.Location = new System.Drawing.Point(8, 7);
+            this.bSendImageViewOn.Name = "bSendImageViewOn";
+            this.bSendImageViewOn.Size = new System.Drawing.Size(150, 23);
+            this.bSendImageViewOn.TabIndex = 2;
+            this.bSendImageViewOn.Text = "Power on device";
+            this.bSendImageViewOn.UseVisualStyleBackColor = true;
+            this.bSendImageViewOn.Click += new System.EventHandler(this.BSendImageViewOnClick);
+            // 
+            // lDestination
+            // 
+            this.lDestination.AutoSize = true;
+            this.lDestination.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.lDestination.Location = new System.Drawing.Point(420, 3);
+            this.lDestination.Name = "lDestination";
+            this.lDestination.Size = new System.Drawing.Size(138, 24);
+            this.lDestination.TabIndex = 1;
+            this.lDestination.Text = "Target device";
+            // 
+            // cbCommandDestination
+            // 
+            this.cbCommandDestination.FormattingEnabled = true;
+            this.cbCommandDestination.Items.AddRange(new object[] {
             "0: TV",
             "F: Broadcast"});
-      this.cbCommandDestination.Location = new System.Drawing.Point(437, 30);
-      this.cbCommandDestination.Name = "cbCommandDestination";
-      this.cbCommandDestination.Size = new System.Drawing.Size(121, 21);
-      this.cbCommandDestination.TabIndex = 0;
-      this.cbCommandDestination.Text = "0: TV";
-      this.cbCommandDestination.SelectedIndexChanged += new System.EventHandler(this.CbCommandDestinationSelectedIndexChanged);
-      // 
-      // Configuration
-      // 
-      this.Configuration.Controls.Add(this.cbStartMinimised);
-      this.Configuration.Controls.Add(this.cbOverrideAddress);
-      this.Configuration.Controls.Add(this.bReloadConfig);
-      this.Configuration.Controls.Add(this.cbVendorOverride);
-      this.Configuration.Controls.Add(this.cbVendorId);
-      this.Configuration.Controls.Add(this.lPowerOff);
-      this.Configuration.Controls.Add(this.cbPowerOffDevices);
-      this.Configuration.Controls.Add(this.lWakeDevices);
-      this.Configuration.Controls.Add(this.cbWakeDevices);
-      this.Configuration.Controls.Add(this.cbActivateSource);
-      this.Configuration.Controls.Add(this.lPlayerConfig);
-      this.Configuration.Controls.Add(this.lAdapterConfig);
-      this.Configuration.Controls.Add(this.cbDeviceType);
-      this.Configuration.Controls.Add(this.bClose);
-      this.Configuration.Controls.Add(this.bSaveConfig);
-      this.Configuration.Controls.Add(this.cbPortNumber);
-      this.Configuration.Controls.Add(this.tbPhysicalAddress);
-      this.Configuration.Controls.Add(this.cbConnectedDevice);
-      this.Configuration.Controls.Add(this.lDeviceType);
-      this.Configuration.Controls.Add(this.lConnectedDevice);
-      this.Configuration.Controls.Add(this.lPortNumber);
-      this.Configuration.Location = new System.Drawing.Point(4, 22);
-      this.Configuration.Name = "Configuration";
-      this.Configuration.Padding = new System.Windows.Forms.Padding(3);
-      this.Configuration.Size = new System.Drawing.Size(592, 344);
-      this.Configuration.TabIndex = 0;
-      this.Configuration.Text = "Configuration";
-      this.Configuration.UseVisualStyleBackColor = true;
-      // 
-      // cbOverrideAddress
-      // 
-      this.cbOverrideAddress.AutoSize = true;
-      this.cbOverrideAddress.Enabled = false;
-      this.cbOverrideAddress.Location = new System.Drawing.Point(10, 97);
-      this.cbOverrideAddress.Name = "cbOverrideAddress";
-      this.cbOverrideAddress.Size = new System.Drawing.Size(151, 17);
-      this.cbOverrideAddress.TabIndex = 31;
-      this.cbOverrideAddress.Text = "override_physical_address";
-      this.cbOverrideAddress.UseVisualStyleBackColor = true;
-      // 
-      // bReloadConfig
-      // 
-      this.bReloadConfig.Enabled = false;
-      this.bReloadConfig.Location = new System.Drawing.Point(357, 315);
-      this.bReloadConfig.Name = "bReloadConfig";
-      this.bReloadConfig.Size = new System.Drawing.Size(125, 23);
-      this.bReloadConfig.TabIndex = 30;
-      this.bReloadConfig.Text = "Reset configuration";
-      this.bReloadConfig.UseVisualStyleBackColor = true;
-      this.bReloadConfig.Click += new System.EventHandler(this.BReloadConfigClick);
-      // 
-      // cbVendorOverride
-      // 
-      this.cbVendorOverride.AutoSize = true;
-      this.cbVendorOverride.Enabled = false;
-      this.cbVendorOverride.Location = new System.Drawing.Point(10, 156);
-      this.cbVendorOverride.Name = "cbVendorOverride";
-      this.cbVendorOverride.Size = new System.Drawing.Size(118, 17);
-      this.cbVendorOverride.TabIndex = 29;
-      this.cbVendorOverride.Text = "override_tv_vendor";
-      this.cbVendorOverride.UseVisualStyleBackColor = true;
-      // 
-      // lPowerOff
-      // 
-      this.lPowerOff.AutoSize = true;
-      this.lPowerOff.Location = new System.Drawing.Point(448, 35);
-      this.lPowerOff.Name = "lPowerOff";
-      this.lPowerOff.Size = new System.Drawing.Size(87, 13);
-      this.lPowerOff.TabIndex = 26;
-      this.lPowerOff.Text = "standby_devices";
-      // 
-      // cbPowerOffDevices
-      // 
-      this.cbPowerOffDevices.Enabled = false;
-      this.cbPowerOffDevices.FormattingEnabled = true;
-      this.cbPowerOffDevices.Items.AddRange(new object[] {
+            this.cbCommandDestination.Location = new System.Drawing.Point(437, 30);
+            this.cbCommandDestination.Name = "cbCommandDestination";
+            this.cbCommandDestination.Size = new System.Drawing.Size(121, 21);
+            this.cbCommandDestination.TabIndex = 0;
+            this.cbCommandDestination.Text = "0: TV";
+            this.cbCommandDestination.SelectedIndexChanged += new System.EventHandler(this.CbCommandDestinationSelectedIndexChanged);
+            // 
+            // Configuration
+            // 
+            this.Configuration.Controls.Add(this.cbStartMinimised);
+            this.Configuration.Controls.Add(this.cbOverrideAddress);
+            this.Configuration.Controls.Add(this.bReloadConfig);
+            this.Configuration.Controls.Add(this.cbVendorOverride);
+            this.Configuration.Controls.Add(this.cbVendorId);
+            this.Configuration.Controls.Add(this.lPowerOff);
+            this.Configuration.Controls.Add(this.cbPowerOffDevices);
+            this.Configuration.Controls.Add(this.lWakeDevices);
+            this.Configuration.Controls.Add(this.cbWakeDevices);
+            this.Configuration.Controls.Add(this.cbActivateSource);
+            this.Configuration.Controls.Add(this.lPlayerConfig);
+            this.Configuration.Controls.Add(this.lAdapterConfig);
+            this.Configuration.Controls.Add(this.cbDeviceType);
+            this.Configuration.Controls.Add(this.bClose);
+            this.Configuration.Controls.Add(this.bSaveConfig);
+            this.Configuration.Controls.Add(this.cbPortNumber);
+            this.Configuration.Controls.Add(this.tbPhysicalAddress);
+            this.Configuration.Controls.Add(this.cbConnectedDevice);
+            this.Configuration.Controls.Add(this.lDeviceType);
+            this.Configuration.Controls.Add(this.lConnectedDevice);
+            this.Configuration.Controls.Add(this.lPortNumber);
+            this.Configuration.Location = new System.Drawing.Point(4, 22);
+            this.Configuration.Name = "Configuration";
+            this.Configuration.Padding = new System.Windows.Forms.Padding(3);
+            this.Configuration.Size = new System.Drawing.Size(592, 344);
+            this.Configuration.TabIndex = 0;
+            this.Configuration.Text = "Configuration";
+            this.Configuration.UseVisualStyleBackColor = true;
+            // 
+            // cbStartMinimised
+            // 
+            this.cbStartMinimised.AutoSize = true;
+            this.cbStartMinimised.Enabled = false;
+            this.cbStartMinimised.Location = new System.Drawing.Point(9, 232);
+            this.cbStartMinimised.Name = "cbStartMinimised";
+            this.cbStartMinimised.Size = new System.Drawing.Size(118, 17);
+            this.cbStartMinimised.TabIndex = 32;
+            this.cbStartMinimised.Text = "global_start_hidden";
+            this.cbStartMinimised.UseVisualStyleBackColor = true;
+            // 
+            // cbOverrideAddress
+            // 
+            this.cbOverrideAddress.AutoSize = true;
+            this.cbOverrideAddress.Enabled = false;
+            this.cbOverrideAddress.Location = new System.Drawing.Point(10, 97);
+            this.cbOverrideAddress.Name = "cbOverrideAddress";
+            this.cbOverrideAddress.Size = new System.Drawing.Size(151, 17);
+            this.cbOverrideAddress.TabIndex = 31;
+            this.cbOverrideAddress.Text = "override_physical_address";
+            this.cbOverrideAddress.UseVisualStyleBackColor = true;
+            // 
+            // bReloadConfig
+            // 
+            this.bReloadConfig.Enabled = false;
+            this.bReloadConfig.Location = new System.Drawing.Point(357, 315);
+            this.bReloadConfig.Name = "bReloadConfig";
+            this.bReloadConfig.Size = new System.Drawing.Size(125, 23);
+            this.bReloadConfig.TabIndex = 30;
+            this.bReloadConfig.Text = "Reset configuration";
+            this.bReloadConfig.UseVisualStyleBackColor = true;
+            this.bReloadConfig.Click += new System.EventHandler(this.BReloadConfigClick);
+            // 
+            // cbVendorOverride
+            // 
+            this.cbVendorOverride.AutoSize = true;
+            this.cbVendorOverride.Enabled = false;
+            this.cbVendorOverride.Location = new System.Drawing.Point(10, 156);
+            this.cbVendorOverride.Name = "cbVendorOverride";
+            this.cbVendorOverride.Size = new System.Drawing.Size(118, 17);
+            this.cbVendorOverride.TabIndex = 29;
+            this.cbVendorOverride.Text = "override_tv_vendor";
+            this.cbVendorOverride.UseVisualStyleBackColor = true;
+            // 
+            // lPowerOff
+            // 
+            this.lPowerOff.AutoSize = true;
+            this.lPowerOff.Location = new System.Drawing.Point(448, 35);
+            this.lPowerOff.Name = "lPowerOff";
+            this.lPowerOff.Size = new System.Drawing.Size(87, 13);
+            this.lPowerOff.TabIndex = 26;
+            this.lPowerOff.Text = "standby_devices";
+            // 
+            // cbPowerOffDevices
+            // 
+            this.cbPowerOffDevices.Enabled = false;
+            this.cbPowerOffDevices.FormattingEnabled = true;
+            this.cbPowerOffDevices.Items.AddRange(new object[] {
             "global_standby_devices"});
-      this.cbPowerOffDevices.Location = new System.Drawing.Point(450, 52);
-      this.cbPowerOffDevices.Name = "cbPowerOffDevices";
-      this.cbPowerOffDevices.Size = new System.Drawing.Size(118, 94);
-      this.cbPowerOffDevices.TabIndex = 25;
-      // 
-      // lWakeDevices
-      // 
-      this.lWakeDevices.AutoSize = true;
-      this.lWakeDevices.Location = new System.Drawing.Point(328, 35);
-      this.lWakeDevices.Name = "lWakeDevices";
-      this.lWakeDevices.Size = new System.Drawing.Size(76, 13);
-      this.lWakeDevices.TabIndex = 24;
-      this.lWakeDevices.Text = "wake_devices";
-      // 
-      // cbWakeDevices
-      // 
-      this.cbWakeDevices.Enabled = false;
-      this.cbWakeDevices.FormattingEnabled = true;
-      this.cbWakeDevices.Items.AddRange(new object[] {
+            this.cbPowerOffDevices.Location = new System.Drawing.Point(450, 52);
+            this.cbPowerOffDevices.Name = "cbPowerOffDevices";
+            this.cbPowerOffDevices.Size = new System.Drawing.Size(118, 94);
+            this.cbPowerOffDevices.TabIndex = 25;
+            // 
+            // lWakeDevices
+            // 
+            this.lWakeDevices.AutoSize = true;
+            this.lWakeDevices.Location = new System.Drawing.Point(328, 35);
+            this.lWakeDevices.Name = "lWakeDevices";
+            this.lWakeDevices.Size = new System.Drawing.Size(76, 13);
+            this.lWakeDevices.TabIndex = 24;
+            this.lWakeDevices.Text = "wake_devices";
+            // 
+            // cbWakeDevices
+            // 
+            this.cbWakeDevices.Enabled = false;
+            this.cbWakeDevices.FormattingEnabled = true;
+            this.cbWakeDevices.Items.AddRange(new object[] {
             "global_wake_devices"});
-      this.cbWakeDevices.Location = new System.Drawing.Point(320, 52);
-      this.cbWakeDevices.Name = "cbWakeDevices";
-      this.cbWakeDevices.Size = new System.Drawing.Size(118, 94);
-      this.cbWakeDevices.TabIndex = 23;
-      // 
-      // cbActivateSource
-      // 
-      this.cbActivateSource.AutoSize = true;
-      this.cbActivateSource.Enabled = false;
-      this.cbActivateSource.Location = new System.Drawing.Point(9, 209);
-      this.cbActivateSource.Name = "cbActivateSource";
-      this.cbActivateSource.Size = new System.Drawing.Size(136, 17);
-      this.cbActivateSource.TabIndex = 19;
-      this.cbActivateSource.Text = "global_activate_source";
-      this.cbActivateSource.UseVisualStyleBackColor = true;
-      // 
-      // lPlayerConfig
-      // 
-      this.lPlayerConfig.AutoSize = true;
-      this.lPlayerConfig.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-      this.lPlayerConfig.Location = new System.Drawing.Point(6, 182);
-      this.lPlayerConfig.Name = "lPlayerConfig";
-      this.lPlayerConfig.Size = new System.Drawing.Size(198, 24);
-      this.lPlayerConfig.TabIndex = 16;
-      this.lPlayerConfig.Text = "Player Configuration";
-      // 
-      // lAdapterConfig
-      // 
-      this.lAdapterConfig.AutoSize = true;
-      this.lAdapterConfig.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-      this.lAdapterConfig.Location = new System.Drawing.Point(6, 3);
-      this.lAdapterConfig.Name = "lAdapterConfig";
-      this.lAdapterConfig.Size = new System.Drawing.Size(213, 24);
-      this.lAdapterConfig.TabIndex = 15;
-      this.lAdapterConfig.Text = "Adapter Configuration";
-      // 
-      // bClose
-      // 
-      this.bClose.Enabled = false;
-      this.bClose.Location = new System.Drawing.Point(95, 315);
-      this.bClose.Name = "bClose";
-      this.bClose.Size = new System.Drawing.Size(125, 23);
-      this.bClose.TabIndex = 13;
-      this.bClose.Text = "Close";
-      this.bClose.UseVisualStyleBackColor = true;
-      this.bClose.Click += new System.EventHandler(this.BCancelClick);
-      // 
-      // bSaveConfig
-      // 
-      this.bSaveConfig.Enabled = false;
-      this.bSaveConfig.Location = new System.Drawing.Point(226, 315);
-      this.bSaveConfig.Name = "bSaveConfig";
-      this.bSaveConfig.Size = new System.Drawing.Size(125, 23);
-      this.bSaveConfig.TabIndex = 12;
-      this.bSaveConfig.Text = "Persist configuration";
-      this.bSaveConfig.UseVisualStyleBackColor = true;
-      this.bSaveConfig.Click += new System.EventHandler(this.BSaveClick);
-      // 
-      // lDeviceType
-      // 
-      this.lDeviceType.AutoSize = true;
-      this.lDeviceType.Location = new System.Drawing.Point(6, 126);
-      this.lDeviceType.Name = "lDeviceType";
-      this.lDeviceType.Size = new System.Drawing.Size(65, 13);
-      this.lDeviceType.TabIndex = 3;
-      this.lDeviceType.Text = "device_type";
-      // 
-      // lConnectedDevice
-      // 
-      this.lConnectedDevice.AutoSize = true;
-      this.lConnectedDevice.Location = new System.Drawing.Point(6, 70);
-      this.lConnectedDevice.Name = "lConnectedDevice";
-      this.lConnectedDevice.Size = new System.Drawing.Size(139, 13);
-      this.lConnectedDevice.TabIndex = 1;
-      this.lConnectedDevice.Text = "connected_to_hdmi_device";
-      // 
-      // lPortNumber
-      // 
-      this.lPortNumber.AutoSize = true;
-      this.lPortNumber.Location = new System.Drawing.Point(6, 43);
-      this.lPortNumber.Name = "lPortNumber";
-      this.lPortNumber.Size = new System.Drawing.Size(53, 13);
-      this.lPortNumber.TabIndex = 0;
-      this.lPortNumber.Text = "hdmi_port";
-      // 
-      // tabPanel
-      // 
-      this.tabPanel.Controls.Add(this.Configuration);
-      this.tabPanel.Controls.Add(this.tbTestCommands);
-      this.tabPanel.Controls.Add(this.LogOutput);
-      this.tabPanel.Location = new System.Drawing.Point(12, 27);
-      this.tabPanel.Name = "tabPanel";
-      this.tabPanel.SelectedIndex = 0;
-      this.tabPanel.Size = new System.Drawing.Size(600, 370);
-      this.tabPanel.TabIndex = 0;
-      this.tabPanel.SelectedIndexChanged += new System.EventHandler(this.TabControl1SelectedIndexChanged);
-      // 
-      // menuStrip1
-      // 
-      this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.cbWakeDevices.Location = new System.Drawing.Point(320, 52);
+            this.cbWakeDevices.Name = "cbWakeDevices";
+            this.cbWakeDevices.Size = new System.Drawing.Size(118, 94);
+            this.cbWakeDevices.TabIndex = 23;
+            // 
+            // cbActivateSource
+            // 
+            this.cbActivateSource.AutoSize = true;
+            this.cbActivateSource.Enabled = false;
+            this.cbActivateSource.Location = new System.Drawing.Point(9, 209);
+            this.cbActivateSource.Name = "cbActivateSource";
+            this.cbActivateSource.Size = new System.Drawing.Size(136, 17);
+            this.cbActivateSource.TabIndex = 19;
+            this.cbActivateSource.Text = "global_activate_source";
+            this.cbActivateSource.UseVisualStyleBackColor = true;
+            // 
+            // lPlayerConfig
+            // 
+            this.lPlayerConfig.AutoSize = true;
+            this.lPlayerConfig.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.lPlayerConfig.Location = new System.Drawing.Point(6, 182);
+            this.lPlayerConfig.Name = "lPlayerConfig";
+            this.lPlayerConfig.Size = new System.Drawing.Size(198, 24);
+            this.lPlayerConfig.TabIndex = 16;
+            this.lPlayerConfig.Text = "Player Configuration";
+            // 
+            // lAdapterConfig
+            // 
+            this.lAdapterConfig.AutoSize = true;
+            this.lAdapterConfig.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.lAdapterConfig.Location = new System.Drawing.Point(6, 3);
+            this.lAdapterConfig.Name = "lAdapterConfig";
+            this.lAdapterConfig.Size = new System.Drawing.Size(213, 24);
+            this.lAdapterConfig.TabIndex = 15;
+            this.lAdapterConfig.Text = "Adapter Configuration";
+            // 
+            // bClose
+            // 
+            this.bClose.Enabled = false;
+            this.bClose.Location = new System.Drawing.Point(95, 315);
+            this.bClose.Name = "bClose";
+            this.bClose.Size = new System.Drawing.Size(125, 23);
+            this.bClose.TabIndex = 13;
+            this.bClose.Text = "Close";
+            this.bClose.UseVisualStyleBackColor = true;
+            this.bClose.Click += new System.EventHandler(this.BCancelClick);
+            // 
+            // bSaveConfig
+            // 
+            this.bSaveConfig.Enabled = false;
+            this.bSaveConfig.Location = new System.Drawing.Point(226, 315);
+            this.bSaveConfig.Name = "bSaveConfig";
+            this.bSaveConfig.Size = new System.Drawing.Size(125, 23);
+            this.bSaveConfig.TabIndex = 12;
+            this.bSaveConfig.Text = "Persist configuration";
+            this.bSaveConfig.UseVisualStyleBackColor = true;
+            this.bSaveConfig.Click += new System.EventHandler(this.BSaveClick);
+            // 
+            // lDeviceType
+            // 
+            this.lDeviceType.AutoSize = true;
+            this.lDeviceType.Location = new System.Drawing.Point(6, 126);
+            this.lDeviceType.Name = "lDeviceType";
+            this.lDeviceType.Size = new System.Drawing.Size(65, 13);
+            this.lDeviceType.TabIndex = 3;
+            this.lDeviceType.Text = "device_type";
+            // 
+            // lConnectedDevice
+            // 
+            this.lConnectedDevice.AutoSize = true;
+            this.lConnectedDevice.Location = new System.Drawing.Point(6, 70);
+            this.lConnectedDevice.Name = "lConnectedDevice";
+            this.lConnectedDevice.Size = new System.Drawing.Size(139, 13);
+            this.lConnectedDevice.TabIndex = 1;
+            this.lConnectedDevice.Text = "connected_to_hdmi_device";
+            // 
+            // lPortNumber
+            // 
+            this.lPortNumber.AutoSize = true;
+            this.lPortNumber.Location = new System.Drawing.Point(6, 43);
+            this.lPortNumber.Name = "lPortNumber";
+            this.lPortNumber.Size = new System.Drawing.Size(53, 13);
+            this.lPortNumber.TabIndex = 0;
+            this.lPortNumber.Text = "hdmi_port";
+            // 
+            // tabPanel
+            // 
+            this.tabPanel.Controls.Add(this.Configuration);
+            this.tabPanel.Controls.Add(this.tbTestCommands);
+            this.tabPanel.Controls.Add(this.LogOutput);
+            this.tabPanel.Location = new System.Drawing.Point(12, 27);
+            this.tabPanel.Name = "tabPanel";
+            this.tabPanel.SelectedIndex = 0;
+            this.tabPanel.Size = new System.Drawing.Size(600, 370);
+            this.tabPanel.TabIndex = 0;
+            this.tabPanel.SelectedIndexChanged += new System.EventHandler(this.TabControl1SelectedIndexChanged);
+            // 
+            // menuStrip1
+            // 
+            this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
             this.fileToolStripMenuItem,
             this.applicationsToolStripMenuItem,
             this.helpToolStripMenuItem});
-      this.menuStrip1.Location = new System.Drawing.Point(0, 0);
-      this.menuStrip1.Name = "menuStrip1";
-      this.menuStrip1.Size = new System.Drawing.Size(624, 24);
-      this.menuStrip1.TabIndex = 3;
-      this.menuStrip1.Text = "menuStrip1";
-      // 
-      // fileToolStripMenuItem
-      // 
-      this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.menuStrip1.Location = new System.Drawing.Point(0, 0);
+            this.menuStrip1.Name = "menuStrip1";
+            this.menuStrip1.Size = new System.Drawing.Size(624, 24);
+            this.menuStrip1.TabIndex = 3;
+            this.menuStrip1.Text = "menuStrip1";
+            // 
+            // fileToolStripMenuItem
+            // 
+            this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
             this.hideToolStripMenuItem,
             this.advancedModeToolStripMenuItem,
             this.closeToolStripMenuItem});
-      this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
-      this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
-      this.fileToolStripMenuItem.Text = "File";
-      // 
-      // hideToolStripMenuItem
-      // 
-      this.hideToolStripMenuItem.Name = "hideToolStripMenuItem";
-      this.hideToolStripMenuItem.Size = new System.Drawing.Size(161, 22);
-      this.hideToolStripMenuItem.Text = "Hide";
-      this.hideToolStripMenuItem.Click += new System.EventHandler(this.HideToolStripMenuItemClick);
-      // 
-      // advancedModeToolStripMenuItem
-      // 
-      this.advancedModeToolStripMenuItem.Name = "advancedModeToolStripMenuItem";
-      this.advancedModeToolStripMenuItem.Size = new System.Drawing.Size(161, 22);
-      this.advancedModeToolStripMenuItem.Text = "Advanced mode";
-      this.advancedModeToolStripMenuItem.Click += new System.EventHandler(this.AdvancedModeToolStripMenuItemClick);
-      // 
-      // closeToolStripMenuItem
-      // 
-      this.closeToolStripMenuItem.Name = "closeToolStripMenuItem";
-      this.closeToolStripMenuItem.Size = new System.Drawing.Size(161, 22);
-      this.closeToolStripMenuItem.Text = "Close";
-      this.closeToolStripMenuItem.Click += new System.EventHandler(this.CloseToolStripMenuItemClick);
-      // 
-      // applicationsToolStripMenuItem
-      // 
-      this.applicationsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
+            this.fileToolStripMenuItem.Size = new System.Drawing.Size(35, 20);
+            this.fileToolStripMenuItem.Text = "File";
+            // 
+            // hideToolStripMenuItem
+            // 
+            this.hideToolStripMenuItem.Name = "hideToolStripMenuItem";
+            this.hideToolStripMenuItem.Size = new System.Drawing.Size(151, 22);
+            this.hideToolStripMenuItem.Text = "Hide";
+            this.hideToolStripMenuItem.Click += new System.EventHandler(this.HideToolStripMenuItemClick);
+            // 
+            // advancedModeToolStripMenuItem
+            // 
+            this.advancedModeToolStripMenuItem.Name = "advancedModeToolStripMenuItem";
+            this.advancedModeToolStripMenuItem.Size = new System.Drawing.Size(151, 22);
+            this.advancedModeToolStripMenuItem.Text = "Advanced mode";
+            this.advancedModeToolStripMenuItem.Click += new System.EventHandler(this.AdvancedModeToolStripMenuItemClick);
+            // 
+            // closeToolStripMenuItem
+            // 
+            this.closeToolStripMenuItem.Name = "closeToolStripMenuItem";
+            this.closeToolStripMenuItem.Size = new System.Drawing.Size(151, 22);
+            this.closeToolStripMenuItem.Text = "Close";
+            this.closeToolStripMenuItem.Click += new System.EventHandler(this.CloseToolStripMenuItemClick);
+            // 
+            // applicationsToolStripMenuItem
+            // 
+            this.applicationsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
             this.addNewApplicationToolStripMenuItem});
-      this.applicationsToolStripMenuItem.Enabled = false;
-      this.applicationsToolStripMenuItem.Name = "applicationsToolStripMenuItem";
-      this.applicationsToolStripMenuItem.Size = new System.Drawing.Size(85, 20);
-      this.applicationsToolStripMenuItem.Text = "Applications";
-      // 
-      // addNewApplicationToolStripMenuItem
-      // 
-      this.addNewApplicationToolStripMenuItem.Enabled = false;
-      this.addNewApplicationToolStripMenuItem.Name = "addNewApplicationToolStripMenuItem";
-      this.addNewApplicationToolStripMenuItem.Size = new System.Drawing.Size(183, 22);
-      this.addNewApplicationToolStripMenuItem.Text = "Add new application";
-      this.addNewApplicationToolStripMenuItem.Click += new System.EventHandler(this.AddNewApplicationToolStripMenuItemClick);
-      // 
-      // helpToolStripMenuItem
-      // 
-      this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.applicationsToolStripMenuItem.Enabled = false;
+            this.applicationsToolStripMenuItem.Name = "applicationsToolStripMenuItem";
+            this.applicationsToolStripMenuItem.Size = new System.Drawing.Size(76, 20);
+            this.applicationsToolStripMenuItem.Text = "Applications";
+            // 
+            // addNewApplicationToolStripMenuItem
+            // 
+            this.addNewApplicationToolStripMenuItem.Enabled = false;
+            this.addNewApplicationToolStripMenuItem.Name = "addNewApplicationToolStripMenuItem";
+            this.addNewApplicationToolStripMenuItem.Size = new System.Drawing.Size(170, 22);
+            this.addNewApplicationToolStripMenuItem.Text = "Add new application";
+            this.addNewApplicationToolStripMenuItem.Click += new System.EventHandler(this.AddNewApplicationToolStripMenuItemClick);
+            // 
+            // helpToolStripMenuItem
+            // 
+            this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
             this.aboutToolStripMenuItem});
-      this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
-      this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
-      this.helpToolStripMenuItem.Text = "Help";
-      // 
-      // aboutToolStripMenuItem
-      // 
-      this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
-      this.aboutToolStripMenuItem.Size = new System.Drawing.Size(107, 22);
-      this.aboutToolStripMenuItem.Text = "About";
-      this.aboutToolStripMenuItem.Click += new System.EventHandler(this.AboutToolStripMenuItemClick);
-      // 
-      // cbStartMinimised
-      // 
-      this.cbStartMinimised.AutoSize = true;
-      this.cbStartMinimised.Enabled = false;
-      this.cbStartMinimised.Location = new System.Drawing.Point(9, 232);
-      this.cbStartMinimised.Name = "cbStartMinimised";
-      this.cbStartMinimised.Size = new System.Drawing.Size(118, 17);
-      this.cbStartMinimised.TabIndex = 32;
-      this.cbStartMinimised.Text = "global_start_hidden";
-      this.cbStartMinimised.UseVisualStyleBackColor = true;
-      // 
-      // CECTray
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.ClientSize = new System.Drawing.Size(624, 442);
-      this.Controls.Add(this.menuStrip1);
-      this.Controls.Add(this.lStatus);
-      this.Controls.Add(this.pProgress);
-      this.Controls.Add(this.tabPanel);
-      this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
-      this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
-      this.MainMenuStrip = this.menuStrip1;
-      this.MaximizeBox = false;
-      this.Name = "CECTray";
-      this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
-      this.Load += new System.EventHandler(this.CECTrayLoad);
-      this.Resize += new System.EventHandler(this.CECTrayResize);
-      this.trayIconMenu.ResumeLayout(false);
-      this.LogOutput.ResumeLayout(false);
-      this.LogOutput.PerformLayout();
-      this.tbTestCommands.ResumeLayout(false);
-      this.tbTestCommands.PerformLayout();
-      this.Configuration.ResumeLayout(false);
-      this.Configuration.PerformLayout();
-      this.tabPanel.ResumeLayout(false);
-      this.menuStrip1.ResumeLayout(false);
-      this.menuStrip1.PerformLayout();
-      this.ResumeLayout(false);
-      this.PerformLayout();
+            this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
+            this.helpToolStripMenuItem.Size = new System.Drawing.Size(40, 20);
+            this.helpToolStripMenuItem.Text = "Help";
+            // 
+            // aboutToolStripMenuItem
+            // 
+            this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
+            this.aboutToolStripMenuItem.Size = new System.Drawing.Size(103, 22);
+            this.aboutToolStripMenuItem.Text = "About";
+            this.aboutToolStripMenuItem.Click += new System.EventHandler(this.AboutToolStripMenuItemClick);
+            // 
+            // CECTray
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(624, 442);
+            this.Controls.Add(this.menuStrip1);
+            this.Controls.Add(this.lStatus);
+            this.Controls.Add(this.pProgress);
+            this.Controls.Add(this.tabPanel);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+            this.MainMenuStrip = this.menuStrip1;
+            this.MaximizeBox = false;
+            this.Name = "CECTray";
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+            this.Resize += new System.EventHandler(this.CECTrayResize);
+            this.trayIconMenu.ResumeLayout(false);
+            this.LogOutput.ResumeLayout(false);
+            this.LogOutput.PerformLayout();
+            this.tbTestCommands.ResumeLayout(false);
+            this.tbTestCommands.PerformLayout();
+            this.Configuration.ResumeLayout(false);
+            this.Configuration.PerformLayout();
+            this.tabPanel.ResumeLayout(false);
+            this.menuStrip1.ResumeLayout(false);
+            this.menuStrip1.PerformLayout();
+            this.ResumeLayout(false);
+            this.PerformLayout();
 
     }
 
index 6703e5f8d76e6a9a22c825678bf7b7ccb0a4fcd8..6a04d62f2301da982ecb970cf78547c9031351bc 100644 (file)
@@ -38,6 +38,8 @@ using LibCECTray.Properties;
 using LibCECTray.controller;
 using LibCECTray.controller.applications;
 using LibCECTray.settings;
+using Microsoft.Win32;
+using System.Security.Permissions;
 
 namespace LibCECTray.ui
 {
@@ -70,6 +72,28 @@ namespace LibCECTray.ui
                          else
                            OnShow();
                        };
+      SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(OnPowerModeChanged);
+      SystemEvents.SessionEnding += new SessionEndingEventHandler(OnSessionEnding);
+    }
+
+    public void OnSessionEnding(object sender, SessionEndingEventArgs e)
+    {
+      Controller.Close();
+    }
+
+    public void OnPowerModeChanged(Object sender, PowerModeChangedEventArgs e)
+    {
+      switch (e.Mode)
+      {
+        case PowerModes.Resume:
+          Controller.Initialise();
+          break;
+        case PowerModes.Suspend:
+          Controller.Close();
+          break;
+        case PowerModes.StatusChange:
+          break;
+      }
     }
 
     public override sealed string Text
@@ -78,7 +102,7 @@ namespace LibCECTray.ui
       set { base.Text = value; }
     }
 
-    private void CECTrayLoad(object sender, EventArgs e)
+    public void Initialise()
     {
       Controller.Initialise();
     }
@@ -484,7 +508,10 @@ namespace LibCECTray.ui
     private CECController _controller;
     public CECController Controller
     {
-      get { return _controller ?? (_controller = new CECController(this)); }
+      get
+      {
+        return _controller ?? (_controller = new CECController(this));
+      }
     }
     public Control.ControlCollection TabControls
     {
diff --git a/src/LibCecTray/ui/IAsyncControls.cs b/src/LibCecTray/ui/IAsyncControls.cs
new file mode 100644 (file)
index 0000000..478b7eb
--- /dev/null
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Windows.Forms;
+using CecSharp;
+
+namespace LibCECTray.ui
+{
+    interface IAsyncControls
+    {
+        void SetControlEnabled(Control control, bool val);
+        void SetControlText(Control control, string val);
+        void SetToolStripMenuText(ToolStripMenuItem item, string val);
+        void SetCheckboxChecked(CheckBox control, bool val);
+        void SetCheckboxItemChecked(CheckedListBox control, int index, bool val);
+        void SetProgressValue(ProgressBar control, int val);
+        void SetComboBoxItems(ComboBox control, int selectedIndex, object[] val);
+        void SetControlVisible(Control control, bool val);
+        void DisplayDialog(Form control, bool modal);
+        void SafeHide(bool val);
+        void SetSelectedIndex(ComboBox control, int index);
+        string GetSelectedTabName(TabControl container, TabControl.TabPageCollection tabPages);
+        void SelectKeypressRow(Control container, DataGridView dgView, CecKeypress key);
+    }
+}
index bfed4c3f53a43965fe5ee854240d00bbd7bd0c69..a44b81eb6a314167395916af458c7ab3d26c91f4 100644 (file)
@@ -480,13 +480,7 @@ void CCECProcessor::TransmitAbort(cec_logical_address source, cec_logical_addres
 void CCECProcessor::ProcessCommand(const cec_command &command)
 {
   // log the command
-  CStdString dataStr;
-  dataStr.Format(">> %1x%1x", command.initiator, command.destination);
-  if (command.opcode_set == 1)
-    dataStr.AppendFormat(":%02x", command.opcode);
-  for (uint8_t iPtr = 0; iPtr < command.parameters.size; iPtr++)
-    dataStr.AppendFormat(":%02x", (unsigned int)command.parameters[iPtr]);
-  m_libcec->AddLog(CEC_LOG_TRAFFIC, dataStr.c_str());
+  m_libcec->AddLog(CEC_LOG_TRAFFIC, ToString(command).c_str());
 
   // find the initiator
   CCECBusDevice *device = m_busDevices->At(command.initiator);
@@ -712,7 +706,7 @@ bool CCECProcessor::AllocateLogicalAddresses(CCECClient* client)
     // replace a previous client
     CLockObject lock(m_mutex);
     m_clients.erase((*it)->GetLogicalAddress());
-    m_clients.insert(make_pair<cec_logical_address, CCECClient *>((*it)->GetLogicalAddress(), client));
+    m_clients.insert(make_pair((*it)->GetLogicalAddress(), client));
   }
 
   // set the new ackmask
index 4b406f12edf271a641f01f1d9d7855688191932d..506974b74f58d1172c0d549170f573a10fc91f95 100644 (file)
@@ -31,6 +31,8 @@
  *     http://www.pulse-eight.net/
  */
 
+#include "lib/platform/util/StdString.h"
+
 namespace CEC
 {
   class CCECTypeUtils
@@ -491,6 +493,7 @@ namespace CEC
       case CEC_VENDOR_SONY:
         return "Sony";
       case CEC_VENDOR_TOSHIBA:
+      case CEC_VENDOR_TOSHIBA2:
         return "Toshiba";
       case CEC_VENDOR_AKAI:
         return "Akai";
@@ -573,6 +576,10 @@ namespace CEC
         return "2.1.0";
       case CEC_CLIENT_VERSION_2_1_1:
         return "2.1.1";
+      case CEC_CLIENT_VERSION_2_1_2:
+        return "2.1.2";
+      case CEC_CLIENT_VERSION_2_1_3:
+        return "2.1.3";
       default:
         return "Unknown";
       }
@@ -632,6 +639,10 @@ namespace CEC
         return "2.1.0";
       case CEC_SERVER_VERSION_2_1_1:
         return "2.1.1";
+      case CEC_SERVER_VERSION_2_1_2:
+        return "2.1.2";
+      case CEC_SERVER_VERSION_2_1_3:
+        return "2.1.3";
       default:
         return "Unknown";
       }
@@ -852,5 +863,16 @@ namespace CEC
       }
       return true;
     }
+
+    static CStdString ToString(const cec_command& command)
+    {
+      CStdString dataStr;
+      dataStr.Format(">> %1x%1x", command.initiator, command.destination);
+      if (command.opcode_set == 1)
+        dataStr.AppendFormat(":%02x", command.opcode);
+      for (uint8_t iPtr = 0; iPtr < command.parameters.size; iPtr++)
+        dataStr.AppendFormat(":%02x", (unsigned int)command.parameters[iPtr]);
+      return dataStr;
+    }
   };
 }
index 27a4f56bc930eaae18982ac76e4f031a37441aa0..d0041d9644f279ce305792775dbc1715ee4aa362 100644 (file)
@@ -217,7 +217,7 @@ uint16_t CTDA995xCECAdapterCommunication::GetFirmwareVersion(void)
 
   m_dev->Ioctl(CEC_IOCTL_GET_SW_VERSION, &vers);
   
-  return (vers.majorVersionNr * 100) + vers.minorVersionNr;
+  return vers.majorVersionNr;
 }
 
 
@@ -336,15 +336,16 @@ void *CTDA995xCECAdapterCommunication::Process(void)
       if (frame.service == CEC_RX_PKT)
       {
         cec_command cmd;
-       
+
         cec_command::Format(
           cmd, initiator, destination,
           ( frame.size > 3 ) ? cec_opcode(frame.data[0]) : CEC_OPCODE_NONE);
-       
+
         for( uint8_t i = 1; i < frame.size-3; i++ )
-           cmd.parameters.PushBack(frame.data[i]);
-       
-        m_callback->OnCommandReceived(cmd);
+          cmd.parameters.PushBack(frame.data[i]);
+
+        if (!IsStopped())
+          m_callback->OnCommandReceived(cmd);
       }
       else if (frame.service == CEC_ACK_PKT)
       {
index e249a0b3c45dda279bc73182ce48dce7b26b396c..a2cfbee65da002f306f7c74961871ca87065ba0b 100644 (file)
@@ -40,6 +40,7 @@
 #include "lib/implementations/SLCommandHandler.h"
 #include "lib/implementations/VLCommandHandler.h"
 #include "lib/implementations/PHCommandHandler.h"
+#include "lib/implementations/RLCommandHandler.h"
 #include "lib/LibCEC.h"
 #include "lib/CECTypeUtils.h"
 #include "lib/platform/util/timeutils.h"
@@ -136,6 +137,10 @@ bool CCECBusDevice::ReplaceHandler(bool bActivateSource /* = true */)
         case CEC_VENDOR_PHILIPS:
           m_handler = new CPHCommandHandler(this, iTransmitTimeout, iTransmitWait, iTransmitRetries, iActiveSourcePending);
           break;
+        case CEC_VENDOR_TOSHIBA:
+        case CEC_VENDOR_TOSHIBA2:
+          m_handler = new CRLCommandHandler(this, iTransmitTimeout, iTransmitWait, iTransmitRetries, iActiveSourcePending);
+          break;
         default:
           m_handler = new CCECCommandHandler(this, iTransmitTimeout, iTransmitWait, iTransmitRetries, iActiveSourcePending);
           break;
index 28cee428128f5caadbc5cf2346fb0c8377c66537..2859d5aaddc74dccff69528b2be31ac2a3fb6856 100644 (file)
@@ -583,13 +583,6 @@ int CCECCommandHandler::HandleSetStreamPath(const cec_command &command)
         device->MarkAsActiveSource();
       return COMMAND_HANDLED;
     }
-    else
-    {
-      cec_logical_address previousSource = m_processor->GetActiveSource(false);
-      CCECBusDevice* device = m_processor->GetDevice(previousSource);
-      if (device && device->GetCurrentPhysicalAddress() != iStreamAddress)
-        device->MarkAsInactiveSource();
-    }
   }
 
   return CEC_ABORT_REASON_INVALID_OPERAND;
@@ -756,6 +749,9 @@ void CCECCommandHandler::UnhandledCommand(const cec_command &command, const cec_
   {
     LIB_CEC->AddLog(CEC_LOG_DEBUG, "sending abort with opcode %02x and reason '%s' to %s", command.opcode, ToString(reason), ToString(command.initiator));
     m_processor->TransmitAbort(command.destination, command.initiator, command.opcode, reason);
+
+    if (reason == CEC_ABORT_REASON_INVALID_OPERAND)
+      RequestEmailFromCustomer(command);
   }
 }
 
@@ -1265,3 +1261,31 @@ void CCECCommandHandler::ScheduleActivateSource(uint64_t iDelay)
   CLockObject lock(m_mutex);
   m_iActiveSourcePending = GetTimeMs() + iDelay;
 }
+
+void CCECCommandHandler::RequestEmailFromCustomer(const cec_command& command)
+{
+  bool bInserted(false);
+  map<cec_opcode, vector<cec_command> >::iterator it = m_logsRequested.find(command.opcode);
+  if (it != m_logsRequested.end())
+  {
+    for (vector<cec_command>::const_iterator it2 = it->second.begin(); it2 != it->second.end(); it2++)
+    {
+      // we already logged this one
+      if ((*it2).parameters == command.parameters)
+        return;
+    }
+
+    it->second.push_back(command);
+    bInserted = true;
+  }
+
+  if (!bInserted)
+  {
+    vector<cec_command> commands;
+    commands.push_back(command);
+    m_logsRequested.insert(make_pair(command.opcode, commands));
+  }
+
+  LIB_CEC->AddLog(CEC_LOG_NOTICE, "Unmapped code detected. Please send an email to support@pulse-eight.com with the following details, and if you pressed a key, tell us which one you pressed, and we'll add support for this it.\nCEC command: %s\nVendor ID: %s (%06x)", ToString(command).c_str(), ToString(m_vendorId), m_vendorId);
+}
+
index e265038821e77d85435fa8226f3b2c7b08b19bed..9902a08bc7ec9c9fd6ec9e5bbf39911e73d35ad5 100644 (file)
@@ -33,6 +33,7 @@
 
 #include <vector>
 #include <string>
+#include <map>
 #include "lib/platform/threads/mutex.h"
 
 namespace CEC
@@ -139,6 +140,7 @@ namespace CEC
     virtual int HandleVendorRemoteButtonDown(const cec_command& command);
     virtual int HandleVendorRemoteButtonUp(const cec_command & UNUSED(command)) { return COMMAND_HANDLED; }
     virtual void UnhandledCommand(const cec_command &command, const cec_abort_reason reason);
+    virtual void RequestEmailFromCustomer(const cec_command& command);
 
     virtual void VendorPreActivateSourceHook(void) {};
 
@@ -164,5 +166,6 @@ namespace CEC
     int64_t          m_iActiveSourcePending;
     PLATFORM::CMutex m_mutex;
     int64_t          m_iPowerStatusRequested;
+    std::map<cec_opcode, std::vector<cec_command> > m_logsRequested;
   };
 };
index 5264c110ba092f454005758a425fbad07032f2cc..208b50468f597a216c98118a328ce0e6cd1a862d 100644 (file)
 #include "lib/devices/CECBusDevice.h"
 #include "lib/CECProcessor.h"
 #include "lib/LibCEC.h"
+#include "lib/CECClient.h"
 
 using namespace CEC;
 using namespace PLATFORM;
 
+#define RL_KEY_TOP_MENU           0x10
+#define RL_KEY_DVD_MENU           0x11
+
 CRLCommandHandler::CRLCommandHandler(CCECBusDevice *busDevice,
                                      int32_t iTransmitTimeout /* = CEC_DEFAULT_TRANSMIT_TIMEOUT */,
                                      int32_t iTransmitWait /* = CEC_DEFAULT_TRANSMIT_WAIT */,
@@ -79,3 +83,59 @@ bool CRLCommandHandler::InitHandler(void)
 
   return true;
 }
+
+int CRLCommandHandler::HandleDeviceVendorCommandWithId(const cec_command &command)
+{
+  if (!m_processor->IsHandledByLibCEC(command.destination))
+    return CEC_ABORT_REASON_INVALID_OPERAND;
+
+  if (command.parameters.size < 4)
+    return CEC_ABORT_REASON_INVALID_OPERAND;
+
+  // check whether the vendor id matches
+  if (command.parameters[0] != 0x00 ||
+      command.parameters[1] != 0x00 ||
+      command.parameters[2] != 0x39)
+    return CEC_ABORT_REASON_INVALID_OPERAND;
+
+  bool bHandled(false);
+  CCECClient* client = m_processor->GetClient(command.destination);
+  if (client)
+  {
+    switch (command.parameters[3])
+    {
+    // user control pressed
+    case CEC_OPCODE_USER_CONTROL_PRESSED:
+      if (command.parameters.size == 5)
+      {
+        bHandled = true;
+        switch (command.parameters[4])
+        {
+        // top menu -> root menu
+        case RL_KEY_TOP_MENU:
+          client->SetCurrentButton(CEC_USER_CONTROL_CODE_ROOT_MENU);
+          break;
+        // dvd menu -> contents menu
+        case RL_KEY_DVD_MENU:
+          client->SetCurrentButton(CEC_USER_CONTROL_CODE_CONTENTS_MENU);
+          break;
+        default:
+          bHandled = false;
+          break;
+        }
+      }
+      break;
+    // user control released
+    case CEC_OPCODE_USER_CONTROL_RELEASE:
+      client->AddKey();
+      bHandled = true;
+      break;
+    default:
+      break;
+    }
+  }
+
+  return bHandled ?
+      COMMAND_HANDLED :
+      CCECCommandHandler::HandleDeviceVendorCommandWithId(command);
+}
index 1bb04993c221c0b472cc493ac99ce8a88c054718..be9b5d9af39ccc30f2f17d3dd18fe6d2af62f8c1 100644 (file)
@@ -46,5 +46,6 @@ namespace CEC
     virtual ~CRLCommandHandler(void) {};
 
     bool InitHandler(void);
+    int HandleDeviceVendorCommandWithId(const cec_command &command);
   };
 };
index 7eb695dc59429327c68268dc82c0148cf223a7ac..1e0e364fc8eb2dd5a98738117bd44730b34c5f23 100644 (file)
@@ -61,8 +61,7 @@ inline bool RemoveLock(const char *strDeviceName)
   #if !defined(__APPLE__) && !defined(__FreeBSD__) && defined(HAVE_LOCKDEV)
   return dev_unlock(strDeviceName, 0) == 0;
   #else
-  void *tmp = (void*)strDeviceName; // silence unused warning
-  tmp = NULL;
+  (void)strDeviceName; // silence unused warning
   return true;
   #endif
 }
index 90012c24033cc93a91bc9b1f9e6b39b91f4ccac6..954b92077ec3495b3d9cb32cd3f7b4527cad1621 100644 (file)
@@ -9,14 +9,14 @@ IF EXIST "%ProgramFiles%\NSIS\makensis.exe" (
   set NSIS="%ProgramFiles(x86)%\NSIS\makensis.exe"
 ) ELSE GOTO NONSIS
 
-rem Check for VC10
-IF "%VS100COMNTOOLS%"=="" (
-  set COMPILER10="%ProgramFiles%\Microsoft Visual Studio 10.0\Common7\IDE\VCExpress.exe"
-) ELSE IF EXIST "%VS100COMNTOOLS%\..\IDE\VCExpress.exe" (
-  set COMPILER10="%VS100COMNTOOLS%\..\IDE\VCExpress.exe"
-) ELSE IF EXIST "%VS100COMNTOOLS%\..\IDE\devenv.exe" (
-  set COMPILER10="%VS100COMNTOOLS%\..\IDE\devenv.exe"
-) ELSE GOTO NOSDK10
+rem Check for VC11
+IF "%VS110COMNTOOLS%"=="" (
+  set COMPILER11="%ProgramFiles%\Microsoft Visual Studio 11.0\Common7\IDE\VCExpress.exe"
+) ELSE IF EXIST "%VS110COMNTOOLS%\..\IDE\VCExpress.exe" (
+  set COMPILER11="%VS110COMNTOOLS%\..\IDE\VCExpress.exe"
+) ELSE IF EXIST "%VS110COMNTOOLS%\..\IDE\devenv.exe" (
+  set COMPILER11="%VS110COMNTOOLS%\..\IDE\devenv.exe"
+) ELSE GOTO NOSDK11
 
 del /s /f /q ..\build
 mkdir ..\build
@@ -40,65 +40,28 @@ if "%PROCESSOR_ARCHITECTURE%"=="x86" if "%PROCESSOR_ARCHITEW6432%"=="" goto libc
 
 rem Compile libCEC and cec-client x64
 echo. Cleaning libCEC (x64)
-%COMPILER10% libcec.sln /clean "Release|x64"
+%COMPILER11% libcec.sln /clean "Release|x64"
 echo. Compiling libCEC (x64)
-%COMPILER10% libcec.sln /build "Release|x64" /project libcec
-echo. Compiling cec-client (x64)
-%COMPILER10% libcec.sln /build "Release|x64" /project testclient
+%COMPILER11% libcec.sln /build "Release|x64"
 
 :libcecx86
 rem Compile libCEC and cec-client Win32
 echo. Cleaning libCEC (x86)
-%COMPILER10% libcec.sln /clean "Release|Win32"
+%COMPILER11% libcec.sln /clean "Release|x86"
 echo. Compiling libCEC (x86)
-%COMPILER10% libcec.sln /build "Release|Win32" /project libcec
-echo. Compiling cec-client (x86)
-%COMPILER10% libcec.sln /build "Release|Win32" /project testclient
+%COMPILER11% libcec.sln /build "Release|x86"
 
-rem Check for VC9
-IF "%VS90COMNTOOLS%"=="" (
-  set COMPILER9="%ProgramFiles%\Microsoft Visual Studio 9.0\Common7\IDE\VCExpress.exe"
-) ELSE IF EXIST "%VS90COMNTOOLS%\..\IDE\devenv.exe" (
-  set COMPILER9="%VS90COMNTOOLS%\..\IDE\devenv.exe"
-) ELSE GOTO NOSDK9
-
-rem Skip to libCEC/x86 when we're running on win32
-if "%PROCESSOR_ARCHITECTURE%"=="x86" if "%PROCESSOR_ARCHITEW6432%"=="" goto libcecsharpx86
-
-rem Compile LibCecSharp (x64)
-echo. Cleaning LibCecSharp (x64)
-%COMPILER9% LibCecSharp.Net2.sln /clean "Release|x64"
-echo. Compiling LibCecSharp (x64)
-%COMPILER9% LibCecSharp.sln /build "Release|x64" /project LibCecSharp
-%COMPILER9% LibCecSharp.sln /build "Release|x64" /project CecSharpTester
-%COMPILER9% LibCecSharp.sln /build "Release|x64" /project LibCecTray
-
-copy ..\build\LibCecSharp.dll ..\build\x64\LibCecSharp.dll
-copy ..\build\CecSharpTester.exe ..\build\x64\CecSharpTester.exe
-copy ..\build\cec-tray.exe ..\build\x64\cec-tray.exe
-
-:libcecsharpx86
-rem Compile LibCecSharp (x86)
-echo. Cleaning LibCecSharp (x86)
-%COMPILER9% LibCecSharp.sln /clean "Release|x86"
-echo. Compiling LibCecSharp (x86)
-%COMPILER9% LibCecSharp.sln /build "Release|x86" /project LibCecSharp
-%COMPILER9% LibCecSharp.sln /build "Release|x86" /project CecSharpTester
-%COMPILER9% LibCecSharp.sln /build "Release|x86" /project LibCecTray
-
-:NOSDK9
 rem Clean things up before creating the installer
 del /q /f ..\build\LibCecSharp.pdb
 del /q /f ..\build\CecSharpTester.pdb
 del /q /f ..\build\cec-tray.pdb
 del /q /f ..\build\cec-tray.vshost.exe.manifest
 del /q /f ..\build\cec-.vshost.exe
-copy ..\build\cec-client.x64.exe ..\build\x64\cec-client.x64.exe
-del /q /f ..\build\cec-client.x64.exe
-copy ..\build\libcec.x64.dll ..\build\x64\libcec.x64.dll
-del /q /f ..\build\libcec.x64.dll
-copy ..\build\libcec.x64.lib ..\build\x64\libcec.x64.lib
-del /q /f ..\build\libcec.x64.lib
+del /q /f ..\build\x64\LibCecSharp.pdb
+del /q /f ..\build\x64\CecSharpTester.pdb
+del /q /f ..\build\x64\cec-tray.pdb
+del /q /f ..\build\x64\cec-tray.vshost.exe.manifest
+del /q /f ..\build\x64\cec-.vshost.exe
 
 rem Check for sign-binary.cmd, only present on the Pulse-Eight production build system
 rem Calls signtool.exe and signs the DLLs with Pulse-Eight's code signing key
@@ -109,14 +72,18 @@ CALL ..\support\private\sign-binary.cmd ..\build\CecSharpTester.exe
 CALL ..\support\private\sign-binary.cmd ..\build\libcec.dll
 CALL ..\support\private\sign-binary.cmd ..\build\LibCecSharp.dll
 CALL ..\support\private\sign-binary.cmd ..\build\cec-tray.exe
-CALL ..\support\private\sign-binary.cmd ..\build\x64\cec-client.x64.exe
+CALL ..\support\private\sign-binary.cmd ..\build\x64\cec-client.exe
 CALL ..\support\private\sign-binary.cmd ..\build\x64\CecSharpTester.exe
-CALL ..\support\private\sign-binary.cmd ..\build\x64\libcec.x64.dll
+CALL ..\support\private\sign-binary.cmd ..\build\x64\libcec.dll
 CALL ..\support\private\sign-binary.cmd ..\build\x64\LibCecSharp.dll
 CALL ..\support\private\sign-binary.cmd ..\build\x64\cec-tray.exe
 
 :CREATEINSTALLER
 echo. Creating the installer
+cd ..\build\x64
+copy libcec.dll libcec.x64.dll
+copy cec-client.exe cec-client.x64.exe
+cd ..\..\project
 %NSIS% /V1 /X"SetCompressor /FINAL lzma" "libCEC.nsi"
 
 IF NOT EXIST "..\build\libCEC-installer.exe" GOTO :ERRORCREATINGINSTALLER
@@ -137,8 +104,8 @@ IF "%1%"=="" (
 set EXITCODE=0
 GOTO EXIT
 
-:NOSDK10
-echo. Both Visual Studio 2010 and Visual C++ Express 2010 were not found on your system.
+:NOSDK11
+echo. Visual Studio 2012 was not found on your system.
 GOTO EXIT
 
 :NOSIS
@@ -160,6 +127,7 @@ del /q /f ..\build\*.dll
 del /q /f ..\build\*.lib
 del /q /f ..\build\*.exp
 del /q /f ..\build\*.xml
+del /q /f ..\build\*.metagen
 del /s /f /q ..\build\x64
 rmdir ..\build\x64
 cd ..\support