#ifndef SPEAKER_PROTOCOL_H
#define SPEAKER_PROTOCOL_H
+#include "byte-order.h"
+
/** @brief A message from the main server to the speaker, or vica versa */
struct speaker_message {
/** @brief Message type
* - @ref SM_FINISHED
* - @ref SM_PLAYING
* - @ref SM_UNKNOWN
+ * - @ref SM_ARRIVED
*/
int type;
/** @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. */
/** @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,