X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=binding%2Fmediaplayer-api.c;h=813ab97c3e8925b36afaf3c34985907b38c42ede;hb=refs%2Fchanges%2F87%2F10687%2F1;hp=44944df9b8466c8baca35eb5ea29fd599e6ee164;hpb=e799aff439bd86cf4048242069c5a277f48ec396;p=apps%2Fmediaplayer.git diff --git a/binding/mediaplayer-api.c b/binding/mediaplayer-api.c index 44944df..813ab97 100644 --- a/binding/mediaplayer-api.c +++ b/binding/mediaplayer-api.c @@ -20,12 +20,12 @@ #include #include #include + +#define AFB_BINDING_VERSION 2 #include #include "mediaplayer-manager.h" -const struct afb_binding_interface *afbitf; - static struct afb_event media_added_event; static struct afb_event media_removed_event; @@ -86,15 +86,14 @@ static json_object *new_json_object_from_device(GList *list) json_object_array_add(jarray, jstring); } - if (jstring == NULL) + if (jstring == NULL) { + json_object_put(jarray); + json_object_put(jresp); return NULL; + } json_object_object_add(jresp, "Media", jarray); - // TODO: Add media path - jstring = json_object_new_string(""); - json_object_object_add(jresp, "Path", jstring); - return jresp; } @@ -105,6 +104,7 @@ static void media_results_get (struct afb_req request) ListLock(); list = media_lightmediascanner_scan(); + list = media_local_scan(list); if (list == NULL) { afb_req_fail(request, "failed", "media scan error"); ListUnlock(); @@ -142,41 +142,35 @@ static void media_broadcast_device_removed (const char *obj_path) afb_event_push(media_removed_event, jresp); } -static const struct afb_verb_desc_v1 binding_verbs[] = { - { "media_result", AFB_SESSION_CHECK, media_results_get, "Media scan result" }, - { "subscribe", AFB_SESSION_CHECK, subscribe, "Subscribe for an event" }, - { "unsubscribe", AFB_SESSION_CHECK, unsubscribe, "Unsubscribe for an event" }, +static const struct afb_verb_v2 binding_verbs[] = { + { "media_result", media_results_get, NULL, "Media scan result", AFB_SESSION_CHECK }, + { "subscribe", subscribe, NULL, "Subscribe for an event", AFB_SESSION_CHECK }, + { "unsubscribe", unsubscribe, NULL, "Unsubscribe for an event", AFB_SESSION_CHECK }, { NULL } }; -static const struct afb_binding binding_description = { - .type = AFB_BINDING_VERSION_1, - .v1 = { - .prefix = "media-manager", - .info = "mediaplayer API", - .verbs = binding_verbs, - } -}; - -const struct afb_binding -*afbBindingV1Register(const struct afb_binding_interface *itf) +static int preinit() { - afbitf = itf; - Binding_RegisterCallback_t API_Callback; API_Callback.binding_device_added = media_broadcast_device_added; API_Callback.binding_device_removed = media_broadcast_device_removed; BindingAPIRegister(&API_Callback); - MediaPlayerManagerInit(); - - return &binding_description; + return MediaPlayerManagerInit(); } -int afbBindingV1ServiceInit(struct afb_service service) +static int init() { - media_added_event = afb_daemon_make_event(afbitf->daemon, "media_added"); - media_removed_event = afb_daemon_make_event(afbitf->daemon, "media_removed"); + media_added_event = afb_daemon_make_event("media_added"); + media_removed_event = afb_daemon_make_event("media_removed"); return 0; } + +const struct afb_binding_v2 afbBindingV2 = { + .api = "media-manager", + .specification = "mediaplayer API", + .preinit = preinit, + .init = init, + .verbs = binding_verbs, +};