コード例 #1
0
ファイル: mtk.c プロジェクト: semafor/ofono
static void mtk_radio_state_changed(struct ril_msg *message, gpointer user_data)
{
	struct ofono_modem *modem = user_data;
	struct mtk_data *md = ofono_modem_get_data(modem);
	int radio_state = g_ril_unsol_parse_radio_state_changed(md->ril,
								message);

	ofono_info("%s, slot %d: state: %s md->ofono_online: %d",
			__func__, md->slot,
			ril_radio_state_to_string(radio_state),
			md->ofono_online);

	md->radio_state = radio_state;

	switch (radio_state) {
	case RADIO_STATE_ON:
	/* RADIO_STATE_SIM_* are deprecated in AOSP, but still used by MTK */
	case RADIO_STATE_SIM_NOT_READY:
	case RADIO_STATE_SIM_LOCKED_OR_ABSENT:
	case RADIO_STATE_SIM_READY:
	case RADIO_STATE_UNAVAILABLE:
	case RADIO_STATE_OFF:
		break;
	default:
		/* Malformed parcel; no radio state == broken rild */
		g_assert(FALSE);
	}

	exec_online_callback(md);
}
コード例 #2
0
ファイル: ril.c プロジェクト: cherojeong/ofono
static void ril_radio_state_changed(struct ril_msg *message, gpointer user_data)
{
	struct ofono_modem *modem = user_data;
	struct ril_data *rd = ofono_modem_get_data(modem);
	int radio_state = g_ril_unsol_parse_radio_state_changed(rd->ril,
								message);

	if (radio_state != rd->radio_state) {

		ofono_info("%s: state: %s rd->ofono_online: %d",
				__func__,
				ril_radio_state_to_string(radio_state),
				rd->ofono_online);

		rd->radio_state = radio_state;

		switch (radio_state) {
		case RADIO_STATE_ON:

			if (rd->radio_settings == NULL) {
				char *rs_driver;
				struct ril_radio_settings_driver_data
						rs_data = { rd->ril, modem };

				if (rd->vendor == OFONO_RIL_VENDOR_QCOM_MSIM)
					rs_driver = QCOMMSIMMODEM;
				else
					rs_driver = RILMODEM;

				rd->radio_settings =
					ofono_radio_settings_create(modem,
							rd->vendor, rs_driver,
							&rs_data);
			}

			break;

		case RADIO_STATE_UNAVAILABLE:
		case RADIO_STATE_OFF:

			/*
			 * Unexpected radio state change, as we are supposed to
			 * be online. UNAVAILABLE has been seen occassionally
			 * when powering off the phone. We wait 5 secs to avoid
			 * too fast re-spawns, then exit with error to make
			 * upstart re-start ofono.
			 */
			if (rd->ofono_online) {
				ofono_error("%s: radio self-powered off!",
						__func__);
				sleep(5);
				exit(1);
			}
			break;
		default:
			/* Malformed parcel; no radio state == broken rild */
			g_assert(FALSE);
		}
	}
}
コード例 #3
0
ファイル: mtk.c プロジェクト: semafor/ofono
static void radio_state_changed(struct ril_msg *message, gpointer user_data)
{
	struct socket_data *sock = user_data;
	int radio_state = g_ril_unsol_parse_radio_state_changed(sock->ril,
								message);

	if (radio_state != sock->radio_state) {
		struct socket_data *sock_c = socket_complement(sock);

		ofono_info("%s, %s, state: %s", __func__, sock->path,
				ril_radio_state_to_string(radio_state));

		/*
		 * If there is just one slot, just start it. Otherwise, we ask
		 * who owns the 3G capabilities in case both slots have already
		 * radio state different from UNAVAILABLE.
		 */
		if (mtk_data_1 == NULL) {
			mtk_data_0->has_3g = TRUE;
			start_slot(mtk_data_0, sock, hex_slot_0);
		} else if (sock->radio_state == RADIO_STATE_UNAVAILABLE &&
				sock_c != NULL && sock_c->radio_state !=
						RADIO_STATE_UNAVAILABLE) {
			query_3g_caps(sock);
		}

		sock->radio_state = radio_state;
	}
}
コード例 #4
0
ファイル: ril.c プロジェクト: jpakkane/ofono
static void ril_radio_state_changed(struct ril_msg *message, gpointer user_data)
{
	struct ofono_modem *modem = user_data;
	struct ril_data *ril = ofono_modem_get_data(modem);
	int radio_state = g_ril_unsol_parse_radio_state_changed(ril->modem,
								message);

	if (radio_state != ril->radio_state) {

		ofono_info("%s: state: %s ril->ofono_online: %d",
				__func__,
				ril_radio_state_to_string(radio_state),
				ril->ofono_online);

		ril->radio_state = radio_state;

		switch (radio_state) {
		case RADIO_STATE_ON:

			if (ril->voice == NULL)
				ril->voice =
					ofono_voicecall_create(modem,
								0,
								RILMODEM,
								ril->modem);

			send_get_sim_status(modem);
			break;

		case RADIO_STATE_UNAVAILABLE:
		case RADIO_STATE_OFF:

			/*
			 * If radio powers off asychronously, then
			 * assert, and let upstart re-start the stack.
			 */
			if (ril->ofono_online) {
				ofono_error("%s: radio self-powered off!",
						__func__);
				g_assert(FALSE);
			}
			break;
		default:
			/* Malformed parcel; no radio state == broken rild */
			g_assert(FALSE);
		}
	}
}