4 * Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Ja-young Gu <jygu@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
21 #ifndef __TCORE_CO_NETWORK_H__
22 #define __TCORE_CO_NETWORK_H__
24 #include <core_object.h>
29 * Manual PLMN property
31 * Value: MCC+MNC or Empty(Unknown mode)
33 #define PROP_NET_MANUAL_PLMN "manual_plmn"
36 * Manual Selection status property
38 * Value: 'waiting' / 'success' / 'failure' / Empty(Unknown state)
40 #define PROP_NET_MANUAL_SELECTION_STATUS "manual_selection_status"
43 * Network Registration Reject Cause Property
45 * Value: LU registration reject cause strings
47 #define PROP_NET_REG_LU_REJECT_CAUSE "reg_reject_cause"
54 #define PROP_NET_READ_MDN_FOR_ACTIVATION "mdn_for_activation"
61 #define PROP_MODEM_READ_ESN_FOR_ACTIVATION "esn_for_activation"
65 enum tcore_network_service_domain_type {
66 TCORE_NETWORK_SERVICE_DOMAIN_TYPE_CIRCUIT,
67 TCORE_NETWORK_SERVICE_DOMAIN_TYPE_PACKET
70 enum tcore_network_name_type {
71 TCORE_NETWORK_NAME_TYPE_SHORT,
72 TCORE_NETWORK_NAME_TYPE_FULL,
73 TCORE_NETWORK_NAME_TYPE_SPN,
76 enum tcore_network_name_priority {
77 TCORE_NETWORK_NAME_PRIORITY_UNKNOWN,
78 TCORE_NETWORK_NAME_PRIORITY_NETWORK,
79 TCORE_NETWORK_NAME_PRIORITY_SPN,
80 TCORE_NETWORK_NAME_PRIORITY_ANY,
83 enum tcore_network_operator_info_type {
84 TCORE_NETWORK_OPERATOR_INFO_TYPE_TS25_DB = 0,
85 TCORE_NETWORK_OPERATOR_INFO_TYPE_DELTA_DB,
86 TCORE_NETWORK_OPERATOR_INFO_TYPE_NITZ,
87 TCORE_NETWORK_OPERATOR_INFO_TYPE_EONS,
90 struct tcore_network_operator_info {
91 enum tcore_network_operator_info_type type;
98 struct tcore_network_operations {
99 TReturn (*search)(CoreObject *o, UserRequest *ur);
100 TReturn (*set_plmn_selection_mode)(CoreObject *o, UserRequest *ur);
101 TReturn (*get_plmn_selection_mode)(CoreObject *o, UserRequest *ur);
102 TReturn (*set_service_domain)(CoreObject *o, UserRequest *ur);
103 TReturn (*get_service_domain)(CoreObject *o, UserRequest *ur);
104 TReturn (*set_band)(CoreObject *o, UserRequest *ur);
105 TReturn (*get_band)(CoreObject *o, UserRequest *ur);
106 TReturn (*set_preferred_plmn)(CoreObject *o, UserRequest *ur);
107 TReturn (*get_preferred_plmn)(CoreObject *o, UserRequest *ur);
108 TReturn (*set_order)(CoreObject *o, UserRequest *ur);
109 TReturn (*get_order)(CoreObject *o, UserRequest *ur);
110 TReturn (*set_power_on_attach)(CoreObject *o, UserRequest *ur);
111 TReturn (*get_power_on_attach)(CoreObject *o, UserRequest *ur);
112 TReturn (*set_cancel_manual_search)(CoreObject *o, UserRequest *ur);
113 TReturn (*get_serving_network)(CoreObject *o, UserRequest *ur);
114 TReturn (*set_mode)(CoreObject *o, UserRequest *ur);
115 TReturn (*get_mode)(CoreObject *o, UserRequest *ur);
116 TReturn (*set_neighboring_cell_info)(CoreObject *o, UserRequest *ur);
117 TReturn (*get_neighboring_cell_info)(CoreObject *o, UserRequest *ur);
118 TReturn (*set_default_data_subscription)(CoreObject *o, UserRequest *ur);
119 TReturn (*get_default_data_subscription)(CoreObject *o, UserRequest *ur);
120 TReturn (*set_default_subscription)(CoreObject *o, UserRequest *ur);
121 TReturn (*get_default_subscription)(CoreObject *o, UserRequest *ur);
122 TReturn (*set_emergency_callback_mode)(CoreObject *o, UserRequest *ur); /* 3GPP2 spcefic */
123 TReturn (*set_roaming_preference)(CoreObject *o, UserRequest *ur); /* 3GPP2 spcefic */
124 TReturn (*get_roaming_preference)(CoreObject *o, UserRequest *ur); /* 3GPP2 spcefic */
125 TReturn (*get_subscription_info)(CoreObject *o, UserRequest *ur); /* 3GPP2 spcefic */
129 CoreObject* tcore_network_new(TcorePlugin *plugin, const char *name,
130 struct tcore_network_operations *ops, TcoreHal *hal);
131 void tcore_network_free(CoreObject *co);
133 void tcore_network_set_ops(CoreObject *co, struct tcore_network_operations *ops);
135 TReturn tcore_network_set_plmn(CoreObject *co, const char *plmn);
136 char* tcore_network_get_plmn(CoreObject *co);
138 TReturn tcore_network_set_network_name(CoreObject *co,
139 enum tcore_network_name_type type, const char *network_name);
140 char* tcore_network_get_network_name(CoreObject *co,
141 enum tcore_network_name_type type);
143 TReturn tcore_network_set_network_name_priority(CoreObject *co,
144 enum tcore_network_name_priority priority);
145 TReturn tcore_network_get_network_name_priority(CoreObject *co,
146 enum tcore_network_name_priority *priority);
148 TReturn tcore_network_set_roaming_state(CoreObject *co, gboolean state);
149 gboolean tcore_network_get_roaming_state(CoreObject *co);
151 TReturn tcore_network_set_restricted_state(CoreObject *co, int state);
152 int tcore_network_get_restricted_state(CoreObject *co);
154 TReturn tcore_network_set_service_status(CoreObject *co,
155 enum tcore_network_service_domain_type type,
156 enum telephony_network_service_domain_status status);
157 TReturn tcore_network_get_service_status(CoreObject *co,
158 enum tcore_network_service_domain_type type,
159 enum telephony_network_service_domain_status *result);
161 TReturn tcore_network_set_access_technology(CoreObject *co,
162 enum telephony_network_access_technology act);
163 TReturn tcore_network_get_access_technology(CoreObject *co,
164 enum telephony_network_access_technology *result);
166 TReturn tcore_network_set_lac(CoreObject *co, unsigned int lac);
167 TReturn tcore_network_get_lac(CoreObject *co, unsigned int *result);
169 TReturn tcore_network_set_rac(CoreObject *co, unsigned int rac);
170 TReturn tcore_network_get_rac(CoreObject *co, unsigned int *result);
172 TReturn tcore_network_set_cell_id(CoreObject *co, unsigned int cell_id);
173 TReturn tcore_network_get_cell_id(CoreObject *co, unsigned int *result);
175 TReturn tcore_network_set_gsm_dtm_support(CoreObject *co, gboolean state);
176 gboolean tcore_network_get_gsm_dtm_support(CoreObject *co);
178 TReturn tcore_network_set_service_type(CoreObject *co,
179 enum telephony_network_service_type service_type);
180 TReturn tcore_network_get_service_type(CoreObject *co,
181 enum telephony_network_service_type *result);
183 TReturn tcore_network_operator_info_add(CoreObject *co,
184 const struct tcore_network_operator_info *noi);
186 struct tcore_network_operator_info*
187 tcore_network_operator_info_find(CoreObject *co,
188 const char *mcc, const char *mnc);