static void modem_added (DBusGProxy *proxy, const char *path, gpointer user_data) { GeoclueGsmlocMm *self = GEOCLUE_GSMLOC_MM (user_data); GeoclueGsmlocMmPrivate *priv = GEOCLUE_GSMLOC_MM_GET_PRIVATE (self); Modem *modem; if (!find_modem (self, path)) { modem = modem_new (priv->bus, path, self); priv->modems = g_slist_prepend (priv->modems, modem); } }
static void modem_removed (DBusGProxy *proxy, const char *path, gpointer user_data) { GeoclueGsmlocMm *self = GEOCLUE_GSMLOC_MM (user_data); GeoclueGsmlocMmPrivate *priv = GEOCLUE_GSMLOC_MM_GET_PRIVATE (self); Modem *modem; modem = find_modem (self, path); if (modem) { gboolean old_available = is_available (self); priv->modems = g_slist_remove (priv->modems, modem); modem_free (modem); if (is_available (self) != old_available) g_object_notify (G_OBJECT (self), "available"); } }
static void get_manager_ready (GDBusConnection *connection, GAsyncResult *res, GetModemContext *ctx) { GetModemResults *results; results = g_new (GetModemResults, 1); results->manager = mmcli_get_manager_finish (res); results->object = find_modem (results->manager, ctx->modem_path); /* Set operation results */ g_simple_async_result_set_op_res_gpointer ( ctx->result, results, (GDestroyNotify)get_modem_results_free); get_modem_context_complete_and_free (ctx); }
MMObject * mmcli_get_modem_sync (GDBusConnection *connection, const gchar *modem_str, MMManager **o_manager) { MMManager *manager; MMObject *found; gchar *modem_path; manager = mmcli_get_manager_sync (connection); modem_path = get_modem_path (modem_str); found = find_modem (manager, modem_path); if (o_manager) *o_manager = manager; else g_object_unref (manager); g_free (modem_path); return found; }
int main(int argc, char *argv[]) { int ret_val = -1; int tries = 0; unsigned char settings[2]; parse_command_line(argc, argv); while (ret_val != 0 && tries < 1) { tries++; ret_val = open_modem(); } tries = 0; if (ret_val && !ignore_errors) { printf ("Error opening modem, please run the program again\n"); return finish_up(-1); } ret_val = -1; printf("Step 1 Find the modem\n"); while (ret_val != 0 && tries < 1) { tries++; ret_val = find_modem(); } tries = 0; if (ret_val && !ignore_errors) { printf ("Error finding modem, please run the program again\n"); return finish_up(-1); } ret_val = -1; // Steps 2-4 Get the modem settings while (tries < 3) { printf("Step %d get the modem settings\n", tries + 2); tries++; ret_val = settings_modem(settings); } tries = 0; if (ret_val && !ignore_errors) { printf ("Error getting modem settings, please run the program again\n"); return finish_up(-1); } ret_val = -1; if (settings[0] != 0x03 || settings[1] != 0x03) { if (debug) printf("Looks like modem needs resetting\n"); reboot_modem(); settings_modem(settings); settings_modem(settings); } ret_val = -1; // Step 5 Update basis printf("Step 5 updating the basis\n"); while (ret_val != 0 && tries < 2) { tries++; ret_val = update_basis(); } tries = 0; ret_val = -1; // Step 6 Update Modem printf("Step 6 updating the modem\n"); while (ret_val != 0 && tries < 1) { tries++; ret_val = update_modem(); } tries = 0; if (ret_val && !ignore_errors) { printf ("Error updating modem, please run the program again\n"); return finish_up(-1); } ret_val = -1; // Step 7 Get modem settings printf("Step 7 getting the modem settings\n"); while (tries < 1) { tries++; ret_val = settings_modem(settings); } tries = 0; if (ret_val && !ignore_errors) { printf ("Error getting modem settings, please run the program again\n"); return finish_up(-1); } ret_val = -1; // Step 8 Get basis settings printf("Step 8 getting the basis settings\n"); while (ret_val != 0 && tries < 2) { tries++; ret_val = settings_basis(settings); } tries = 0; if (ret_val && !ignore_errors) { printf ("Error getting basis settings, please run the program again\n"); return finish_up(-1); } ret_val = -1; // Step 9 and 10 Get modem settings while (tries < 2) { printf("Step %d, getting the modem settings\n", tries + 9); tries++; ret_val = settings_modem(settings); } tries = 0; if (ret_val && !ignore_errors) { printf ("Error getting modem settings, please run the program again\n"); return finish_up(-1); } ret_val = -1; // Step 11 Set basis filter printf("Step 11 setting the basis filter\n"); while (ret_val != 0 && tries < 1) { tries++; ret_val = set_filter_basis(); } tries = 0; if (ret_val && !ignore_errors) { printf ("Error setting basis filter, please run the program again\n"); return finish_up(-1); } ret_val = -1; // Step 12 Set modem filter printf("Step 12 setting the modem filter\n"); while (ret_val != 0 && tries < 1) { tries++; ret_val = set_filter_modem(); } tries = 0; if (ret_val && !ignore_errors) { printf ("Error setting modem filter, please run the program again\n"); return finish_up(-1); } ret_val = -1; // Step 13 Reboot basis printf("Step 13 rebooting basis \n"); while (ret_val != 0 && tries < 1) { tries++; ret_val = reboot_basis(); } tries = 0; if (ret_val && !ignore_errors) { printf ("Error rebooting basis, please run the program again\n"); return finish_up(-1); } ret_val = -1; // Step 14 Reboot modem printf("Step 14, rebooting the modem \n"); while (ret_val != 0 && tries < 1) { tries++; ret_val = reboot_modem(); } tries = 0; if (ret_val && !ignore_errors) { printf ("Error rebooting modem, please run the program again\n"); return finish_up(-1); } return finish_up(0); }