diff options
| author | user <user@mail.com> | 2025-07-09 18:43:35 -0400 |
|---|---|---|
| committer | user <user@mail.com> | 2025-07-09 18:44:18 -0400 |
| commit | 1e8a4b50adeb773e946bc4101d4fb6e983f6c160 (patch) | |
| tree | 1d66cfbbaf6084006c0be13079bca6754ea271c5 /mpdws.h | |
| parent | 54b2e7496154d6e0f5926a2bb4c87c41a0475d50 (diff) | |
refactor
Diffstat (limited to 'mpdws.h')
| -rw-r--r-- | mpdws.h | 51 |
1 files changed, 51 insertions, 0 deletions
@@ -0,0 +1,51 @@ +#ifndef MPD_WS_H +#define MPD_WS_H + +#include <libwebsockets.h> +#include <mpd/client.h> + +/* 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 */ |
