cec: sync win32
authorLars Op den Kamp <lars@opdenkamp.eu>
Sun, 29 Jan 2012 19:58:06 +0000 (20:58 +0100)
committerLars Op den Kamp <lars@opdenkamp.eu>
Sun, 29 Jan 2012 19:58:06 +0000 (20:58 +0100)
project/libcec.vcxproj
project/libcec.vcxproj.filters
src/lib/adapter/AdapterMessage.h
src/lib/platform/sockets/serialport.h
src/lib/platform/sockets/socket.h
src/lib/platform/util/StdString.h
src/lib/platform/windows/os-socket.h [new file with mode: 0644]
src/lib/platform/windows/os-types.h
src/lib/platform/windows/serialport.cpp

index e0770b44b2fcf4d2b1907f578c9a4a303ca8ac14..29d5a77257c21426003dc629f54d4a142f7c2229 100644 (file)
     <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\buffer.h" />
     <ClInclude Include="..\src\lib\platform\os.h" />
-    <ClInclude Include="..\src\lib\platform\serialport\baudrate.h" />
-    <ClInclude Include="..\src\lib\platform\serialport\serialport.h" />
-    <ClInclude Include="..\src\lib\platform\StdString.h" />
+    <ClInclude Include="..\src\lib\platform\sockets\serialport.h" />
+    <ClInclude Include="..\src\lib\platform\sockets\socket.h" />
     <ClInclude Include="..\src\lib\platform\threads\mutex.h" />
     <ClInclude Include="..\src\lib\platform\threads\threads.h" />
-    <ClInclude Include="..\src\lib\platform\timeutils.h" />
+    <ClInclude Include="..\src\lib\platform\util\baudrate.h" />
+    <ClInclude Include="..\src\lib\platform\util\buffer.h" />
+    <ClInclude Include="..\src\lib\platform\util\StdString.h" />
+    <ClInclude Include="..\src\lib\platform\util\timeutils.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" />
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
-
+</Project>
\ No newline at end of file
index 5a9f4328a6765bf6a8f40c2132a303b170aca34a..636dafc000e1f4fd5f52bf334385392a8c8902f3 100644 (file)
     <Filter Include="platform\windows">
       <UniqueIdentifier>{fa3d5953-d288-45e9-93f4-8419e6b701c7}</UniqueIdentifier>
     </Filter>
-    <Filter Include="platform\serialport">
-      <UniqueIdentifier>{e3945145-efa2-4393-b201-f50e1e775008}</UniqueIdentifier>
-    </Filter>
     <Filter Include="platform\threads">
       <UniqueIdentifier>{38a27e9e-86ad-46f6-a4fb-e1e524267b74}</UniqueIdentifier>
     </Filter>
     <Filter Include="adapter">
       <UniqueIdentifier>{51614b77-8a0e-47a8-8500-5beb0fd12d49}</UniqueIdentifier>
     </Filter>
+    <Filter Include="platform\util">
+      <UniqueIdentifier>{4e963de7-5c42-40a0-9c81-bb112d5a24f9}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="platform\sockets">
+      <UniqueIdentifier>{e3945145-efa2-4393-b201-f50e1e775008}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\src\lib\CECProcessor.h" />
     <ClInclude Include="..\src\lib\LibCEC.h" />
-    <ClInclude Include="..\src\lib\platform\timeutils.h">
-      <Filter>platform</Filter>
-    </ClInclude>
     <ClInclude Include="..\include\cec.h">
       <Filter>exports</Filter>
     </ClInclude>
     <ClInclude Include="..\src\lib\platform\windows\os-types.h">
       <Filter>platform\windows</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\platform\serialport\baudrate.h">
-      <Filter>platform\serialport</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\lib\platform\serialport\serialport.h">
-      <Filter>platform\serialport</Filter>
-    </ClInclude>
     <ClInclude Include="..\src\lib\platform\threads\mutex.h">
       <Filter>platform\threads</Filter>
     </ClInclude>
     <ClInclude Include="..\src\lib\platform\threads\threads.h">
       <Filter>platform\threads</Filter>
     </ClInclude>
