mpdws

websocket "now playing:" broadcast mpd hook
Download | Log | Files | Refs | README | LICENSE

mpdws.h (1501B)


      1 #ifndef MPD_WS_H
      2 #define MPD_WS_H
      3 
      4 #include <libwebsockets.h>
      5 #include <mpd/client.h>
      6 
      7 /* Configuration constants */
      8 #define MPD_HOST "localhost"
      9 #define MPD_PORT 6600
     10 #define WEBSOCKET_PORT 8765
     11 #define MAX_MESSAGE_SIZE 1024
     12 #define RECONNECT_INTERVAL_SEC 5
     13 #define SELECT_TIMEOUT_SEC 1
     14 
     15 /* Client session structure */
     16 struct client_session {
     17   struct lws *wsi;
     18   struct client_session *next;
     19 };
     20 
     21 /* Global state structure */
     22 struct mpd_ws_server {
     23   struct lws_context *ws_context;
     24   struct mpd_connection *mpd_conn;
     25   struct client_session *clients;
     26   char current_song[MAX_MESSAGE_SIZE];
     27   char previous_song[MAX_MESSAGE_SIZE];
     28   volatile int running;
     29   int mpd_idle_active;
     30 };
     31 
     32 /* Function declarations */
     33 int mpd_ws_init(struct mpd_ws_server *server);
     34 void mpd_ws_run(struct mpd_ws_server *server);
     35 void mpd_ws_cleanup(struct mpd_ws_server *server);
     36 void mpd_ws_stop(struct mpd_ws_server *server);
     37 
     38 /* MPD functions */
     39 int mpd_ws_connect(struct mpd_ws_server *server);
     40 void mpd_ws_disconnect(struct mpd_ws_server *server);
     41 int mpd_ws_is_connected(struct mpd_ws_server *server);
     42 void mpd_ws_update_song(struct mpd_ws_server *server);
     43 int mpd_ws_start_idle(struct mpd_ws_server *server);
     44 void mpd_ws_process_idle(struct mpd_ws_server *server);
     45 
     46 /* Client management */
     47 void client_add(struct mpd_ws_server *server, struct lws *wsi);
     48 void client_remove(struct mpd_ws_server *server, struct lws *wsi);
     49 void client_broadcast(struct mpd_ws_server *server, const char *message);
     50 
     51 #endif /* MPD_WS_H */