#include <efl_extension.h>
+#include <tapi_common.h>
+#include <TapiUtility.h>
+#include <ITapiSim.h>
+#include <ITapiModem.h>
+#include <TelPower.h>
#include <vconf.h>
#include "log.h"
static struct __control_flight_mode_s {
Evas_Object *flight_mode_popup;
Evas_Object *flight_mode_layout;
+ TapiHandle *tel_handle;
} s_info = {
.flight_mode_popup = NULL,
.flight_mode_layout = NULL,
+ .tel_handle = NULL,
};
extern control_info_t control_button_list[MOMENTS_CONTROLS_MAX];
+
+static int __init_tapi_handle(void)
+{
+ TelSimCardStatus_t sim_status = TAPI_SIM_STATUS_UNKNOWN;
+ int card_changed = 0;
+ int ret = 0;
+
+ char **cp_names = tel_get_cp_name_list();
+ if (!cp_names) {
+ _E("Failed to get cp_names");
+ return -1;
+ }
+
+ s_info.tel_handle = tel_init(cp_names[0]);
+ if (!s_info.tel_handle) {
+ _E("Failed to init tapi handle");
+ return -1;
+ }
+
+ ret = tel_get_sim_init_info(s_info.tel_handle, &sim_status, &card_changed);
+ if (ret != TAPI_API_SUCCESS) {
+ _E("Failed to get sim init info[%d]", ret);
+ return -1;
+ }
+
+ _D("SIM NAME: %s, %d", cp_names[0], sim_status);
+
+ free(cp_names);
+ return 0;
+}
+
+static void __fini_tapi_handle(void)
+{
+ if (s_info.tel_handle) {
+ tel_deinit(s_info.tel_handle);
+ s_info.tel_handle = NULL;
+ }
+}
+
+static void __tapi_flightmode_event_cb(TapiHandle *handle, int result, void *data, void *user_data)
+{
+ _D("Set Call State as Flight Mode Result[%d]", result);
+
+ switch (result) {
+ case TAPI_POWER_FLIGHT_MODE_RESP_ON:
+ break;
+ case TAPI_POWER_FLIGHT_MODE_RESP_OFF:
+ __fini_tapi_handle();
+ break;
+ case TAPI_POWER_FLIGHT_MODE_RESP_FAIL:
+ _E("Failed to set call state as flight mode");
+ break;
+ case TAPI_POWER_FLIGHT_MODE_RESP_MAX:
+ break;
+ default:
+ break;
+ }
+}
+
+static int __set_call_state_as_flight_mode(bool current_flight_mode)
+{
+ int ret = TAPI_API_SUCCESS;
+ tapi_power_flight_mode_type_t mode;
+
+ if (!s_info.tel_handle) {
+ ret = __init_tapi_handle();
+ if (ret != 0) {
+ _E("Failed to init tapi handle[%d]", ret);
+ return -1;
+ }
+ }
+
+ if (!current_flight_mode)
+ mode = TAPI_POWER_FLIGHT_MODE_ENTER;
+ else
+ mode = TAPI_POWER_FLIGHT_MODE_LEAVE;
+
+ ret = tel_set_flight_mode(s_info.tel_handle, mode, __tapi_flightmode_event_cb, NULL);
+ if (ret != TAPI_API_SUCCESS) {
+ _E("Failed to set tapi flight mode event cb[%d]", ret);
+ return -1;
+ }
+
+ return 0;
+}
+
static void __flight_mode_popup_cancel_cb(void *data, Evas_Object *obj, void *event_info)
{
if (evas_object_visible_get(s_info.flight_mode_popup) == false)
static void __flight_mode_popup_ok_cb(void *data, Evas_Object *obj, void *event_info)
{
+ int ret = 0;
+
if (evas_object_visible_get(s_info.flight_mode_popup) == false)
return;
- int ret = vconf_set_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, true);
- if (ret < 0)
- _E("Failed to set vconfkey(%s) : %d", VCONFKEY_TELEPHONY_FLIGHT_MODE, ret);
+ if (!moments_check_is_3g_device()) {
+ ret = vconf_set_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, true);
+ if (ret < 0)
+ _E("Failed to set vconfkey(%s) : %d", VCONFKEY_TELEPHONY_FLIGHT_MODE, ret);
+ } else {
+ ret = __set_call_state_as_flight_mode(false);
+ if (ret < 0)
+ _E("Failed to set call state as flight mode");
+ }
elm_popup_dismiss(s_info.flight_mode_popup);
s_info.flight_mode_popup = NULL;
moments_hide();
__flight_mode_popup_view_create();
} else {
- int ret = vconf_set_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, false);
- if (ret < 0)
- _E("Failed to set vconfkey(%s) : %d", VCONFKEY_TELEPHONY_FLIGHT_MODE, ret);
+ int ret = 0;
+ if (moments_check_is_3g_device()) {
+ ret = __set_call_state_as_flight_mode(is_flight_mode);
+ if (ret < 0)
+ _E("Failed to set call state as flight mode");
+ } else {
+ ret = vconf_set_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, false);
+ if (ret < 0)
+ _E("Failed to set vconfkey(%s) : %d", VCONFKEY_TELEPHONY_FLIGHT_MODE, ret);
+ }
}
}
_D("Callsignal Strength or Roaming State is changed");
int callsignal_strength = 0;
bool is_roaming = false;
+ int is_flight = 0;
- __get_callsignal_state(&is_roaming, &callsignal_strength);
+ if (vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &is_flight) < 0) {
+ _E("Failed to get vconfkey for flight");
+ return;
+ }
- moments_status_callsignal_update(callsignal_strength, is_roaming);
+ if (!is_flight) {
+ __get_callsignal_state(&is_roaming, &callsignal_strength);
+
+ moments_status_callsignal_update(callsignal_strength, is_roaming);
+ }
}
static void __callsignal_enable(void)
{
_D("Network type or Packet type is changed");
int network_type = 0;
int packet_type = 0;
+ int is_flight = 0;
+
+ if (vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &is_flight) < 0) {
+ _E("Failed to get vconfkey for flight");
+ return;
+ }
- __get_network_strength_and_packet_type(&network_type, &packet_type);
+ if (!is_flight) {
+ __get_network_strength_and_packet_type(&network_type, &packet_type);
- moments_status_network_update(network_type, network_type == 0 ? network_type : packet_type+NETWORK_PACKET_INDEX_START);
+ moments_status_network_update(network_type, network_type == 0 ? network_type : packet_type+NETWORK_PACKET_INDEX_START);
+ }
}
static void __network_enable(void)
{
static void __flight_mode_changed_cb(keynode_t *node, void *user_data)
{
- _D("Flight Mode is changed");
int is_flight = 0;
if (vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &is_flight) < 0) {
_E("Failed to get vconfkey for flight");
return;
}
+ _D("Flight Mode is changed to [%d]", is_flight);
// on
if (is_flight) {
if (moments_check_is_3g_device() && s_info.telephony_initialized) {
{
_D("Callforwarding State is changed");
int state = 0;
+ int is_flight = 0;
+
+ if (vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &is_flight) < 0) {
+ _E("Failed to get vconfkey for flight");
+ return;
+ }
if (vconf_get_int(VCONFKEY_TELEPHONY_CALL_FORWARD_STATE, &state) < 0) {
_E("Failed to get vconfkey for callforwarding");
return;
}
- if (state == VCONFKEY_TELEPHONY_CALL_FORWARD_ON)
+ if (state == VCONFKEY_TELEPHONY_CALL_FORWARD_ON && !is_flight)
moments_status_callforwarding_icon_show();
else
moments_status_callforwarding_icon_hide();