-    <ClInclude Include="..\src\lib\platform\buffer.h">
-      <Filter>platform</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\lib\platform\StdString.h">
-      <Filter>platform</Filter>
-    </ClInclude>
     <ClInclude Include="..\src\lib\adapter\AdapterCommunication.h">
       <Filter>adapter</Filter>
     </ClInclude>
     <ClInclude Include="..\src\lib\adapter\AdapterMessage.h">
       <Filter>adapter</Filter>
     </ClInclude>
+    <ClInclude Include="..\src\lib\platform\util\StdString.h">
+      <Filter>platform\util</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\lib\platform\util\buffer.h">
+      <Filter>platform\util</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\lib\platform\util\timeutils.h">
+      <Filter>platform\util</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\lib\platform\sockets\serialport.h">
+      <Filter>platform\sockets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\lib\platform\sockets\socket.h">
+      <Filter>platform\sockets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\lib\platform\windows\os-socket.h">
+      <Filter>platform\windows</Filter>
+    </ClInclude>
+    <ClInclude Include="..\src\lib\platform\util\baudrate.h">
+      <Filter>platform\util</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\src\lib\CECProcessor.cpp" />
     <ClCompile Include="..\src\lib\devices\CECTV.cpp">
       <Filter>devices</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\lib\platform\windows\serialport.cpp">
-      <Filter>platform\serialport</Filter>
-    </ClCompile>
     <ClCompile Include="..\src\lib\adapter\AdapterCommunication.cpp">
       <Filter>adapter</Filter>
     </ClCompile>
     <ClCompile Include="..\src\lib\adapter\AdapterDetection.cpp">
       <Filter>adapter</Filter>
     </ClCompile>
+    <ClCompile Include="..\src\lib\platform\windows\serialport.cpp">
+      <Filter>platform\windows</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="libcec.rc" />
   </ItemGroup>
-</Project>
-
+</Project>
\ No newline at end of file
index 4c8b35cf40bf7e1916c51942714ca97adbaa0b3f..8e8c965b1e21636d7f2a1e1b04e6d92c8bb1c710 100644 (file)
@@ -31,7 +31,7 @@
  *     http://www.pulse-eight.net/
  */
 
