summaryrefslogtreecommitdiff
path: root/Source/DirectFB/lib/voodoo/play.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/DirectFB/lib/voodoo/play.h')
-rwxr-xr-xSource/DirectFB/lib/voodoo/play.h146
1 files changed, 146 insertions, 0 deletions
diff --git a/Source/DirectFB/lib/voodoo/play.h b/Source/DirectFB/lib/voodoo/play.h
new file mode 100755
index 0000000..1dc50df
--- /dev/null
+++ b/Source/DirectFB/lib/voodoo/play.h
@@ -0,0 +1,146 @@
+/*
+ (c) Copyright 2001-2007 The DirectFB Organization (directfb.org)
+ (c) Copyright 2000-2004 Convergence (integrated media) GmbH
+
+ All rights reserved.
+
+ Written by Denis Oliver Kropp <dok@directfb.org>,
+ Andreas Hundt <andi@fischlustig.de>,
+ Sven Neumann <neo@directfb.org>,
+ Ville Syrjälä <syrjala@sci.fi> and
+ Claudio Ciccani <klan@users.sf.net>.
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the
+ Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef __VOODOO__PLAY_H__
+#define __VOODOO__PLAY_H__
+
+#include <voodoo/types.h>
+
+
+#define VOODOO_PLAY_VERSION_FIXED_SIZE 32
+
+#define VOODOO_PLAYER_NAME_LENGTH 96
+
+#define VOODOO_PLAYER_VENDOR_LENGTH 96
+#define VOODOO_PLAYER_MODEL_LENGTH 96
+
+
+#define VOODOO_LINK_PORT 8676 // 'V' 'L'
+
+
+typedef enum {
+ VPVF_NONE = 0x00000000,
+
+ VPVF_LITTLE_ENDIAN = 0x00000001, /* Always set, no big endian support for now */
+ VPVF_32BIT_SERIALS = 0x00000002, /* Using 32bit message serials, always set */
+
+ VPVF_ALL = 0x00000007
+} VoodooPlayVersionFlags;
+
+typedef struct {
+ u8 v[4]; /* flags, major, minor, micro */
+} VoodooPlayVersion;
+
+
+typedef enum {
+ VPIF_NONE = 0x00000000,
+
+ VPIF_LEVEL2 = 0x00000001,
+ VPIF_LINK = 0x00000002, /* Supports new VoodooLink protocol */
+
+ VPIF_ALL = 0x00000003
+} VoodooPlayInfoFlags;
+
+typedef struct {
+ VoodooPlayInfoFlags flags;
+
+ u8 uuid[16];
+
+ char name[VOODOO_PLAYER_NAME_LENGTH]; /* "My Philips TV" */
+
+ char vendor[VOODOO_PLAYER_VENDOR_LENGTH]; /* "Philips Consumer Lifestyle" */
+ char model[VOODOO_PLAYER_MODEL_LENGTH]; /* "32PFL9604H/10" */
+} VoodooPlayInfo;
+
+
+typedef enum {
+ VPMT_INVALID,
+
+ VPMT_DISCOVER,
+ VPMT_SENDINFO,
+} VoodooPlayMessageType;
+
+
+
+/*
+
+ One play message on a new connection from both sides.
+ Both sides having received the other side's info know if the connection is to be closed or can succeed.
+
+ Game about endianness conversion: both sides randomly send 0 or 1 as part of the info,
+ if both are equal, then server converts, otherwise client
+*/
+
+typedef struct {
+ /* Version information first in structure, fixed size (union!) */
+ union {
+ char __fixed[VOODOO_PLAY_VERSION_FIXED_SIZE];
+
+
+ VoodooPlayVersion version; /* (1.0, ...) */
+ };
+
+ VoodooPlayMessageType type;
+
+ union {
+ VoodooPlayInfo info; /* DISCOVER, SENDINFO */
+ };
+} VoodooPlayMessage;
+
+
+typedef DirectEnumerationResult (*VoodooPlayerCallback)( void *ctx,
+ const VoodooPlayInfo *info,
+ const VoodooPlayVersion *version,
+ const char *address,
+ unsigned int ms_since_last_seen );
+
+
+DirectResult voodoo_player_create ( const VoodooPlayInfo *info,
+ VoodooPlayer **ret_player );
+
+DirectResult voodoo_player_destroy ( VoodooPlayer *player );
+
+DirectResult voodoo_player_broadcast ( VoodooPlayer *player );
+
+DirectResult voodoo_player_lookup ( VoodooPlayer *player,
+ const u8 uuid[16],
+ VoodooPlayInfo *ret_info,
+ char *ret_addr,
+ int max_addr );
+
+DirectResult voodoo_player_lookup_by_address( VoodooPlayer *player,
+ const char *addr,
+ VoodooPlayInfo *ret_info );
+
+DirectResult voodoo_player_enumerate ( VoodooPlayer *player,
+ VoodooPlayerCallback callback,
+ void *ctx );
+
+
+#endif
+