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 */