m2mb API docs  30.00.009.1
m2mb API sets documentation
m2mb_net.h
Go to the documentation of this file.
1 /* $version: 302043 */
2 /*===============================================================================================*/
3 /* >>> Copyright (C) Telit Communications S.p.A. Italy All Rights Reserved. <<< */
21 #ifndef M2M_M2MB_NET_API_H
22 #define M2M_M2MB_NET_API_H
23 
24 
25 /* Global declarations ==========================================================================*/
26 
27 /* Global typedefs ==============================================================================*/
28 
29 typedef HANDLE M2MB_NET_HANDLE;
30 
31 typedef enum
32 {
33  M2MB_NET_SUCCESS,
34  M2MB_NET_GENERIC_FAILURE
35 } M2MB_NET_ERRNO_E;
36 
37 // see ETSI TS 27.007 V14 - commands +CREG, +CGREG and +CEREG
38 typedef enum
39 {
40  M2MB_NET_RAT_UNKNOWN = -1,
41  M2MB_NET_RAT_GSM,
42  M2MB_NET_RAT_GSM_Compact,
43  M2MB_NET_RAT_UTRAN,
44  M2MB_NET_RAT_GSM_wEGPRS,
45  M2MB_NET_RAT_UTRAN_wHSDPA,
46  M2MB_NET_RAT_UTRAN_wHSUPA,
47  M2MB_NET_RAT_UTRAN_wHSDPAandHSUPA,
48  M2MB_NET_RAT_EUTRAN,
49  M2MB_NET_RAT_EC_GSM_IoT,
50  M2MB_NET_RAT_EUTRAN_NB_S1
51 } M2MB_NET_RAT_E;
52 
53 typedef enum
54 {
55  M2MB_NET_STAT_NOT_REGISTERED,
56  M2MB_NET_STAT_REGISTERED_HOME,
57  M2MB_NET_STAT_SEARCHING,
58  M2MB_NET_STAT_REGISTRATION_DENIED,
59  M2MB_NET_STAT_UNKNOWN,
60  M2MB_NET_STAT_REGISTERED_ROAMING
61 } M2MB_NET_STAT_E;
62 
63 typedef enum
64 {
65  M2MB_NET_AVAILABILITY_UNKNOWN,
66  M2MB_NET_AVAILABILITY_AVAILABLE,
67  M2MB_NET_AVAILABILITY_CURRENT,
68  M2MB_NET_AVAILABILITY_FORBIDDEN
69 } M2MB_NET_AVAILABILITY_E;
70 
71 typedef enum
72 {
73  M2MB_NET_NULL_RESP,
74  M2MB_NET_GET_SIGNAL_INFO_RESP,
75  M2MB_NET_GET_BER_RESP,
76  M2MB_NET_GET_CURRENT_OPERATOR_INFO_RESP,
77  M2MB_NET_GET_CURRENT_CELL_LIST_RESP,
78  M2MB_NET_GET_AVAILABLE_NW_LIST_RESP,
79  M2MB_NET_GET_REG_STATUS_INFO_RESP,
80  M2MB_NET_REG_STATUS_IND, /* Network registration state change indication */
81  M2MB_NET_GET_EDRX_INFO_RESP,
82  M2MB_NET_SET_EDRX_INFO_RESP,
83  M2MB_NET_ENABLE_IND_RESP,
84  M2MB_NET_GET_MODE_PREFERENCE_RESP, /* Network Mode Preference Get response */
85  M2MB_NET_SET_MODE_PREFERENCE_RESP, /* Network Mode Preference Set response */
86  M2MB_NET_MODE_PREFERENCE_IND /* Network Mode Preference indication */
87 } M2MB_NET_IND_E;
88 
89 typedef enum
90 {
91  M2MB_NET_DUMMY,
92  M2MB_NET_SET_ENABLE_IND_ASYNC,
93  M2MB_NET_GET_ENABLE_IND_ASYNC
94 } M2MB_NET_ACTION_E;
95 
96 typedef enum
97 {
98  M2MB_NET_RESP_SET_NONE,
99  M2MB_NET_RESP_SET_FULL,
100  M2MB_NET_RESP_SET_SUBSET1,
101  M2MB_NET_RESP_SET_SUBSET2,
102  M2MB_NET_RESP_SET_SUBSET3,
103  M2MB_NET_RESP_SET_SUBSET4,
104  M2MB_NET_RESP_SET_SUBSET5
105 } M2MB_NET_RESP_SET_E;
106 
107 typedef enum
108 {
109  M2MB_NET_LTE_HANDOVER_SERVING,
110  M2MB_NET_LTE_HANDOVER_INTRA_FREQ,
111  M2MB_NET_LTE_HANDOVER_INTER_FREQ,
112 } M2MB_NET_LTE_HANDOVER_E;
113 
114 typedef enum
115 {
116  M2MB_NET_SRV_DOMAIN_NO_SRV,
117  M2MB_NET_SRV_DOMAIN_CS_ONLY,
118  M2MB_NET_SRV_DOMAIN_PS_ONLY,
119  M2MB_NET_SRV_DOMAIN_CS_PS,
120  M2MB_NET_SRV_DOMAIN_CAMPED
121 } M2MB_NET_SRV_DOMAIN_E;
122 
123 typedef enum
124 {
125  M2MB_NET_CELL_TYPE_SERVING,
126  M2MB_NET_CELL_TYPE_NEIGHBOR
127 } M2MB_NET_CELL_TYPE_E;
128 
129 typedef enum
130 {
131  M2MB_NET_ACC_TECH_TYPE_NO_SRV,
132  M2MB_NET_ACC_TECH_TYPE_CDMA_1X,
133  M2MB_NET_ACC_TECH_TYPE_CDMA_1XEVDO,
134  M2MB_NET_ACC_TECH_TYPE_AMPS,
135  M2MB_NET_ACC_TECH_TYPE_GSM,
136  M2MB_NET_ACC_TECH_TYPE_UMTS,
137  M2MB_NET_ACC_TECH_TYPE_WLAN,
138  M2MB_NET_ACC_TECH_TYPE_GPS,
139  M2MB_NET_ACC_TECH_TYPE_LTE,
140  M2MB_NET_ACC_TECH_TYPE_TDSCDMA,
141  M2MB_NET_ACC_TECH_TYPE_LTE_M1,
142  M2MB_NET_ACC_TECH_TYPE_LTE_NB1,
143  M2MB_NET_ACC_TECH_TYPE_MAX
144 } M2MB_NET_ACC_TECH_TYPE_E;
145 
146 typedef enum
147 {
148  M2MB_NET_ERR_OK,
149  M2MB_NET_ERR_UNKNOWN
150 } M2MB_NET_ERR_CAUSE_E;
151 
152 typedef enum
153 {
154  M2MB_NET_ENABLE_IND_ASYNC_DISABLED,
155  M2MB_NET_ENABLE_IND_ASYNC_ENABLED
156 } M2MB_NET_ENABLE_IND_ASYNC_E;
157 
158 typedef enum
159 {
160  M2MB_NET_SELECTED_WIRELESS_GERAN = 12,
161  M2MB_NET_SELECTED_WIRELESS_UTRAN = 22,
162  M2MB_NET_SELECTED_WIRELESS_GERAN_UTRAN_EUTRAN = 25,
163  M2MB_NET_SELECTED_WIRELESS_EUTRAN = 28,
164  M2MB_NET_SELECTED_WIRELESS_GERAN_UTRAN = 29,
165  M2MB_NET_SELECTED_WIRELESS_GERAN_EUTRAN = 30,
166  M2MB_NET_SELECTED_WIRELESS_UTRAN_EUTRAN = 31,
167 } M2MB_NET_SELECTED_WIRELESS_NETWORK_E;
168 
169 typedef enum
170 {
171  M2MB_NET_LTE_CIOT_PREFERENCE_CAT_M1 = 0, /* CAT-M exclusive */
172  M2MB_NET_LTE_CIOT_PREFERENCE_NB_IOT = 1, /* NB-IoT exclusive */
173  M2MB_NET_LTE_CIOT_PREFERENCE_CAT_M1_NB_IOT = 2, /* Both CAT-M and NB-IoT, CAT-M preferred */
174  M2MB_NET_LTE_CIOT_PREFERENCE_NB_IOT_CAT_M1 = 3 /* Both CAT-M and NB-IoT, NB-IoT preferred */
175 } M2MB_NET_LTE_CIOT_PREFERENCE_E;
176 
177 typedef struct
178 {
179  M2MB_NET_ERR_CAUSE_E err;
181 
182 typedef struct
183 {
184  M2MB_NET_ERR_CAUSE_E err;
185  M2MB_RESULT_E response;
187 
188 typedef struct
189 {
190  M2MB_NET_ERR_CAUSE_E err;
191  M2MB_NET_STAT_E stat; //Network status
192  M2MB_NET_RAT_E rat; //Radio Access Technology
193  M2MB_NET_SRV_DOMAIN_E srvDomain;
194  UINT16 areaCode; //LAC or TAC, depending on the current RAT
195  UINT32 cellID;
197 
198 typedef struct
199 {
200  M2MB_NET_ERR_CAUSE_E err;
201  M2MB_NET_ACC_TECH_TYPE_E acc_tech;
202  UINT8 edrx;
203  UINT8 enabled;
205 
206 typedef struct
207 {
208  INT16 ecio;
210 
211 typedef struct
212 {
213  INT8 rsrq; // Reference Signal Received Quality
214  INT16 rsrp; // Reference Signal Received Power
215  INT16 snr;
217 
218 typedef struct
219 {
220  M2MB_NET_ERR_CAUSE_E err;
221  M2MB_NET_RAT_E rat;
222  INT8 rssi; //Received signal strength indication
223  UINT16 sigInfo_size;
224  void *sigInfo;
226 
227 typedef struct
228 {
229  M2MB_NET_ERR_CAUSE_E err;
230  M2MB_NET_RAT_E rat;
231  INT16 ber; //Bit error rate
233 
234 typedef struct
235 {
236  INT32 nARFCN;
237  INT32 nBSIC;
238  INT32 nSignalStrength;
240 
241 typedef struct
242 {
243  UINT32 cell_id;
244  UINT16 mcc;
245  UINT16 mnc;
246  UINT16 lac;
247  UINT16 arfcn;
248  UINT8 bsic;
249  UINT32 timing_advance;
250  UINT16 rx_lev;
252 
253 typedef struct
254 {
255  UINT32 cell_id;
256  UINT16 lac;
257  UINT16 arfcn;
258  UINT8 bsic;
259  UINT16 rx_lev;
261 
262 typedef struct
263 {
264  UINT16 arfcn;
265  UINT8 bsic;
266  UINT16 rx_lev;
267  INT16 srxlev; //Cell selection Rx level
269 
270 typedef union
271 {
276 
277 typedef struct
278 {
279  UINT32 cell_id;
280  UINT16 mcc;
281  UINT16 mnc;
282  UINT16 lac;
283  UINT16 uarfcn;
284  UINT16 psc;
285  INT16 rscp;
286  INT16 ecio;
288 
289 typedef struct
290 {
291  UINT16 uarfcn;
292  UINT16 psc;
293  INT16 rscp;
294  INT16 ecio;
295  INT16 srxlev; //Cell selection Rx level
297 
298 typedef union
299 {
303 
304 typedef struct
305 {
306  M2MB_NET_LTE_HANDOVER_E lteType;
307  UINT32 cell_id;
308  UINT16 mcc;
309  UINT16 mnc;
310  UINT16 tac;
311  UINT16 earfcn;
312  UINT16 pci;
313  INT16 rsrq;
314  INT16 rsrp;
315  INT16 rx_lev;
316  INT16 srxlev; //Cell selection Rx level
318 
319 typedef struct
320 {
321  M2MB_NET_LTE_HANDOVER_E lteType;
322  UINT16 earfcn;
323  UINT16 pci;
324  INT16 rsrq;
325  INT16 rsrp;
326  INT16 rx_lev;
327  INT16 srxlev; //Cell selection Rx level
329 
330 typedef union
331 {
335 
337 {
338  M2MB_NET_CELL_TYPE_E cellType;
339  M2MB_NET_RAT_E cellRat;
340  M2MB_NET_RESP_SET_E respSet;
341  UINT16 cell_size;
342  void *cell;
343  struct M2MB_NET_CELL_NEIGHBOR_T *next;
344  BOOLEAN lte_ue_in_idle; //Radio Status
346 
347 typedef struct
348 {
349  M2MB_NET_ERR_CAUSE_E err;
350  UINT16 neighbors_size;
351  M2MB_NET_CELL_NEIGHBOR_T *neighbors;
353 
354 typedef struct
355 {
356  M2MB_NET_ERR_CAUSE_E err;
357  UINT16 mcc;
358  UINT16 mnc;
359  M2MB_NET_RAT_E rat; //Radio Access Technology
361 
363 {
364  UINT16 mcc;
365  UINT16 mnc;
366  M2MB_NET_AVAILABILITY_E networkAv;
367  M2MB_NET_RAT_E rat;
368  struct M2MB_NET_DESCRIPTION_T *next;
370 
371 typedef struct
372 {
373  M2MB_NET_ERR_CAUSE_E err;
374  UINT16 availableNetworks_size;
375  M2MB_NET_DESCRIPTION_T *availableNetworks;
377 
378 typedef struct
379 {
380  M2MB_NET_SELECTED_WIRELESS_NETWORK_E selectedWirelessNetwork;
381  M2MB_NET_LTE_CIOT_PREFERENCE_E lte_ciot_preference;
383 
385 
386 typedef struct
387 {
388  M2MB_NET_ERR_CAUSE_E err; /* error status */
389  M2MB_NET_MODE_PREFERENCE_T mode_preference; /* mode preference */
391 
392 typedef void ( *m2mb_net_ind_callback )( M2MB_NET_HANDLE h, M2MB_NET_IND_E net_event, UINT16 resp_size, void *resp_struct, void *userdata );
393 
394 /* Global functions =============================================================================*/
395 
396 /*-----------------------------------------------------------------------------------------------*/
436 /*-----------------------------------------------------------------------------------------------*/
437 M2MB_RESULT_E m2mb_net_init( M2MB_NET_HANDLE *h, m2mb_net_ind_callback callback, void *userdata );
438 
439 /*-----------------------------------------------------------------------------------------------*/
471 /*-----------------------------------------------------------------------------------------------*/
472 M2MB_RESULT_E m2mb_net_deinit( M2MB_NET_HANDLE h );
473 
474 /*-----------------------------------------------------------------------------------------------*/
524 /*-----------------------------------------------------------------------------------------------*/
525 M2MB_RESULT_E m2mb_net_conf( M2MB_NET_HANDLE h, UINT8 argc, ... );
526 
527 /*-----------------------------------------------------------------------------------------------*/
586 /*-----------------------------------------------------------------------------------------------*/
587 M2MB_RESULT_E m2mb_net_enable_ind( M2MB_NET_HANDLE h, M2MB_NET_IND_E ind, UINT8 enable );
588 
589 /*-----------------------------------------------------------------------------------------------*/
651 M2MB_RESULT_E m2mb_net_get_signal_info( M2MB_NET_HANDLE h );
652 
653 /*-----------------------------------------------------------------------------------------------*/
705 M2MB_RESULT_E m2mb_net_get_ber( M2MB_NET_HANDLE h );
706 
707 /*-----------------------------------------------------------------------------------------------*/
730 
731 /*-----------------------------------------------------------------------------------------------*/
803 M2MB_RESULT_E m2mb_net_get_mode_preference( M2MB_NET_HANDLE h );
804 
805 /*-----------------------------------------------------------------------------------------------*/
857 M2MB_RESULT_E m2mb_net_get_current_operator_info( M2MB_NET_HANDLE h );
858 
859 /*-----------------------------------------------------------------------------------------------*/
976 M2MB_RESULT_E m2mb_net_get_current_cell_list( M2MB_NET_HANDLE h );
977 
978 /*-----------------------------------------------------------------------------------------------*/
1037 M2MB_RESULT_E m2mb_net_get_available_nw_list( M2MB_NET_HANDLE h );
1038 
1039 /*-----------------------------------------------------------------------------------------------*/
1091 M2MB_RESULT_E m2mb_net_get_reg_status_info( M2MB_NET_HANDLE h );
1092 
1093 /*-----------------------------------------------------------------------------------------------*/
1147 M2MB_RESULT_E m2mb_net_get_edrx_info( M2MB_NET_HANDLE h, M2MB_NET_ACC_TECH_TYPE_E acc_tech );
1148 
1149 /*-----------------------------------------------------------------------------------------------*/
1209 M2MB_RESULT_E m2mb_net_set_edrx_info( M2MB_NET_HANDLE h, M2MB_NET_ACC_TECH_TYPE_E acc_tech, UINT8 edrx, UINT8 enabled );
1210 
1211 #endif
M2MB_NET_CELL_GERAN_SUBSET2_T
Definition: m2mb_net.h:262
m2mb_net_get_current_operator_info
M2MB_RESULT_E m2mb_net_get_current_operator_info(M2MB_NET_HANDLE h)
m2mb_net_get_current_operator_info gets information about current operator.
m2mb_net_set_edrx_info
M2MB_RESULT_E m2mb_net_set_edrx_info(M2MB_NET_HANDLE h, M2MB_NET_ACC_TECH_TYPE_E acc_tech, UINT8 edrx, UINT8 enabled)
m2mb_net_set_edrx_info sets information about edrx.
m2mb_net_get_signal_info
M2MB_RESULT_E m2mb_net_get_signal_info(M2MB_NET_HANDLE h)
m2mb_net_get_signal_info gets information about signal strength.
m2mb_net_get_available_nw_list
M2MB_RESULT_E m2mb_net_get_available_nw_list(M2MB_NET_HANDLE h)
m2mb_net_get_available_nw_list gets a list containing current availble networks.
M2MB_NET_CELL_EUTRAN_U
Definition: m2mb_net.h:330
M2MB_NET_GET_CURRENT_OPERATOR_INFO_RESP_T
Definition: m2mb_net.h:354
M2MB_NET_REG_STATUS_T
Definition: m2mb_net.h:188
M2MB_NET_GET_SIGNAL_INFO_RESP_T
Definition: m2mb_net.h:218
m2mb_net_init
M2MB_RESULT_E m2mb_net_init(M2MB_NET_HANDLE *h, m2mb_net_ind_callback callback, void *userdata)
m2mb_net_init initializes NET service for current client.
M2MB_NET_CELL_EUTRAN_SUBSET1_T
Definition: m2mb_net.h:319
M2MB_NET_SIGNAL_INFO_EUTRAN_T
Definition: m2mb_net.h:211
M2MB_NET_CELL_UTRAN_U
Definition: m2mb_net.h:298
M2MB_NET_GENERIC_RESP_T
Definition: m2mb_net.h:182
M2MB_NET_SELECTED_WIRELESS_NETWORK_RESP_T
Definition: m2mb_net.h:378
M2MB_NET_GET_EDRX_INFO_RESP_T
Definition: m2mb_net.h:198
M2MB_NET_MODE_PREFERENCE_STATUS_T
Definition: m2mb_net.h:386
m2mb_net_get_current_cell_list
M2MB_RESULT_E m2mb_net_get_current_cell_list(M2MB_NET_HANDLE h)
m2mb_net_get_current_cell_list gets a list containing current cell neighbors.
M2MB_NET_CELL_GERAN_SUBSET1_T
Definition: m2mb_net.h:253
M2M_T_NETWORK_CELL_NEIGHBOR_T
Definition: m2mb_net.h:234
M2MB_NET_GET_CURRENT_CELL_LIST_RESP_T
Definition: m2mb_net.h:347
m2mb_net_enable_ind
M2MB_RESULT_E m2mb_net_enable_ind(M2MB_NET_HANDLE h, M2MB_NET_IND_E ind, UINT8 enable)
m2mb_net_enable_ind enables the indications of network state change events.
M2MB_NET_CELL_GERAN_FULL_T
Definition: m2mb_net.h:241
M2MB_NET_CELL_NEIGHBOR_T
Definition: m2mb_net.h:336
M2MB_NET_CELL_UTRAN_SUBSET1_T
Definition: m2mb_net.h:289
M2MB_NET_CELL_UTRAN_FULL_T
Definition: m2mb_net.h:277
M2MB_NET_DESCRIPTION_T
Definition: m2mb_net.h:362
M2MB_NET_CELL_EUTRAN_FULL_T
Definition: m2mb_net.h:304
m2mb_net_get_mode_preference
M2MB_RESULT_E m2mb_net_get_mode_preference(M2MB_NET_HANDLE h)
m2mb_net_get_mode_preference gets information about the mode preference for the network to attach.
m2mb_net_get_wireless_network_selection
M2MB_RESULT_E m2mb_net_get_wireless_network_selection(M2MB_NET_HANDLE h, M2MB_NET_SELECTED_WIRELESS_NETWORK_RESP_T *resp)
m2mb_net_get_wireless_network_selection queries the modem for the wireless network selection and for ...
M2MB_NET_GET_AVAILABLE_NW_LIST_RESP_T
Definition: m2mb_net.h:371
m2mb_net_get_reg_status_info
M2MB_RESULT_E m2mb_net_get_reg_status_info(M2MB_NET_HANDLE h)
m2mb_net_get_reg_status_info gets information about regitration status.
M2MB_NET_GET_BER_RESP_T
Definition: m2mb_net.h:227
M2MB_NET_ERR_CAUSE_T
Definition: m2mb_net.h:177
M2MB_NET_SIGNAL_INFO_UTRAN_T
Definition: m2mb_net.h:206
m2mb_net_get_ber
M2MB_RESULT_E m2mb_net_get_ber(M2MB_NET_HANDLE h)
m2mb_net_get_ber gets information about bit error rate.
m2mb_net_get_edrx_info
M2MB_RESULT_E m2mb_net_get_edrx_info(M2MB_NET_HANDLE h, M2MB_NET_ACC_TECH_TYPE_E acc_tech)
m2mb_net_get_edrx_info gets information about edrx.
m2mb_net_conf
M2MB_RESULT_E m2mb_net_conf(M2MB_NET_HANDLE h, UINT8 argc,...)
m2mb_net_conf sets/gets some NET parameters.
M2MB_NET_CELL_GERAN_U
Definition: m2mb_net.h:270
m2mb_net_deinit
M2MB_RESULT_E m2mb_net_deinit(M2MB_NET_HANDLE h)
m2mb_net_deinit deinitializes NET service for current client.