bool _service_device_lock_query_cb(LSHandle *handle, LSMessage *message, void *user_data) { struct telephony_service *service = user_data; jvalue_ref reply_obj = NULL; jvalue_ref extended_obj = NULL; bool subscribed = false; reply_obj = jobject_create(); extended_obj = jobject_create(); subscribed = luna_service_check_for_subscription_and_process(handle, message); jobject_put(reply_obj, J_CSTR_TO_JVAL("returnValue"), jboolean_create(true)); if (!service->powered) { jobject_put(reply_obj, J_CSTR_TO_JVAL("errorCode"), jnumber_create_i32(1)); jobject_put(reply_obj, J_CSTR_TO_JVAL("errorText"), jstring_create("Phone Radio is off")); } else { jobject_put(reply_obj, J_CSTR_TO_JVAL("errorCode"), jnumber_create_i32(0)); jobject_put(reply_obj, J_CSTR_TO_JVAL("errorText"), jstring_create("success")); } /* FIXME we don't really now which properties are part of the extended object */ jobject_put(reply_obj, J_CSTR_TO_JVAL("extended"), extended_obj); jobject_put(reply_obj, J_CSTR_TO_JVAL("subscribed"), jboolean_create(subscribed)); if(!luna_service_message_validate_and_send(handle, message, reply_obj)) luna_service_message_reply_error_internal(handle, message); j_release(&reply_obj); return true; }
static bool get_status_cb(LSHandle *handle, LSMessage *message, void *user_data) { struct audio_service *service = user_data; jvalue_ref reply_obj = NULL; bool subscribed = false; if (!service->context_initialized) { luna_service_message_reply_custom_error(handle, message, "Not yet initialized"); return true; } subscribed = luna_service_check_for_subscription_and_process(handle, message); reply_obj = jobject_create(); jobject_put(reply_obj, J_CSTR_TO_JVAL("volume"), jnumber_create_f64(service->volume)); jobject_put(reply_obj, J_CSTR_TO_JVAL("mute"), jboolean_create(service->mute)); jobject_put(reply_obj, J_CSTR_TO_JVAL("inCall"), jboolean_create(service->in_call)); jobject_put(reply_obj, J_CSTR_TO_JVAL("speakerMode"), jboolean_create(service->speaker_mode)); jobject_put(reply_obj, J_CSTR_TO_JVAL("micMute"), jboolean_create(service->mic_mute)); if (subscribed) jobject_put(reply_obj, J_CSTR_TO_JVAL("subscribed"), jboolean_create(true)); jobject_put(reply_obj, J_CSTR_TO_JVAL("returnValue"), jboolean_create(true)); if (!luna_service_message_validate_and_send(handle, message, reply_obj)) goto cleanup; cleanup: if (!jis_null(reply_obj)) j_release(&reply_obj); return true; }
/** * @brief Query the id of the network we're connected. * * JSON format: * request: * { } * response: * { * "returnValue": <boolean>, * "errorCode": <integer>, * "errorString": <string>, * "subscribed": <boolean>, * "extended": { * "mccmnc": <string>, * }, * } **/ bool _service_network_id_query_cb(LSHandle *handle, LSMessage *message, void *user_data) { struct telephony_service *service = user_data; struct luna_service_req_data *req_data = NULL; if (!service->initialized) { luna_service_message_reply_custom_error(handle, message, "Backend not initialized"); return true; } if (!service->driver || !service->driver->network_id_query) { g_warning("No implementation available for service networkIdQuery API method"); luna_service_message_reply_error_not_implemented(handle, message); return true; } req_data = luna_service_req_data_new(handle, message); req_data->subscribed = luna_service_check_for_subscription_and_process(req_data->handle, req_data->message); service->driver->network_id_query(service, _service_network_id_query_finish, req_data); return true; }
bool _service_is_telephony_ready_cb(LSHandle *handle, LSMessage *message, void *user_data) { struct telephony_service *service = user_data; jvalue_ref reply_obj = NULL; jvalue_ref extended_obj = NULL; bool subscribed = false; reply_obj = jobject_create(); extended_obj = jobject_create(); subscribed = luna_service_check_for_subscription_and_process(handle, message); jobject_put(reply_obj, J_CSTR_TO_JVAL("returnValue"), jboolean_create(true)); jobject_put(reply_obj, J_CSTR_TO_JVAL("errorCode"), jnumber_create_i32(0)); jobject_put(reply_obj, J_CSTR_TO_JVAL("errorText"), jstring_create("success")); jobject_put(extended_obj, J_CSTR_TO_JVAL("radioConnected"), jboolean_create(service->initialized)); jobject_put(extended_obj, J_CSTR_TO_JVAL("power"), jboolean_create(service->powered)); jobject_put(extended_obj, J_CSTR_TO_JVAL("ready"), jboolean_create(service->initialized)); jobject_put(extended_obj, J_CSTR_TO_JVAL("networkRegistered"), jboolean_create(service->network_registered)); jobject_put(extended_obj, J_CSTR_TO_JVAL("dataRegistered"), jboolean_create(service->data_registered)); /* FIXME check in which situations the three fields below are set and updated */ jobject_put(extended_obj, J_CSTR_TO_JVAL("emergency"), jboolean_create(false)); jobject_put(extended_obj, J_CSTR_TO_JVAL("security"), jboolean_create(false)); jobject_put(extended_obj, J_CSTR_TO_JVAL("securityLocked"), jboolean_create(false)); jobject_put(reply_obj, J_CSTR_TO_JVAL("extended"), extended_obj); jobject_put(reply_obj, J_CSTR_TO_JVAL("subscribed"), jboolean_create(subscribed)); if(!luna_service_message_validate_and_send(handle, message, reply_obj)) luna_service_message_reply_error_internal(handle, message); j_release(&reply_obj); return true; }