From 27bab67cccac471a46549985033b5d6ec4b14a7e Mon Sep 17 00:00:00 2001 From: Wootak Jung Date: Wed, 12 Apr 2017 10:11:22 +0900 Subject: [PATCH] Upgrade test app Change-Id: Ie63c84a810390fb7a827c345936686daaa9d6165 --- CMakeLists.txt | 2 +- packaging/capi-telephony.spec | 3 +- test/CMakeLists.txt | 20 -- test/test_all_api.c | 762 ------------------------------------------ test_src/CMakeLists.txt | 20 ++ test_src/call.c | 262 +++++++++++++++ test_src/call.h | 27 ++ test_src/main.c | 147 ++++++++ test_src/menu.c | 378 +++++++++++++++++++++ test_src/menu.h | 122 +++++++ test_src/modem.c | 110 ++++++ test_src/network.c | 635 +++++++++++++++++++++++++++++++++++ test_src/network.h | 27 ++ test_src/sim.c | 318 ++++++++++++++++++ test_src/sim.h | 27 ++ 15 files changed, 2076 insertions(+), 784 deletions(-) delete mode 100644 test/CMakeLists.txt delete mode 100644 test/test_all_api.c create mode 100644 test_src/CMakeLists.txt create mode 100644 test_src/call.c create mode 100644 test_src/call.h create mode 100644 test_src/main.c create mode 100644 test_src/menu.c create mode 100644 test_src/menu.h create mode 100644 test_src/modem.c create mode 100644 test_src/network.c create mode 100644 test_src/network.h create mode 100644 test_src/sim.c create mode 100644 test_src/sim.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 63fc370..792c143 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -105,7 +105,7 @@ CONFIGURE_FILE( ) INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}.pc DESTINATION ${LIBDIR}/pkgconfig) -ADD_SUBDIRECTORY(test) +#ADD_SUBDIRECTORY(test_src) IF(UNIX) diff --git a/packaging/capi-telephony.spec b/packaging/capi-telephony.spec index d9bd4a6..4e6843e 100644 --- a/packaging/capi-telephony.spec +++ b/packaging/capi-telephony.spec @@ -1,6 +1,6 @@ Name: capi-telephony Summary: Telephony Core API -Version: 0.1.71 +Version: 0.1.72 Release: 1 Group: System/Libraries License: Apache-2.0 @@ -50,6 +50,7 @@ rm -rf %{buildroot} %manifest capi-telephony.manifest %{_libdir}/libcapi-telephony.so.* %license LICENSE +#%{_bindir}/telephony-test %files devel %{_includedir}/telephony/telephony.h diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt deleted file mode 100644 index 97657b6..0000000 --- a/test/CMakeLists.txt +++ /dev/null @@ -1,20 +0,0 @@ -SET(fw_test "${fw_name}-test") - -INCLUDE(FindPkgConfig) -pkg_check_modules(${fw_test} REQUIRED glib-2.0) -FOREACH(flag ${${fw_test}_CFLAGS}) - SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") -ENDFOREACH(flag) - -SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -Wall") - -#ADD_EXECUTABLE("system-sensor" system-sensor.c) -#TARGET_LINK_LIBRARIES("system-sensor" ${fw_name} ${${fw_test}_LDFLAGS}) - -aux_source_directory(. sources) -FOREACH(src ${sources}) - GET_FILENAME_COMPONENT(src_name ${src} NAME_WE) - MESSAGE("${src_name}") - ADD_EXECUTABLE(${src_name} ${src}) - TARGET_LINK_LIBRARIES(${src_name} ${fw_name} ${${fw_test}_LDFLAGS}) -ENDFOREACH() diff --git a/test/test_all_api.c b/test/test_all_api.c deleted file mode 100644 index ed231c2..0000000 --- a/test/test_all_api.c +++ /dev/null @@ -1,762 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include -#include -#include - -#include - -#ifdef LOG_TAG -#undef LOG_TAG -#endif -#define LOG_TAG "CAPI_TELEPHONY_TEST" - -static GMainLoop *event_loop; -static telephony_handle_list_s handle_list; - -static int sim_noti_tbl[] = { - TELEPHONY_NOTI_SIM_STATUS, - TELEPHONY_NOTI_SIM_CALL_FORWARDING_INDICATOR_STATE -}; - -static int network_noti_tbl[] = { - TELEPHONY_NOTI_NETWORK_SERVICE_STATE, - TELEPHONY_NOTI_NETWORK_CELLID, - TELEPHONY_NOTI_NETWORK_ROAMING_STATUS, - TELEPHONY_NOTI_NETWORK_SIGNALSTRENGTH_LEVEL, - TELEPHONY_NOTI_NETWORK_NETWORK_NAME, - TELEPHONY_NOTI_NETWORK_PS_TYPE, - TELEPHONY_NOTI_NETWORK_DEFAULT_DATA_SUBSCRIPTION, - TELEPHONY_NOTI_NETWORK_DEFAULT_SUBSCRIPTION, - TELEPHONY_NOTI_NETWORK_LAC, - TELEPHONY_NOTI_NETWORK_TAC, - TELEPHONY_NOTI_NETWORK_SYSTEM_ID, - TELEPHONY_NOTI_NETWORK_NETWORK_ID, - TELEPHONY_NOTI_NETWORK_BS_ID, - TELEPHONY_NOTI_NETWORK_BS_LATITUDE, - TELEPHONY_NOTI_NETWORK_BS_LONGITUDE -}; - -static int call_noti_tbl[] = { - TELEPHONY_NOTI_VOICE_CALL_STATUS_IDLE, - TELEPHONY_NOTI_VOICE_CALL_STATUS_ACTIVE, - TELEPHONY_NOTI_VOICE_CALL_STATUS_HELD, - TELEPHONY_NOTI_VOICE_CALL_STATUS_DIALING, - TELEPHONY_NOTI_VOICE_CALL_STATUS_ALERTING, - TELEPHONY_NOTI_VOICE_CALL_STATUS_INCOMING, - TELEPHONY_NOTI_CALL_PREFERRED_VOICE_SUBSCRIPTION -}; - -static const char *_mapping_sim_state(telephony_sim_state_e sim_state) -{ - switch (sim_state) { - case TELEPHONY_SIM_STATE_AVAILABLE: - return "Available"; - case TELEPHONY_SIM_STATE_LOCKED: - return "Locked"; - case TELEPHONY_SIM_STATE_UNKNOWN: - return "Unknown"; - default: - return "Unavailable"; - } -} - -static void sim_noti_cb(telephony_h handle, telephony_noti_e noti_id, void *data, void *user_data) -{ - switch (noti_id) { - case TELEPHONY_NOTI_SIM_STATUS: - LOGI("Noti!! SIM status: [%d]", *(int *)data); - break; - case TELEPHONY_NOTI_SIM_CALL_FORWARDING_INDICATOR_STATE: - LOGI("Noti!! SIM Call forwarding indicator state: [%s]", *(bool *)data ? "ON" : "OFF"); - break; - default: - break; - } -} - -static const char *_mapping_service_state(telephony_network_service_state_e service_state) -{ - switch (service_state) { - case TELEPHONY_NETWORK_SERVICE_STATE_IN_SERVICE: - return "In service"; - case TELEPHONY_NETWORK_SERVICE_STATE_OUT_OF_SERVICE: - return "Out of service"; - case TELEPHONY_NETWORK_SERVICE_STATE_EMERGENCY_ONLY: - return "Emergency only"; - default: - return "Unknown state"; - } -} - -static const char *_mapping_name_option(telephony_network_name_option_e option) -{ - switch (option) { - case TELEPHONY_NETWORK_NAME_OPTION_NETWORK: - return "By network"; - case TELEPHONY_NETWORK_NAME_OPTION_SPN: - return "By SPN"; - case TELEPHONY_NETWORK_NAME_OPTION_ANY: - return "By both"; - default: - return "Unknown priority"; - } -} - -static const char *_mapping_ps_type(telephony_network_ps_type_e ps_type) -{ - switch (ps_type) { - case TELEPHONY_NETWORK_PS_TYPE_HSDPA: - return "HSDPA"; - case TELEPHONY_NETWORK_PS_TYPE_HSUPA: - return "HSUPA"; - case TELEPHONY_NETWORK_PS_TYPE_HSPA: - return "HSPA"; - case TELEPHONY_NETWORK_PS_TYPE_HSPAP: - return "HSPAP"; - default: - return "Unknown"; - } -} - -static const char *_mapping_default_data_sub(telephony_network_default_data_subs_e default_data_sub) -{ - switch (default_data_sub) { - case TELEPHONY_NETWORK_DEFAULT_DATA_SUBS_SIM1: - return "SIM1"; - case TELEPHONY_NETWORK_DEFAULT_DATA_SUBS_SIM2: - return "SIM2"; - case TELEPHONY_NETWORK_DEFAULT_DATA_SUBS_UNKNOWN: - return "Unknown"; - default: - return "Unavailable"; - } -} - -static const char *_mapping_default_sub(telephony_network_default_subs_e default_sub) -{ - switch (default_sub) { - case TELEPHONY_NETWORK_DEFAULT_SUBS_SIM1: - return "SIM1"; - case TELEPHONY_NETWORK_DEFAULT_SUBS_SIM2: - return "SIM2"; - case TELEPHONY_NETWORK_DEFAULT_SUBS_UNKNOWN: - return "Unknown"; - default: - return "Unavailable"; - } -} - -static const char *_mapping_network_type(telephony_network_type_e network_type) -{ - switch (network_type) { - case TELEPHONY_NETWORK_TYPE_GSM: - return "GSM"; - case TELEPHONY_NETWORK_TYPE_GPRS: - return "GPRS"; - case TELEPHONY_NETWORK_TYPE_EDGE: - return "EDGE"; - case TELEPHONY_NETWORK_TYPE_UMTS: - return "UMTS"; - case TELEPHONY_NETWORK_TYPE_HSDPA: - return "HSDPA"; - case TELEPHONY_NETWORK_TYPE_LTE: - return "LTE"; - default: - return "Unknown"; - } -} - -static void network_noti_cb(telephony_h handle, telephony_noti_e noti_id, void *data, void *user_data) -{ - switch (noti_id) { - case TELEPHONY_NOTI_NETWORK_SERVICE_STATE: - LOGI("Noti!!! Service state: [%s]", _mapping_service_state(*(int *)data)); - break; - case TELEPHONY_NOTI_NETWORK_CELLID: - LOGI("Noti!!! Cell ID: [%d]", *(int *)data); - break; - case TELEPHONY_NOTI_NETWORK_ROAMING_STATUS: - LOGI("Noti!!! Roaming status: [%s]", *(int *)data ? "ON" : "OFF"); - break; - case TELEPHONY_NOTI_NETWORK_SIGNALSTRENGTH_LEVEL: - LOGI("Noti!!! Signal strength: [%d]", *(int *)data); - break; - case TELEPHONY_NOTI_NETWORK_NETWORK_NAME: - LOGI("Noti!!! Network Name: [%s]", *(int *)data); - break; - case TELEPHONY_NOTI_NETWORK_PS_TYPE: - LOGI("Noti!!! PS Type: [%s]", _mapping_ps_type(*(int *)data)); - break; - case TELEPHONY_NOTI_NETWORK_DEFAULT_DATA_SUBSCRIPTION: - LOGI("Noti!!! Default Data Subscription: [%d]", *(int *)data); - break; - case TELEPHONY_NOTI_NETWORK_DEFAULT_SUBSCRIPTION: - LOGI("Noti!!! Default Subscription: [%d]", *(int *)data); - break; - case TELEPHONY_NOTI_NETWORK_LAC: - LOGI("Noti!!! LAC: [%d]", *(int *)data); - break; - case TELEPHONY_NOTI_NETWORK_TAC: - LOGI("Noti!!! TAC: [%d]", *(int *)data); - break; - case TELEPHONY_NOTI_NETWORK_SYSTEM_ID: - LOGI("Noti!!! System ID: [%d]", *(int *)data); - break; - case TELEPHONY_NOTI_NETWORK_NETWORK_ID: - LOGI("Noti!!! Network ID: [%d]", *(int *)data); - break; - case TELEPHONY_NOTI_NETWORK_BS_ID: - LOGI("Noti!!! Base Station ID: [%d]", *(int *)data); - break; - case TELEPHONY_NOTI_NETWORK_BS_LATITUDE: - LOGI("Noti!!! Base Station Latitude: [%d]", *(int *)data); - break; - case TELEPHONY_NOTI_NETWORK_BS_LONGITUDE: - LOGI("Noti!!! Base Station Longitude: [%d]", *(int *)data); - break; - default: - LOGE("Unknown noti"); - break; - } - -} - -static const char *_mapping_call_state(telephony_call_state_e call_state) -{ - switch (call_state) { - case TELEPHONY_CALL_STATE_IDLE: - return "Idle"; - case TELEPHONY_CALL_STATE_CONNECTING: - return "Connecting"; - case TELEPHONY_CALL_STATE_CONNECTED: - return "Active"; - default: - return "Unknown"; - } -} - -static const char *_mapping_preferred_voice_sub(telephony_call_preferred_voice_subs_e call_sub) -{ - switch (call_sub) { - case TELEPHONY_CALL_PREFERRED_VOICE_SUBS_CURRENT_NETWORK: - return "CURRENT_NETWORK"; - case TELEPHONY_CALL_PREFERRED_VOICE_SUBS_ASK_ALWAYS: - return "ASK_ALWAYS"; - case TELEPHONY_CALL_PREFERRED_VOICE_SUBS_SIM1: - return "SIM1"; - case TELEPHONY_CALL_PREFERRED_VOICE_SUBS_SIM2: - return "SIM2"; - case TELEPHONY_CALL_PREFERRED_VOICE_SUBS_UNKNOWN: - default: - return "Unknown"; - } -} - -static void call_noti_cb(telephony_h handle, telephony_noti_e noti_id, void *data, void *user_data) -{ - int ret_value; - telephony_call_h *call_list; - unsigned int count = 0; - - if (noti_id == TELEPHONY_NOTI_CALL_PREFERRED_VOICE_SUBSCRIPTION) { - LOGI("Noti!!! Preferred Voice Subscription: [%d]", *(int *)data); - return; - } - - switch (noti_id) { - case TELEPHONY_NOTI_VOICE_CALL_STATUS_IDLE: - LOGI("Noti!!! Voice Call Status Idle!!! [%d]", *(int *)data); - break; - case TELEPHONY_NOTI_VOICE_CALL_STATUS_ACTIVE: - LOGI("Noti!!! Voice Call Status Active!!! [%d]", *(int *)data); - break; - case TELEPHONY_NOTI_VOICE_CALL_STATUS_HELD: - LOGI("Noti!!! Voice Call Status Held!!! [%d]", *(int *)data); - break; - case TELEPHONY_NOTI_VOICE_CALL_STATUS_DIALING: - LOGI("Noti!!! Voice Call Status Dialing!!! [%d]", *(int *)data); - break; - case TELEPHONY_NOTI_VOICE_CALL_STATUS_ALERTING: - LOGI("Noti!!! Voice Call Status Alerting!!! [%d]", *(int *)data); - break; - case TELEPHONY_NOTI_VOICE_CALL_STATUS_INCOMING: - LOGI("Noti!!! Voice Call Status Incoming!!! [%d]", *(int *)data); - break; - default: - LOGE("Unknown noti"); - break; - } - - ret_value = telephony_call_get_call_list(handle_list.handle[0], &count, &call_list); - if (ret_value != TELEPHONY_ERROR_NONE) { - LOGE("telephony_call_get_call_list() failed!!!zz [0x%x]", ret_value); - } else { - int i; - unsigned int handle_id = 0; - char *number = NULL; - telephony_call_type_e type = 0; - telephony_call_status_e status = 0; - telephony_call_direction_e direction = 0; - bool conf_status = 0; - - for (i = 0; i < count; i++) { - telephony_call_get_handle_id(call_list[i], &handle_id); - telephony_call_get_number(call_list[i], &number); - telephony_call_get_type(call_list[i], &type); - telephony_call_get_status(call_list[i], &status); - telephony_call_get_direction(call_list[i], &direction); - telephony_call_get_conference_status(call_list[i], &conf_status); - LOGI("id[%d] number[%s] type[%s] status[%s] direction[%s] conference_status[%s]", - handle_id, number, - type == TELEPHONY_CALL_TYPE_VOICE ? "VOICE" : - type == TELEPHONY_CALL_TYPE_VIDEO ? "VIDEO" : "E911", - status == TELEPHONY_CALL_STATUS_IDLE ? "IDLE" : - status == TELEPHONY_CALL_STATUS_ACTIVE ? "ACTVIE" : - status == TELEPHONY_CALL_STATUS_HELD ? "HELD" : - status == TELEPHONY_CALL_STATUS_DIALING ? "DIALING" : - status == TELEPHONY_CALL_STATUS_ALERTING ? "ALERTING" : - status == TELEPHONY_CALL_STATUS_INCOMING ? "INCOMING" : "UNKNOWN", - direction == TELEPHONY_CALL_DIRECTION_MO ? "MO" : "MT", - conf_status ? "TRUE" : "FALSE"); - free(number); - number = NULL; - } - telephony_call_release_call_list(count, &call_list); - } - -} - -static void on_telephony_state_changed_cb(telephony_state_e state, void *user_data) -{ - LOGI("telephony state value : [%d]", state); -} - -int main() -{ - int ret_value, i; - - /* SIM value */ - char *operator = NULL; - char *icc_id = NULL; - char *msin = NULL; - char *spn = NULL; - telephony_sim_state_e sim_state = 0; - unsigned int app_list = 0; - char *subscriber_number = NULL; - char *subscriber_id = NULL; - bool is_changed = FALSE; - telephony_sim_lock_state_e lock_state = 0; - char *gid1 = NULL; - bool cf_state = FALSE; - - /* Network value */ - int cell_id = 0; - int lac = 0; - char *mcc = NULL; - char *mnc = NULL; - char *network_name = NULL; - bool roaming_status; - telephony_network_rssi_e rssi = 0; - telephony_network_service_state_e service_state = 0; - telephony_network_type_e network_type = 0; - telephony_network_default_data_subs_e default_data_sub = 0; - telephony_network_default_subs_e default_sub = 0; - telephony_network_name_option_e network_name_option = 0; - telephony_network_ps_type_e ps_type = 0; - telephony_network_selection_mode_e sel_mode; - int tac; - int nid, sid, bs_id, bs_latitude, bs_longitude; - - /* Call value */ - telephony_call_state_e call_state = 0; - telephony_call_preferred_voice_subs_e call_sub = 0; - telephony_call_h *call_list; - unsigned int count = 0; - - /* Modem value */ - char *imei = NULL; - char *meid = NULL; - telephony_modem_power_status_e power_status = 0; - - /* Ready */ - telephony_state_e ready_state = 0; - - /* Initialize handle */ - ret_value = telephony_init(&handle_list); - if (ret_value != TELEPHONY_ERROR_NONE) { - LOGE("Initialize failed!!!"); - return 0; - } - - LOGI("handle count: [%d]", handle_list.count); - - /* SIM API */ - ret_value = telephony_sim_is_changed(handle_list.handle[0], &is_changed); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_sim_is_changed() failed!!! [%d]", ret_value); - else - LOGI("SIM is [%s]", is_changed ? "Changed" : "Not changed"); - - ret_value = telephony_sim_get_operator(handle_list.handle[0], &operator); - if (ret_value != TELEPHONY_ERROR_NONE) { - LOGE("telephony_sim_get_operator() failed!!! [%d]", ret_value); - } else { - LOGI("Operator is [%s]", operator); - free(operator); - } - - ret_value = telephony_sim_get_icc_id(handle_list.handle[0], &icc_id); - if (ret_value != TELEPHONY_ERROR_NONE) { - LOGE("telephony_sim_get_icc_id() failed!!! [%d]", ret_value); - } else { - LOGI("ICC-ID is [%s]", icc_id); - free(icc_id); - } - - ret_value = telephony_sim_get_msin(handle_list.handle[0], &msin); - if (ret_value != TELEPHONY_ERROR_NONE) { - LOGE("telephony_sim_get_msin() failed!!! [%d]", ret_value); - } else { - LOGI("MSIN is [%s]", msin); - free(msin); - } - - ret_value = telephony_sim_get_spn(handle_list.handle[0], &spn); - if (ret_value != TELEPHONY_ERROR_NONE) { - LOGE("telephony_sim_get_spn() failed!!! [%d]", ret_value); - } else { - LOGI("SPN is [%s]", spn); - free(spn); - } - - ret_value = telephony_sim_get_state(handle_list.handle[0], &sim_state); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_sim_get_state() failed!!! [%d]", ret_value); - else - LOGI("SIM state is [%s]", _mapping_sim_state(sim_state)); - - ret_value = telephony_sim_get_application_list(handle_list.handle[0], &app_list); - if (ret_value != TELEPHONY_ERROR_NONE) { - LOGE("telephony_sim_get_type() failed!!! [%d]", ret_value); - } else { - if (app_list & TELEPHONY_SIM_APP_TYPE_SIM) - LOGI("Sim type [SIM]"); - if (app_list & TELEPHONY_SIM_APP_TYPE_USIM) - LOGI("Sim type [USIM]"); - if (app_list & TELEPHONY_SIM_APP_TYPE_CSIM) - LOGI("Sim type [CSIM]"); - } - - ret_value = telephony_sim_get_subscriber_number(handle_list.handle[0], &subscriber_number); - if (ret_value != TELEPHONY_ERROR_NONE) { - LOGE("telephony_sim_get_subscriber_number() failed!!! [%d]", ret_value); - } else { - LOGI("Subscriber number is [%s]", subscriber_number); - free(subscriber_number); - } - - ret_value = telephony_sim_get_subscriber_id(handle_list.handle[0], &subscriber_id); - if (ret_value != TELEPHONY_ERROR_NONE) { - LOGE("telephony_sim_get_subscriber_id() failed!!! [%d]", ret_value); - } else { - LOGI("Subscriber ID is [%s]", subscriber_id); - free(subscriber_id); - } - - ret_value = telephony_sim_get_lock_state(handle_list.handle[0], &lock_state); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_sim_get_lock_state() failed!!! [%d]", ret_value); - else - LOGI("Lock state is [%d]", lock_state); - - ret_value = telephony_sim_get_group_id1(handle_list.handle[0], &gid1); - if (ret_value != TELEPHONY_ERROR_NONE) { - LOGE("telephony_sim_get_group_id1() failed!!! [%d]", ret_value); - } else { - LOGI("GID1 is [%s]", gid1); - free(gid1); - } - - ret_value = telephony_sim_get_call_forwarding_indicator_state(handle_list.handle[0], &cf_state); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_sim_get_call_forwarding_indicator_state() failed!!! [%d]", ret_value); - else - LOGI("Call forwarding indicator state is [%s]", cf_state ? "ON" : "OFF"); - - /* Network API */ - ret_value = telephony_network_get_cell_id(handle_list.handle[0], &cell_id); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_network_get_cell_id() failed!!! [%d]", ret_value); - else - LOGI("Cell ID is [%d]", cell_id); - - ret_value = telephony_network_get_lac(handle_list.handle[0], &lac); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_network_get_lac() failed!!! [%d]", ret_value); - else - LOGI("Location Area Code is [%d]", lac); - - ret_value = telephony_network_get_mcc(handle_list.handle[0], &mcc); - if (ret_value != TELEPHONY_ERROR_NONE) { - LOGE("telephony_network_get_mcc() failed!!! [%d]", ret_value); - } else { - LOGI("Mobile Country Code is [%s]", mcc); - free(mcc); - } - - ret_value = telephony_network_get_mnc(handle_list.handle[0], &mnc); - if (ret_value != TELEPHONY_ERROR_NONE) { - LOGE("telephony_network_get_mnc() failed!!! [%d]", ret_value); - } else { - LOGI("Mobile Network Code is [%s]", mnc); - free(mnc); - } - - ret_value = telephony_network_get_network_name(handle_list.handle[0], &network_name); - if (ret_value != TELEPHONY_ERROR_NONE) { - LOGE("telephony_network_get_network_name() failed!!! [%d]", ret_value); - } else { - LOGI("Network name is [%s]", network_name); - free(network_name); - } - - ret_value = telephony_network_get_network_name_option(handle_list.handle[0], &network_name_option); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_network_get_network_name_option() failed!!! [%d]", ret_value); - else - LOGI("Network_name_option name is [%s]", _mapping_name_option(network_name_option)); - - ret_value = telephony_network_get_roaming_status(handle_list.handle[0], &roaming_status); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_network_get_roaming_status() failed!!! [%d]", ret_value); - else - LOGI("Network Roaming: [%s]", roaming_status ? "ON" : "OFF"); - - ret_value = telephony_network_get_rssi(handle_list.handle[0], &rssi); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_network_get_rssi() failed!!! [%d]", ret_value); - else - LOGI("Received Signal Strength Indicator is [%d]", rssi); - - ret_value = telephony_network_get_service_state(handle_list.handle[0], &service_state); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_network_get_service_state() failed!!! [%d]", ret_value); - else - LOGI("Network service state is [%s]", _mapping_service_state(service_state)); - - ret_value = telephony_network_get_type(handle_list.handle[0], &network_type); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_network_get_type() failed!!! [%d]", ret_value); - else - LOGI("Network type is [%s]", _mapping_network_type(network_type)); - - ret_value = telephony_network_get_ps_type(handle_list.handle[0], &ps_type); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_network_get_ps_type() failed!!! [%d]", ret_value); - else - LOGI("PS type is [%s]", _mapping_ps_type(ps_type)); - - ret_value = telephony_network_get_default_data_subscription(handle_list.handle[0], &default_data_sub); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_network_get_default_data_subscription() failed!!! [%d]", ret_value); - else - LOGI("Default data subscription is [%s]", _mapping_default_data_sub(default_data_sub)); - - ret_value = telephony_network_get_default_subscription(handle_list.handle[0], &default_sub); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_network_get_default_subscription() failed!!! [%d]", ret_value); - else - LOGI("Default subscription is [%s]", _mapping_default_sub(default_sub)); - - ret_value = telephony_network_get_selection_mode(handle_list.handle[0], &sel_mode); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_network_get_selection_mode() failed!!! [%d]", ret_value); - else - LOGI("Network selection mode is [%s]", - sel_mode == TELEPHONY_NETWORK_SELECTION_MODE_AUTOMATIC ? "Automatic" : "Manual"); - - ret_value = telephony_network_get_tac(handle_list.handle[0], &tac); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_network_get_tac() failed!!! [%d]", ret_value); - else - LOGI("Tracking Area Code is [%d]", tac); - - ret_value = telephony_network_get_system_id(handle_list.handle[0], &sid); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_network_get_system_id() failed!!! [%d]", ret_value); - else - LOGI("System ID is [%d]", sid); - - ret_value = telephony_network_get_network_id(handle_list.handle[0], &nid); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_network_get_network_id() failed!!! [%d]", ret_value); - else - LOGI("Network ID is [%d]", nid); - - ret_value = telephony_network_get_base_station_id(handle_list.handle[0], &bs_id); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_network_get_base_station_id() failed!!! [%d]", ret_value); - else - LOGI("Base station ID is [%d]", bs_id); - - ret_value = telephony_network_get_base_station_latitude(handle_list.handle[0], &bs_latitude); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_network_get_base_station_latitude() failed!!! [%d]", ret_value); - else - LOGI("Base station latitude is [%d]", bs_latitude); - - ret_value = telephony_network_get_base_station_longitude(handle_list.handle[0], &bs_longitude); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_network_get_base_station_longitude() failed!!! [%d]", ret_value); - else - LOGI("Base station longitude is [%d]", bs_longitude); - - /* Call API */ - ret_value = telephony_call_get_voice_call_state(handle_list.handle[0], &call_state); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_call_get_voice_call_state() failed!!! [%d]", ret_value); - else - LOGI("Voice Call state is [%s]", _mapping_call_state(call_state)); - - ret_value = telephony_call_get_video_call_state(handle_list.handle[0], &call_state); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_call_get_video_call_state() failed!!! [%d]", ret_value); - else - LOGI("Video Call state is [%s]", _mapping_call_state(call_state)); - - ret_value = telephony_call_get_preferred_voice_subscription(handle_list.handle[0], &call_sub); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_call_get_preferred_voice_subscription() failed!!! [%d]", ret_value); - else - LOGI("Preferred voice subscription is [%s]", _mapping_preferred_voice_sub(call_sub)); - - ret_value = telephony_call_get_call_list(handle_list.handle[0], &count, &call_list); - if (ret_value != TELEPHONY_ERROR_NONE) { - LOGE("telephony_call_get_call_list() failed!!! [0x%x]", ret_value); - } else { - unsigned int handle_id = 0; - char *number = NULL; - telephony_call_type_e type = 0; - telephony_call_status_e status = 0; - telephony_call_direction_e direction = 0; - bool conf_status = 0; - - for (i = 0; i < count; i++) { - telephony_call_get_handle_id(call_list[i], &handle_id); - telephony_call_get_number(call_list[i], &number); - telephony_call_get_type(call_list[i], &type); - telephony_call_get_status(call_list[i], &status); - telephony_call_get_direction(call_list[i], &direction); - telephony_call_get_conference_status(call_list[i], &conf_status); - LOGI("handle_id[%d] number[%s] type[%d] status[%d] direction[%d] conf_status[%d]", - handle_id, number, type, status, direction, conf_status); - free(number); - number = NULL; - } - telephony_call_release_call_list(count, &call_list); - } - - /* Modem API */ - ret_value = telephony_modem_get_imei(handle_list.handle[0], &imei); - if (ret_value != TELEPHONY_ERROR_NONE) { - LOGE("telephony_modem_get_imei() failed!!! [%d]", ret_value); - } else { - LOGI("IMEI is [%s]", imei); - free(imei); - } - - ret_value = telephony_modem_get_power_status(handle_list.handle[0], &power_status); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_modem_get_power_status() failed!!! [%d]", ret_value); - else - LOGI("Modem power status is [%d] (0=on,1=off,2=rst,3=low)", power_status); - - ret_value = telephony_modem_get_meid(handle_list.handle[0], &meid); - if (ret_value != TELEPHONY_ERROR_NONE) { - LOGE("telephony_modem_get_meid() failed!!! [%d]", ret_value); - } else { - LOGI("MEID is [%s]", meid); - free(meid); - } - - /* set_noti_cb */ - for (i = 0; i < (sizeof(sim_noti_tbl) / sizeof(int)); i++) { - ret_value = telephony_set_noti_cb(handle_list.handle[0], sim_noti_tbl[i], sim_noti_cb, NULL); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("Set noti failed!!!"); - } - - for (i = 0; i < (sizeof(network_noti_tbl) / sizeof(int)); i++) { - ret_value = telephony_set_noti_cb(handle_list.handle[0], network_noti_tbl[i], network_noti_cb, NULL); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("Set noti failed!!!"); - } - - for (i = 0; i < (sizeof(call_noti_tbl) / sizeof(int)); i++) { - ret_value = telephony_set_noti_cb(handle_list.handle[0], call_noti_tbl[i], call_noti_cb, NULL); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("Set noti failed!!!"); - } - - ret_value = telephony_get_state(&ready_state); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGI("telephony_get_state() failed!!!"); - else - LOGI("telephony_get_state() succeed ! : %s", ready_state ? "TRUE" : "FALSE"); - - ret_value = telephony_set_state_changed_cb(on_telephony_state_changed_cb, NULL); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGI("telephony_set_state_changed_cb() failed!!!"); - else - LOGI("telephony_set_state_changed_cb() succeed!!"); - - LOGI("If telephony status is changed, then callback function will be called"); - event_loop = g_main_loop_new(NULL, FALSE); - g_main_loop_run(event_loop); - - for (i = 0; i < (sizeof(sim_noti_tbl) / sizeof(int)); i++) { - ret_value = telephony_unset_noti_cb(handle_list.handle[0], sim_noti_tbl[i]); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("Unset noti failed!!!"); - } - - for (i = 0; i < (sizeof(network_noti_tbl) / sizeof(int)); i++) { - ret_value = telephony_unset_noti_cb(handle_list.handle[0], network_noti_tbl[i]); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("Unset noti failed!!!"); - } - - for (i = 0; i < (sizeof(call_noti_tbl) / sizeof(int)); i++) { - ret_value = telephony_unset_noti_cb(handle_list.handle[0], call_noti_tbl[i]); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("Unset noti failed!!!"); - } - - ret_value = telephony_deinit(&handle_list); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("Deinitialize failed!!!"); - - ret_value = telephony_unset_state_changed_cb(on_telephony_state_changed_cb); - if (ret_value != TELEPHONY_ERROR_NONE) - LOGE("telephony_unset_state_changed_cb() failed!!!"); - else - LOGD("telephony_unset_state_changed_cb() succeed!!"); - - return 0; -} diff --git a/test_src/CMakeLists.txt b/test_src/CMakeLists.txt new file mode 100644 index 0000000..5e77d1c --- /dev/null +++ b/test_src/CMakeLists.txt @@ -0,0 +1,20 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +PROJECT(telephony-test C) +SET(test "telephony-test") + +SET(test_src + main.c + menu.c + call.c + modem.c + network.c + sim.c +) + +##Address-Space Layout Randomization +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIE") +SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie") + +ADD_EXECUTABLE(${test} ${test_src}) +TARGET_LINK_LIBRARIES(${test} ${fw_name} ${${fw_test}_LDFLAGS}) +INSTALL(TARGETS ${test} RUNTIME DESTINATION bin/) diff --git a/test_src/call.c b/test_src/call.c new file mode 100644 index 0000000..ac09a02 --- /dev/null +++ b/test_src/call.c @@ -0,0 +1,262 @@ +/* + * telephony + * + * Copyright (c) 2017 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include + +#include + +#include "menu.h" +#include "call.h" + +extern int subs_type; + +static int call_noti_tbl[] = { + TELEPHONY_NOTI_VOICE_CALL_STATUS_IDLE, + TELEPHONY_NOTI_VOICE_CALL_STATUS_ACTIVE, + TELEPHONY_NOTI_VOICE_CALL_STATUS_HELD, + TELEPHONY_NOTI_VOICE_CALL_STATUS_DIALING, + TELEPHONY_NOTI_VOICE_CALL_STATUS_ALERTING, + TELEPHONY_NOTI_VOICE_CALL_STATUS_INCOMING, + TELEPHONY_NOTI_CALL_PREFERRED_VOICE_SUBSCRIPTION +}; + +static const char *convert_call_type(telephony_call_type_e type) +{ + switch (type) { + case TELEPHONY_CALL_TYPE_VOICE: + return "VOICE"; + case TELEPHONY_CALL_TYPE_VIDEO: + return "VIDEO"; + case TELEPHONY_CALL_TYPE_E911: + return "E911"; + default: + return "UNKNOWN"; + } +} + +static const char *convert_call_status(telephony_call_status_e type) +{ + switch (type) { + case TELEPHONY_CALL_STATUS_IDLE: + return "IDLE"; + case TELEPHONY_CALL_STATUS_ACTIVE: + return "ACTIVE"; + case TELEPHONY_CALL_STATUS_HELD: + return "HELD"; + case TELEPHONY_CALL_STATUS_DIALING: + return "DIALING"; + case TELEPHONY_CALL_STATUS_ALERTING: + return "ALERTING"; + case TELEPHONY_CALL_STATUS_INCOMING: + return "INCOMING"; + default: + return "UNKNOWN"; + } +} + +static const char *convert_call_direction(telephony_call_direction_e direction) +{ + switch (direction) { + case TELEPHONY_CALL_DIRECTION_MO: + return "MO"; + case TELEPHONY_CALL_DIRECTION_MT: + return "MT"; + default: + return "UNKNOWN"; + } +} + +static const char *convert_call_pref_voice_subs(telephony_call_preferred_voice_subs_e pref_voice_subs) +{ + switch (pref_voice_subs) { + case TELEPHONY_CALL_PREFERRED_VOICE_SUBS_CURRENT_NETWORK: + return "CURRENT_NETWORK"; + case TELEPHONY_CALL_PREFERRED_VOICE_SUBS_ASK_ALWAYS: + return "ASK_ALWAYS"; + case TELEPHONY_CALL_PREFERRED_VOICE_SUBS_SIM1: + return "SIM1"; + case TELEPHONY_CALL_PREFERRED_VOICE_SUBS_SIM2: + return "SIM2"; + case TELEPHONY_CALL_PREFERRED_VOICE_SUBS_UNKNOWN: + default: + return "UNKNOWN"; + } +} + +static void call_noti_cb(telephony_h handle, telephony_noti_e noti_id, void *data, void *user_data) +{ + int ret; + telephony_call_h *call_list; + unsigned int call_count; + int i; + + msg(""); + switch (noti_id) { + case TELEPHONY_NOTI_VOICE_CALL_STATUS_IDLE: + msgb("NOTI_VOICE_CALL_STATUS_IDLE received!!!"); + msg(" - handle_id = %d", *(int *)data); + break; + case TELEPHONY_NOTI_VOICE_CALL_STATUS_ACTIVE: + msgb("NOTI_VOICE_CALL_STATUS_ACTIVE received!!!"); + msg(" - handle_id = %d", *(int *)data); + break; + case TELEPHONY_NOTI_VOICE_CALL_STATUS_HELD: + msgb("NOTI_VOICE_CALL_STATUS_HELD received!!!"); + msg(" - handle_id = %d", *(int *)data); + break; + case TELEPHONY_NOTI_VOICE_CALL_STATUS_DIALING: + msgb("NOTI_VOICE_CALL_STATUS_DIALING received!!!"); + msg(" - handle_id = %d", *(int *)data); + break; + case TELEPHONY_NOTI_VOICE_CALL_STATUS_ALERTING: + msgb("NOTI_VOICE_CALL_STATUS_ALERTING received!!!"); + msg(" - handle_id = %d", *(int *)data); + break; + case TELEPHONY_NOTI_VOICE_CALL_STATUS_INCOMING: + msgb("NOTI_VOICE_CALL_STATUS_INCOMING received!!!"); + msg(" - handle_id = %d", *(int *)data); + break; + case TELEPHONY_NOTI_CALL_PREFERRED_VOICE_SUBSCRIPTION: + msgb("NOTI_CALL_PREFERRED_VOICE_SUBSCRIPTION received!!!"); + msg(" - preferred_voice_subscription = %s", convert_call_pref_voice_subs(*(int *)data)); + return; + default: + msgb("Unknown notification received!!!"); + return; + } + + msg("call telephony_call_get_call_list()"); + ret = telephony_call_get_call_list(handle, &call_count, &call_list); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_call_get_call_list() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return; + } + + msg(" - count = %d", call_count); + for (i = 0; i < call_count; i++) { + unsigned int handle_id; + char *number; + telephony_call_type_e type; + telephony_call_status_e status; + telephony_call_direction_e direction; + bool conf_status; + + telephony_call_get_handle_id(call_list[i], &handle_id); + telephony_call_get_number(call_list[i], &number); + telephony_call_get_type(call_list[i], &type); + telephony_call_get_status(call_list[i], &status); + telephony_call_get_direction(call_list[i], &direction); + telephony_call_get_conference_status(call_list[i], &conf_status); + + msg(""); + msg(" - handle_id = %d", handle_id); + msg(" - number = %s", number); + msg(" - type = %s", convert_call_type(type)); + msg(" - status = %s", convert_call_status(status)); + msg(" - direction = %s", convert_call_direction(direction)); + msg(" - conference_status = %s", conf_status ? "TRUE" : "FALSE"); + free(number); + } + telephony_call_release_call_list(call_count, &call_list); +} + +static int run_call_get_call_list(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + telephony_call_h *call_list; + unsigned int call_count; + int i; + + msg("call telephony_call_get_call_list()"); + + ret = telephony_call_get_call_list(handle_list->handle[subs_type], &call_count, &call_list); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_call_get_call_list() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - count = %d", call_count); + for (i = 0; i < call_count; i++) { + unsigned int handle_id; + char *number; + telephony_call_type_e type; + telephony_call_status_e status; + telephony_call_direction_e direction; + bool conf_status; + + telephony_call_get_handle_id(call_list[i], &handle_id); + telephony_call_get_number(call_list[i], &number); + telephony_call_get_type(call_list[i], &type); + telephony_call_get_status(call_list[i], &status); + telephony_call_get_direction(call_list[i], &direction); + telephony_call_get_conference_status(call_list[i], &conf_status); + + msg(""); + msg(" - handle_id = %d", handle_id); + msg(" - number = %s", number); + msg(" - type = %s", convert_call_type(type)); + msg(" - status = %s", convert_call_status(status)); + msg(" - direction = %s", convert_call_direction(direction)); + msg(" - conference_status = %s", conf_status ? "TRUE" : "FALSE"); + free(number); + } + telephony_call_release_call_list(call_count, &call_list); + + return 0; +} + +static int run_call_get_pref_voice_subs(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + telephony_call_preferred_voice_subs_e pref_voice_subs; + + msg("call telephony_call_get_preferred_voice_subscriptions()"); + + ret = telephony_call_get_preferred_voice_subscription(handle_list->handle[subs_type], &pref_voice_subs); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_call_get_preferred_voice_subscription() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - preferred_voice_subscription = %s", convert_call_pref_voice_subs(pref_voice_subs)); + + return 0; +} + +struct menu_data menu_call[] = { + {"1", "telephony_call_get_preferred_voice_subscription", NULL, run_call_get_pref_voice_subs, NULL}, + {"2", "telephony_call_get_call_list", NULL, run_call_get_call_list, NULL}, + {NULL, }, +}; + +void register_call_event(telephony_handle_list_s *handle_list) +{ + int ret, i; + + for (i = 0; i < (sizeof(call_noti_tbl) / sizeof(int)); i++) { + ret = telephony_set_noti_cb(handle_list->handle[subs_type], call_noti_tbl[i], call_noti_cb, NULL); + if (ret != TELEPHONY_ERROR_NONE) + msg("telephony_set_noti_cb() failed!!! i(%d), ret(%d,%s)", i, ret, get_error_message(ret)); + } +} + diff --git a/test_src/call.h b/test_src/call.h new file mode 100644 index 0000000..396cfc0 --- /dev/null +++ b/test_src/call.h @@ -0,0 +1,27 @@ +/* + * telephony + * + * Copyright (c) 2017 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CALL_H__ +#define __CALL_H__ + +#include + +void register_call_event(telephony_handle_list_s *handle_list); + +#endif + diff --git a/test_src/main.c b/test_src/main.c new file mode 100644 index 0000000..e985fd5 --- /dev/null +++ b/test_src/main.c @@ -0,0 +1,147 @@ +/* + * telephony + * + * Copyright (c) 2017 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include +#include + +#include + +#include "menu.h" +#include "call.h" +#include "network.h" +#include "sim.h" + +#define SIM_SEL_MENU_KEY_COUNT 2 + +extern struct menu_data menu_call[]; +extern struct menu_data menu_modem[]; +extern struct menu_data menu_network[]; +extern struct menu_data menu_sim[]; + +telephony_handle_list_s handle_list; +int subs_type = 0; + +static char data_subscription_type[MENU_DATA_SIZE + 1] = ""; + +static struct menu_data menu_main[] = { + {"1", "Call", menu_call, NULL, NULL}, + {"2", "Modem", menu_modem, NULL, NULL}, + {"3", "Network", menu_network, NULL, NULL}, + {"4", "SIM", menu_sim, NULL, NULL}, + {NULL, }, +}; + +static int __select_handle_register_event(MManager *mm, struct menu_data *menu) +{ + subs_type = atoi(data_subscription_type) - 1; + + if (subs_type < 0 || subs_type > handle_list.count - 1) { + msg("Please select an existing CP Name"); + return RET_FAILURE; + } + + msg(""); + + menu_manager_set_user_data(mm, &handle_list); + + register_call_event(&handle_list); + register_network_event(&handle_list); + register_sim_event(&handle_list); + + return RET_SUCCESS; +} + +static gboolean __create_sim_selection_menu(struct menu_data sim_selection_menu[SIM_SEL_MENU_KEY_COUNT+1]) +{ + unsigned int index_count = 0; + unsigned int i = 0; + int ret; + + ret = telephony_init(&handle_list); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_init() failed!!! ret(%d,%s)", ret, get_error_message(ret)); + return FALSE; + } + + /* + * Available CPs are displayed as below (in UI) - + * Modems(1=SIM1,2=SIM2) + */ + index_count += snprintf((char *)&sim_selection_menu[0].title[index_count], 100, "Modems("); + + for (i = 0; i < handle_list.count; i++) { + if (i != 0) + strncat((char *)&sim_selection_menu[0].title[index_count++], ",", sizeof(char)); + + index_count += snprintf((char *)&sim_selection_menu[0].title[index_count], 100, "%d=SIM%d", i + 1, i + 1); + } + strncat((char *)&sim_selection_menu[0].title[index_count++], ")", sizeof(char)); + strncat((char *)&sim_selection_menu[0].title[index_count], "\0", sizeof(char)); + + sim_selection_menu[0].key = "1"; + sim_selection_menu[0].sub_menu = NULL; + sim_selection_menu[0].callback = NULL; + sim_selection_menu[0].data = data_subscription_type; + + sim_selection_menu[1].key = "2"; + snprintf((char *)&sim_selection_menu[1].title, 100, "run"); + sim_selection_menu[1].sub_menu = menu_main; + sim_selection_menu[1].callback = __select_handle_register_event; + sim_selection_menu[1].data = NULL; + + return TRUE; +} + +int main(int arg, char **argv) +{ + GMainLoop *mainloop = NULL; + GIOChannel *channel = g_io_channel_unix_new(STDIN_FILENO); + MManager *manager; + struct menu_data sim_selection_menu[SIM_SEL_MENU_KEY_COUNT+1] = { {NULL, }, }; + +#if !GLIB_CHECK_VERSION(2, 35, 0) + g_type_init(); +#endif + mainloop = g_main_loop_new(NULL, FALSE); + + msg(""); + msg("* Telephony Test application "); + + if (__create_sim_selection_menu(sim_selection_menu) == FALSE) + goto OUT; + + manager = menu_manager_new(sim_selection_menu, mainloop); + if (!manager) + goto OUT; + + menu_manager_run(manager); + + g_io_add_watch(channel, (G_IO_IN | G_IO_ERR | G_IO_HUP | G_IO_NVAL), + on_menu_manager_keyboard, manager); + g_main_loop_run(mainloop); + +OUT: + g_main_loop_unref(mainloop); + msg("******* Bye bye *******"); + + return 0; +} + diff --git a/test_src/menu.c b/test_src/menu.c new file mode 100644 index 0000000..8228db4 --- /dev/null +++ b/test_src/menu.c @@ -0,0 +1,378 @@ +/* + * telephony + * + * Copyright (c) 2017 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include + +#include "menu.h" + +#define DEFAULT_MENU_MENU "m" +#define DEFAULT_MENU_PREV "p" +#define DEFAULT_MENU_QUIT "q" +#define DEFAULT_MENU_NONE "-" +#define TAB_SPACE " " + +struct menu_manager { + GQueue *stack; + GQueue *title_stack; + + struct menu_data *menu; + + char *buf; + + void *user_data; + GMainLoop *mainloop; +}; + + +char key_buffer[MENU_DATA_SIZE]; +int flag_pid_display = 1; + + +static void _show_prompt(void) +{ + msgn("(%5d) >> ", get_tid()); +} + +static void _show_reserved_menu(void) +{ + msg(ANSI_COLOR_DARKGRAY HR_SINGLE2 ANSI_COLOR_NORMAL); + msg(ANSI_COLOR_DARKGRAY " [ " ANSI_COLOR_NORMAL "%s" ANSI_COLOR_DARKGRAY + " ] " ANSI_COLOR_NORMAL "Previous menu " , DEFAULT_MENU_PREV); + msg(ANSI_COLOR_DARKGRAY " [ " ANSI_COLOR_NORMAL "%s" ANSI_COLOR_DARKGRAY + " ] " ANSI_COLOR_NORMAL "Show Menu " , DEFAULT_MENU_MENU); + msg(ANSI_COLOR_DARKGRAY " [ " ANSI_COLOR_NORMAL "%s" ANSI_COLOR_DARKGRAY + " ] " ANSI_COLOR_NORMAL "Quit " , DEFAULT_MENU_QUIT); +} + +static void _show_input_ok(void) +{ + msg("OK."); +} + +static void _show_menu(MManager *m, struct menu_data menu[]) +{ + int i = 0; + int len = 0; + struct menu_data *item; + char title_buf[256] = { 0, }; + + if (!menu) + return; + + msg(""); + msg(HR_DOUBLE); + + len = g_queue_get_length(m->title_stack); + msgn(ANSI_COLOR_YELLOW " Main"); + if (len > 0) { + for (i = 0; i < len; i++) { + msgn(ANSI_COLOR_NORMAL " >> " ANSI_COLOR_YELLOW "%s", + (char *)g_queue_peek_nth(m->title_stack, i)); + } + } + msg(ANSI_COLOR_NORMAL); + msg(HR_SINGLE); + + hide_pid(); + i = 0; + + while (1) { + item = menu + i; + if (item->key == NULL) + break; + + if (!g_strcmp0(item->key, "-")) { + msgn(" "); + } else if (!g_strcmp0(item->key, "_")) { + msg(ANSI_COLOR_DARKGRAY HR_SINGLE2 ANSI_COLOR_NORMAL); + + if (item->callback) + item->callback(m, item); + + i++; + + continue; + } else if (!g_strcmp0(item->key, "*")) { + msg(" %s", item->title); + if (item->callback) + item->callback(m, item); + } else { + msgn(ANSI_COLOR_DARKGRAY " [" ANSI_COLOR_NORMAL "%3s" + ANSI_COLOR_DARKGRAY "] " ANSI_COLOR_NORMAL, item->key); + } + + memset(title_buf, 0, 256); + if (item->title) { + snprintf(title_buf, MAX_TITLE, "%s", item->title); + + if (strlen(item->title) >= MAX_TITLE) { + title_buf[MAX_TITLE - 2] = '.'; + title_buf[MAX_TITLE - 1] = '.'; + } + } + + if (item->data) { + msg("%s " ANSI_COLOR_LIGHTBLUE "(%s)" ANSI_COLOR_NORMAL, + title_buf, item->data); + } else if (!g_strcmp0(item->key, "*")) { + /* none */ + } else { + msg("%s", title_buf); + } + + if (item->sub_menu) + msg("\e[1A\e[%dC >", (int)POS_MORE); + + i++; + } + + show_pid(); + + _show_reserved_menu(); + + msg(HR_DOUBLE); + + _show_prompt(); +} + +static void _show_item_data_input_msg(struct menu_data *item) +{ + msg(""); + msg(HR_DOUBLE); + msg(" Input [%s] data ", item->title); + msg(HR_SINGLE); + msg(" current = [%s]", item->data); + msgn(" new >> "); +} + +static void _move_menu(MManager *mm, struct menu_data menu[], char *key) +{ + struct menu_data *item; + int i = 0; + + if (!mm->menu) + return; + + if (!g_strcmp0(DEFAULT_MENU_PREV, key)) { + if (g_queue_get_length(mm->stack) > 0) { + mm->menu = g_queue_pop_tail(mm->stack); + g_queue_pop_tail(mm->title_stack); + } + + _show_menu(mm, mm->menu); + mm->buf = key_buffer; + + return; + } else if (!g_strcmp0(DEFAULT_MENU_MENU, key)) { + _show_menu(mm, mm->menu); + return; + } else if (!g_strcmp0(DEFAULT_MENU_QUIT, key)) { + g_main_loop_quit(mm->mainloop); + return; + } else if (!g_strcmp0(DEFAULT_MENU_NONE, key)) { + _show_prompt(); + return; + } + + while (1) { + int ret = RET_SUCCESS; + item = menu + i; + if (item->key == NULL) + break; + + if (!g_strcmp0(item->key, key)) { + if (item->callback) { + ret = item->callback(mm, item); + _show_prompt(); + } + + if (RET_SUCCESS == ret) { + if (item->sub_menu) { + g_queue_push_tail(mm->stack, mm->menu); + //g_queue_push_tail(mm->title_stack, (gpointer *)item->title); + g_queue_push_tail(mm->title_stack, item->title); + + mm->menu = item->sub_menu; + _show_menu(mm, mm->menu); + mm->buf = key_buffer; + } + + if (item->data) { + _show_item_data_input_msg(item); + mm->buf = item->data; + } + } + + return; + } + + i++; + } + + _show_prompt(); +} + +MManager *menu_manager_new(struct menu_data items[], GMainLoop *mainloop) +{ + MManager *mm; + + mm = calloc(sizeof(struct menu_manager), 1); + if (!mm) + return NULL; + + mm->stack = g_queue_new(); + mm->title_stack = g_queue_new(); + mm->menu = items; + mm->mainloop = mainloop; + + return mm; +} + +int menu_manager_run(MManager *mm) +{ + _show_menu(mm, mm->menu); + + mm->buf = key_buffer; + + return 0; +} + +int menu_manager_set_user_data(MManager *mm, void *user_data) +{ + if (!mm) + return -1; + + mm->user_data = user_data; + + return 0; +} + +void *menu_manager_ref_user_data(MManager *mm) +{ + if (!mm) + return NULL; + + return mm->user_data; +} + +gboolean on_menu_manager_keyboard(GIOChannel *src, GIOCondition con, + gpointer data) +{ + MManager *mm = data; + char local_buf[MENU_DATA_SIZE + 1] = { 0, }; + + if (fgets(local_buf, MENU_DATA_SIZE, stdin) == NULL) + return TRUE; + + if (strlen(local_buf) > 0) { + if (local_buf[strlen(local_buf) - 1] == '\n') + local_buf[strlen(local_buf) - 1] = '\0'; + } + + if (mm->buf == key_buffer) { + if (strlen(local_buf) < 1) { + _show_prompt(); + return TRUE; + } + + _move_menu(mm, mm->menu, local_buf); + } else { + if (mm->buf) { + memset(mm->buf, 0, MENU_DATA_SIZE); + memcpy(mm->buf, local_buf, MENU_DATA_SIZE); + _show_input_ok(); + } + mm->buf = key_buffer; + _move_menu(mm, mm->menu, (char *)DEFAULT_MENU_MENU); + } + + return TRUE; +} + +pid_t get_tid() +{ + return syscall(__NR_gettid); +} + +void hide_pid() +{ + flag_pid_display = 0; +} + +void show_pid() +{ + flag_pid_display = 1; +} + +int is_pid_show() +{ + return flag_pid_display; +} + +static void _hex_dump(const char *pad, int size, const void *data) +{ + char buf[255] = {0, }; + char hex[4] = {0, }; + int i; + unsigned char *p; + + if (size <= 0) { + msg("%sno data", pad); + return; + } + p = (unsigned char *)data; + + snprintf(buf, 255, "%s%04X: ", pad, 0); + for (i = 0; i < size; i++) { + snprintf(hex, 4, "%02X ", p[i]); + strncat(buf, hex, strlen(hex)); + + if ((i + 1) % 8 == 0) { + if ((i + 1) % 16 == 0) { + msg("%s", buf); + memset(buf, 0, 255); + snprintf(buf, 255, "%s%04X: ", pad, i + 1); + } else { + strncat(buf, TAB_SPACE, strlen(TAB_SPACE)); + } + } + } + + msg("%s", buf); +} + +void menu_print_dump(int data_len, void *data) +{ + if (!data) + return; + + msg(""); + msg(" \tlen=%d", data_len); + _hex_dump(" ", data_len, data); + + msg(""); +} + diff --git a/test_src/menu.h b/test_src/menu.h new file mode 100644 index 0000000..a5c0e02 --- /dev/null +++ b/test_src/menu.h @@ -0,0 +1,122 @@ +/* + * telephony + * + * Copyright (c) 2017 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __MENU_H__ +#define __MENU_H__ + +__BEGIN_DECLS + +#define ANSI_COLOR_NORMAL "\e[0m" + +#define ANSI_COLOR_BLACK "\e[0;30m" +#define ANSI_COLOR_RED "\e[0;31m" +#define ANSI_COLOR_GREEN "\e[0;32m" +#define ANSI_COLOR_BROWN "\e[0;33m" +#define ANSI_COLOR_BLUE "\e[0;34m" +#define ANSI_COLOR_MAGENTA "\e[0;35m" +#define ANSI_COLOR_CYAN "\e[0;36m" +#define ANSI_COLOR_LIGHTGRAY "\e[0;37m" + +#define ANSI_COLOR_DARKGRAY "\e[1;30m" +#define ANSI_COLOR_LIGHTRED "\e[1;31m" +#define ANSI_COLOR_LIGHTGREEN "\e[1;32m" +#define ANSI_COLOR_YELLOW "\e[1;33m" +#define ANSI_COLOR_LIGHTBLUE "\e[1;34m" +#define ANSI_COLOR_LIGHTMAGENTA "\e[1;35m" +#define ANSI_COLOR_LIGHTCYAN "\e[1;36m" +#define ANSI_COLOR_WHITE "\e[1;37m" + + +#define msg(fmt, args...) do { fprintf(stdout, fmt "\n", ##args); \ + fflush(stdout); } while (0) +#define msgn(fmt, args...) do { fprintf(stdout, fmt, ##args); \ + fflush(stdout); } while (0) + +/* Bold (green) */ +#define msgb(fmt, args...) do { fprintf(stdout, ANSI_COLOR_LIGHTGREEN fmt \ + ANSI_COLOR_NORMAL "\n", ##args); fflush(stdout); } while (0) + +/* Property message */ +#define msgp(fmt, args...) do { fprintf(stdout, ANSI_COLOR_LIGHTMAGENTA fmt \ + ANSI_COLOR_NORMAL "\n", ##args); fflush(stdout); } while (0) + +#define msgt(n, fmt, args...) do { fprintf(stdout, "\e[%dC" fmt "\n", \ + 3 + ((n) * 2), ##args); fflush(stdout); } while (0) + +#define pmsg(fmt, args...) do { \ + if (is_pid_show()) { fprintf(stdout, "(%5d) ", get_tid()); } \ + fprintf(stdout, fmt "\n", ##args); fflush(stdout); } while (0) + +#define pmsgb(fmt, args...) do { \ + if (is_pid_show()) { fprintf(stdout, "(%5d) ", get_tid()); } \ + fprintf(stdout, ANSI_COLOR_LIGHTGREEN fmt \ + ANSI_COLOR_NORMAL "\n", ##args); fflush(stdout); } while (0) + +#define pmsgt(n, fmt, args...) do { \ + if (is_pid_show()) { fprintf(stdout, "(%5d) ", get_tid()); } \ + fprintf(stdout, "\e[%dC" fmt "\n", \ + 3 + ((n) * 2), ##args); fflush(stdout); } while (0) + +#define MENU_DATA_SIZE 255 + + + +/* + * Horizontal Line - width: 65 + * .12345678901234567890123456789012345678901234567890. + */ +#define HR_SINGLE "----------------------------------------" \ + "-------------------------" +#define HR_DOUBLE "========================================" \ + "=========================" +#define HR_SINGLE2 " ---------------------------------------" \ + "------------------------ " + +#define MAX_WIDTH strlen(HR_SINGLE) +#define MAX_TITLE ((MAX_WIDTH) - 10) +#define POS_MORE ((MAX_WIDTH) - 3) +#define RET_SUCCESS 0 +#define RET_FAILURE -1 + +typedef struct menu_manager MManager; + +struct menu_data { + const char *key; + char title[100]; + struct menu_data *sub_menu; + int (*callback)(MManager *mm, struct menu_data *menu); + char *data; +}; + +MManager *menu_manager_new(struct menu_data items[], GMainLoop *mainloop); +int menu_manager_run(MManager *mm); +int menu_manager_set_user_data(MManager *mm, void *user_data); +void *menu_manager_ref_user_data(MManager *mm); + +gboolean on_menu_manager_keyboard(GIOChannel *src, GIOCondition con, gpointer data); + +pid_t get_tid(); +void hide_pid(); +void show_pid(); +int is_pid_show(); +void menu_print_dump(int data_len, void *data); + +__END_DECLS + +#endif + diff --git a/test_src/modem.c b/test_src/modem.c new file mode 100644 index 0000000..5ba01a6 --- /dev/null +++ b/test_src/modem.c @@ -0,0 +1,110 @@ +/* + * telephony + * + * Copyright (c) 2017 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include + +#include + +#include "menu.h" + +extern int subs_type; + +static const char *convert_modem_power_status(telephony_modem_power_status_e power_status) +{ + switch (power_status) { + case TELEPHONY_MODEM_POWER_STATUS_ON: + return "ON"; + case TELEPHONY_MODEM_POWER_STATUS_OFF: + return "OFF"; + case TELEPHONY_MODEM_POWER_STATUS_RESET: + return "RESET"; + case TELEPHONY_MODEM_POWER_STATUS_LOW: + return "LOW"; + case TELEPHONY_MODEM_POWER_STATUS_UNKNOWN: + default: + return "UNKNOWN"; + } +} + +static int run_modem_get_imei(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + char *imei = NULL; + + msg("call telephony_modem_get_imei()"); + + ret = telephony_modem_get_imei(handle_list->handle[subs_type], &imei); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_modem_get_meid() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - imei = %s", imei); + + return 0; +} + +static int run_modem_get_power_status(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + telephony_modem_power_status_e power_status; + + msg("call telephony_modem_get_power_status()"); + + ret = telephony_modem_get_power_status(handle_list->handle[subs_type], &power_status); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_modem_get_power_status() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - power_status = %s", convert_modem_power_status(power_status)); + + return 0; +} + +static int run_modem_get_meid(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + char *meid = NULL; + + msg("call telephony_modem_get_meid()"); + + ret = telephony_modem_get_meid(handle_list->handle[subs_type], &meid); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_modem_get_meid() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - meid = %s", meid); + + return 0; +} + +struct menu_data menu_modem[] = { + {"1", "telephony_modem_get_imei", NULL, run_modem_get_imei, NULL}, + {"2", "telephony_modem_get_power_status", NULL, run_modem_get_power_status, NULL}, + {"3", "telephony_modem_get_meid", NULL, run_modem_get_meid, NULL}, + {NULL, } +}; + diff --git a/test_src/network.c b/test_src/network.c new file mode 100644 index 0000000..564bdab --- /dev/null +++ b/test_src/network.c @@ -0,0 +1,635 @@ +/* + * telephony + * + * Copyright (c) 2017 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include + +#include + +#include "menu.h" +#include "network.h" + +extern int subs_type; + +static int network_noti_tbl[] = { + TELEPHONY_NOTI_NETWORK_SERVICE_STATE, + TELEPHONY_NOTI_NETWORK_CELLID, + TELEPHONY_NOTI_NETWORK_ROAMING_STATUS, + TELEPHONY_NOTI_NETWORK_SIGNALSTRENGTH_LEVEL, + TELEPHONY_NOTI_NETWORK_NETWORK_NAME, + TELEPHONY_NOTI_NETWORK_PS_TYPE, + TELEPHONY_NOTI_NETWORK_DEFAULT_DATA_SUBSCRIPTION, + TELEPHONY_NOTI_NETWORK_DEFAULT_SUBSCRIPTION, + TELEPHONY_NOTI_NETWORK_LAC, + TELEPHONY_NOTI_NETWORK_TAC, + TELEPHONY_NOTI_NETWORK_SYSTEM_ID, + TELEPHONY_NOTI_NETWORK_NETWORK_ID, + TELEPHONY_NOTI_NETWORK_BS_ID, + TELEPHONY_NOTI_NETWORK_BS_LATITUDE, + TELEPHONY_NOTI_NETWORK_BS_LONGITUDE +}; + +static const char *convert_network_name_option(telephony_network_name_option_e name_option) +{ + switch (name_option) { + case TELEPHONY_NETWORK_NAME_OPTION_NETWORK: + return "NETWORK"; + case TELEPHONY_NETWORK_NAME_OPTION_SPN: + return "SPN"; + case TELEPHONY_NETWORK_NAME_OPTION_ANY: + return "ANY"; + default: + return "UNKNOWN"; + } +} + +static const char *convert_network_service_state(telephony_network_service_state_e service_state) +{ + switch (service_state) { + case TELEPHONY_NETWORK_SERVICE_STATE_IN_SERVICE: + return "IN_SERVICE"; + case TELEPHONY_NETWORK_SERVICE_STATE_OUT_OF_SERVICE: + return "OUT_OF_SERVICE"; + case TELEPHONY_NETWORK_SERVICE_STATE_EMERGENCY_ONLY: + return "EMERGENCY_ONLY"; + default: + return "UNKNOWN"; + } +} + +static const char *convert_network_type(telephony_network_type_e network_type) +{ + switch (network_type) { + case TELEPHONY_NETWORK_TYPE_GSM: + return "GSM"; + case TELEPHONY_NETWORK_TYPE_GPRS: + return "GPRS"; + case TELEPHONY_NETWORK_TYPE_EDGE: + return "EDGE"; + case TELEPHONY_NETWORK_TYPE_UMTS: + return "UMTS"; + case TELEPHONY_NETWORK_TYPE_HSDPA: + return "HSDPA"; + case TELEPHONY_NETWORK_TYPE_LTE: + return "LTE"; + default: + return "UNKNOWN"; + } +} + +static const char *convert_network_ps_type(telephony_network_ps_type_e ps_type) +{ + switch (ps_type) { + case TELEPHONY_NETWORK_PS_TYPE_HSDPA: + return "HSDPA"; + case TELEPHONY_NETWORK_PS_TYPE_HSUPA: + return "HSUPA"; + case TELEPHONY_NETWORK_PS_TYPE_HSPA: + return "HSPA"; + case TELEPHONY_NETWORK_PS_TYPE_HSPAP: + return "HSPAP"; + default: + return "UNKNOWN"; + } +} + +static const char *convert_network_dds(telephony_network_default_data_subs_e dds) +{ + switch (dds) { + case TELEPHONY_NETWORK_DEFAULT_DATA_SUBS_SIM1: + return "SIM1"; + case TELEPHONY_NETWORK_DEFAULT_DATA_SUBS_SIM2: + return "SIM2"; + case TELEPHONY_NETWORK_DEFAULT_DATA_SUBS_UNKNOWN: + default: + return "UNKNOWN"; + } +} + +static const char *convert_network_ds(telephony_network_default_subs_e ds) +{ + switch (ds) { + case TELEPHONY_NETWORK_DEFAULT_SUBS_SIM1: + return "SIM1"; + case TELEPHONY_NETWORK_DEFAULT_SUBS_SIM2: + return "SIM2"; + case TELEPHONY_NETWORK_DEFAULT_SUBS_UNKNOWN: + default: + return "UNKNOWN"; + } +} + +static const char *convert_network_selection_mode(telephony_network_selection_mode_e mode) +{ + switch (mode) { + case TELEPHONY_NETWORK_SELECTION_MODE_AUTOMATIC: + return "AUTOMATIC"; + case TELEPHONY_NETWORK_SELECTION_MODE_MANUAL: + return "MANUAL"; + default: + return "UNKNOWN"; + } +} + +static void network_noti_cb(telephony_h handle, telephony_noti_e noti_id, void *data, void *user_data) +{ + msg(""); + switch (noti_id) { + case TELEPHONY_NOTI_NETWORK_SERVICE_STATE: + msgb("NOTI_NETWORK_SERVICE_STATE received!!!"); + msg(" - service_state = %s", convert_network_service_state(*(int *)data)); + break; + case TELEPHONY_NOTI_NETWORK_CELLID: + msgb("NOTI_NETWORK_CELLID received!!!"); + msg(" - cell_id = %d", *(int *)data); + break; + case TELEPHONY_NOTI_NETWORK_ROAMING_STATUS: + msgb("NOTI_NETWORK_ROAMING_STATUS received!!!"); + msg(" - roaming_status = %d", *(int *)data); + break; + case TELEPHONY_NOTI_NETWORK_SIGNALSTRENGTH_LEVEL: + msgb("NOTI_NETWORK_SIGNALSTRENGTH_LEVEL received!!!"); + msg(" - rssi = %d", *(int *)data); + break; + case TELEPHONY_NOTI_NETWORK_NETWORK_NAME: + msgb("NOTI_NETWORK_NETWORK_NAME received!!!"); + msg(" - network_name = %s", (char *)data); + break; + case TELEPHONY_NOTI_NETWORK_PS_TYPE: + msgb("NOTI_NETWORK_PS_TYPE received!!!"); + msg(" - ps_type = %s", convert_network_ps_type(*(int *)data)); + break; + case TELEPHONY_NOTI_NETWORK_DEFAULT_DATA_SUBSCRIPTION: + msgb("NOTI_NETWORK_DEFAULT_DATA_SUBSCRIPTION received!!!"); + msg(" - default_data_subscription = %s", convert_network_dds(*(int *)data)); + break; + case TELEPHONY_NOTI_NETWORK_DEFAULT_SUBSCRIPTION: + msgb("NOTI_NETWORK_DEFAULT_SUBSCRIPTION received!!!"); + msg(" - default_subscription = %s", convert_network_ds(*(int *)data)); + break; + case TELEPHONY_NOTI_NETWORK_LAC: + msgb("NOTI_NETWORK_LAC received!!!"); + msg(" - lac = %d", *(int *)data); + break; + case TELEPHONY_NOTI_NETWORK_TAC: + msgb("NOTI_NETWORK_TAC received!!!"); + msg(" - tac = %d", *(int *)data); + break; + case TELEPHONY_NOTI_NETWORK_SYSTEM_ID: + msgb("NOTI_NETWORK_SYSTEM_ID received!!!"); + msg(" - system_id = %d", *(int *)data); + break; + case TELEPHONY_NOTI_NETWORK_NETWORK_ID: + msgb("NOTI_NETWORK_NETWORK_ID received!!!"); + msg(" - network_id = %d", *(int *)data); + break; + case TELEPHONY_NOTI_NETWORK_BS_ID: + msgb("NOTI_NETWORK_BS_ID received!!!"); + msg(" - base_station_id = %d", *(int *)data); + break; + case TELEPHONY_NOTI_NETWORK_BS_LATITUDE: + msgb("NOTI_NETWORK_BS_LATITUDE received!!!"); + msg(" - base_station_latitude = %d", *(int *)data); + break; + case TELEPHONY_NOTI_NETWORK_BS_LONGITUDE: + msgb("NOTI_NETWORK_BS_LONGITUDE received!!!"); + msg(" - base_station_longitude = %d", *(int *)data); + break; + default: + msgb("Unknown notification received!!!"); + break; + } +} + +static int run_network_get_cell_id(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + int cell_id; + + msg("call telephony_network_get_cell_id()"); + + ret = telephony_network_get_cell_id(handle_list->handle[subs_type], &cell_id); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_network_get_cell_id() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - cell_id = %d", cell_id); + + return 0; +} + +static int run_network_get_lac(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + int lac; + + msg("call telephony_network_get_lac()"); + + ret = telephony_network_get_lac(handle_list->handle[subs_type], &lac); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_network_get_lac() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - lac = %d", lac); + + return 0; +} + +static int run_network_get_mcc(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + char *mcc; + + msg("call telephony_network_get_mcc()"); + + ret = telephony_network_get_mcc(handle_list->handle[subs_type], &mcc); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_network_get_mcc() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - mcc = %s", mcc); + + return 0; +} + +static int run_network_get_mnc(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + char *mnc; + + msg("call telephony_network_get_mnc()"); + + ret = telephony_network_get_mnc(handle_list->handle[subs_type], &mnc); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_network_get_mnc() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - mnc = %s", mnc); + + return 0; +} + +static int run_network_get_network_name(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + char *network_name; + + msg("call telephony_network_get_network_name()"); + + ret = telephony_network_get_network_name(handle_list->handle[subs_type], &network_name); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_network_get_network_name() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - network_name = %s", network_name); + + return 0; +} + +static int run_network_get_network_name_option(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + telephony_network_name_option_e name_option; + + msg("call telephony_network_get_network_name_option()"); + + ret = telephony_network_get_network_name_option(handle_list->handle[subs_type], &name_option); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_network_get_network_name_option() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - network_name_option = %s", convert_network_name_option(name_option)); + + return 0; +} + +static int run_network_get_roaming_status(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + bool roaming_status; + + msg("call telephony_network_get_roaming_status()"); + + ret = telephony_network_get_roaming_status(handle_list->handle[subs_type], &roaming_status); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_network_get_roaming_status() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - roaming_status = %s", roaming_status ? "TRUE" : "FALSE"); + + return 0; +} + +static int run_network_get_rssi(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + telephony_network_rssi_e rssi; + + msg("call telephony_network_get_rssi()"); + + ret = telephony_network_get_rssi(handle_list->handle[subs_type], &rssi); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_network_get_rssi() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - rssi = %d", rssi); + + return 0; +} + +static int run_network_get_service_state(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + telephony_network_service_state_e service_state; + + msg("call telephony_network_get_service_state()"); + + ret = telephony_network_get_service_state(handle_list->handle[subs_type], &service_state); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_network_get_service_state() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - service_state = %s", convert_network_service_state(service_state)); + + return 0; +} + +static int run_network_get_type(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + telephony_network_type_e type; + + msg("call telephony_network_get_type()"); + + ret = telephony_network_get_type(handle_list->handle[subs_type], &type); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_network_get_type() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - type = %s", convert_network_type(type)); + + return 0; +} + +static int run_network_get_ps_type(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + telephony_network_ps_type_e ps_type; + + msg("call telephony_network_get_ps_type()"); + + ret = telephony_network_get_ps_type(handle_list->handle[subs_type], &ps_type); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_network_get_ps_type() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - ps_type = %s", convert_network_ps_type(ps_type)); + + return 0; +} + +static int run_network_get_dds(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + telephony_network_default_data_subs_e dds; + + msg("call telephony_network_get_default_data_subscription()"); + + ret = telephony_network_get_default_data_subscription(handle_list->handle[subs_type], &dds); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_network_get_default_data_subscription() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - default_data_subscription = %s", convert_network_dds(dds)); + + return 0; +} + +static int run_network_get_ds(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + telephony_network_default_subs_e ds; + + msg("call telephony_network_get_default_subscription()"); + + ret = telephony_network_get_default_subscription(handle_list->handle[subs_type], &ds); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_network_get_default_subscription() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - default_subscription = %s", convert_network_ds(ds)); + + return 0; +} + +static int run_network_get_selection_mode(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + telephony_network_selection_mode_e mode; + + msg("call telephony_network_get_selection_mode()"); + + ret = telephony_network_get_selection_mode(handle_list->handle[subs_type], &mode); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_network_get_selection_mode() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - selection_mode = %s", convert_network_selection_mode(mode)); + + return 0; +} + +static int run_network_get_tac(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + int tac; + + msg("call telephony_network_get_tac()"); + + ret = telephony_network_get_tac(handle_list->handle[subs_type], &tac); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_network_get_tac() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - tac = %d", tac); + + return 0; +} + +static int run_network_get_system_id(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + int system_id; + + msg("call telephony_network_get_system_id()"); + + ret = telephony_network_get_system_id(handle_list->handle[subs_type], &system_id); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_network_get_system_id() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - system_id = %d", system_id); + + return 0; +} + +static int run_network_get_network_id(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + int network_id; + + msg("call telephony_network_get_network_id()"); + + ret = telephony_network_get_network_id(handle_list->handle[subs_type], &network_id); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_network_get_network_id() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - network_id = %d", network_id); + + return 0; +} + +static int run_network_get_bs_id(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + int bs_id; + + msg("call telephony_network_get_base_station_id()"); + + ret = telephony_network_get_base_station_id(handle_list->handle[subs_type], &bs_id); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_network_get_base_station_id() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - base_station_id = %d", bs_id); + + return 0; +} + +static int run_network_get_bs_latitude(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + int bs_latitude; + + msg("call telephony_network_get_base_station_latitude()"); + + ret = telephony_network_get_base_station_latitude(handle_list->handle[subs_type], &bs_latitude); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_network_get_base_station_latitude() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - base_station_latitude = %d", bs_latitude); + + return 0; +} + +static int run_network_get_bs_longitude(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + int bs_longitude; + + msg("call telephony_network_get_base_station_longitude()"); + + ret = telephony_network_get_base_station_longitude(handle_list->handle[subs_type], &bs_longitude); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_network_get_base_station_longitude() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - base_station_longitude = %d", bs_longitude); + + return 0; +} + +struct menu_data menu_network[] = { + {"1", "telephony_network_get_cell_id", NULL, run_network_get_cell_id, NULL}, + {"2", "telephony_network_get_lac", NULL, run_network_get_lac, NULL}, + {"3", "telephony_network_get_mcc", NULL, run_network_get_mcc, NULL}, + {"4", "telephony_network_get_mnc", NULL, run_network_get_mnc, NULL}, + {"5", "telephony_network_get_network_name", NULL, run_network_get_network_name, NULL}, + {"6", "telephony_network_get_network_name_option", NULL, run_network_get_network_name_option, NULL}, + {"7", "telephony_network_get_roaming_status", NULL, run_network_get_roaming_status, NULL}, + {"8", "telephony_network_get_rssi", NULL, run_network_get_rssi, NULL}, + {"9", "telephony_network_get_service_state", NULL, run_network_get_service_state, NULL}, + {"10", "telephony_network_get_type", NULL, run_network_get_type, NULL}, + {"11", "telephony_network_get_ps_type", NULL, run_network_get_ps_type, NULL}, + {"12", "telephony_network_get_default_data_subscription", NULL, run_network_get_dds, NULL}, + {"13", "telephony_network_get_default_subscription", NULL, run_network_get_ds, NULL}, + {"14", "telephony_network_get_selection_mode", NULL, run_network_get_selection_mode, NULL}, + {"15", "telephony_network_get_tac", NULL, run_network_get_tac, NULL}, + {"16", "telephony_network_get_system_id", NULL, run_network_get_system_id, NULL}, + {"17", "telephony_network_get_network_id", NULL, run_network_get_network_id, NULL}, + {"18", "telephony_network_get_base_station_id", NULL, run_network_get_bs_id, NULL}, + {"19", "telephony_network_get_base_station_latitude", NULL, run_network_get_bs_latitude, NULL}, + {"20", "telephony_network_get_base_station_longitude", NULL, run_network_get_bs_longitude, NULL}, + {NULL, }, +}; + +void register_network_event(telephony_handle_list_s *handle_list) +{ + int ret, i; + + for (i = 0; i < (sizeof(network_noti_tbl) / sizeof(int)); i++) { + ret = telephony_set_noti_cb(handle_list->handle[subs_type], network_noti_tbl[i], network_noti_cb, NULL); + if (ret != TELEPHONY_ERROR_NONE) + msg("telephony_set_noti_cb() failed!!! i(%d), ret(%d,%s)", i, ret, get_error_message(ret)); + } +} + diff --git a/test_src/network.h b/test_src/network.h new file mode 100644 index 0000000..4795759 --- /dev/null +++ b/test_src/network.h @@ -0,0 +1,27 @@ +/* + * telephony + * + * Copyright (c) 2017 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __NETWORK_H__ +#define __NETWORK_H__ + +#include + +void register_network_event(telephony_handle_list_s *handle_list); + +#endif + diff --git a/test_src/sim.c b/test_src/sim.c new file mode 100644 index 0000000..1b4b416 --- /dev/null +++ b/test_src/sim.c @@ -0,0 +1,318 @@ +/* + * telephony + * + * Copyright (c) 2017 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include + +#include + +#include "menu.h" +#include "sim.h" + +extern int subs_type; + +static int sim_noti_tbl[] = { + TELEPHONY_NOTI_SIM_STATUS, + TELEPHONY_NOTI_SIM_CALL_FORWARDING_INDICATOR_STATE +}; + +static const char *convert_sim_state(telephony_sim_state_e state) +{ + switch (state) { + case TELEPHONY_SIM_STATE_AVAILABLE: + return "AVAILABLE"; + case TELEPHONY_SIM_STATE_LOCKED: + return "LOCKED"; + case TELEPHONY_SIM_STATE_UNKNOWN: + default: + return "UNKNOWN"; + } +} + +static const char *convert_sim_lock_state(telephony_sim_lock_state_e lock_state) +{ + switch (lock_state) { + case TELEPHONY_SIM_LOCK_STATE_PIN_REQUIRED: + return "PIN_REQUIRED"; + case TELEPHONY_SIM_LOCK_STATE_PUK_REQUIRED: + return "PUK_REQUIRED"; + case TELEPHONY_SIM_LOCK_STATE_PERM_LOCKED: + return "PERM_LOCKED"; + case TELEPHONY_SIM_LOCK_STATE_NCK_REQUIRED: + return "NCK_REQUIRED"; + case TELEPHONY_SIM_LOCK_STATE_UNKNOWN: + default: + return "UNKNOWN"; + } +} + +static void sim_noti_cb(telephony_h handle, telephony_noti_e noti_id, void *data, void *user_data) +{ + msg(""); + switch (noti_id) { + case TELEPHONY_NOTI_SIM_STATUS: + msgb("NOTI_SIM_STATUS received!!!"); + msg(" - state = %s", convert_sim_state(*(int *)data)); + break; + case TELEPHONY_NOTI_SIM_CALL_FORWARDING_INDICATOR_STATE: + msgb("NOTI_CALL_FORWARDING_INDICATOR_STATE received!!!"); + msg(" - call_forwarding_indicator_state = %s", *(int *)data ? "TRUE" : "FALSE"); + break; + default: + msgb("Unknown notification received!!!"); + break; + } +} + +static int run_sim_is_changed(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + bool is_changed; + + msg("call telephony_sim_is_changed()"); + + ret = telephony_sim_is_changed(handle_list->handle[subs_type], &is_changed); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_sim_is_changed() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - is_changed = %s", is_changed ? "TRUE" : "FALSE"); + + return 0; +} + +static int run_sim_get_operator(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + char *operator; + + msg("call telephony_sim_get_operator()"); + + ret = telephony_sim_get_operator(handle_list->handle[subs_type], &operator); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_sim_get_operator() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - operator = %s", operator); + + return 0; +} + +static int run_sim_get_icc_id(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + char *icc_id; + + msg("call telephony_sim_get_icc_id()"); + + ret = telephony_sim_get_icc_id(handle_list->handle[subs_type], &icc_id); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_sim_get_icc_id() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - icc_id = %s", icc_id); + + return 0; +} + +static int run_sim_get_msin(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + char *msin; + + msg("call telephony_sim_get_msin()"); + + ret = telephony_sim_get_msin(handle_list->handle[subs_type], &msin); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_sim_get_msin() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - msin = %s", msin); + + return 0; +} + +static int run_sim_get_spn(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + char *spn; + + msg("call telephony_sim_get_spn()"); + + ret = telephony_sim_get_spn(handle_list->handle[subs_type], &spn); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_sim_get_spn() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - spn = %s", spn); + + return 0; +} + +static int run_sim_get_state(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + telephony_sim_state_e state; + + msg("call telephony_sim_get_state()"); + + ret = telephony_sim_get_state(handle_list->handle[subs_type], &state); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_sim_get_state() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - state = %s", convert_sim_state(state)); + + return 0; +} + +static int run_sim_get_app_list(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + telephony_sim_application_type_e app_list; + + msg("call telephony_sim_get_application_list()"); + + ret = telephony_sim_get_application_list(handle_list->handle[subs_type], &app_list); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_sim_get_application_list() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - application_list = 0x%x", app_list); + + return 0; +} + +static int run_sim_get_subs_number(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + char *subs_number; + + msg("call telephony_sim_get_subscriber_number()"); + + ret = telephony_sim_get_subscriber_number(handle_list->handle[subs_type], &subs_number); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_sim_get_subscriber_number() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - subscriber_number = %s", subs_number); + + return 0; +} + +static int run_sim_get_lock_state(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + telephony_sim_lock_state_e lock_state; + + msg("call telephony_sim_get_lock_state()"); + + ret = telephony_sim_get_lock_state(handle_list->handle[subs_type], &lock_state); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_sim_get_lock_state() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - lock_state = %s", convert_sim_lock_state(lock_state)); + + return 0; +} + +static int run_sim_get_group_id1(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + char *gid1; + + msg("call telephony_sim_get_group_id1()"); + + ret = telephony_sim_get_group_id1(handle_list->handle[subs_type], &gid1); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_sim_get_group_id1() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - gid1 = %s", gid1); + + return 0; +} + +static int run_sim_get_call_forward_ind_state(MManager *mm, struct menu_data *menu) +{ + telephony_handle_list_s *handle_list = menu_manager_ref_user_data(mm); + int ret; + bool call_forward_ind_state; + + msg("call telephony_sim_get_call_forwarding_indicator_state()"); + + ret = telephony_sim_get_call_forwarding_indicator_state(handle_list->handle[subs_type], &call_forward_ind_state); + if (ret != TELEPHONY_ERROR_NONE) { + msg("telephony_sim_get_call_forwarding_indicator_state() failed!!! (ret:%d,%s)", ret, get_error_message(ret)); + return 0; + } + + msg(" - call_forwarding_indicator_state = %s", call_forward_ind_state ? "TRUE" : "FALSE"); + + return 0; +} + +struct menu_data menu_sim[] = { + {"1", "telephony_sim_is_changed", NULL, run_sim_is_changed, NULL}, + {"2", "telephony_sim_get_operator", NULL, run_sim_get_operator, NULL}, + {"3", "telephony_sim_get_icc_id", NULL, run_sim_get_icc_id, NULL}, + {"4", "telephony_sim_get_msin", NULL, run_sim_get_msin, NULL}, + {"5", "telephony_sim_get_spn", NULL, run_sim_get_spn, NULL}, + {"6", "telephony_sim_get_state", NULL, run_sim_get_state, NULL}, + {"7", "telephony_sim_get_application_list", NULL, run_sim_get_app_list, NULL}, + {"8", "telephony_sim_get_subscriber_number", NULL, run_sim_get_subs_number, NULL}, + {"9", "telephony_sim_get_lock_state", NULL, run_sim_get_lock_state, NULL}, + {"10", "telephony_sim_get_group_id1", NULL, run_sim_get_group_id1, NULL}, + {"11", "telephony_sim_get_call_forwarding_indicator_state", NULL, run_sim_get_call_forward_ind_state, NULL}, + {NULL, }, +}; + +void register_sim_event(telephony_handle_list_s *handle_list) +{ + int ret, i; + + for (i = 0; i < (sizeof(sim_noti_tbl) / sizeof(int)); i++) { + ret = telephony_set_noti_cb(handle_list->handle[subs_type], sim_noti_tbl[i], sim_noti_cb, NULL); + if (ret != TELEPHONY_ERROR_NONE) + msg("telephony_set_noti_cb() failed!!! i(%d), ret(%d,%s)", i, ret, get_error_message(ret)); + } +} + diff --git a/test_src/sim.h b/test_src/sim.h new file mode 100644 index 0000000..8e54882 --- /dev/null +++ b/test_src/sim.h @@ -0,0 +1,27 @@ +/* + * telephony + * + * Copyright (c) 2017 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _SIM_H_ +#define _SIM_H_ + +#include + +void register_sim_event(telephony_handle_list_s *handle_list); + +#endif /* _SIM_H_ */ + -- 2.7.4