platform: update to platform-1.0.8

Signed-off-by: Stephan Raue <stephan@openelec.tv>
This commit is contained in:
Stephan Raue 2015-05-12 20:30:24 +02:00
parent cefc742a7b
commit 5f090ea3f4
2 changed files with 1 additions and 200 deletions

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="platform"
PKG_VERSION="1.0.6"
PKG_VERSION="1.0.8"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -1,199 +0,0 @@
From 8ff719d94b664378f3ebb61166454eef7cb20c25 Mon Sep 17 00:00:00 2001
From: Stephan Raue <stephan@openelec.tv>
Date: Sat, 9 May 2015 17:13:25 +0200
Subject: [PATCH] readd sockets/cdevsocket.h, needed by IMX6 and TDA995x
---
CMakeLists.txt | 3 +-
src/posix/os-socket.h | 16 +++++++
src/posix/os-types.h | 2 +
src/sockets/cdevsocket.h | 117 +++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 137 insertions(+), 1 deletion(-)
create mode 100644 src/sockets/cdevsocket.h
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8164286..9f577b3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -56,7 +56,8 @@ ELSE(WIN32)
src/posix/os-types.h
DESTINATION include/platform/posix)
ENDIF(WIN32)
-install(FILES src/sockets/socket.h
+install(FILES src/sockets/cdevsocket.h
+ src/sockets/socket.h
src/sockets/tcp.h
DESTINATION include/platform/sockets)
install(FILES src/threads/atomics.h
diff --git a/src/posix/os-socket.h b/src/posix/os-socket.h
index 60c8507..05888c2 100644
--- a/src/posix/os-socket.h
+++ b/src/posix/os-socket.h
@@ -36,6 +36,7 @@
#include "../util/timeutils.h"
#include <stdio.h>
#include <fcntl.h>
+#include <sys/ioctl.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
@@ -164,8 +165,23 @@ namespace PLATFORM
return iBytesRead;
}
+
+ inline int SocketIoctl(socket_t socket, int *iError, int request, void* data)
+ {
+ if (socket == INVALID_SOCKET_VALUE)
+ {
+ *iError = EINVAL;
+ return -1;
+ }
+
+ int iReturn = ioctl(socket, request, data);
+ if (iReturn < 0)
+ *iError = errno;
+ return iReturn;
+ }
//@}
+
// TCP
//@{
inline void TcpSocketClose(tcp_socket_t socket)
diff --git a/src/posix/os-types.h b/src/posix/os-types.h
index 6134080..b48f330 100644
--- a/src/posix/os-types.h
+++ b/src/posix/os-types.h
@@ -61,6 +61,8 @@ typedef socket_t tcp_socket_t;
#define INVALID_SOCKET_VALUE (-1)
typedef socket_t serial_socket_t;
#define INVALID_SERIAL_SOCKET_VALUE (-1)
+typedef socket_t chardev_socket_t;
+#define INVALID_CHARDEV_SOCKET_VALUE (-1)
typedef long LONG;
#if !defined(__APPLE__)
diff --git a/src/sockets/cdevsocket.h b/src/sockets/cdevsocket.h
new file mode 100644
index 0000000..a5ac338
--- /dev/null
+++ b/src/sockets/cdevsocket.h
@@ -0,0 +1,117 @@
+#pragma once
+/*
+ * This file is part of the libCEC(R) library.
+ *
+ * libCEC(R) is Copyright (C) 2011-2013 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/buffer.h"
+
+#include <string>
+#include <stdint.h>
+
+#if !defined(__WINDOWS__)
+#include <termios.h>
+#endif
+
+#include "socket.h"
+
+namespace PLATFORM
+{
+ class CCDevSocket : public CCommonSocket<chardev_socket_t>
+ {
+ public:
+ CCDevSocket(const std::string &strName ) :
+ CCommonSocket<chardev_socket_t>(INVALID_CHARDEV_SOCKET_VALUE, strName)
+ #ifdef __WINDOWS__
+ ,m_iCurrentReadTimeout(MAXDWORD)
+ #endif
+ {}
+
+ virtual ~CCDevSocket(void)
+ {
+ Close();
+ }
+
+ virtual bool Open(uint64_t iTimeoutMs = 0)
+ {
+ (void)iTimeoutMs;
+
+ if (IsOpen())
+ return false;
+
+ m_socket = open(m_strName.c_str(), O_RDWR );
+
+ if (m_socket == INVALID_CHARDEV_SOCKET_VALUE)
+ {
+ m_strError = strerror(errno);
+ return false;
+ }
+
+ return true;
+ }
+
+ virtual void Close(void)
+ {
+ if (IsOpen())
+ {
+ SocketClose(m_socket);
+ m_socket = INVALID_CHARDEV_SOCKET_VALUE;
+ }
+ }
+
+ virtual void Shutdown(void)
+ {
+ SocketClose(m_socket);
+ }
+
+ virtual int Ioctl(int request, void* data)
+ {
+ return IsOpen() ? SocketIoctl(m_socket, &m_iError, request, data) : -1;
+ }
+
+ virtual ssize_t Write(void* data, size_t len)
+ {
+ return IsOpen() ? SocketWrite(m_socket, &m_iError, data, len) : -1;
+ }
+
+ virtual ssize_t Read(void* data, size_t len, uint64_t iTimeoutMs = 0)
+ {
+ return IsOpen() ? SocketRead(m_socket, &m_iError, data, len, iTimeoutMs) : -1;
+ }
+
+ virtual bool IsOpen(void)
+ {
+ return m_socket != INVALID_CHARDEV_SOCKET_VALUE;
+ }
+ };
+
+};
+