Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(995)

Side by Side Diff: plugins/modemmgr.c

Issue 6709018: Simplify handing of activate; return activate errors (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/flimflam.git@master
Patch Set: Revert python changes. Get in a different CL Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
None
OLDNEW
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
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
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
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
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
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
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
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
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

OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698