OLD | NEW |
1 /* | 1 /* |
2 * | 2 * |
3 * Connection Manager | 3 * Connection Manager |
4 * | 4 * |
5 * Copyright (C) 2010-2011 The Chromium OS Authors. All rights reserved. | 5 * Copyright (C) 2010-2011 The Chromium OS Authors. All rights reserved. |
6 * | 6 * |
7 * This program is free software; you can redistribute it and/or modify | 7 * This program is free software; you can redistribute it and/or modify |
8 * it under the terms of the GNU General Public License version 2 as | 8 * it under the terms of the GNU General Public License version 2 as |
9 * published by the Free Software Foundation. | 9 * published by the Free Software Foundation. |
10 * | 10 * |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 | 138 |
139 }; | 139 }; |
140 | 140 |
141 enum modem_event { | 141 enum modem_event { |
142 ME_NO_EVENT, | 142 ME_NO_EVENT, |
143 ME_PROPERTIES_CHANGED, | 143 ME_PROPERTIES_CHANGED, |
144 ME_SIGNAL_QUALITY_CHANGED, | 144 ME_SIGNAL_QUALITY_CHANGED, |
145 ME_REGISTRATION_STATE_CHANGED, | 145 ME_REGISTRATION_STATE_CHANGED, |
146 ME_ENABLE_SUCCEEDED, | 146 ME_ENABLE_SUCCEEDED, |
147 ME_ENABLE_FAILED, | 147 ME_ENABLE_FAILED, |
148 ME_ACTIVATE_SUCCEEDED, | |
149 ME_ACTIVATE_FAILED, | |
150 ME_REGISTER_SUCCEEDED, | 148 ME_REGISTER_SUCCEEDED, |
151 ME_REGISTER_FAILED, | 149 ME_REGISTER_FAILED, |
152 ME_DISABLE_SUCCEEDED, | 150 ME_DISABLE_SUCCEEDED, |
153 ME_DISABLE_FAILED, | 151 ME_DISABLE_FAILED, |
154 ME_GETIP4CONFIG_SUCCEEDED, | 152 ME_GETIP4CONFIG_SUCCEEDED, |
155 ME_GETIP4CONFIG_FAILED, | 153 ME_GETIP4CONFIG_FAILED, |
156 ME_GETINFO_SUCCEEDED, | 154 ME_GETINFO_SUCCEEDED, |
157 ME_GETINFO_FAILED, | 155 ME_GETINFO_FAILED, |
158 ME_GET_PROPERTIES_SUCCEEDED, | 156 ME_GET_PROPERTIES_SUCCEEDED, |
159 ME_GET_PROPERTIES_FAILED, | 157 ME_GET_PROPERTIES_FAILED, |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 task->work = work; | 318 task->work = work; |
321 task->index = 0; | 319 task->index = 0; |
322 _DBG_MODEMMGR("%s: %s", modem->dbus_path, task->work->name); | 320 _DBG_MODEMMGR("%s: %s", modem->dbus_path, task->work->name); |
323 | 321 |
324 modem_task_run(modem); | 322 modem_task_run(modem); |
325 return -EINPROGRESS; | 323 return -EINPROGRESS; |
326 } | 324 } |
327 | 325 |
328 static void modem_enable_task(struct modem_data *); | 326 static void modem_enable_task(struct modem_data *); |
329 static void modem_get_identifiers_task(struct modem_data *); | 327 static void modem_get_identifiers_task(struct modem_data *); |
330 static void modem_activate_task(struct modem_data *); | |
331 static void modem_disable_task(struct modem_data *); | 328 static void modem_disable_task(struct modem_data *); |
332 static void modem_get_status_task(struct modem_data *); | 329 static void modem_get_status_task(struct modem_data *); |
333 static void modem_get_info_task(struct modem_data *); | 330 static void modem_get_info_task(struct modem_data *); |
334 static void modem_connect_task(struct modem_data *); | 331 static void modem_connect_task(struct modem_data *); |
335 static void modem_disconnect_task(struct modem_data *); | 332 static void modem_disconnect_task(struct modem_data *); |
336 static void modem_get_properties_task(struct modem_data *); | 333 static void modem_get_properties_task(struct modem_data *); |
337 static void modem_get_gsm_properties_task(struct modem_data *modem); | 334 static void modem_get_gsm_properties_task(struct modem_data *modem); |
338 static void modem_create_device_task(struct modem_data *); | 335 static void modem_create_device_task(struct modem_data *); |
339 static void modem_get_registration_state_task(struct modem_data *); | 336 static void modem_get_registration_state_task(struct modem_data *); |
340 static void modem_register_task(struct modem_data *); | 337 static void modem_register_task(struct modem_data *); |
341 | 338 |
342 static struct modem_task_work initialize_modem_work = { | 339 static struct modem_task_work initialize_modem_work = { |
343 "initialize", { | 340 "initialize", { |
344 modem_get_properties_task, | 341 modem_get_properties_task, |
345 modem_create_device_task, | 342 modem_create_device_task, |
346 0}}; | 343 0}}; |
347 | 344 |
348 static struct modem_task_work enable_cdma_modem_work = { | 345 static struct modem_task_work enable_cdma_modem_work = { |
349 "enable_cdma", { | 346 "enable_cdma", { |
350 modem_enable_task, | 347 modem_enable_task, |
351 modem_get_status_task, | 348 modem_get_status_task, |
352 modem_get_identifiers_task, | 349 modem_get_identifiers_task, |
353 modem_get_info_task, | 350 modem_get_info_task, |
354 modem_get_registration_state_task, | 351 modem_get_registration_state_task, |
355 0}}; | 352 0}}; |
356 | 353 |
357 static struct modem_task_work activate_modem_work = { | |
358 "activate", { | |
359 modem_activate_task, | |
360 modem_get_registration_state_task, | |
361 0}}; | |
362 | |
363 static struct modem_task_work enable_gsm_modem_work = { | 354 static struct modem_task_work enable_gsm_modem_work = { |
364 "enable_gsm", { | 355 "enable_gsm", { |
365 modem_enable_task, | 356 modem_enable_task, |
366 modem_register_task, | 357 modem_register_task, |
367 modem_get_status_task, | 358 modem_get_status_task, |
368 modem_get_identifiers_task, | 359 modem_get_identifiers_task, |
369 modem_get_gsm_properties_task, | 360 modem_get_gsm_properties_task, |
370 modem_get_info_task, | 361 modem_get_info_task, |
371 modem_get_registration_state_task, | 362 modem_get_registration_state_task, |
372 0}}; | 363 0}}; |
(...skipping 740 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1113 enum connman_network_activation_state state, | 1104 enum connman_network_activation_state state, |
1114 enum connman_element_error err) | 1105 enum connman_element_error err) |
1115 { | 1106 { |
1116 struct connman_network *network = get_network(modem); | 1107 struct connman_network *network = get_network(modem); |
1117 if (network != NULL) { | 1108 if (network != NULL) { |
1118 modem->activation_state = state; | 1109 modem->activation_state = state; |
1119 connman_network_set_activation_state(network, state, err); | 1110 connman_network_set_activation_state(network, state, err); |
1120 } | 1111 } |
1121 } | 1112 } |
1122 | 1113 |
1123 | |
1124 /** | 1114 /** |
1125 * modem_activate_reply: | 1115 * modem_activate_reply: |
1126 * @modem: modem object | 1116 * @modem: modem object |
1127 * @user_data: pointer to modem_task object | 1117 * @user_data: pointer to modem_task object |
1128 * | 1118 * |
1129 * Handle the reply from a DBUS activate message. Certain errors are | 1119 * Handle the reply from a DBUS activate message. Certain errors are |
1130 * indicative of the modem already being activated, so if that is the | 1120 * indicative of the modem already being activated, so if that is the |
1131 * case, we can proceed despite the error. | 1121 * case, we can proceed despite the error. |
1132 */ | 1122 */ |
1133 | 1123 |
1134 static void modem_activate_reply(DBusPendingCall *call, void *user_data) | 1124 static void modem_activate_reply(DBusPendingCall *call, void *user_data) |
1135 { | 1125 { |
1136 struct modem_data *modem = (struct modem_data *)user_data; | 1126 struct modem_data *modem = (struct modem_data *)user_data; |
| 1127 uint32_t status = -1; |
| 1128 DBusMessage *reply; |
| 1129 DBusError error; |
1137 | 1130 |
1138 » _DBG_MODEMMGR("activate_reply modem %s", modem->dbus_path); | 1131 » dbus_error_init(&error); |
1139 » modem_dbus_handle_reply(__func__, call, modem, | 1132 |
1140 » » » » ME_ACTIVATE_SUCCEEDED, ME_ACTIVATE_FAILED, | 1133 » reply = dbus_pending_call_steal_reply(call); |
1141 » » » » MM_MODEM_ACTIVATED_ERROR, | 1134 » if (reply == NULL) { |
1142 » » » » DBUS_TYPE_INVALID /* no return values */); | 1135 » » CONNMAN_ERROR("%s: Failed steal reply", __func__); |
| 1136 » » goto done_no_reply; |
| 1137 » } |
| 1138 |
| 1139 » if (dbus_set_error_from_message(&error, reply)) { |
| 1140 » » if (g_strcmp0(error.name, MM_MODEM_INITIATED_ERROR) == 0) { |
| 1141 » » » /* |
| 1142 » » » * Activation can take a long while. We rely |
| 1143 » » » * on a signal to indicate a future state |
| 1144 » » » * change of the modem, or for the modem to |
| 1145 » » » * disappear. Nothing to do. |
| 1146 » » » */ |
| 1147 » » » dbus_message_unref(reply); |
| 1148 » » » return; |
| 1149 » » } |
| 1150 » » CONNMAN_ERROR("DBus Error: %s:%s", |
| 1151 » » » error.name, error.message); |
| 1152 » » goto done; |
| 1153 » } |
| 1154 |
| 1155 » if (dbus_message_get_args(reply, &error, |
| 1156 » » » » DBUS_TYPE_UINT32, |
| 1157 » » » » &status, |
| 1158 » » » » DBUS_TYPE_INVALID) == FALSE) { |
| 1159 » » if (dbus_error_is_set(&error) == TRUE) { |
| 1160 » » » CONNMAN_ERROR("Error retrieving reply argument: %s:%s", |
| 1161 » » » » error.name, error.message); |
| 1162 » » } else { |
| 1163 » » » CONNMAN_ERROR("Reply argument type is not UINT32"); |
| 1164 » » } |
| 1165 » } |
| 1166 done: |
| 1167 » dbus_message_unref(reply); |
| 1168 done_no_reply: |
| 1169 » if (status != 0) { |
| 1170 » » modem_update_activation_state(modem, |
| 1171 » » /* FIXME(jglasgow): need to leave state unchanged */ |
| 1172 » » CONNMAN_NETWORK_ACTIVATION_STATE_NOT_ACTIVATED, |
| 1173 » » convert_activation_error(status)); |
| 1174 » } |
| 1175 » /* |
| 1176 » * For the case of status == 0, we rely either on an explicit |
| 1177 » * signal of the new modem state, or we expect the modem to |
| 1178 » * disappear, reset itself and come back |
| 1179 » */ |
1143 } | 1180 } |
1144 | 1181 |
1145 | 1182 |
1146 /** | |
1147 * modem_activate_task: | |
1148 * @modem: modem object | |
1149 * @task: modem task object | |
1150 * | |
1151 * Send a DBUS message to activate a modem. As a task, all failures | |
1152 * must be reported via modem_handle_event. | |
1153 */ | |
1154 static void modem_activate_task(struct modem_data *modem) | |
1155 { | |
1156 const char *carrier = ""; /* Use modem's default carrier */ | |
1157 DBusMessage *message; | |
1158 | |
1159 _DBG_MODEMMGR("activate modem %s", modem->dbus_path); | |
1160 | |
1161 if (modem_dbus_build_message(modem->owner, MM_MODEM_CDMA_INTERFACE, | |
1162 modem->dbus_path, &message, | |
1163 MM_MODEM_CDMA_METHOD_ACTIVATE) < 0) { | |
1164 _DBG_MODEMMGR("activate modem %s", modem->dbus_path); | |
1165 modem_handle_event(modem, ME_ACTIVATE_FAILED); | |
1166 return; | |
1167 } | |
1168 | |
1169 dbus_message_append_args(message, | |
1170 DBUS_TYPE_STRING, &carrier, | |
1171 DBUS_TYPE_INVALID); | |
1172 | |
1173 modem_update_activation_state(modem, | |
1174 CONNMAN_NETWORK_ACTIVATION_STATE_ACTIVATING, | |
1175 CONNMAN_ELEMENT_ERROR_UNKNOWN); | |
1176 | |
1177 if (modem_dbus_send_with_reply(message, | |
1178 modem, | |
1179 modem_activate_reply, | |
1180 ACTIVATE_TIMEOUT_MS) < 0) { | |
1181 _DBG_MODEMMGR("activate modem %s", modem->dbus_path); | |
1182 modem_handle_event(modem, ME_ACTIVATE_FAILED); | |
1183 return; | |
1184 } | |
1185 } | |
1186 | |
1187 | |
1188 /** | 1183 /** |
1189 * modem_register_reply: | 1184 * modem_register_reply: |
1190 * @modem: modem object | 1185 * @modem: modem object |
1191 * @user_data: pointer to modem_task object | 1186 * @user_data: pointer to modem_task object |
1192 * | 1187 * |
1193 * Handle the reply from a DBUS register message. | 1188 * Handle the reply from a DBUS register message. |
1194 */ | 1189 */ |
1195 | 1190 |
1196 static void modem_register_reply(DBusPendingCall *call, void *user_data) | 1191 static void modem_register_reply(DBusPendingCall *call, void *user_data) |
1197 { | 1192 { |
(...skipping 1248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2446 return; | 2441 return; |
2447 case ME_DISABLE_SUCCEEDED: | 2442 case ME_DISABLE_SUCCEEDED: |
2448 modem_set_powered(modem, FALSE); | 2443 modem_set_powered(modem, FALSE); |
2449 modem->state = MODEM_STATE_DISABLED; | 2444 modem->state = MODEM_STATE_DISABLED; |
2450 modem_task_run(modem); | 2445 modem_task_run(modem); |
2451 return; | 2446 return; |
2452 case ME_DISABLE_FAILED: | 2447 case ME_DISABLE_FAILED: |
2453 modem_set_powered(modem, TRUE); | 2448 modem_set_powered(modem, TRUE); |
2454 modem_task_completed(&modem); | 2449 modem_task_completed(&modem); |
2455 return; | 2450 return; |
2456 case ME_ACTIVATE_SUCCEEDED: | |
2457 /* dbus signal will update activation state later */ | |
2458 modem_task_run(modem); | |
2459 return; | |
2460 case ME_ACTIVATE_FAILED: | |
2461 modem_update_activation_state(modem, | |
2462 CONNMAN_NETWORK_ACTIVATION_STATE_NOT_ACTIVATED, | |
2463 CONNMAN_ELEMENT_ERROR_ACTIVATION_FAILED); | |
2464 modem_task_run(modem); | |
2465 return; | |
2466 case ME_REGISTER_SUCCEEDED: | 2451 case ME_REGISTER_SUCCEEDED: |
2467 /* | 2452 /* |
2468 * Do not change state yet, | 2453 * Do not change state yet, |
2469 * wait for ME_GET_REGISTRATION_STATE_SUCCEEDED | 2454 * wait for ME_GET_REGISTRATION_STATE_SUCCEEDED |
2470 */ | 2455 */ |
2471 modem_task_run(modem); | 2456 modem_task_run(modem); |
2472 return; | 2457 return; |
2473 case ME_REGISTER_FAILED: | 2458 case ME_REGISTER_FAILED: |
2474 modem->gsm_registration_state = | 2459 modem->gsm_registration_state = |
2475 MM_MODEM_GSM_NETWORK_REG_STATUS_IDLE; | 2460 MM_MODEM_GSM_NETWORK_REG_STATUS_IDLE; |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2552 * create a connman network object and may | 2537 * create a connman network object and may |
2553 * auto connect. | 2538 * auto connect. |
2554 */ | 2539 */ |
2555 modem_task_completed(&modem); | 2540 modem_task_completed(&modem); |
2556 if (modem != NULL) | 2541 if (modem != NULL) |
2557 modem_registration_state_change(modem); | 2542 modem_registration_state_change(modem); |
2558 return; | 2543 return; |
2559 case ME_GET_REGISTRATION_STATE_FAILED: | 2544 case ME_GET_REGISTRATION_STATE_FAILED: |
2560 modem_task_completed(&modem); | 2545 modem_task_completed(&modem); |
2561 return; | 2546 return; |
2562 case ME_ACTIVATE_SUCCEEDED: | |
2563 /* dbus signal will update activation state later */ | |
2564 modem_task_run(modem); | |
2565 return; | |
2566 case ME_ACTIVATE_FAILED: | |
2567 modem_update_activation_state(modem, | |
2568 CONNMAN_NETWORK_ACTIVATION_STATE_NOT_ACTIVATED, | |
2569 CONNMAN_ELEMENT_ERROR_ACTIVATION_FAILED); | |
2570 modem_task_run(modem); | |
2571 return; | |
2572 case ME_GET_SIGNALQUALITY_FAILED: | 2547 case ME_GET_SIGNALQUALITY_FAILED: |
2573 /* N.B. We can continue even without signal quality */ | 2548 /* N.B. We can continue even without signal quality */ |
2574 return; | 2549 return; |
2575 case ME_GET_SIGNALQUALITY_SUCCEEDED: | 2550 case ME_GET_SIGNALQUALITY_SUCCEEDED: |
2576 case ME_SIGNAL_QUALITY_CHANGED: | 2551 case ME_SIGNAL_QUALITY_CHANGED: |
2577 modem_update_signal_quality(modem); | 2552 modem_update_signal_quality(modem); |
2578 return; | 2553 return; |
2579 case ME_GETINFO_SUCCEEDED: | 2554 case ME_GETINFO_SUCCEEDED: |
2580 case ME_GETINFO_FAILED: | 2555 case ME_GETINFO_FAILED: |
2581 case ME_GET_PROPERTIES_SUCCEEDED: | 2556 case ME_GET_PROPERTIES_SUCCEEDED: |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2646 static const char *eventToString(enum modem_event event) | 2621 static const char *eventToString(enum modem_event event) |
2647 { | 2622 { |
2648 static char text[32]; | 2623 static char text[32]; |
2649 switch (event) { | 2624 switch (event) { |
2650 case ME_NO_EVENT: return "NO_EVENT"; | 2625 case ME_NO_EVENT: return "NO_EVENT"; |
2651 case ME_PROPERTIES_CHANGED: return "PROPERTIES_CHANGED"; | 2626 case ME_PROPERTIES_CHANGED: return "PROPERTIES_CHANGED"; |
2652 case ME_SIGNAL_QUALITY_CHANGED: return "SIGNAL_QUALITY_CHANGED"; | 2627 case ME_SIGNAL_QUALITY_CHANGED: return "SIGNAL_QUALITY_CHANGED"; |
2653 case ME_REGISTRATION_STATE_CHANGED: return "REGISTRATION_STATE_CHANGED"; | 2628 case ME_REGISTRATION_STATE_CHANGED: return "REGISTRATION_STATE_CHANGED"; |
2654 case ME_ENABLE_SUCCEEDED: return "ENABLE_SUCCEEDED"; | 2629 case ME_ENABLE_SUCCEEDED: return "ENABLE_SUCCEEDED"; |
2655 case ME_ENABLE_FAILED: return "ENABLE_FAILED"; | 2630 case ME_ENABLE_FAILED: return "ENABLE_FAILED"; |
2656 case ME_ACTIVATE_SUCCEEDED: return "ACTIVATE_SUCCEEDED"; | |
2657 case ME_ACTIVATE_FAILED: return "ACTIVATE_FAILED"; | |
2658 case ME_REGISTER_SUCCEEDED: return "REGISTER_SUCCEEDED"; | 2631 case ME_REGISTER_SUCCEEDED: return "REGISTER_SUCCEEDED"; |
2659 case ME_REGISTER_FAILED: return "REGISTER_FAILED"; | 2632 case ME_REGISTER_FAILED: return "REGISTER_FAILED"; |
2660 case ME_DISABLE_SUCCEEDED: return "DISABLE_SUCCEEDED"; | 2633 case ME_DISABLE_SUCCEEDED: return "DISABLE_SUCCEEDED"; |
2661 case ME_DISABLE_FAILED: return "DISABLE_FAILED"; | 2634 case ME_DISABLE_FAILED: return "DISABLE_FAILED"; |
2662 case ME_GETIP4CONFIG_SUCCEEDED: return "GETIP4CONFIG_SUCCEEDED"; | 2635 case ME_GETIP4CONFIG_SUCCEEDED: return "GETIP4CONFIG_SUCCEEDED"; |
2663 case ME_GETIP4CONFIG_FAILED: return "GETIP4CONFIG_FAILED"; | 2636 case ME_GETIP4CONFIG_FAILED: return "GETIP4CONFIG_FAILED"; |
2664 case ME_GETINFO_SUCCEEDED: return "GETINFO_SUCCEEDED"; | 2637 case ME_GETINFO_SUCCEEDED: return "GETINFO_SUCCEEDED"; |
2665 case ME_GETINFO_FAILED: return "GETINFO_FAILED"; | 2638 case ME_GETINFO_FAILED: return "GETINFO_FAILED"; |
2666 case ME_GET_PROPERTIES_SUCCEEDED: return "GET_PROPERTIES_SUCCEEDED"; | 2639 case ME_GET_PROPERTIES_SUCCEEDED: return "GET_PROPERTIES_SUCCEEDED"; |
2667 case ME_GET_PROPERTIES_FAILED: return "GET_PROPERTIES_FAILED"; | 2640 case ME_GET_PROPERTIES_FAILED: return "GET_PROPERTIES_FAILED"; |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2936 } | 2909 } |
2937 | 2910 |
2938 static void network_remove(struct connman_network *network) | 2911 static void network_remove(struct connman_network *network) |
2939 { | 2912 { |
2940 _DBG_MODEMMGR("network %p", network); | 2913 _DBG_MODEMMGR("network %p", network); |
2941 } | 2914 } |
2942 | 2915 |
2943 /** | 2916 /** |
2944 * Activate the modem on the network. | 2917 * Activate the modem on the network. |
2945 * | 2918 * |
2946 * We may need to bring in some upstream changes. | |
2947 */ | 2919 */ |
2948 static int modem_network_activate(struct connman_network *network, | 2920 static int modem_network_activate(struct connman_network *network, |
2949 const char *carrier) | 2921 const char *carrier) |
2950 { | 2922 { |
2951 struct modem_data *modem; | 2923 struct modem_data *modem; |
| 2924 DBusMessage *message; |
2952 | 2925 |
2953 modem = network_get_modem(network, __func__); | 2926 modem = network_get_modem(network, __func__); |
2954 if (modem == NULL) { | 2927 if (modem == NULL) { |
2955 return -ENODEV; | 2928 return -ENODEV; |
2956 } | 2929 } |
2957 if (modem->type != MM_MODEM_TYPE_CDMA) { | 2930 if (modem->type != MM_MODEM_TYPE_CDMA) { |
2958 _DBG_MODEMMGR("Cannot activate non-CDMA modem\n"); | 2931 _DBG_MODEMMGR("Cannot activate non-CDMA modem\n"); |
2959 return -EINVAL; | 2932 return -EINVAL; |
2960 } | 2933 } |
2961 switch (modem->state) { | 2934 switch (modem->state) { |
2962 case MODEM_STATE_ENABLED: | 2935 case MODEM_STATE_ENABLED: |
2963 case MODEM_STATE_REGISTERED: | 2936 case MODEM_STATE_REGISTERED: |
2964 break; | 2937 break; |
2965 default: | 2938 default: |
2966 _DBG_MODEMMGR("Cannot activate in state: %s\n", | 2939 _DBG_MODEMMGR("Cannot activate in state: %s\n", |
2967 stateToString(modem->state)); | 2940 stateToString(modem->state)); |
2968 return -EIO; | 2941 return -EIO; |
2969 } | 2942 } |
2970 » return modem_task_run_new(modem, &activate_modem_work); | 2943 |
| 2944 » if (modem_dbus_build_message(modem->owner, MM_MODEM_CDMA_INTERFACE, |
| 2945 » » » » modem->dbus_path, &message, |
| 2946 » » » » MM_MODEM_CDMA_METHOD_ACTIVATE) < 0) { |
| 2947 » » _DBG_MODEMMGR("activate modem %s", modem->dbus_path); |
| 2948 » » return -EIO; |
| 2949 » } |
| 2950 |
| 2951 » _DBG_MODEMMGR("activate modem %s", modem->dbus_path); |
| 2952 » dbus_message_append_args(message, |
| 2953 » » » » DBUS_TYPE_STRING, &carrier, |
| 2954 » » » » DBUS_TYPE_INVALID); |
| 2955 |
| 2956 » if (modem_dbus_send_with_reply(message, |
| 2957 » » » » modem, |
| 2958 » » » » modem_activate_reply, |
| 2959 » » » » ACTIVATE_TIMEOUT_MS) < 0) { |
| 2960 » » _DBG_MODEMMGR("activate modem %s", modem->dbus_path); |
| 2961 » » return -EIO; |
| 2962 » } |
| 2963 » modem_update_activation_state(modem, |
| 2964 » » CONNMAN_NETWORK_ACTIVATION_STATE_ACTIVATING, |
| 2965 » » CONNMAN_ELEMENT_ERROR_UNKNOWN); |
| 2966 |
| 2967 » return 0; |
2971 } | 2968 } |
2972 | 2969 |
2973 static struct connman_network_driver network_driver = { | 2970 static struct connman_network_driver network_driver = { |
2974 .name = "network", | 2971 .name = "network", |
2975 .type = CONNMAN_NETWORK_TYPE_CELLULAR, | 2972 .type = CONNMAN_NETWORK_TYPE_CELLULAR, |
2976 .probe = network_probe, | 2973 .probe = network_probe, |
2977 .remove = network_remove, | 2974 .remove = network_remove, |
2978 .connect = network_connect, | 2975 .connect = network_connect, |
2979 .disconnect = network_disconnect, | 2976 .disconnect = network_disconnect, |
2980 /* .setup = network_setup, upstream */ | 2977 /* .setup = network_setup, upstream */ |
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3254 &extract_err)) { | 3251 &extract_err)) { |
3255 struct connman_network *network = get_network(modem); | 3252 struct connman_network *network = get_network(modem); |
3256 if (network != NULL) | 3253 if (network != NULL) |
3257 connman_network_set_olp_url(network, | 3254 connman_network_set_olp_url(network, |
3258 olp_url); | 3255 olp_url); |
3259 g_free(modem->olp_url); | 3256 g_free(modem->olp_url); |
3260 modem->olp_url = g_strdup(olp_url); | 3257 modem->olp_url = g_strdup(olp_url); |
3261 } | 3258 } |
3262 dbus_message_iter_next(&dict); | 3259 dbus_message_iter_next(&dict); |
3263 } | 3260 } |
error: old chunk mismatch |
None
OLD | NEW |