chiark / gitweb /
doxygen + file naming
authorrjk@greenend.org.uk <>
Mon, 24 Sep 2007 11:17:42 +0000 (12:17 +0100)
committerrjk@greenend.org.uk <>
Mon, 24 Sep 2007 11:17:42 +0000 (12:17 +0100)
lib/Makefile.am
lib/speaker-protocol.c [moved from lib/speaker.c with 79% similarity]
lib/speaker-protocol.h [new file with mode: 0644]
lib/speaker.h [deleted file]
server/play.c
server/speaker.c

index 4193315498f0b2ad71167cdabdff12bc2fbf9aa8..f79435baaf794dcd55d20d3cde968c5d85de710a 100644 (file)
@@ -54,7 +54,7 @@ libdisorder_a_SOURCES=charset.c charset.h             \
        selection.c selection.h                         \
        signame.c signame.h                             \
        sink.c sink.h                                   \
-       speaker.c speaker.h                             \
+       speaker-protocol.c speaker-protocol.h           \
        split.c split.h                                 \
        syscalls.c syscalls.h                           \
        types.h                                         \
similarity index 79%
rename from lib/speaker.c
rename to lib/speaker-protocol.c
index 65bb87df6aa886bac73db74e7f5489114fa0385a..a362b9030b4b73e361d21e8bf87378ebf0474422 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * This file is part of DisOrder.
- * Copyright (C) 2005 Richard Kettlewell
+ * Copyright (C) 2005, 2007 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
@@ -17,6 +17,9 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
  * USA
  */
+/** @file lib/speaker-protocol.c
+ * @brief Speaker/server protocol support
+ */
 
 #include <config.h>
 #include "types.h"
 #include <errno.h>
 #include <sys/uio.h>
 
-#include "speaker.h"
+#include "speaker-protocol.h"
 #include "log.h"
 
