ctx->volume = 25;
ctx->channels = 2;
ctx->mute = 0;
+ ctx->is_playing = 0;
return ctx;
}
: json_object_object_add (jresp, "mute", json_object_new_string ("off"));
}
- /* "?value=" parameter is "1" or "on" */
- else if ( atoi(value) == 1 || !strcasecmp(value, "on") ) {
+ /* "?value=" parameter is "1" or "true" */
+ else if ( atoi(value) == 1 || !strcasecmp(value, "true") ) {
ctx->mute = 1;
_alsa_set_mute (ctx->idx, ctx->mute);
json_object_object_add (jresp, "mute", json_object_new_string ("on"));
}
- /* "?value=" parameter is "0" or "off" */
- else if ( atoi(value) == 0 || !strcasecmp(value, "off") ) {
+ /* "?value=" parameter is "0" or "false" */
+ else if ( atoi(value) == 0 || !strcasecmp(value, "false") ) {
ctx->mute = 0;
_alsa_set_mute (ctx->idx, ctx->mute);
return jresp;
}
-STATIC json_object* status (AFB_request *request) { /* AFB_SESSION_RENEW */
- return NULL;
+STATIC json_object* play (AFB_request *request) { /* AFB_SESSION_CHECK */
+
+ audioCtxHandleT *ctx = (audioCtxHandleT*)request->client->ctx;
+ const char *value = getQueryValue (request, "value");
+ json_object *jresp = json_object_new_object();
+
+ /* no "?value=" parameter : return current state */
+ if (!value) {
+ ctx->is_playing ?
+ json_object_object_add (jresp, "play", json_object_new_string ("on"))
+ : json_object_object_add (jresp, "play", json_object_new_string ("off"));
+ }
+
+ /* "?value=" parameter is "1" or "true" */
+ else if ( atoi(value) == 1 || !strcasecmp(value, "true") ) {
+ ctx->is_playing = 1;
+ _alsa_play (ctx->idx);
+
+ json_object_object_add (jresp, "play", json_object_new_string ("on"));
+ }
+
+ /* "?value=" parameter is "0" or "false" */
+ else if ( atoi(value) == 0 || !strcasecmp(value, "false") ) {
+ ctx->is_playing = 0;
+ _alsa_stop (ctx->idx);
+
+ json_object_object_add (jresp, "play", json_object_new_string ("off"));
+ }
+
+ return jresp;
+}
+
+STATIC json_object* refresh (AFB_request *request) { /* AFB_SESSION_RENEW */
+ json_object *jresp = json_object_new_object();
+ json_object_object_add(jresp, "token", json_object_new_string (request->client->token));
+ return jresp;
+}
+
+STATIC json_object* ping (AFB_request *request) { /* AFB_SESSION_NONE */
+ return jsonNewMessage(AFB_SUCCESS, "Ping Binder Daemon - Radio API");
}
{"volume" , AFB_SESSION_CHECK, (AFB_apiCB)volume , "Audio API - volume"},
{"channels", AFB_SESSION_CHECK, (AFB_apiCB)channels , "Audio API - channels"},
{"mute" , AFB_SESSION_CHECK, (AFB_apiCB)mute , "Audio API - mute"},
- {"status" , AFB_SESSION_RENEW, (AFB_apiCB)status , "Audio API - status"},
+ {"play" , AFB_SESSION_CHECK, (AFB_apiCB)play , "Audio API - play"},
+ {"refresh" , AFB_SESSION_RENEW, (AFB_apiCB)refresh , "Audio API - refresh"},
+ {"ping" , AFB_SESSION_NONE, (AFB_apiCB)ping , "Audio API - ping"},
{NULL}
};
-PUBLIC AFB_plugin *audioRegister () {
+PUBLIC AFB_plugin *pluginRegister () {
AFB_plugin *plugin = malloc (sizeof(AFB_plugin));
plugin->type = AFB_PLUGIN_JSON;
plugin->info = "Application Framework Binder - Audio plugin";