Example #1
0
void set_powered_cb(struct ofono_error *error, gpointer user_data)
{
	struct cb_data *cbd = user_data;
	struct ofono_data *od = cbd->user;
	telephony_result_cb cb = cbd->cb;
	struct telephony_error terr;

	if (error) {
		terr.code = 1; /* FIXME */
		cb(&terr, cbd->data);
		goto cleanup;
	}

	if (od->power_target) {
		ofono_modem_set_online(od->modem, od->power_target, set_online_cb, cbd);
	}
	else {
		od->power_set_pending = false;
		cb(NULL, cbd->data);
		goto cleanup;
	}

	return;

cleanup:
	g_free(cbd);
}
Example #2
0
void ofono_power_set(struct telephony_service *service, bool power, telephony_result_cb cb, void *data)
{
	struct cb_data *cbd = cb_data_new(cb, data);
	struct ofono_data *od = telephony_service_get_data(service);
	bool powered = false;
	struct telephony_error error;

	if (od->power_set_pending) {
		error.code = TELEPHONY_ERROR_ALREADY_INPROGRESS;
		cb(&error, data);
		return;
	}

	od->power_set_pending = true;
	od->power_target = power;

	cbd->user = od;

	powered = ofono_modem_get_powered(od->modem);
	if (!powered) {
		ofono_modem_set_powered(od->modem, power, set_powered_cb, cbd);
	}
	else {
		ofono_modem_set_online(od->modem, power, set_online_cb, cbd);
	}
}
Example #3
0
static void test_modem_set_online()
{
  int online;

  printf("please input online setting (0 - offline, else online):\n");
  if (scanf("%d", &online) == EOF)
    return;

  ofono_modem_set_online(g_modem, online != 0, NULL, NULL);
}