summaryrefslogtreecommitdiff
path: root/plugins/Variables/ac
diff options
context:
space:
mode:
authorKirill Volinsky <mataes2007@gmail.com>2012-05-18 22:02:50 +0000
committerKirill Volinsky <mataes2007@gmail.com>2012-05-18 22:02:50 +0000
commitf920ef497f3299ae24fe783ce03bdd93b419f764 (patch)
treebdaa9197c08d29ab141a6adfdd6cc0a68ddd3996 /plugins/Variables/ac
parent6c3b0571f0678da0512069869afaa284c054377e (diff)
plugins folders renaming
git-svn-id: http://svn.miranda-ng.org/main/trunk@60 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/Variables/ac')
-rw-r--r--plugins/Variables/ac/ac.h183
1 files changed, 183 insertions, 0 deletions
diff --git a/plugins/Variables/ac/ac.h b/plugins/Variables/ac/ac.h
new file mode 100644
index 0000000000..7d0790f32b
--- /dev/null
+++ b/plugins/Variables/ac/ac.h
@@ -0,0 +1,183 @@
+// AMIP public API
+#ifndef _AC_H_
+#define _AC_H_
+
+enum ac_StartMode {
+ AC_START_ALL = 0,
+ AC_START_CLIENT,
+ AC_START_SERVER,
+ AC_START_NONE
+};
+
+enum ac_ErrorCode {
+ AC_ERR_NOERROR = 0,
+ AC_ERR_CLIENTISNULL,
+ AC_ERR_EXCEPTION,
+ AC_ERR_CONNECTIONFAILED,
+ AC_ERR_SERVERNOTRUNNING
+};
+
+#define AC_BUFFER_SIZE 2048
+
+// flags for event listener
+#define AC_EVT_PLAY 0x0001
+#define AC_EVT_PAUSE 0x0002
+#define AC_EVT_STOP 0x0004
+#define AC_EVT_START 0x0008
+#define AC_EVT_EXIT 0x0010
+
+#define AC_EVT_TIMER 0x0020
+#define AC_EVT_MSG 0x0040
+
+#define AC_EVT_CHANGE 0x0080
+
+#define AC_EVT_PLCHANGE 0x0100
+#define AC_EVT_PLREADY 0x0200
+
+// doesn't include AC_EVT_TIMER, because it can be expensive and usually not necessary to use
+// doesn't include AC_EVT_MSG. It's delivered to the message callback function and is never delivered to
+// event callback function
+#define AC_EVT_ALL AC_EVT_PLAY | AC_EVT_PAUSE | AC_EVT_STOP | AC_EVT_START | AC_EVT_EXIT | AC_EVT_CHANGE | AC_EVT_PLCHANGE | AC_EVT_PLREADY
+
+typedef VOID (CALLBACK* AC_MSG_CALLBACK) (const char *);
+typedef VOID (CALLBACK* AC_EVT_CALLBACK) (int);
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+ // Initializes client part of the component. Parameters specify host and port client
+ // should connect to (where AMIP is running), connection timeout in milliseconds, number
+ // of seconds (dsec) to suspend connections for if failed to connect dcount times.
+ // returns 1 if client was initialized properly, 0 otherwise
+ int WINAPI ac_init_client(const char *host, int port, int timeout, int dsec, int dcount);
+
+ // Initializes and starts the server part of the component. Server part listens for
+ // incoming connections from AMIP, it receives messages and events on specified host and port.
+ // returns 1 if server was started successfully, 0 otherwise
+ int WINAPI ac_init_server(const char *host, int port);
+
+ // Alternative method to start services, differs from 2 specified above in the way
+ // where it gets the configuration data. Startup data is read from the ac.ini file.
+ // Don't use ac_init() together with ac_init_client() and ac_init_server()!
+ // Call to start services (AC_START_ALL to start both client and server)
+ // AC_START_CLIENT will start client only (you can query and control AMIP)
+ // AC_START_SERVER will start server only (you can accept song announcements from AMIP)
+ void WINAPI ac_init(int mode);
+
+ // Call when you finished working with AMIP (e.g. on exit)
+ void WINAPI ac_uninit();
+
+ // Useful if you need to uninit the client to init it later with different options
+ void WINAPI ac_uninit_client();
+
+ // Stops the server, you can start it again with different options later
+ // Subsequent calls to ac_uninit_client() and ac_stop_server() can be replaced with the
+ // single call to ac_uninit()
+ void WINAPI ac_stop_server();
+
+ // Passes command to AMIP. For the list of commands see AMIP Help.
+ // Remove '/dde mplug' prefix to get the real command, for instance
+ // in the help you see '/dde mplug announce preset 1' command, this
+ // function will accept 'announce preset 1' as the parameter
+ int WINAPI ac_exec(const char *cmd);
+
+ // Evaluates AMIP's variable and puts the result into the result buffer
+ // cmd can be var_<variable>, where variable is any of the AMIP variables
+ // without %, for instance %name becomes var_name. Also cfg_<parameter>
+ // variables are supported (cfg_enabled, cfg_rmienabled, etc.)
+ // Basically, all the $dde variables from help can be evaluated via this
+ // function ('$dde mplug format "%name"' becomes 'format "%name"')
+ // Warning: result buffer must have AC_BUFFER_SIZE capacity
+ int WINAPI ac_eval(const char *cmd, char *result);
+
+ // same as ac_eval but takes a format spec string and evaluates it all, the format
+ // spec may look like "%1 - %2 (%br~kbps)"
+ int WINAPI ac_format(const char *cmd, char *result);
+ // ac_exec and ac_eval return one of the AC_ERR_* codes
+ // if function succeeds, the return code is AC_ERR_NOERROR (0)
+ // if ac_eval fails, empty string is placed into the result buffer
+
+ // Registers callback function which will receive all messages from AMIP.
+ // Pass address of your function taking char* as an argument and it will
+ // be called every time AMIP has something to say you
+ void WINAPI ac_register_msg_callback(AC_MSG_CALLBACK);
+
+ // Event callback will accept events from AMIP if listener for events was added
+ void WINAPI ac_register_evt_callback(AC_EVT_CALLBACK);
+
+ // Adds listener to AMIP, AMIP will notify host:port about the events specified by flags
+ // until listener is removed or fail_count limit is reached. If notification fails
+ // fail_count times, AMIP automatically removes listener for the specified host:port.
+ // AMIP keeps listeners even between restarts (in plugin.ini file)
+ int WINAPI ac_add_event_listener(const char *host, int port, int timeout, UINT flags, UINT fail_count);
+
+ // You must unregister all listeners that you have registered before your application exits
+ int WINAPI ac_remove_event_listener(const char *host, int port);
+
+
+ // Ping server on the specified address and port
+ // returns true if there is AMIP server running
+ // returns false if server cannot be reached within the specified timeout (ms)
+ BOOL WINAPI ac_pingServer(const char *host, int port, int timeout);
+
+
+ // Playlist related functions:
+ // Gets playlist from AMIP and caches it, you should use this function every time playlist changes
+ // (AC_EVT_PLCHANGE event received) and before using any other playlist related functions.
+ // The correct usage sequence:
+ // 1. Register listener for AC_EVT_PLCHANGE and AC_EVT_PLREADY events
+ // 2. When you receive AC_EVT_PLCHANGE event via callback or upon first usage you must re-index playlist
+ // using ac_exec("reindexq") function call (AMIP builds playlist cache)
+ // 3. When playlist is re-indexed, you will receive AC_EVT_PLREADY event, only at this moment you should
+ // call ac_get_pl() function (this function gets cached playlist from AMIP)
+ // Return code is the same as for ac_exec and ac_eval functions, see ac_ErrorCode enum
+ int WINAPI ac_get_pl();
+
+ // Returns the size of playlist cached by client. You can compare it with the size of real playlist, the
+ // size of playlist cached by AMIP and do re-index and ac_get_pl to be in sync if necessary
+ int WINAPI ac_get_plsize();
+
+ // Returns 1 if title is not NULL and within playlist bounds, 0 otherwise
+ // Title with the specified zero-based idx is copied to buff. buff must have at least AC_BUFFER_SIZE size
+ // Make sure to prepare playlist first, see ac_get_pl() function comments, use ac_get_plsize() to determine
+ // playlist size
+ int WINAPI ac_get_title(UINT idx, char *buff);
+
+
+ // configuring Client
+ // AMIP port client will try to connect to (default 60333)
+ void WINAPI ac_setDestPort(int port);
+
+ // AMIP host client will try to connect to (default 127.0.0.1)
+ void WINAPI ac_setDestHost(const char *host);
+
+ // Client timeout
+ void WINAPI ac_setTimeout(int ms);
+
+ // Source port the client will listen for AMIP commands on (default 60334)
+ void WINAPI ac_setSrcPort(int port);
+
+ // Source host interface which will accept AMIP connections (default 127.0.0.1)
+ void WINAPI ac_setSrcHost(const char *host);
+
+ // get configuration
+ int WINAPI ac_getSrcPort();
+ int WINAPI ac_getDestPort();
+ void WINAPI ac_getSrcHost(char *out_host);
+ void WINAPI ac_getDestHost(char *out_host);
+
+ // Reload the configuration and restart services
+ void WINAPI ac_rehash();
+
+ // Returns the major part of API version (for ac 1.2 will return 1)
+ int WINAPI ac_version_major();
+
+ // Returns the mainor part of API version (for ac 1.2 will return 2)
+ int WINAPI ac_version_minor();
+
+#ifdef __cplusplus
+}
+#endif /*__cplusplus*/
+
+#endif /*_AC_H_*/