static int _service_signal_strength_query_finish(const struct telephony_error *error, unsigned int bars, void *data) { struct luna_service_req_data *req_data = data; jvalue_ref reply_obj = NULL; jvalue_ref extended_obj = NULL; bool success = (error == NULL); reply_obj = jobject_create(); extended_obj = jobject_create(); jobject_put(reply_obj, J_CSTR_TO_JVAL("returnValue"), jboolean_create(success)); jobject_put(reply_obj, J_CSTR_TO_JVAL("errorCode"), jnumber_create_i32(0)); jobject_put(reply_obj, J_CSTR_TO_JVAL("errorText"), jstring_create("")); /* handle possible subscriptions */ if (req_data->subscribed) jobject_put(reply_obj, J_CSTR_TO_JVAL("subscribed"), jboolean_create(req_data->subscribed)); if (success) { jobject_put(extended_obj, J_CSTR_TO_JVAL("bars"), jnumber_create_i32(bars)); jobject_put(reply_obj, J_CSTR_TO_JVAL("extended"), extended_obj); } if(!luna_service_message_validate_and_send(req_data->handle, req_data->message, reply_obj)) { luna_service_message_reply_error_internal(req_data->handle, req_data->message); goto cleanup; } cleanup: j_release(&reply_obj); luna_service_req_data_free(req_data); return 0; }
static int _service_network_selection_mode_query_finish(const struct telephony_error *error, bool automatic, void *data) { struct luna_service_req_data *req_data = data; jvalue_ref reply_obj = NULL; bool success = (error == NULL); reply_obj = jobject_create(); jobject_put(reply_obj, J_CSTR_TO_JVAL("returnValue"), jboolean_create(success)); jobject_put(reply_obj, J_CSTR_TO_JVAL("errorCode"), jnumber_create_i32(0)); jobject_put(reply_obj, J_CSTR_TO_JVAL("errorText"), jstring_create("")); if (success) { jobject_put(reply_obj, J_CSTR_TO_JVAL("automatic"), jboolean_create(automatic)); } if(!luna_service_message_validate_and_send(req_data->handle, req_data->message, reply_obj)) { luna_service_message_reply_error_internal(req_data->handle, req_data->message); goto cleanup; } cleanup: j_release(&reply_obj); luna_service_req_data_free(req_data); return 0; }
static int _service_rat_query_finish(const struct telephony_error *error, enum telephony_radio_access_mode mode, void *data) { struct luna_service_req_data *req_data = data; jvalue_ref reply_obj = NULL; jvalue_ref extended_obj = NULL; bool success = (error == NULL); reply_obj = jobject_create(); jobject_put(reply_obj, J_CSTR_TO_JVAL("returnValue"), jboolean_create(success)); 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 ? "success" : "")); if (success) { extended_obj = jobject_create(); jobject_put(extended_obj, J_CSTR_TO_JVAL("mode"), jstring_create(telephony_radio_access_mode_to_string(mode))); jobject_put(reply_obj, J_CSTR_TO_JVAL("extended"), extended_obj); } if(!luna_service_message_validate_and_send(req_data->handle, req_data->message, reply_obj)) { luna_service_message_reply_error_internal(req_data->handle, req_data->message); goto cleanup; } cleanup: j_release(&reply_obj); luna_service_req_data_free(req_data); return 0; }
static int _service_network_list_query_cancel_finish(const struct telephony_error *error, void *data) { struct luna_service_req_data *req_data = data; struct telephony_service *service = req_data->user_data; jvalue_ref reply_obj = NULL; bool success = (error == NULL); if (!success) { luna_service_message_reply_error_unknown(req_data->handle, req_data->message); goto cleanup; } reply_obj = jobject_create(); jobject_put(reply_obj, J_CSTR_TO_JVAL("returnValue"), jboolean_create(success)); 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")); if(!luna_service_message_validate_and_send(req_data->handle, req_data->message, reply_obj)) { luna_service_message_reply_error_internal(req_data->handle, req_data->message); goto cleanup; } service->network_status_query_pending = false; cleanup: j_release(&reply_obj); luna_service_req_data_free(req_data); return 0; }
static void finish_set_mic_mute(bool success, void *user_data) { struct luna_service_req_data *req = user_data; if (success) luna_service_message_reply_success(req->handle, req->message); else luna_service_message_reply_error_internal(req->handle, req->message); luna_service_req_data_free(req); }
static int _service_network_list_query_finish(const struct telephony_error *error, GList *networks, void *data) { struct luna_service_req_data *req_data = data; struct telephony_service *service = req_data->user_data; jvalue_ref reply_obj = NULL; jvalue_ref extended_obj = NULL; jvalue_ref networks_obj = NULL; jvalue_ref network_obj = NULL; bool success = (error == NULL); struct telephony_network *current_network = NULL; int n; reply_obj = jobject_create(); extended_obj = jobject_create(); networks_obj = jarray_create(NULL); jobject_put(reply_obj, J_CSTR_TO_JVAL("returnValue"), jboolean_create(success)); jobject_put(reply_obj, J_CSTR_TO_JVAL("errorCode"), jnumber_create_i32(0)); jobject_put(reply_obj, J_CSTR_TO_JVAL("errorText"), jstring_create("")); if (success) { for (n = 0; n < g_list_length(networks); n++) { current_network = g_list_nth_data(networks, n); network_obj = jobject_create(); jobject_put(network_obj, J_CSTR_TO_JVAL("id"), jnumber_create_i32(current_network->id)); jobject_put(network_obj, J_CSTR_TO_JVAL("name"), jstring_create(current_network->name ? current_network->name : "")); const char *rat_str = telephony_radio_access_mode_to_string(current_network->radio_access_mode); jobject_put(network_obj, J_CSTR_TO_JVAL("rat"), jstring_create(rat_str)); jarray_append(networks_obj, network_obj); } jobject_put(extended_obj, J_CSTR_TO_JVAL("networks"), networks_obj); jobject_put(reply_obj, J_CSTR_TO_JVAL("extended"), extended_obj); } if(!luna_service_message_validate_and_send(req_data->handle, req_data->message, reply_obj)) { luna_service_message_reply_error_internal(req_data->handle, req_data->message); goto cleanup; } cleanup: service->network_status_query_pending = false; j_release(&reply_obj); luna_service_req_data_free(req_data); return 0; }
static int _service_platform_query_finish(const struct telephony_error *error, struct telephony_platform_info *platform_info, void *data) { struct luna_service_req_data *req_data = data; jvalue_ref reply_obj = NULL; jvalue_ref extended_obj = NULL; bool success = (error == NULL); reply_obj = jobject_create(); extended_obj = jobject_create(); jobject_put(reply_obj, J_CSTR_TO_JVAL("returnValue"), jboolean_create(success)); if (success) { jobject_put(extended_obj, J_CSTR_TO_JVAL("platformType"), jstring_create(telephony_platform_type_to_string(platform_info->platform_type))); if (platform_info->imei != NULL) jobject_put(extended_obj, J_CSTR_TO_JVAL("imei"), jstring_create(platform_info->imei)); if (platform_info->carrier != NULL) jobject_put(extended_obj, J_CSTR_TO_JVAL("carrier"), jstring_create(platform_info->carrier)); if (platform_info->mcc > 0 && platform_info->mnc > 0) { jobject_put(extended_obj, J_CSTR_TO_JVAL("mcc"), jnumber_create_i32(platform_info->mcc)); jobject_put(extended_obj, J_CSTR_TO_JVAL("mnc"), jnumber_create_i32(platform_info->mnc)); } if (platform_info->version != NULL) jobject_put(extended_obj, J_CSTR_TO_JVAL("version"), jstring_create(platform_info->version)); jobject_put(reply_obj, J_CSTR_TO_JVAL("extended"), extended_obj); } else { /* FIXME better error message */ luna_service_message_reply_error_unknown(req_data->handle, req_data->message); goto cleanup; } if(!luna_service_message_validate_and_send(req_data->handle, req_data->message, reply_obj)) { luna_service_message_reply_error_internal(req_data->handle, req_data->message); goto cleanup; } cleanup: j_release(&reply_obj); luna_service_req_data_free(req_data); return 0; }
static int _service_subscriber_id_query_finish(const struct telephony_error *error, struct telephony_subscriber_info *info, void *data) { struct luna_service_req_data *req_data = data; jvalue_ref reply_obj = NULL; jvalue_ref extended_obj = NULL; bool success = (error == NULL); reply_obj = jobject_create(); extended_obj = jobject_create(); jobject_put(reply_obj, J_CSTR_TO_JVAL("returnValue"), jboolean_create(success)); if (success) { jobject_put(extended_obj, J_CSTR_TO_JVAL("platformType"), jstring_create(telephony_platform_type_to_string(info->platform_type))); switch (info->platform_type) { case TELEPHONY_PLATFORM_TYPE_GSM: jobject_put(extended_obj, J_CSTR_TO_JVAL("imsi"), jstring_create(info->imsi)); jobject_put(extended_obj, J_CSTR_TO_JVAL("msisdn"), jstring_create(info->msisdn)); break; case TELEPHONY_PLATFORM_TYPE_CDMA: jobject_put(extended_obj, J_CSTR_TO_JVAL("min"), jstring_create(info->min)); jobject_put(extended_obj, J_CSTR_TO_JVAL("mdn"), jstring_create(info->mdn)); break; } jobject_put(reply_obj, J_CSTR_TO_JVAL("extended"), extended_obj); } else { /* FIXME better error message */ luna_service_message_reply_error_unknown(req_data->handle, req_data->message); goto cleanup; } if(!luna_service_message_validate_and_send(req_data->handle, req_data->message, reply_obj)) { luna_service_message_reply_error_internal(req_data->handle, req_data->message); goto cleanup; } cleanup: j_release(&reply_obj); luna_service_req_data_free(req_data); return 0; }
int _service_power_set_finish(const struct telephony_error *error, void *data) { struct luna_service_req_data *req_data = data; struct telephony_service *service = req_data->user_data; jvalue_ref reply_obj = NULL; reply_obj = jobject_create(); service->power_off_pending = false; jobject_put(reply_obj, J_CSTR_TO_JVAL("returnValue"), jboolean_create((error == NULL))); if(!luna_service_message_validate_and_send(req_data->handle, req_data->message, reply_obj)) luna_service_message_reply_error_internal(req_data->handle, req_data->message); j_release(&reply_obj); luna_service_req_data_free(req_data); return 0; }
static void set_mute_success_cb(pa_context *context, int success, void *user_data) { struct luna_service_req_data *req = user_data; struct audio_service *service = req->user_data; if (!success) { luna_service_message_reply_custom_error(req->handle, req->message, "Could not mute/unmute default sink"); goto cleanup; } service->mute = service->new_mute; notify_status_subscribers(service); luna_service_message_reply_success(req->handle, req->message); cleanup: luna_service_req_data_free(req); }
bool service_run_upgrade_cb(LSHandle *handle, LSMessage *message, void *user_data) { struct luna_service_req_data *req_data; jvalue_ref reply_obj; bool upgrade_succeeded = true; g_message("User requested starting a complete system upgrade ..."); if (opkg_new()) { luna_service_message_reply_error_internal(handle, message); return true; } req_data = luna_service_req_data_new(handle, message); if (opkg_upgrade_all(system_upgrade_progress_cb, req_data) != 0) { g_warning("Failed to upgrade the system"); upgrade_succeeded = false; } reply_obj = jobject_create(); jobject_put(reply_obj, J_CSTR_TO_JVAL("returnValue"), jboolean_create(upgrade_succeeded)); jobject_put(reply_obj, J_CSTR_TO_JVAL("state"), jstring_create(upgrade_succeeded ? "finished" : "failed")); if (!luna_service_message_validate_and_send(req_data->handle, req_data->message, reply_obj)) { luna_service_message_reply_error_internal(req_data->handle, req_data->message); goto cleanup; } if (upgrade_succeeded) g_message("Successfully finished system upgrade!"); cleanup: if (req_data) luna_service_req_data_free(req_data); opkg_free(); return true; }
static int _service_network_status_query_finish(const struct telephony_error *error, struct telephony_network_status *net_status, void *data) { struct luna_service_req_data *req_data = data; jvalue_ref reply_obj = NULL; jvalue_ref extended_obj = NULL; bool success = (error == NULL); reply_obj = jobject_create(); extended_obj = jobject_create(); jobject_put(reply_obj, J_CSTR_TO_JVAL("returnValue"), jboolean_create(success)); jobject_put(reply_obj, J_CSTR_TO_JVAL("errorCode"), jnumber_create_i32(0)); jobject_put(reply_obj, J_CSTR_TO_JVAL("errorText"), jstring_create("")); /* handle possible subscriptions */ if (req_data->subscribed) jobject_put(reply_obj, J_CSTR_TO_JVAL("subscribed"), jboolean_create(req_data->subscribed)); if (success) { jobject_put(extended_obj, J_CSTR_TO_JVAL("state"), jstring_create(telephony_network_state_to_string(net_status->state))); jobject_put(extended_obj, J_CSTR_TO_JVAL("registration"), jstring_create(telephony_network_registration_to_string(net_status->registration))); jobject_put(extended_obj, J_CSTR_TO_JVAL("networkName"), jstring_create(net_status->name != NULL ? net_status->name : "")); jobject_put(extended_obj, J_CSTR_TO_JVAL("causeCode"), jstring_create("")); jobject_put(reply_obj, J_CSTR_TO_JVAL("extended"), extended_obj); } if(!luna_service_message_validate_and_send(req_data->handle, req_data->message, reply_obj)) { luna_service_message_reply_error_internal(req_data->handle, req_data->message); goto cleanup; } cleanup: j_release(&reply_obj); luna_service_req_data_free(req_data); return 0; }
int telephonyservice_common_finish(const struct telephony_error *error, void *data) { struct luna_service_req_data *req_data = data; jvalue_ref reply_obj = NULL; bool success = (error == NULL); reply_obj = jobject_create(); jobject_put(reply_obj, J_CSTR_TO_JVAL("returnValue"), jboolean_create(success)); if (!success) jobject_put(reply_obj, J_CSTR_TO_JVAL("errorCode"), jnumber_create_i32(error->code)); if(!luna_service_message_validate_and_send(req_data->handle, req_data->message, reply_obj)) { luna_service_message_reply_error_internal(req_data->handle, req_data->message); goto cleanup; } cleanup: j_release(&reply_obj); luna_service_req_data_free(req_data); return 0; }
int _service_power_query_finish(const struct telephony_error *error, bool power, void *data) { struct luna_service_req_data *req_data = data; jvalue_ref reply_obj = NULL; jvalue_ref extended_obj = NULL; bool success = (error == NULL); reply_obj = jobject_create(); extended_obj = jobject_create(); jobject_put(reply_obj, J_CSTR_TO_JVAL("returnValue"), jboolean_create(success)); /* handle possible subscriptions */ if (req_data->subscribed) jobject_put(reply_obj, J_CSTR_TO_JVAL("subscribed"), jboolean_create(req_data->subscribed)); if (success) { jobject_put(extended_obj, J_CSTR_TO_JVAL("powerState"), jstring_create(power ? "on" : "off")); jobject_put(reply_obj, J_CSTR_TO_JVAL("extended"), extended_obj); } else { /* FIXME better error message */ luna_service_message_reply_error_unknown(req_data->handle, req_data->message); goto cleanup; } if(!luna_service_message_validate_and_send(req_data->handle, req_data->message, reply_obj)) { luna_service_message_reply_error_internal(req_data->handle, req_data->message); goto cleanup; } cleanup: j_release(&reply_obj); luna_service_req_data_free(req_data); return 0; }