From 1e8a4b50adeb773e946bc4101d4fb6e983f6c160 Mon Sep 17 00:00:00 2001 From: user Date: Wed, 9 Jul 2025 18:43:35 -0400 Subject: refactor --- mpdws.h | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 mpdws.h (limited to 'mpdws.h') diff --git a/mpdws.h b/mpdws.h new file mode 100644 index 0000000..7802d0c --- /dev/null +++ b/mpdws.h @@ -0,0 +1,51 @@ +#ifndef MPD_WS_H +#define MPD_WS_H + +#include +#include + +/* Configuration constants */ +#define MPD_HOST "localhost" +#define MPD_PORT 6600 +#define WEBSOCKET_PORT 8765 +#define MAX_MESSAGE_SIZE 1024 +#define RECONNECT_INTERVAL_SEC 5 +#define SELECT_TIMEOUT_SEC 1 + +/* Client session structure */ +struct client_session { + struct lws *wsi; + struct client_session *next; +}; + +/* Global state structure */ +struct mpd_ws_server { + struct lws_context *ws_context; + struct mpd_connection *mpd_conn; + struct client_session *clients; + char current_song[MAX_MESSAGE_SIZE]; + char previous_song[MAX_MESSAGE_SIZE]; + volatile int running; + int mpd_idle_active; +}; + +/* Function declarations */ +int mpd_ws_init(struct mpd_ws_server *server); +void mpd_ws_run(struct mpd_ws_server *server); +void mpd_ws_cleanup(struct mpd_ws_server *server); +void mpd_ws_stop(struct mpd_ws_server *server); + +/* MPD functions */ +int mpd_ws_connect(struct mpd_ws_server *server); +void mpd_ws_disconnect(struct mpd_ws_server *server); +int mpd_ws_is_connected(struct mpd_ws_server *server); +void mpd_ws_update_song(struct mpd_ws_server *server); +int mpd_ws_start_idle(struct mpd_ws_server *server); +void mpd_ws_process_idle(struct mpd_ws_server *server); + +/* Client management */ +void client_add(struct mpd_ws_server *server, struct lws *wsi); +void client_remove(struct mpd_ws_server *server, struct lws *wsi); +void client_broadcast(struct mpd_ws_server *server, const char *message); + +#endif /* MPD_WS_H */ -- cgit v1.2.3