+/** @brief Send a speaker messages
+ * @param fd File descriptor to send to
+ * @param sm Pointer to message
+ * @param datafd File descriptor to pass with message or -1
+ */
 void speaker_send(int fd, const struct speaker_message *sm, int datafd) {
   struct msghdr m;
   struct iovec iov;
@@ -59,6 +67,15 @@ void speaker_send(int fd, const struct speaker_message *sm, int datafd) {
     fatal(errno, "sendmsg");
 }
 
+/** @brief Receive a speaker message
+ * @param fd File descriptor to read from
+ * @param sm Where to store received message
+ * @param datafd Where to store received file descriptor or NULL
+ * @return -ve on @c EAGAIN, 0 at EOF, +ve on success
+ *
+ * If @p datafd is NULL but a file descriptor is nonetheless received,
+ * the process is terminated with an error.
+ */
 int speaker_recv(int fd, struct speaker_message *sm, int *datafd) {
   struct msghdr m;
   struct iovec iov;
diff --git a/lib/speaker-protocol.h b/lib/speaker-protocol.h
new file mode 100644 (file)
index 0000000..2002d0b
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * This file is part of DisOrder
+ * Copyright (C) 2005, 2007 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
+ * 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
+ */
+/** @file lib/speaker-protocol.c
+ * @brief Speaker/server protocol support
+ *
+ * This file defines the protocol by which the main server and the speaker
+ * process communicate.
+ */
+
+#ifndef SPEAKER_H
+#define SPEAKER_H
+
+/** @brief A message from the main server to the speaker, or vica versa */
+struct speaker_message {
+  /** @brief Message type
+   *
+   * Messges from the main server:
+   * - @ref SM_PREPARE
+   * - @ref SM_PLAY
+   * - @ref SM_PAUSE
+   * - @ref SM_RESUME
+   * - @ref SM_CANCEL
+   * - @ref SM_RELOAD
+   *
+   * Messages from the speaker:
+   * - @ref SM_PAUSED
+   * - @ref SM_FINISHED
+   * - @ref SM_PLAYING
+   */
+  int type;
+
+  /** @brief Message-specific data */
+  long data;
+
+  /** @brief Track ID (including 0 terminator) */
+  char id[24];                          /* ID including terminator */
+};
+
+/* messages from the main DisOrder server */
+/** @brief Prepare track @c id
+ *
+ * This message will include a file descriptor.  The speaker starts buffering
+ * audio data read from this file against the time that it must be played.
+ */
+#define SM_PREPARE 0
+
+/** @brief Play track @c id
+ *
+ * The track must already have been prepared.
+ */
+#define SM_PLAY 1
+
+/** @brief Pause current track */
+#define SM_PAUSE 2
+
+/** @brief Resume current track */
+#define SM_RESUME 3
+
+/** @brief Cancel track @c id */
+#define SM_CANCEL 4
+
+/** @brief Reload configuration */
+#define SM_RELOAD 5
+
+/* messages from the speaker */
+/** @brief Paused track @c id, @c data seconds in
+ *
+ * There is no @c SM_RESUMED, instead @ref SM_PLAYING is sent after the track
+ * starts playing again.
+ */
+#define SM_PAUSED 128
+
+/** @brief Finished playing track @c id */
+#define SM_FINISHED 129
+
+/** @brief Currently track @c id, @c data seconds in
+ *
+ * This is sent from time to time while a track is playing.
+ */
+#define SM_PLAYING 131
+
+void speaker_send(int fd, const struct speaker_message *sm, int datafd);
+/* Send a message.  DATAFD is passed too if not -1.  Does not close DATAFD. */
+
+int speaker_recv(int fd, struct speaker_message *sm, int *datafd);
+/* Receive a message.  If DATAFD is not null then can receive an FD.  Return 0
+ * on EOF, +ve if a message is read, -1 on EAGAIN, terminates on any other
+ * error. */
+
+#endif /* SPEAKER_H */
+
+/*
+Local Variables:
+c-basic-offset:2
+comment-column:40
+fill-column:79
+indent-tabs-mode:nil
+End:
+*/
diff --git a/lib/speaker.h b/lib/speaker.h
deleted file mode 100644 (file)
index a2da3a5..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * This file is part of DisOrder
- * Copyright (C) 2005 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
- * 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
- */
-
-#ifndef SPEAKER_H
-#define SPEAKER_H
-
-struct speaker_message {
-  int type;                             /* message type */
-  long data;                            /* whatever */
-  char id[24];                          /* ID including terminator */
-};
-
-/* messages from the main DisOrder server */
-#define SM_PREPARE 0                    /* prepare ID */
-#define SM_PLAY 1                       /* play ID */
-#define SM_PAUSE 2                      /* pause current track */
-#define SM_RESUME 3                     /* resume current track */
-#define SM_CANCEL 4                     /* cancel ID */
-#define SM_RELOAD 5                     /* reload configuration */
-
-/* messages from the speaker */
-#define SM_PAUSED 128                   /* paused ID, DATA seconds in */
-#define SM_FINISHED 129                 /* finished ID */
-#define SM_PLAYING 131                  /* playing ID, DATA seconds in */
-
-void speaker_send(int fd, const struct speaker_message *sm, int datafd);
-/* Send a message.  DATAFD is passed too if not -1.  Does not close DATAFD. */
-
-int speaker_recv(int fd, struct speaker_message *sm, int *datafd);
-/* Receive a message.  If DATAFD is not null then can receive an FD.  Return 0
- * on EOF, +ve if a message is read, -1 on EAGAIN, terminates on any other
- * error. */
-
-#endif /* SPEAKER_H */
-
-/*
-Local Variables:
-c-basic-offset:2
-comment-column:40
-fill-column:79
-indent-tabs-mode:nil
-End:
-*/
index e8df3e8407a039d61f55b5d8aedb9d020679bd65..94567c43b12f3e5c5c4369d6fc61b7f34b675d08 100644 (file)
@@ -47,7 +47,7 @@
 #include "eventlog.h"
 #include "logfd.h"
 #include "syscalls.h"
-#include "speaker.h"
+#include "speaker-protocol.h"
 #include "disorder.h"
 #include "signame.h"
 #include "hash.h"
index 2d87e273de51c6199bb8aeae67e3f08ed5616b4f..2114db49aeca66671bcacb5b0feaefcecaeb143e 100644 (file)
@@ -82,7 +82,7 @@
 #include "log.h"
 #include "defs.h"
 #include "mem.h"
-#include "speaker.h"
+#include "speaker-protocol.h"
 #include "user.h"
 #include "addr.h"
 #include "timeval.h"