m2mb API docs  25.21.000
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_GET_MODE_PREFERENCE_RESP, /* Network Mode Preference Get response */
84  M2MB_NET_SET_MODE_PREFERENCE_RESP, /* Network Mode Preference Set response */
85  M2MB_NET_MODE_PREFERENCE_IND /* Network Mode Preference indication */
86 } M2MB_NET_IND_E;
87 
88 typedef enum
89 {
90  M2MB_NET_DUMMY,
91  M2MB_NET_SET_ENABLE_IND_ASYNC,
92  M2MB_NET_GET_ENABLE_IND_ASYNC
93 } M2MB_NET_ACTION_E;
94 
95 typedef enum
96 {
97  M2MB_NET_RESP_SET_NONE,
98  M2MB_NET_RESP_SET_FULL,
99  M2MB_NET_RESP_SET_SUBSET1,
100  M2MB_NET_RESP_SET_SUBSET2,
101  M2MB_NET_RESP_SET_SUBSET3,
102  M2MB_NET_RESP_SET_SUBSET4,
103  M2MB_NET_RESP_SET_SUBSET5
104 } M2MB_NET_RESP_SET_E;
105 
106 typedef enum
107 {
108  M2MB_NET_LTE_HANDOVER_SERVING,
109  M2MB_NET_LTE_HANDOVER_INTRA_FREQ,
110  M2MB_NET_LTE_HANDOVER_INTER_FREQ,
111 } M2MB_NET_LTE_HANDOVER_E;
112 
113 typedef enum
114 {
115  M2MB_NET_SRV_DOMAIN_NO_SRV,
116  M2MB_NET_SRV_DOMAIN_CS_ONLY,
117  M2MB_NET_SRV_DOMAIN_PS_ONLY,
118  M2MB_NET_SRV_DOMAIN_CS_PS,
119  M2MB_NET_SRV_DOMAIN_CAMPED
120 } M2MB_NET_SRV_DOMAIN_E;
121 
122 typedef enum
123 {
124  M2MB_NET_CELL_TYPE_SERVING,
125  M2MB_NET_CELL_TYPE_NEIGHBOR
126 } M2MB_NET_CELL_TYPE_E;
127 
128 typedef enum
129 {
130  M2MB_NET_ACC_TECH_TYPE_NO_SRV,
131  M2MB_NET_ACC_TECH_TYPE_CDMA_1X,
132  M2MB_NET_ACC_TECH_TYPE_CDMA_1XEVDO,
133  M2MB_NET_ACC_TECH_TYPE_AMPS,
134  M2MB_NET_ACC_TECH_TYPE_GSM,
135  M2MB_NET_ACC_TECH_TYPE_UMTS,
136  M2MB_NET_ACC_TECH_TYPE_WLAN,
137  M2MB_NET_ACC_TECH_TYPE_GPS,
138  M2MB_NET_ACC_TECH_TYPE_LTE,
139  M2MB_NET_ACC_TECH_TYPE_TDSCDMA,
140  M2MB_NET_ACC_TECH_TYPE_LTE_M1,
141  M2MB_NET_ACC_TECH_TYPE_LTE_NB1,
142  M2MB_NET_ACC_TECH_TYPE_MAX
143 } M2MB_NET_ACC_TECH_TYPE_E;
144 
145 typedef enum
146 {
147  M2MB_NET_ERR_OK,
148  M2MB_NET_ERR_UNKNOWN
149 } M2MB_NET_ERR_CAUSE_E;
150 
151 typedef enum
152 {
153  M2MB_NET_ENABLE_IND_ASYNC_DISABLED,
154  M2MB_NET_ENABLE_IND_ASYNC_ENABLED
155 } M2MB_NET_ENABLE_IND_ASYNC_E;
156 
157 typedef enum
158 {
159  M2MB_NET_SELECTED_WIRELESS_GERAN = 12,
160  M2MB_NET_SELECTED_WIRELESS_UTRAN = 22,
161  M2MB_NET_SELECTED_WIRELESS_GERAN_UTRAN_EUTRAN = 25,
162  M2MB_NET_SELECTED_WIRELESS_EUTRAN = 28,
163  M2MB_NET_SELECTED_WIRELESS_GERAN_UTRAN = 29,
164  M2MB_NET_SELECTED_WIRELESS_GERAN_EUTRAN = 30,
165  M2MB_NET_SELECTED_WIRELESS_UTRAN_EUTRAN = 31,
166 } M2MB_NET_SELECTED_WIRELESS_NETWORK_E;
167 
168 typedef enum
169 {
170  M2MB_NET_LTE_CIOT_PREFERENCE_CAT_M1 = 0, /* CAT-M exclusive */
171  M2MB_NET_LTE_CIOT_PREFERENCE_NB_IOT = 1, /* NB-IoT exclusive */
172  M2MB_NET_LTE_CIOT_PREFERENCE_CAT_M1_NB_IOT = 2, /* Both CAT-M and NB-IoT, CAT-M preferred */
173  M2MB_NET_LTE_CIOT_PREFERENCE_NB_IOT_CAT_M1 = 3 /* Both CAT-M and NB-IoT, NB-IoT preferred */
174 } M2MB_NET_LTE_CIOT_PREFERENCE_E;
175 
176 typedef struct
177 {
178  M2MB_NET_ERR_CAUSE_E err;
180 
181 typedef struct
182 {
183  M2MB_NET_ERR_CAUSE_E err;
184  M2MB_RESULT_E response;
186 
187 typedef struct
188 {
189  M2MB_NET_ERR_CAUSE_E err;
190  M2MB_NET_STAT_E stat; //Network status
191  M2MB_NET_RAT_E rat; //Radio Access Technology
192  M2MB_NET_SRV_DOMAIN_E srvDomain;
193  UINT16 areaCode; //LAC or TAC, depending on the current RAT
194  UINT32 cellID;
196 
197 typedef struct
198 {
199  M2MB_NET_ERR_CAUSE_E err;
200  M2MB_NET_ACC_TECH_TYPE_E acc_tech;
201  UINT8 edrx;
202  UINT8 enabled;
204 
205 typedef struct
206 {
207  INT16 ecio;
209 
210 typedef struct
211 {
212  INT8 rsrq; // Reference Signal Received Quality
213  INT16 rsrp; // Reference Signal Received Power
214  INT16 snr;
216 
217 typedef struct
218 {
219  M2MB_NET_ERR_CAUSE_E err;
220  M2MB_NET_RAT_E rat;
221  INT8 rssi; //Received signal strength indication
222  UINT16 sigInfo_size;
223  void *sigInfo;
225 
226 typedef struct
227 {
228  M2MB_NET_ERR_CAUSE_E err;
229  M2MB_NET_RAT_E rat;
230  INT16 ber; //Bit error rate
232 
233 typedef struct
234 {
235  INT32 nARFCN;
236  INT32 nBSIC;
237  INT32 nSignalStrength;
239 
240 typedef struct
241 {
242  UINT32 cell_id;
243  UINT16 mcc;
244  UINT16 mnc;
245  UINT16 lac;
246  UINT16 arfcn;
247  UINT8 bsic;
248  UINT32 timing_advance;
249  UINT16 rx_lev;
251 
252 typedef struct
253 {
254  UINT32 cell_id;
255  UINT16 lac;
256  UINT16 arfcn;
257  UINT8 bsic;
258  UINT16 rx_lev;
260 
261 typedef struct
262 {
263  UINT16 arfcn;
264  UINT8 bsic;
265  UINT16 rx_lev;
266  INT16 srxlev; //Cell selection Rx level
268 
269 typedef union
270 {
275 
276 typedef struct
277 {
278  UINT32 cell_id;
279  UINT16 mcc;
280  UINT16 mnc;
281  UINT16 lac;
282  UINT16 uarfcn;
283  UINT16 psc;
284  INT16 rscp;
285  INT16 ecio;
287 
288 typedef struct
289 {
290  UINT16 uarfcn;
291  UINT16 psc;
292  INT16 rscp;
293  INT16 ecio;
294  INT16 srxlev; //Cell selection Rx level
296 
297 typedef union
298 {
302 
303 typedef struct
304 {
305  M2MB_NET_LTE_HANDOVER_E lteType;
306  UINT32 cell_id;
307  UINT16 mcc;
308  UINT16 mnc;
309  UINT16 tac;
310  UINT16 earfcn;
311  UINT16 pci;
312  INT16 rsrq;
313  INT16 rsrp;
314  INT16 rx_lev;
315  INT16 srxlev; //Cell selection Rx level
317 
318 typedef struct
319 {
320  M2MB_NET_LTE_HANDOVER_E lteType;
321  UINT16 earfcn;
322  UINT16 pci;
323  INT16 rsrq;
324  INT16 rsrp;
325  INT16 rx_lev;
326  INT16 srxlev; //Cell selection Rx level
328 
329 typedef union
330 {
334 
336 {
337  M2MB_NET_CELL_TYPE_E cellType;
338  M2MB_NET_RAT_E cellRat;
339  M2MB_NET_RESP_SET_E respSet;
340  UINT16 cell_size;
341  void *cell;
342  struct M2MB_NET_CELL_NEIGHBOR_T *next;
343  BOOLEAN lte_ue_in_idle; //Radio Status
345 
346 typedef struct
347 {
348  M2MB_NET_ERR_CAUSE_E err;
349  UINT16 neighbors_size;
350  M2MB_NET_CELL_NEIGHBOR_T *neighbors;
352 
353 typedef struct
354 {
355  M2MB_NET_ERR_CAUSE_E err;
356  UINT16 mcc;
357  UINT16 mnc;
358  M2MB_NET_RAT_E rat; //Radio Access Technology
360 
362 {
363  UINT16 mcc;
364  UINT16 mnc;
365  M2MB_NET_AVAILABILITY_E networkAv;
366  M2MB_NET_RAT_E rat;
367  struct M2MB_NET_DESCRIPTION_T *next;
369 
370 typedef struct
371 {
372  M2MB_NET_ERR_CAUSE_E err;
373  UINT16 availableNetworks_size;
374  M2MB_NET_DESCRIPTION_T *availableNetworks;
376 
377 typedef struct
378 {
379  M2MB_NET_SELECTED_WIRELESS_NETWORK_E selectedWirelessNetwork;
380  M2MB_NET_LTE_CIOT_PREFERENCE_E lte_ciot_preference;
382 
384 
385 typedef struct
386 {
387  M2MB_NET_ERR_CAUSE_E err; /* error status */
388  M2MB_NET_MODE_PREFERENCE_T mode_preference; /* mode preference */
390 
391 typedef void ( *m2mb_net_ind_callback )( M2MB_NET_HANDLE h, M2MB_NET_IND_E net_event, UINT16 resp_size, void *resp_struct, void *userdata );
392 
393 /* Global functions =============================================================================*/
394 
395 /*-----------------------------------------------------------------------------------------------*/
435 /*-----------------------------------------------------------------------------------------------*/
436 M2MB_RESULT_E m2mb_net_init( M2MB_NET_HANDLE *h, m2mb_net_ind_callback callback, void *userdata );
437 
438 /*-----------------------------------------------------------------------------------------------*/
470 /*-----------------------------------------------------------------------------------------------*/
471 M2MB_RESULT_E m2mb_net_deinit( M2MB_NET_HANDLE h );
472 
473 /*-----------------------------------------------------------------------------------------------*/
523 /*-----------------------------------------------------------------------------------------------*/
524 M2MB_RESULT_E m2mb_net_conf( M2MB_NET_HANDLE h, UINT8 argc, ... );
525 
526 /*-----------------------------------------------------------------------------------------------*/
585 /*-----------------------------------------------------------------------------------------------*/
586 M2MB_RESULT_E m2mb_net_enable_ind( M2MB_NET_HANDLE h, M2MB_NET_IND_E ind, UINT8 enable );
587 
588 /*-----------------------------------------------------------------------------------------------*/
650 M2MB_RESULT_E m2mb_net_get_signal_info( M2MB_NET_HANDLE h );
651 
652 /*-----------------------------------------------------------------------------------------------*/
704 M2MB_RESULT_E m2mb_net_get_ber( M2MB_NET_HANDLE h );
705 
706 /*-----------------------------------------------------------------------------------------------*/
729 
730 /*-----------------------------------------------------------------------------------------------*/
802 M2MB_RESULT_E m2mb_net_get_mode_preference( M2MB_NET_HANDLE h );
803 
804 /*-----------------------------------------------------------------------------------------------*/
856 M2MB_RESULT_E m2mb_net_get_current_operator_info( M2MB_NET_HANDLE h );
857 
858 /*-----------------------------------------------------------------------------------------------*/
975 M2MB_RESULT_E m2mb_net_get_current_cell_list( M2MB_NET_HANDLE h );
976 
977 /*-----------------------------------------------------------------------------------------------*/
1036 M2MB_RESULT_E m2mb_net_get_available_nw_list( M2MB_NET_HANDLE h );
1037 
1038 /*-----------------------------------------------------------------------------------------------*/
1090 M2MB_RESULT_E m2mb_net_get_reg_status_info( M2MB_NET_HANDLE h );
1091 
1092 /*-----------------------------------------------------------------------------------------------*/
1146 M2MB_RESULT_E m2mb_net_get_edrx_info( M2MB_NET_HANDLE h, M2MB_NET_ACC_TECH_TYPE_E acc_tech );
1147 
1148 /*-----------------------------------------------------------------------------------------------*/
1208 M2MB_RESULT_E m2mb_net_set_edrx_info( M2MB_NET_HANDLE h, M2MB_NET_ACC_TECH_TYPE_E acc_tech, UINT8 edrx, UINT8 enabled );
1209 
1210 #endif
M2MB_NET_CELL_GERAN_SUBSET2_T
Definition: m2mb_net.h:261
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:329
M2MB_NET_GET_CURRENT_OPERATOR_INFO_RESP_T
Definition: m2mb_net.h:353
M2MB_NET_REG_STATUS_T
Definition: m2mb_net.h:187
M2MB_NET_GET_SIGNAL_INFO_RESP_T
Definition: m2mb_net.h:217
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:318
M2MB_NET_SIGNAL_INFO_EUTRAN_T
Definition: m2mb_net.h:210
M2MB_NET_CELL_UTRAN_U
Definition: m2mb_net.h:297
M2MB_NET_GENERIC_RESP_T
Definition: m2mb_net.h:181
M2MB_NET_SELECTED_WIRELESS_NETWORK_RESP_T
Definition: m2mb_net.h:377
M2MB_NET_GET_EDRX_INFO_RESP_T
Definition: m2mb_net.h:197
M2MB_NET_MODE_PREFERENCE_STATUS_T
Definition: m2mb_net.h:385
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:252
M2M_T_NETWORK_CELL_NEIGHBOR_T
Definition: m2mb_net.h:233
M2MB_NET_GET_CURRENT_CELL_LIST_RESP_T
Definition: m2mb_net.h:346
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:240
M2MB_NET_CELL_NEIGHBOR_T
Definition: m2mb_net.h:335
M2MB_NET_CELL_UTRAN_SUBSET1_T
Definition: m2mb_net.h:288
M2MB_NET_CELL_UTRAN_FULL_T
Definition: m2mb_net.h:276
M2MB_NET_DESCRIPTION_T
Definition: m2mb_net.h:361
M2MB_NET_CELL_EUTRAN_FULL_T
Definition: m2mb_net.h:303
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:370
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:226
M2MB_NET_ERR_CAUSE_T
Definition: m2mb_net.h:176
M2MB_NET_SIGNAL_INFO_UTRAN_T
Definition: m2mb_net.h:205
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:269
m2mb_net_deinit
M2MB_RESULT_E m2mb_net_deinit(M2MB_NET_HANDLE h)
m2mb_net_deinit deinitializes NET service for current client.