-#include "platform/util/StdString.h"
+#include "../platform/util/StdString.h"
 
 namespace CEC
 {
index bef3a806abd9ac8a6849c03891ddfff749e77429..bbe01363ce69266f484c4157df19cda7a0bb1734 100644 (file)
 
 #if !defined(__WINDOWS__)
 #include <termios.h>
-#include "socket.h"
 #endif
 
+#include "socket.h"
+
 namespace PLATFORM
 {
   #define PAR_NONE 0
@@ -52,7 +53,7 @@ namespace PLATFORM
   {
     public:
       CSerialPort(void);
-      virtual ~CSerialPort(void) {};
+      virtual ~CSerialPort(void) {}
 
       bool Open(std::string name, uint32_t baudrate, uint8_t databits = 8, uint8_t stopbits = 1, uint8_t parity = PAR_NONE);
 
@@ -63,16 +64,22 @@ namespace PLATFORM
         return strName;
       }
 
+  #ifdef __WINDOWS__
+      virtual bool IsOpen(void);
+      virtual void Close(void);
+      virtual int64_t Write(uint8_t* data, uint32_t len);
+      virtual int32_t Read(uint8_t* data, uint32_t len, uint64_t iTimeoutMs = 0);
+
   private:
+      void FormatWindowsError(int iErrorCode, CStdString &strMessage);
       bool SetBaudRate(uint32_t baudrate);
 
       std::string  m_name;
       bool         m_tostdout;
 
-  #ifdef __WINDOWS__
       bool SetTimeouts(bool bBlocking);
 
-      HANDLE                m_handle;
+      HANDLE                m_handle; 
       bool                  m_bIsOpen;
       uint32_t              m_iBaudrate;
       uint8_t               m_iDatabits;
index aa3625a275891ac777c92e4a8312ddd3d6398ec7..9b186657cf6f866a4133203dc41c101f872e521d 100644 (file)
@@ -69,7 +69,7 @@ namespace PLATFORM
         m_strError = "";
       }
 
-      int64_t Write(uint8_t* data, uint32_t len)
+      virtual int64_t Write(uint8_t* data, uint32_t len)
       {
         CLockObject lock(m_mutex);
         int iError(0);
@@ -78,7 +78,7 @@ namespace PLATFORM
         return iReturn;
       }
 
-      int32_t Read(uint8_t* data, uint32_t len, uint64_t iTimeoutMs = 0)
+      virtual int32_t Read(uint8_t* data, uint32_t len, uint64_t iTimeoutMs = 0)
       {
         CLockObject lock(m_mutex);
         int iError(0);
index 9800f946b2b0dac71ebbc5bdc7eb4e9727acae33..496dae7382213e5d7941071bb64381e27cdac94d 100644 (file)
@@ -1,4 +1,5 @@
 #pragma once
+#include "../os.h"
 #include <string>
 #include <stdint.h>
 #include <vector>
diff --git a/src/lib/platform/windows/os-socket.h b/src/lib/platform/windows/os-socket.h
new file mode 100644 (file)
index 0000000..bc6c08c
--- /dev/null
@@ -0,0 +1,60 @@
+#pragma once
+/*
+ * This file is part of the libCEC(R) library.
+ *
+ * libCEC(R) is Copyright (C) 2011 Pulse-Eight Limited.  All rights reserved.
+ * libCEC(R) is an original work, containing original code.
+ *
+ * libCEC(R) is a trademark of Pulse-Eight Limited.
+ *
+ * This program is dual-licensed; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ *
+ * Alternatively, you can license this library under a commercial license,
+ * please contact Pulse-Eight Licensing for more information.
+ *
+ * For more information contact:
+ * Pulse-Eight Licensing       <license@pulse-eight.com>
+ *     http://www.pulse-eight.com/
+ *     http://www.pulse-eight.net/
+ */
+
+#include "../os.h"
+#include "../util/timeutils.h"
+
+namespace PLATFORM
+{
+  inline void SocketClose(socket_t socket)
+  {
+    //TODO
+  }
+
+  inline void SocketSetBlocking(socket_t socket, bool bSetTo)
+  {
+    //TODO
+  }
+
+  inline int64_t SocketWrite(socket_t socket, int *iError, uint8_t* data, uint32_t len)
+  {
+    //TODO
+    return -1;
+  }
+
+  inline int32_t SocketRead(socket_t socket, int *iError, uint8_t* data, uint32_t len, uint64_t iTimeoutMs /*= 0*/)
+  {
+    // TODO
+    return -1;
+  }
+}
index ea00eaec441c618922c8a6eea6ed0fc6f7ec7d61..0a61c2e2d6d4089b2b39aa6a7525588c02b67839 100644 (file)
@@ -57,6 +57,8 @@ typedef unsigned __int64 uint64_t;
 
 #define snprintf _snprintf
 
+typedef SOCKET socket_t;
+
 #if defined(_MSC_VER)
 #pragma warning (push)
 #endif
index 22c65d76e6a4162d3bb7f026450afcb6b83a9afb..ade4fb214cc4714786dbb0b16828b2777c346f8c 100644 (file)
@@ -37,7 +37,7 @@
 using namespace std;
 using namespace PLATFORM;
 
-void FormatWindowsError(int iErrorCode, string &strMessage)
+void CSerialPort::FormatWindowsError(int iErrorCode, CStdString &strMessage)
 {
   if (iErrorCode != ERROR_SUCCESS)
   {
@@ -58,11 +58,6 @@ CSerialPort::CSerialPort(void) :
 {
 }
 
-CSerialPort::~CSerialPort(void)
-{
-  Close();
-}
-
 bool CSerialPort::Open(string name, uint32_t baudrate, uint8_t databits, uint8_t stopbits, uint8_t parity)
 {
   CStdString strComPath = "\\\\.\\" + name;
@@ -70,8 +65,8 @@ bool CSerialPort::Open(string name, uint32_t baudrate, uint8_t databits, uint8_t
   m_handle = CreateFile(strComPath.c_str(), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
   if (m_handle == INVALID_HANDLE_VALUE)
   {
-    m_error = "Unable to open COM port";
-    FormatWindowsError(GetLastError(), m_error);
+    m_strError = "Unable to open COM port";
+    FormatWindowsError(GetLastError(), m_strError);
     return false;
   }
 
@@ -82,20 +77,20 @@ bool CSerialPort::Open(string name, uint32_t baudrate, uint8_t databits, uint8_t
   {
     if (!SetCommConfig(m_handle, &commConfig,dwSize))
     {
-      m_error = "unable to set default config";
-      FormatWindowsError(GetLastError(), m_error);
+      m_strError = "unable to set default config";
+      FormatWindowsError(GetLastError(), m_strError);
     }
   }
   else
   {
-    m_error = "unable to get default config";
-    FormatWindowsError(GetLastError(), m_error);
+    m_strError = "unable to get default config";
+    FormatWindowsError(GetLastError(), m_strError);
   }
 
   if (!SetupComm(m_handle, 64, 64))
   {
-    m_error = "unable to set up the com port";
-    FormatWindowsError(GetLastError(), m_error);
+    m_strError = "unable to set up the com port";
+    FormatWindowsError(GetLastError(), m_strError);
   }
 
   m_iDatabits = databits;
@@ -103,16 +98,16 @@ bool CSerialPort::Open(string name, uint32_t baudrate, uint8_t databits, uint8_t
   m_iParity   = parity;
   if (!SetBaudRate(baudrate))
   {
-    m_error = "unable to set baud rate";
-    FormatWindowsError(GetLastError(), m_error);
+    m_strError = "unable to set baud rate";
+    FormatWindowsError(GetLastError(), m_strError);
     Close();
     return false;
   }
 
   if (!SetTimeouts(false))
   {
-    m_error = "unable to set timeouts";
-    FormatWindowsError(GetLastError(), m_error);
+    m_strError = "unable to set timeouts";
+    FormatWindowsError(GetLastError(), m_strError);
     Close();
     return false;
   }
@@ -129,8 +124,8 @@ bool CSerialPort::SetTimeouts(bool bBlocking)
   COMMTIMEOUTS cto;
   if (!GetCommTimeouts(m_handle, &cto))
   {
-    m_error = "GetCommTimeouts failed";
-    FormatWindowsError(GetLastError(), m_error);
+    m_strError = "GetCommTimeouts failed";
+    FormatWindowsError(GetLastError(), m_strError);
     return false;
   }
 
@@ -149,8 +144,8 @@ bool CSerialPort::SetTimeouts(bool bBlocking)
 
   if (!SetCommTimeouts(m_handle, &cto))
   {
-    m_error = "SetCommTimeouts failed";
-    FormatWindowsError(GetLastError(), m_error);
+    m_strError = "SetCommTimeouts failed";
+    FormatWindowsError(GetLastError(), m_strError);
     return false;
   }
 
@@ -176,8 +171,8 @@ int64_t CSerialPort::Write(uint8_t* data, uint32_t len)
 
   if (!WriteFile(m_handle, data, len, &iBytesWritten, NULL))
   {
-    m_error = "Error while writing to COM port";
-    FormatWindowsError(GetLastError(), m_error);
+    m_strError = "Error while writing to COM port";
+    FormatWindowsError(GetLastError(), m_strError);
     return -1;
   }
 
@@ -191,14 +186,14 @@ int32_t CSerialPort::Read(uint8_t* data, uint32_t len, uint64_t iTimeoutMs /* =
   DWORD iBytesRead = 0;
   if (m_handle == 0)
   {
-    m_error = "Error while reading from COM port: invalid handle";
+    m_strError = "Error while reading from COM port: invalid handle";
     return iReturn;
   }
 
   if(!ReadFile(m_handle, data, len, &iBytesRead, NULL) != 0)
   {
-    m_error = "unable to read from device";
-    FormatWindowsError(GetLastError(), m_error);
+    m_strError = "unable to read from device";
+    FormatWindowsError(GetLastError(), m_strError);
     iReturn = -1;
   }
   else
@@ -246,15 +241,15 @@ bool CSerialPort::SetBaudRate(uint32_t baudrate)
 
   if(!SetCommState(m_handle,&dcb))
   {
-    m_error = "SetCommState failed";
-    FormatWindowsError(GetLastError(), m_error);
+    m_strError = "SetCommState failed";
+    FormatWindowsError(GetLastError(), m_strError);
     return false;
   }
 
   return true;
 }
 
-bool CSerialPort::IsOpen()
+bool CSerialPort::IsOpen(void)
 {
   CLockObject lock(m_mutex);
   return m_bIsOpen;