diff --git a/dongle_infrastructure.c b/dongle_infrastructure.c index 97f389deb3932e1de62addddfcd6f1dea420236e..c6d88d7285ddb60a2c34bb9a79114686bf3e6d7c 100644 --- a/dongle_infrastructure.c +++ b/dongle_infrastructure.c @@ -126,7 +126,12 @@ int set_pin(struct ubus_context *ctx, struct ubus_object *obj, goto fail; } - if (!sim_connected(usb)) { + rv = sim_state(usb); + if (rv == 1) { + ubus_print_key_val(ctx, req, "Failure", "Please activate SIM"); + debug_print("SIM card not activated!\n"); + goto fail; + } else if (rv == 2) { ubus_print_key_val(ctx, req, "Failure", "No SIM card detected"); debug_print("No SIM card detected\n"); goto fail; @@ -201,7 +206,12 @@ int disable_pin(struct ubus_context *ctx, struct ubus_object *obj, goto fail; } - if (!sim_connected(usb)) { + rv = sim_state(usb); + if (rv == 1) { + ubus_print_key_val(ctx, req, "Failure", "Please activate SIM"); + debug_print("SIM card not activated!\n"); + goto fail; + } else if (rv == 2) { ubus_print_key_val(ctx, req, "Failure", "No SIM card detected"); debug_print("No SIM card detected\n"); goto fail; @@ -269,7 +279,12 @@ int enable_pin(struct ubus_context *ctx, struct ubus_object *obj, goto fail; } - if (!sim_connected(usb)) { + rv = sim_state(usb); + if (rv == 1) { + ubus_print_key_val(ctx, req, "Failure", "Please activate SIM"); + debug_print("SIM card not activated!\n"); + goto fail; + } else if (rv == 2) { ubus_print_key_val(ctx, req, "Failure", "No SIM card detected"); debug_print("No SIM card detected\n"); goto fail; @@ -337,7 +352,12 @@ int verify_pin(struct ubus_context *ctx, struct ubus_object *obj, goto fail; } - if (!sim_connected(usb)) { + rv = sim_state(usb); + if (rv == 1) { + ubus_print_key_val(ctx, req, "Failure", "Please activate SIM"); + debug_print("SIM card not activated!\n"); + goto fail; + } else if (rv == 2) { ubus_print_key_val(ctx, req, "Failure", "No SIM card detected"); debug_print("No SIM card detected\n"); goto fail; @@ -394,6 +414,7 @@ int remaining_tries(struct ubus_context *ctx, struct ubus_object *obj, { struct json_object *response; struct dongle *usb; + int rv; usb = get_dongle_by_obj_name(obj->name); if (!usb) { @@ -402,7 +423,12 @@ int remaining_tries(struct ubus_context *ctx, struct ubus_object *obj, goto fail; } - if (!sim_connected(usb)) { + rv = sim_state(usb); + if (rv == 1) { + ubus_print_key_val(ctx, req, "Failure", "Please activate SIM"); + debug_print("SIM card not activated!\n"); + goto fail; + } else if (rv == 2) { ubus_print_key_val(ctx, req, "Failure", "No SIM card detected"); debug_print("No SIM card detected\n"); goto fail; @@ -425,6 +451,7 @@ int get_pin_status(struct ubus_context *ctx, struct ubus_object *obj, { struct json_object *response; struct dongle *usb; + int rv; usb = get_dongle_by_obj_name(obj->name); if (!usb) { @@ -433,7 +460,12 @@ int get_pin_status(struct ubus_context *ctx, struct ubus_object *obj, goto fail; } - if (!sim_connected(usb)) { + rv = sim_state(usb); + if (rv == 1) { + ubus_print_key_val(ctx, req, "Failure", "Please activate SIM"); + debug_print("SIM card not activated!\n"); + goto fail; + } else if (rv == 2) { ubus_print_key_val(ctx, req, "Failure", "No SIM card detected"); debug_print("No SIM card detected\n"); goto fail; @@ -467,7 +499,12 @@ int unlock_sim(struct ubus_context *ctx, struct ubus_object *obj, goto fail; } - if (!sim_connected(usb)) { + rv = sim_state(usb); + if (rv == 1) { + ubus_print_key_val(ctx, req, "Failure", "Please activate SIM"); + debug_print("SIM card not activated!\n"); + goto fail; + } else if (rv == 2) { ubus_print_key_val(ctx, req, "Failure", "No SIM card detected"); debug_print("No SIM card detected\n"); goto fail; @@ -523,6 +560,7 @@ int list_apn_profiles(struct ubus_context *ctx, struct ubus_object *obj, { struct json_object *response; struct dongle *usb; + int rv; usb = get_dongle_by_obj_name(obj->name); if (!usb) { @@ -531,7 +569,12 @@ int list_apn_profiles(struct ubus_context *ctx, struct ubus_object *obj, goto fail; } - if (!sim_connected(usb)) { + rv = sim_state(usb); + if (rv == 1) { + ubus_print_key_val(ctx, req, "Failure", "Please activate SIM"); + debug_print("SIM card not activated!\n"); + goto fail; + } else if (rv == 2) { ubus_print_key_val(ctx, req, "Failure", "No SIM card detected"); debug_print("No SIM card detected\n"); goto fail; @@ -556,6 +599,7 @@ int delete_apn_profile(struct ubus_context *ctx, struct ubus_object *obj, char *name; //what is max available name length in dongle? struct json_object *response; struct dongle *usb; + int rv; usb = get_dongle_by_obj_name(obj->name); if (!usb) { @@ -564,7 +608,12 @@ int delete_apn_profile(struct ubus_context *ctx, struct ubus_object *obj, goto fail; } - if (!sim_connected(usb)) { + rv = sim_state(usb); + if (rv == 1) { + ubus_print_key_val(ctx, req, "Failure", "Please activate SIM"); + debug_print("SIM card not activated!\n"); + goto fail; + } else if (rv == 2) { ubus_print_key_val(ctx, req, "Failure", "No SIM card detected"); debug_print("No SIM card detected\n"); goto fail; @@ -607,6 +656,7 @@ int set_apn_profile(struct ubus_context *ctx, struct ubus_object *obj, char *name; struct json_object *response; struct dongle *usb; + int rv; usb = get_dongle_by_obj_name(obj->name); if (!usb) { @@ -615,7 +665,12 @@ int set_apn_profile(struct ubus_context *ctx, struct ubus_object *obj, goto fail; } - if (!sim_connected(usb)) { + rv = sim_state(usb); + if (rv == 1) { + ubus_print_key_val(ctx, req, "Failure", "Please activate SIM"); + debug_print("SIM card not activated!\n"); + goto fail; + } else if (rv == 2) { ubus_print_key_val(ctx, req, "Failure", "No SIM card detected"); debug_print("No SIM card detected\n"); goto fail; @@ -827,7 +882,12 @@ int create_apn_profile(struct ubus_context *ctx, struct ubus_object *obj, goto fail; } - if (!sim_connected(usb)) { + rv = sim_state(usb); + if (rv == 1) { + ubus_print_key_val(ctx, req, "Failure", "Please activate SIM"); + debug_print("SIM card not activated!\n"); + goto fail; + } else if (rv == 2) { ubus_print_key_val(ctx, req, "Failure", "No SIM card detected"); debug_print("No SIM card detected\n"); goto fail; @@ -854,6 +914,7 @@ int show_current_apn(struct ubus_context *ctx, struct ubus_object *obj, { struct json_object *response; struct dongle *usb; + int rv; usb = get_dongle_by_obj_name(obj->name); if (!usb) { @@ -862,7 +923,12 @@ int show_current_apn(struct ubus_context *ctx, struct ubus_object *obj, goto fail; } - if (!sim_connected(usb)) { + rv = sim_state(usb); + if (rv == 1) { + ubus_print_key_val(ctx, req, "Failure", "Please activate SIM"); + debug_print("SIM card not activated!\n"); + goto fail; + } else if (rv == 2) { ubus_print_key_val(ctx, req, "Failure", "No SIM card detected"); debug_print("No SIM card detected\n"); goto fail; @@ -885,6 +951,7 @@ int get_signal_strength(struct ubus_context *ctx, struct ubus_object *obj, { struct json_object *response; struct dongle *usb; + int rv; usb = get_dongle_by_obj_name(obj->name); if (!usb) { @@ -893,7 +960,12 @@ int get_signal_strength(struct ubus_context *ctx, struct ubus_object *obj, goto fail; } - if (!sim_connected(usb)) { + rv = sim_state(usb); + if (rv == 1) { + ubus_print_key_val(ctx, req, "Failure", "Please activate SIM"); + debug_print("SIM card not activated!\n"); + goto fail; + } else if (rv == 2) { ubus_print_key_val(ctx, req, "Failure", "No SIM card detected"); debug_print("No SIM card detected\n"); goto fail; @@ -916,6 +988,7 @@ int connect_network(struct ubus_context *ctx, struct ubus_object *obj, { struct json_object *response; struct dongle *usb; + int rv; usb = get_dongle_by_obj_name(obj->name); if (!usb) { @@ -924,7 +997,12 @@ int connect_network(struct ubus_context *ctx, struct ubus_object *obj, goto fail; } - if (!sim_connected(usb)) { + rv = sim_state(usb); + if (rv == 1) { + ubus_print_key_val(ctx, req, "Failure", "Please activate SIM"); + debug_print("SIM card not activated!\n"); + goto fail; + } else if (rv == 2) { ubus_print_key_val(ctx, req, "Failure", "No SIM card detected"); debug_print("No SIM card detected\n"); goto fail; @@ -947,6 +1025,7 @@ int disconnect_network(struct ubus_context *ctx, struct ubus_object *obj, { struct json_object *response; struct dongle *usb; + int rv; usb = get_dongle_by_obj_name(obj->name); if (!usb) { @@ -955,7 +1034,12 @@ int disconnect_network(struct ubus_context *ctx, struct ubus_object *obj, goto fail; } - if (!sim_connected(usb)) { + rv = sim_state(usb); + if (rv == 1) { + ubus_print_key_val(ctx, req, "Failure", "Please activate SIM"); + debug_print("SIM card not activated!\n"); + goto fail; + } else if (rv == 2) { ubus_print_key_val(ctx, req, "Failure", "No SIM card detected"); debug_print("No SIM card detected\n"); goto fail; @@ -978,6 +1062,7 @@ int modem_state(struct ubus_context *ctx, struct ubus_object *obj, { struct json_object *response; struct dongle *usb; + int rv; usb = get_dongle_by_obj_name(obj->name); if (!usb) { @@ -986,7 +1071,12 @@ int modem_state(struct ubus_context *ctx, struct ubus_object *obj, goto fail; } - if (!sim_connected(usb)) { + rv = sim_state(usb); + if (rv == 1) { + ubus_print_key_val(ctx, req, "Failure", "Please activate SIM"); + debug_print("SIM card not activated!\n"); + goto fail; + } else if (rv == 2) { ubus_print_key_val(ctx, req, "Failure", "No SIM card detected"); debug_print("No SIM card detected\n"); goto fail; @@ -1009,6 +1099,7 @@ int enable_roaming(struct ubus_context *ctx, struct ubus_object *obj, { struct json_object *response; struct dongle *usb; + int rv; usb = get_dongle_by_obj_name(obj->name); if (!usb) { @@ -1017,7 +1108,12 @@ int enable_roaming(struct ubus_context *ctx, struct ubus_object *obj, goto fail; } - if (!sim_connected(usb)) { + rv = sim_state(usb); + if (rv == 1) { + ubus_print_key_val(ctx, req, "Failure", "Please activate SIM"); + debug_print("SIM card not activated!\n"); + goto fail; + } else if (rv == 2) { ubus_print_key_val(ctx, req, "Failure", "No SIM card detected"); debug_print("No SIM card detected\n"); goto fail; @@ -1040,6 +1136,7 @@ int disable_roaming(struct ubus_context *ctx, struct ubus_object *obj, { struct json_object *response; struct dongle *usb; + int rv; usb = get_dongle_by_obj_name(obj->name); if (!usb) { @@ -1048,7 +1145,12 @@ int disable_roaming(struct ubus_context *ctx, struct ubus_object *obj, goto fail; } - if (!sim_connected(usb)) { + rv = sim_state(usb); + if (rv == 1) { + ubus_print_key_val(ctx, req, "Failure", "Please activate SIM"); + debug_print("SIM card not activated!\n"); + goto fail; + } else if (rv == 2) { ubus_print_key_val(ctx, req, "Failure", "No SIM card detected"); debug_print("No SIM card detected\n"); goto fail; @@ -1071,6 +1173,7 @@ int roam_status(struct ubus_context *ctx, struct ubus_object *obj, { struct json_object *response; struct dongle *usb; + int rv; usb = get_dongle_by_obj_name(obj->name); if (!usb) { @@ -1079,7 +1182,12 @@ int roam_status(struct ubus_context *ctx, struct ubus_object *obj, goto fail; } - if (!sim_connected(usb)) { + rv = sim_state(usb); + if (rv == 1) { + ubus_print_key_val(ctx, req, "Failure", "Please activate SIM"); + debug_print("SIM card not activated!\n"); + goto fail; + } else if (rv == 2) { ubus_print_key_val(ctx, req, "Failure", "No SIM card detected"); debug_print("No SIM card detected\n"); goto fail; @@ -1102,6 +1210,7 @@ int software_version(struct ubus_context *ctx, struct ubus_object *obj, { struct json_object *response; struct dongle *usb; + int rv; usb = get_dongle_by_obj_name(obj->name); if (!usb) { @@ -1110,7 +1219,12 @@ int software_version(struct ubus_context *ctx, struct ubus_object *obj, goto fail; } - if (!sim_connected(usb)) { + rv = sim_state(usb); + if (rv == 1) { + ubus_print_key_val(ctx, req, "Failure", "Please activate SIM"); + debug_print("SIM card not activated!\n"); + goto fail; + } else if (rv == 2) { ubus_print_key_val(ctx, req, "Failure", "No SIM card detected"); debug_print("No SIM card detected\n"); goto fail; @@ -1127,12 +1241,13 @@ fail: return UBUS_STATUS_OK; } -int sim_state(struct ubus_context *ctx, struct ubus_object *obj, +int ubus_sim_state(struct ubus_context *ctx, struct ubus_object *obj, struct ubus_request_data *req, const char *method, struct blob_attr *msg) { struct json_object *response; struct dongle *usb; + int rv; usb = get_dongle_by_obj_name(obj->name); if (!usb) { @@ -1141,7 +1256,12 @@ int sim_state(struct ubus_context *ctx, struct ubus_object *obj, goto fail; } - if (!sim_connected(usb)) { + rv = sim_state(usb); + if (rv == 1) { + ubus_print_key_val(ctx, req, "Failure", "Please activate SIM"); + debug_print("SIM card not activated!\n"); + goto fail; + } else if (rv == 2) { ubus_print_key_val(ctx, req, "Failure", "No SIM card detected"); debug_print("No SIM card detected\n"); goto fail; @@ -1180,7 +1300,7 @@ struct ubus_method obj_methods[] = { UBUS_METHOD_NOARG("roam_status", roam_status), UBUS_METHOD_NOARG("modem_state", modem_state), UBUS_METHOD_NOARG("software_version", software_version), - UBUS_METHOD_NOARG("sim_state", sim_state), + UBUS_METHOD_NOARG("sim_state", ubus_sim_state), }; struct ubus_object_type obj_type = UBUS_OBJECT_TYPE("dongle", obj_methods);