diff options
author | Calvin Morrison <calvin@fastmailteam.com> | 2022-07-27 20:58:28 -0400 |
---|---|---|
committer | Calvin Morrison <calvin@fastmailteam.com> | 2022-07-27 20:58:28 -0400 |
commit | bcd8da8b1a3d02a90b3c9c8ca73d8b26760bb219 (patch) | |
tree | a89057557b9076306864428ff542c672b5ce7eb4 /moc_library.h | |
parent | d210af2268c29420983cdd6937affc7a2d3f5b47 (diff) |
libmoc
our previous attempt ran into issues where we have two loops, a GUI loop and the MOC loop.
I rewrote this into lib_moc which has it's own thread that manages the MOC socket connection
and exposes the interface to a client program via a moc object. all you need to do is call
moc_init();
Pretty cool, still runs into issues regarding autoconnect and some other problems.
Diffstat (limited to 'moc_library.h')
-rw-r--r-- | moc_library.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/moc_library.h b/moc_library.h new file mode 100644 index 0000000..60a9c09 --- /dev/null +++ b/moc_library.h @@ -0,0 +1,47 @@ +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> //Header file for sleep(). man 3 sleep for details. +#include <errno.h> + +#include <pthread.h> +#include <sys/socket.h> +#include <sys/un.h> + + +/* Flags for the info decoder function. */ +enum tags_select +{ + TAGS_COMMENTS = 0x01, /* artist, title, etc. */ + TAGS_TIME = 0x02 /* time of the file. */ +}; + +enum moc_state { + STOPPED, + PLAYING, + PAUSED +}; + +enum moc_status { + INITIALIZING, + CONNECTED, + FAILED_TO_CONNECT, + ERROR +}; + +struct moc { + pthread_mutex_t lock; + enum moc_status status; + enum moc_state state; + + char *filename; + char *title; + char *album; + char *artist; + int track; + int time; + int filled; +}; + +extern const char * moc_str_state(enum moc_state s); +extern struct moc * moc_init(); + |