chiark
/
gitweb
/
~mdw
/
disorder
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of git.distorted.org.uk:~mdw/publish/public-git/disorder
[disorder]
/
lib
/
speaker-protocol.h
diff --git
a/lib/speaker-protocol.h
b/lib/speaker-protocol.h
index bd80e7d0249f45363d54b4a0c1eda0eeae3fd857..4a8d3aa643c1ecbc6b9864173d4b3c35af5a7b85 100644
(file)
--- a/
lib/speaker-protocol.h
+++ b/
lib/speaker-protocol.h
@@
-1,6
+1,6
@@
/*
* This file is part of DisOrder
/*
* This file is part of DisOrder
- * Copyright (C) 2005, 2007, 2008 Richard Kettlewell
+ * Copyright (C) 2005, 2007, 2008
, 2013
Richard Kettlewell
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@
-25,30
+25,43
@@
#ifndef SPEAKER_PROTOCOL_H
#define SPEAKER_PROTOCOL_H
#ifndef SPEAKER_PROTOCOL_H
#define SPEAKER_PROTOCOL_H
+#include "byte-order.h"
+#if HAVE_NETINET_IN_H
+# include <netinet/in.h>
+#endif
+
/** @brief A message from the main server to the speaker, or vica versa */
struct speaker_message {
/** @brief Message type
*
/** @brief A message from the main server to the speaker, or vica versa */
struct speaker_message {
/** @brief Message type
*
- * Messges from the main server:
+ * Mess
a
ges from the main server:
* - @ref SM_PLAY
* - @ref SM_PAUSE
* - @ref SM_RESUME
* - @ref SM_CANCEL
* - @ref SM_RELOAD
* - @ref SM_PLAY
* - @ref SM_PAUSE
* - @ref SM_RESUME
* - @ref SM_CANCEL
* - @ref SM_RELOAD
+ * - @ref SM_RTP_REQUEST
+ * - @ref SM_RTP_CANCEL
*
* Messages from the speaker:
* - @ref SM_PAUSED
* - @ref SM_FINISHED
* - @ref SM_PLAYING
* - @ref SM_UNKNOWN
*
* Messages from the speaker:
* - @ref SM_PAUSED
* - @ref SM_FINISHED
* - @ref SM_PLAYING
* - @ref SM_UNKNOWN
+ * - @ref SM_ARRIVED
*/
int type;
/** @brief Message-specific data */
long data;
*/
int type;
/** @brief Message-specific data */
long data;
- /** @brief Track ID (including 0 terminator) */
- char id[24]; /* ID including terminator */
+ union {
+ /** @brief Track ID (including 0 terminator) */
+ char id[24]; /* ID including terminator */
+
+ /** @brief An IP address (for @ref SM_RTP_REQUEST and @ref SM_RTP_CANCEL) */
+ struct sockaddr_storage address;
+ } u;
};
/* messages from the main DisOrder server */
};
/* messages from the main DisOrder server */
@@
-71,6
+84,12
@@
struct speaker_message {
/** @brief Reload configuration */
#define SM_RELOAD 5
/** @brief Reload configuration */
#define SM_RELOAD 5
+/** @brief Reload configuration */
+#define SM_RTP_REQUEST 6
+
+/** @brief Reload configuration */
+#define SM_RTP_CANCEL 7
+
/* messages from the speaker */
/** @brief Paused track @c id, @c data seconds in
*
/* messages from the speaker */
/** @brief Paused track @c id, @c data seconds in
*
@@
-100,6
+119,9
@@
struct speaker_message {
/** @brief Cancelled track @c id which wasn't playing */
#define SM_STILLBORN 133
/** @brief Cancelled track @c id which wasn't playing */
#define SM_STILLBORN 133
+/** @brief A connection for track @c id arrived */
+#define SM_ARRIVED 134
+
void speaker_send(int fd, const struct speaker_message *sm);
/* Send a message. */
void speaker_send(int fd, const struct speaker_message *sm);
/* Send a message. */
@@
-123,13
+145,6
@@
struct stream_header {
/** @brief Endianness */
uint8_t endian;
/** @brief Endianness */
uint8_t endian;
-#define ENDIAN_BIG 1
-#define ENDIAN_LITTLE 2
-#ifdef WORDS_BIGENDIAN
-# define ENDIAN_NATIVE ENDIAN_BIG
-#else
-# define ENDIAN_NATIVE ENDIAN_LITTLE
-#endif
} attribute((packed));
static inline int formats_equal(const struct stream_header *a,
} attribute((packed));
static inline int formats_equal(const struct stream_header *a,