diff --git a/common/JackAPI.cpp b/common/JackAPI.cpp index a2e79314..afc595f8 100644 --- a/common/JackAPI.cpp +++ b/common/JackAPI.cpp @@ -26,6 +26,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "JackGlobals.h" #include "JackTime.h" #include "JackPortType.h" +#include "JackMetadata.h" #include using namespace Jack; @@ -38,6 +39,13 @@ extern "C" typedef void (*print_function)(const char*); typedef void *(*thread_routine)(void*); + const char* JACK_METADATA_PRETTY_NAME = "http://jackaudio.org/metadata/pretty-name"; + const char* JACK_METADATA_HARDWARE = "http://jackaudio.org/metadata/hardware"; + const char* JACK_METADATA_CONNECTED = "http://jackaudio.org/metadata/connected"; + const char* JACK_METADATA_PORT_GROUP = "http://jackaudio.org/metadata/port-group"; + const char* JACK_METADATA_ICON_SMALL = "http://jackaudio.org/metadata/icon-small"; + const char* JACK_METADATA_ICON_LARGE = "http://jackaudio.org/metadata/icon-large"; + LIB_EXPORT void jack_get_version( @@ -263,6 +271,26 @@ extern "C" LIB_EXPORT void jack_session_commands_free(jack_session_command_t *cmds); LIB_EXPORT int jack_client_has_session_callback(jack_client_t *client, const char* client_name); + LIB_EXPORT int jack_set_property(jack_client_t*, jack_uuid_t subject, const char* key, const char* value, const char* type); + LIB_EXPORT int jack_get_property(jack_uuid_t subject, const char* key, char** value, char** type); + LIB_EXPORT void jack_free_description(jack_description_t* desc, int free_description_itself); + LIB_EXPORT int jack_get_properties(jack_uuid_t subject, jack_description_t* desc); + LIB_EXPORT int jack_get_all_properties(jack_description_t** descs); + LIB_EXPORT int jack_remove_property(jack_client_t* client, jack_uuid_t subject, const char* key); + LIB_EXPORT int jack_remove_properties(jack_client_t* client, jack_uuid_t subject); + LIB_EXPORT int jack_remove_all_properties(jack_client_t* client); + LIB_EXPORT int jack_set_property_change_callback(jack_client_t* client, JackPropertyChangeCallback callback, void* arg); + + LIB_EXPORT jack_uuid_t jack_client_uuid_generate(); + LIB_EXPORT jack_uuid_t jack_port_uuid_generate(uint32_t port_id); + LIB_EXPORT uint32_t jack_uuid_to_index(jack_uuid_t); + LIB_EXPORT int jack_uuid_compare(jack_uuid_t, jack_uuid_t); + LIB_EXPORT void jack_uuid_copy(jack_uuid_t* dst, jack_uuid_t src); + LIB_EXPORT void jack_uuid_clear(jack_uuid_t*); + LIB_EXPORT int jack_uuid_parse(const char* buf, jack_uuid_t*); + LIB_EXPORT void jack_uuid_unparse(jack_uuid_t, char buf[JACK_UUID_STRING_SIZE]); + LIB_EXPORT int jack_uuid_empty(jack_uuid_t); + #ifdef __cplusplus } #endif @@ -2031,3 +2059,89 @@ LIB_EXPORT int jack_client_has_session_callback(jack_client_t* ext_client, const return client->ClientHasSessionCallback(client_name); } } + +LIB_EXPORT int jack_set_property(jack_client_t*, jack_uuid_t, const char*, const char*, const char*) +{ + return -1; +} + +LIB_EXPORT int jack_get_property(jack_uuid_t, const char*, char**, char**) +{ + return -1; +} + +LIB_EXPORT void jack_free_description(jack_description_t*, int) +{ +} + +LIB_EXPORT int jack_get_properties(jack_uuid_t, jack_description_t*) +{ + return -1; +} + +LIB_EXPORT int jack_get_all_properties(jack_description_t**) +{ + return -1; +} + +LIB_EXPORT int jack_remove_property(jack_client_t*, jack_uuid_t, const char*) +{ + return -1; +} + +LIB_EXPORT int jack_remove_properties(jack_client_t*, jack_uuid_t) +{ + return -1; +} + +LIB_EXPORT int jack_remove_all_properties(jack_client_t*) +{ + return -1; +} + +LIB_EXPORT int jack_set_property_change_callback(jack_client_t*, JackPropertyChangeCallback, void*) +{ + return -1; +} + +LIB_EXPORT jack_uuid_t jack_client_uuid_generate() +{ + return 0; +} + +LIB_EXPORT jack_uuid_t jack_port_uuid_generate(uint32_t) +{ + return 0; +} + +LIB_EXPORT uint32_t jack_uuid_to_index(jack_uuid_t) +{ + return 0; +} + +LIB_EXPORT int jack_uuid_compare(jack_uuid_t, jack_uuid_t) +{ + return 0; +} + +LIB_EXPORT void jack_uuid_copy(jack_uuid_t*, jack_uuid_t) +{ +} + +LIB_EXPORT void jack_uuid_clear(jack_uuid_t*) +{ +} + +LIB_EXPORT int jack_uuid_parse(const char*, jack_uuid_t*) +{ + return 0; +} + +LIB_EXPORT void jack_uuid_unparse(jack_uuid_t, char buf[JACK_UUID_STRING_SIZE]) +{ +} + +LIB_EXPORT int jack_uuid_empty(jack_uuid_t) +{ + return 0; +} diff --git a/common/JackConstants.h b/common/JackConstants.h index 98d031a4..4f538807 100644 --- a/common/JackConstants.h +++ b/common/JackConstants.h @@ -34,7 +34,7 @@ #define JACK_SERVER_NAME_SIZE 256 #define JACK_CLIENT_NAME_SIZE 64 #define JACK_MESSAGE_SIZE 256 -#define JACK_UUID_SIZE 32 +#define JACK_UUID_SIZE 36 // to match jack1 and uuid.h #define JACK_SESSION_COMMAND_SIZE 256 #define SYNC_MAX_NAME_SIZE 256 diff --git a/common/JackMetadata.h b/common/JackMetadata.h new file mode 100644 index 00000000..41c0bb2c --- /dev/null +++ b/common/JackMetadata.h @@ -0,0 +1,63 @@ +/* + Copyright (C) 2011 David Robillard + Copyright (C) 2013 Paul Davis + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or (at + your option) any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#ifndef __jack_metadata_int_h__ +#define __jack_metadata_int_h__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + const char* key; + const char* data; + const char* type; +} jack_property_t; + +typedef struct { + jack_uuid_t subject; + uint32_t property_cnt; + jack_property_t* properties; + uint32_t property_size; +} jack_description_t; + +typedef enum { + PropertyCreated, + PropertyChanged, + PropertyDeleted +} jack_property_change_t; + +typedef void (*JackPropertyChangeCallback)(jack_uuid_t subject, + const char* key, + jack_property_change_t change, + void* arg); + +extern const char* JACK_METADATA_PRETTY_NAME; +extern const char* JACK_METADATA_HARDWARE; +extern const char* JACK_METADATA_CONNECTED; +extern const char* JACK_METADATA_PORT_GROUP; +extern const char* JACK_METADATA_ICON_SMALL; +extern const char* JACK_METADATA_ICON_LARGE; + +#ifdef __cplusplus +} +#endif +#endif