m2mb API docs  25.20.008
m2mb API sets documentation
m2mb_net.h
Go to the documentation of this file.
1 /*===============================================================================================*/
2 /* >>> Copyright (C) Telit Communications S.p.A. Italy All Rights Reserved. <<< */
20 #ifndef M2M_M2MB_NET_API_H
21 #define M2M_M2MB_NET_API_H
22 
23 
24 /* Global declarations ==========================================================================*/
25 
26 /* Global typedefs ==============================================================================*/
27 
28 typedef HANDLE M2MB_NET_HANDLE;
29 
30 typedef enum
31 {
32  M2MB_NET_SUCCESS,
33  M2MB_NET_GENERIC_FAILURE
34 } M2MB_NET_ERRNO_E;
35 
36 // see ETSI TS 27.007 V14 - commands +CREG, +CGREG and +CEREG
37 typedef enum
38 {
39  M2MB_NET_RAT_UNKNOWN = -1,
40  M2MB_NET_RAT_GSM,
41  M2MB_NET_RAT_GSM_Compact,
42  M2MB_NET_RAT_UTRAN,
43  M2MB_NET_RAT_GSM_wEGPRS,
44  M2MB_NET_RAT_UTRAN_wHSDPA,
45  M2MB_NET_RAT_UTRAN_wHSUPA,
46  M2MB_NET_RAT_UTRAN_wHSDPAandHSUPA,
47  M2MB_NET_RAT_EUTRAN,
48  M2MB_NET_RAT_EC_GSM_IoT,
49  M2MB_NET_RAT_EUTRAN_NB_S1
50 } M2MB_NET_RAT_E;
51 
52 typedef enum
53 {
54  M2MB_NET_STAT_NOT_REGISTERED,
55  M2MB_NET_STAT_REGISTERED_HOME,
56  M2MB_NET_STAT_SEARCHING,
57  M2MB_NET_STAT_REGISTRATION_DENIED,
58  M2MB_NET_STAT_UNKNOWN,
59  M2MB_NET_STAT_REGISTERED_ROAMING
60 } M2MB_NET_STAT_E;
61 
62 typedef enum
63 {
64  M2MB_NET_AVAILABILITY_UNKNOWN,
65  M2MB_NET_AVAILABILITY_AVAILABLE,
66  M2MB_NET_AVAILABILITY_CURRENT,
67  M2MB_NET_AVAILABILITY_FORBIDDEN
68 } M2MB_NET_AVAILABILITY_E;
69 
70 typedef enum
71 {
72  M2MB_NET_NULL_RESP,
73  M2MB_NET_GET_SIGNAL_INFO_RESP,
74  M2MB_NET_GET_BER_RESP,
75  M2MB_NET_GET_CURRENT_OPERATOR_INFO_RESP,
76  M2MB_NET_GET_CURRENT_CELL_LIST_RESP,
77  M2MB_NET_GET_AVAILABLE_NW_LIST_RESP,
78  M2MB_NET_GET_REG_STATUS_INFO_RESP,
79  M2MB_NET_REG_STATUS_IND,//Network registration state change indication
80  M2MB_NET_GET_EDRX_INFO_RESP,
81  M2MB_NET_SET_EDRX_INFO_RESP,
82  M2MB_NET_ENABLE_IND_RESP
83 } M2MB_NET_IND_E;
84 
85 typedef enum
86 {
87  M2MB_NET_DUMMY,
88  M2MB_NET_SET_ENABLE_IND_ASYNC,
89  M2MB_NET_GET_ENABLE_IND_ASYNC
90 } M2MB_NET_ACTION_E;
91 
92 typedef enum
93 {
94  M2MB_NET_RESP_SET_NONE,
95  M2MB_NET_RESP_SET_FULL,
96  M2MB_NET_RESP_SET_SUBSET1,
97  M2MB_NET_RESP_SET_SUBSET2,
98  M2MB_NET_RESP_SET_SUBSET3,
99  M2MB_NET_RESP_SET_SUBSET4,
100  M2MB_NET_RESP_SET_SUBSET5
101 } M2MB_NET_RESP_SET_E;
102 
103 typedef enum
104 {
105  M2MB_NET_LTE_HANDOVER_SERVING,
106  M2MB_NET_LTE_HANDOVER_INTRA_FREQ,
107  M2MB_NET_LTE_HANDOVER_INTER_FREQ,
108 } M2MB_NET_LTE_HANDOVER_E;
109 
110 typedef enum
111 {
112  M2MB_NET_SRV_DOMAIN_NO_SRV,
113  M2MB_NET_SRV_DOMAIN_CS_ONLY,
114  M2MB_NET_SRV_DOMAIN_PS_ONLY,
115  M2MB_NET_SRV_DOMAIN_CS_PS,
116  M2MB_NET_SRV_DOMAIN_CAMPED
117 } M2MB_NET_SRV_DOMAIN_E;
118 
119 typedef enum
120 {
121  M2MB_NET_CELL_TYPE_SERVING,
122  M2MB_NET_CELL_TYPE_NEIGHBOR
123 } M2MB_NET_CELL_TYPE_E;
124 
125 typedef enum
126 {
127  M2MB_NET_ACC_TECH_TYPE_NO_SRV,
128  M2MB_NET_ACC_TECH_TYPE_CDMA_1X,
129  M2MB_NET_ACC_TECH_TYPE_CDMA_1XEVDO,
130  M2MB_NET_ACC_TECH_TYPE_AMPS,
131  M2MB_NET_ACC_TECH_TYPE_GSM,
132  M2MB_NET_ACC_TECH_TYPE_UMTS,
133  M2MB_NET_ACC_TECH_TYPE_WLAN,
134  M2MB_NET_ACC_TECH_TYPE_GPS,
135  M2MB_NET_ACC_TECH_TYPE_LTE,
136  M2MB_NET_ACC_TECH_TYPE_TDSCDMA,
137  M2MB_NET_ACC_TECH_TYPE_LTE_M1,
138  M2MB_NET_ACC_TECH_TYPE_LTE_NB1,
139  M2MB_NET_ACC_TECH_TYPE_MAX
140 } M2MB_NET_ACC_TECH_TYPE_E;
141 
142 typedef enum
143 {
144  M2MB_NET_ERR_OK,
145  M2MB_NET_ERR_UNKNOWN
146 } M2MB_NET_ERR_CAUSE_E;
147 
148 typedef enum
149 {
150  M2MB_NET_ENABLE_IND_ASYNC_DISABLED,
151  M2MB_NET_ENABLE_IND_ASYNC_ENABLED
152 } M2MB_NET_ENABLE_IND_ASYNC_E;
153 
154 typedef enum
155 {
156  M2MB_NET_SELECTED_WIRELESS_GERAN = 12,
157  M2MB_NET_SELECTED_WIRELESS_UTRAN = 22,
158  M2MB_NET_SELECTED_WIRELESS_GERAN_UTRAN_EUTRAN = 25,
159  M2MB_NET_SELECTED_WIRELESS_EUTRAN = 28,
160  M2MB_NET_SELECTED_WIRELESS_GERAN_UTRAN = 29,
161  M2MB_NET_SELECTED_WIRELESS_GERAN_EUTRAN = 30,
162  M2MB_NET_SELECTED_WIRELESS_UTRAN_EUTRAN = 31,
163 #if defined(M2M_PFM_LINUX) && defined(M2M_PFM_SUPPORT_5G)
164  M2MB_NET_SELECTED_WIRELESS_NG_RAN = 36,
165  M2MB_NET_SELECTED_WIRELESS_NG_RAN_EUTRAN = 37,
166  M2MB_NET_SELECTED_WIRELESS_NG_RAN_EUTRAN_UTRAN = 38,
167  M2MB_NET_SELECTED_WIRELESS_NG_RAN_UTRAN = 40,
168 #endif
169 } M2MB_NET_SELECTED_WIRELESS_NETWORK_E;
170 
171 typedef enum
172 {
173  M2MB_NET_LTE_CIOT_PREFERENCE_CAT_M1 = 0,
174  M2MB_NET_LTE_CIOT_PREFERENCE_NB_IOT = 1,
175  M2MB_NET_LTE_CIOT_PREFERENCE_CAT_M1_NB_IOT = 2
176 } M2MB_NET_LTE_CIOT_PREFERENCE_E;
177 
178 typedef struct
179 {
180  M2MB_NET_ERR_CAUSE_E err;
182 
183 typedef struct
184 {
185  M2MB_NET_ERR_CAUSE_E err;
186  M2MB_RESULT_E response;
188 
189 typedef struct
190 {
191  M2MB_NET_ERR_CAUSE_E err;
192  M2MB_NET_STAT_E stat; //Network status
193  M2MB_NET_RAT_E rat; //Radio Access Technology
194  M2MB_NET_SRV_DOMAIN_E srvDomain;
195  UINT16 areaCode; //LAC or TAC, depending on the current RAT
196  UINT32 cellID;
198 
199 typedef struct
200 {
201  M2MB_NET_ERR_CAUSE_E err;
202  M2MB_NET_ACC_TECH_TYPE_E acc_tech;
203  UINT8 edrx;
204  UINT8 enabled;
206 
207 typedef struct
208 {
209  INT16 ecio;
211 
212 typedef struct
213 {
214  INT8 rsrq; // Reference Signal Received Quality
215  INT16 rsrp; // Reference Signal Received Power
216  INT16 snr;
218 
219 typedef struct
220 {
221  M2MB_NET_ERR_CAUSE_E err;
222  M2MB_NET_RAT_E rat;
223  INT8 rssi; //Received signal strength indication
224  UINT16 sigInfo_size;
225  void *sigInfo;
227 
228 typedef struct
229 {
230  M2MB_NET_ERR_CAUSE_E err;
231  M2MB_NET_RAT_E rat;
232  INT16 ber; //Bit error rate
234 
235 typedef struct
236 {
237  INT32 nARFCN;
238  INT32 nBSIC;
239  INT32 nSignalStrength;
241 
242 typedef struct
243 {
244  UINT32 cell_id;
245  UINT16 mcc;
246  UINT16 mnc;
247  UINT16 lac;
248  UINT16 arfcn;
249  UINT8 bsic;
250  UINT32 timing_advance;
251  UINT16 rx_lev;
253 
254 typedef struct
255 {
256  UINT32 cell_id;
257  UINT16 lac;
258  UINT16 arfcn;
259  UINT8 bsic;
260  UINT16 rx_lev;
262 
263 typedef struct
264 {
265  UINT16 arfcn;
266  UINT8 bsic;
267  UINT16 rx_lev;
268  INT16 srxlev; //Cell selection Rx level
270 
271 typedef union
272 {
277 
278 typedef struct
279 {
280  UINT32 cell_id;
281  UINT16 mcc;
282  UINT16 mnc;
283  UINT16 lac;
284  UINT16 uarfcn;
285  UINT16 psc;
286  INT16 rscp;
287  INT16 ecio;
289 
290 typedef struct
291 {
292  UINT16 uarfcn;
293  UINT16 psc;
294  INT16 rscp;
295  INT16 ecio;
296  INT16 srxlev; //Cell selection Rx level
298 
299 typedef union
300 {
304 
305 typedef struct
306 {
307  M2MB_NET_LTE_HANDOVER_E lteType;
308  UINT32 cell_id;
309  UINT16 mcc;
310  UINT16 mnc;
311  UINT16 tac;
312  UINT16 earfcn;
313  UINT16 pci;
314  INT16 rsrq;
315  INT16 rsrp;
316  INT16 rx_lev;
317  INT16 srxlev; //Cell selection Rx level
319 
320 typedef struct
321 {
322  M2MB_NET_LTE_HANDOVER_E lteType;
323  UINT16 earfcn;
324  UINT16 pci;
325  INT16 rsrq;
326  INT16 rsrp;
327  INT16 rx_lev;
328  INT16 srxlev; //Cell selection Rx level
330 
331 typedef union
332 {
336 
338 {
339  M2MB_NET_CELL_TYPE_E cellType;
340  M2MB_NET_RAT_E cellRat;
341  M2MB_NET_RESP_SET_E respSet;
342  UINT16 cell_size;
343  void *cell;
344  struct M2MB_NET_CELL_NEIGHBOR_T *next;
345  BOOLEAN lte_ue_in_idle; //Radio Status
347 
348 typedef struct
349 {
350  M2MB_NET_ERR_CAUSE_E err;
351  UINT16 neighbors_size;
352  M2MB_NET_CELL_NEIGHBOR_T *neighbors;
354 
355 typedef struct
356 {
357  M2MB_NET_ERR_CAUSE_E err;
358  UINT16 mcc;
359  UINT16 mnc;
360  M2MB_NET_RAT_E rat; //Radio Access Technology
362 
364 {
365  UINT16 mcc;
366  UINT16 mnc;
367  M2MB_NET_AVAILABILITY_E networkAv;
368  M2MB_NET_RAT_E rat;
369  struct M2MB_NET_DESCRIPTION_T *next;
371 
372 typedef struct
373 {
374  M2MB_NET_ERR_CAUSE_E err;
375  UINT16 availableNetworks_size;
376  M2MB_NET_DESCRIPTION_T *availableNetworks;
378 
379 typedef struct
380 {
381  M2MB_NET_SELECTED_WIRELESS_NETWORK_E selectedWirelessNetwork;
382  M2MB_NET_LTE_CIOT_PREFERENCE_E lte_ciot_preference;
384 
385 typedef void ( *m2mb_net_ind_callback )( M2MB_NET_HANDLE h, M2MB_NET_IND_E net_event, UINT16 resp_size, void *resp_struct, void *userdata );
386 
387 /* Global functions =============================================================================*/
388 
389 /*-----------------------------------------------------------------------------------------------*/
429 /*-----------------------------------------------------------------------------------------------*/
430 M2MB_RESULT_E m2mb_net_init( M2MB_NET_HANDLE *h, m2mb_net_ind_callback callback, void *userdata );
431 
432 /*-----------------------------------------------------------------------------------------------*/
464 /*-----------------------------------------------------------------------------------------------*/
465 M2MB_RESULT_E m2mb_net_deinit( M2MB_NET_HANDLE h );
466 
467 /*-----------------------------------------------------------------------------------------------*/
517 /*-----------------------------------------------------------------------------------------------*/
518 M2MB_RESULT_E m2mb_net_conf( M2MB_NET_HANDLE h, UINT8 argc, ... );
519 
520 /*-----------------------------------------------------------------------------------------------*/
579 /*-----------------------------------------------------------------------------------------------*/
580 M2MB_RESULT_E m2mb_net_enable_ind( M2MB_NET_HANDLE h, M2MB_NET_IND_E ind, UINT8 enable );
581 
582 /*-----------------------------------------------------------------------------------------------*/
644 M2MB_RESULT_E m2mb_net_get_signal_info( M2MB_NET_HANDLE h );
645 
646 /*-----------------------------------------------------------------------------------------------*/
698 M2MB_RESULT_E m2mb_net_get_ber( M2MB_NET_HANDLE h );
699 
700 /*-----------------------------------------------------------------------------------------------*/
723 
724 /*-----------------------------------------------------------------------------------------------*/
776 M2MB_RESULT_E m2mb_net_get_current_operator_info( M2MB_NET_HANDLE h );
777 
778 /*-----------------------------------------------------------------------------------------------*/
895 M2MB_RESULT_E m2mb_net_get_current_cell_list( M2MB_NET_HANDLE h );
896 
897 /*-----------------------------------------------------------------------------------------------*/
956 M2MB_RESULT_E m2mb_net_get_available_nw_list( M2MB_NET_HANDLE h );
957 
958 /*-----------------------------------------------------------------------------------------------*/
1010 M2MB_RESULT_E m2mb_net_get_reg_status_info( M2MB_NET_HANDLE h );
1011 
1012 /*-----------------------------------------------------------------------------------------------*/
1066 M2MB_RESULT_E m2mb_net_get_edrx_info( M2MB_NET_HANDLE h, M2MB_NET_ACC_TECH_TYPE_E acc_tech );
1067 
1068 /*-----------------------------------------------------------------------------------------------*/
1128 M2MB_RESULT_E m2mb_net_set_edrx_info( M2MB_NET_HANDLE h, M2MB_NET_ACC_TECH_TYPE_E acc_tech, UINT8 edrx, UINT8 enabled );
1129 
1130 #endif
M2MB_NET_CELL_GERAN_SUBSET2_T
Definition: m2mb_net.h:263
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:331
M2MB_NET_GET_CURRENT_OPERATOR_INFO_RESP_T
Definition: m2mb_net.h:355
M2MB_NET_REG_STATUS_T
Definition: m2mb_net.h:189
M2MB_NET_GET_SIGNAL_INFO_RESP_T
Definition: m2mb_net.h:219
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:320
M2MB_NET_SIGNAL_INFO_EUTRAN_T
Definition: m2mb_net.h:212
M2MB_NET_CELL_UTRAN_U
Definition: m2mb_net.h:299
M2MB_NET_GENERIC_RESP_T
Definition: m2mb_net.h:183
M2MB_NET_SELECTED_WIRELESS_NETWORK_RESP_T
Definition: m2mb_net.h:379
M2MB_NET_GET_EDRX_INFO_RESP_T
Definition: m2mb_net.h:199
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:254
M2M_T_NETWORK_CELL_NEIGHBOR_T
Definition: m2mb_net.h:235
M2MB_NET_GET_CURRENT_CELL_LIST_RESP_T
Definition: m2mb_net.h:348
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:242
M2MB_NET_CELL_NEIGHBOR_T
Definition: m2mb_net.h:337
M2MB_NET_CELL_UTRAN_SUBSET1_T
Definition: m2mb_net.h:290
M2MB_NET_CELL_UTRAN_FULL_T
Definition: m2mb_net.h:278
M2MB_NET_DESCRIPTION_T
Definition: m2mb_net.h:363
M2MB_NET_CELL_EUTRAN_FULL_T
Definition: m2mb_net.h:305
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:372
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:228
M2MB_NET_ERR_CAUSE_T
Definition: m2mb_net.h:178
M2MB_NET_SIGNAL_INFO_UTRAN_T
Definition: m2mb_net.h:207
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:271
m2mb_net_deinit
M2MB_RESULT_E m2mb_net_deinit(M2MB_NET_HANDLE h)
m2mb_net_deinit deinitializes NET service for current client.