m2mb API docs  37.00.003
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 #define M2MB_NET_BSR_IDLE_TMR_MIN 100 /* min BSR timer value in miliseconds */
27 #define M2MB_NET_BSR_IDLE_TMR_MAX 60000 /* max BSR timer value in miliseconds */
28 
29 /* Global typedefs ==============================================================================*/
30 
31 typedef HANDLE M2MB_NET_HANDLE;
32 
33 typedef enum
34 {
35  M2MB_NET_SUCCESS,
36  M2MB_NET_GENERIC_FAILURE
37 } M2MB_NET_ERRNO_E;
38 
39 /* see ETSI TS 27.007 V14 - commands +CREG, +CGREG and +CEREG */
40 typedef enum
41 {
42  M2MB_NET_RAT_UNKNOWN = -1,
43  M2MB_NET_RAT_GSM,
44  M2MB_NET_RAT_GSM_Compact,
45  M2MB_NET_RAT_UTRAN,
46  M2MB_NET_RAT_GSM_wEGPRS,
47  M2MB_NET_RAT_UTRAN_wHSDPA,
48  M2MB_NET_RAT_UTRAN_wHSUPA,
49  M2MB_NET_RAT_UTRAN_wHSDPAandHSUPA,
50  M2MB_NET_RAT_EUTRAN,
51  M2MB_NET_RAT_EC_GSM_IoT,
52  M2MB_NET_RAT_EUTRAN_NB_S1
53 } M2MB_NET_RAT_E;
54 
55 typedef enum
56 {
57  M2MB_NET_STAT_NOT_REGISTERED,
58  M2MB_NET_STAT_REGISTERED_HOME,
59  M2MB_NET_STAT_SEARCHING,
60  M2MB_NET_STAT_REGISTRATION_DENIED,
61  M2MB_NET_STAT_UNKNOWN,
62  M2MB_NET_STAT_REGISTERED_ROAMING
63 } M2MB_NET_STAT_E;
64 
65 typedef enum
66 {
67  M2MB_NET_AVAILABILITY_UNKNOWN,
68  M2MB_NET_AVAILABILITY_AVAILABLE,
69  M2MB_NET_AVAILABILITY_CURRENT,
70  M2MB_NET_AVAILABILITY_FORBIDDEN
71 } M2MB_NET_AVAILABILITY_E;
72 
73 typedef enum
74 {
75  M2MB_NET_NULL_RESP,
76  M2MB_NET_GET_SIGNAL_INFO_RESP,
77  M2MB_NET_GET_BER_RESP,
78  M2MB_NET_GET_CURRENT_OPERATOR_INFO_RESP,
79  M2MB_NET_GET_CURRENT_CELL_LIST_RESP,
80  M2MB_NET_GET_AVAILABLE_NW_LIST_RESP,
81  M2MB_NET_GET_REG_STATUS_INFO_RESP,
82  M2MB_NET_REG_STATUS_IND, /* Network registration state change indication */
83  M2MB_NET_GET_EDRX_INFO_RESP,
84  M2MB_NET_SET_EDRX_INFO_RESP,
85  M2MB_NET_ENABLE_IND_RESP,
86  M2MB_NET_GET_MODE_PREFERENCE_RESP, /* Network Mode Preference Get response */
87  M2MB_NET_SET_MODE_PREFERENCE_RESP, /* Network Mode Preference Set response */
88  M2MB_NET_MODE_PREFERENCE_IND /* Network Mode Preference indication */
89 } M2MB_NET_IND_E;
90 
91 typedef enum
92 {
93  M2MB_NET_DUMMY,
94  M2MB_NET_SET_ENABLE_IND_ASYNC,
95  M2MB_NET_GET_ENABLE_IND_ASYNC
96 } M2MB_NET_ACTION_E;
97 
98 typedef enum
99 {
100  M2MB_NET_RESP_SET_NONE,
101  M2MB_NET_RESP_SET_FULL,
102  M2MB_NET_RESP_SET_SUBSET1,
103  M2MB_NET_RESP_SET_SUBSET2,
104  M2MB_NET_RESP_SET_SUBSET3,
105  M2MB_NET_RESP_SET_SUBSET4,
106  M2MB_NET_RESP_SET_SUBSET5
107 } M2MB_NET_RESP_SET_E;
108 
109 typedef enum
110 {
111  M2MB_NET_LTE_HANDOVER_SERVING,
112  M2MB_NET_LTE_HANDOVER_INTRA_FREQ,
113  M2MB_NET_LTE_HANDOVER_INTER_FREQ,
114 } M2MB_NET_LTE_HANDOVER_E;
115 
116 typedef enum
117 {
118  M2MB_NET_SRV_DOMAIN_NO_SRV,
119  M2MB_NET_SRV_DOMAIN_CS_ONLY,
120  M2MB_NET_SRV_DOMAIN_PS_ONLY,
121  M2MB_NET_SRV_DOMAIN_CS_PS,
122  M2MB_NET_SRV_DOMAIN_CAMPED
123 } M2MB_NET_SRV_DOMAIN_E;
124 
125 typedef enum
126 {
127  M2MB_NET_CELL_TYPE_SERVING,
128  M2MB_NET_CELL_TYPE_NEIGHBOR
129 } M2MB_NET_CELL_TYPE_E;
130 
131 typedef enum
132 {
133  M2MB_NET_ACC_TECH_TYPE_NO_SRV,
134  M2MB_NET_ACC_TECH_TYPE_CDMA_1X,
135  M2MB_NET_ACC_TECH_TYPE_CDMA_1XEVDO,
136  M2MB_NET_ACC_TECH_TYPE_AMPS,
137  M2MB_NET_ACC_TECH_TYPE_GSM,
138  M2MB_NET_ACC_TECH_TYPE_UMTS,
139  M2MB_NET_ACC_TECH_TYPE_WLAN,
140  M2MB_NET_ACC_TECH_TYPE_GPS,
141  M2MB_NET_ACC_TECH_TYPE_LTE,
142  M2MB_NET_ACC_TECH_TYPE_TDSCDMA,
143  M2MB_NET_ACC_TECH_TYPE_LTE_M1,
144  M2MB_NET_ACC_TECH_TYPE_LTE_NB1,
145  M2MB_NET_ACC_TECH_TYPE_MAX
146 } M2MB_NET_ACC_TECH_TYPE_E;
147 
148 typedef enum
149 {
150  M2MB_NET_ERR_OK,
151  M2MB_NET_ERR_UNKNOWN
152 } M2MB_NET_ERR_CAUSE_E;
153 
154 typedef enum
155 {
156  M2MB_NET_ENABLE_IND_ASYNC_DISABLED,
157  M2MB_NET_ENABLE_IND_ASYNC_ENABLED
158 } M2MB_NET_ENABLE_IND_ASYNC_E;
159 
160 typedef enum
161 {
162  M2MB_NET_SELECTED_WIRELESS_GERAN = 12,
163  M2MB_NET_SELECTED_WIRELESS_UTRAN = 22,
164  M2MB_NET_SELECTED_WIRELESS_GERAN_UTRAN_EUTRAN = 25,
165  M2MB_NET_SELECTED_WIRELESS_EUTRAN = 28,
166  M2MB_NET_SELECTED_WIRELESS_GERAN_UTRAN = 29,
167  M2MB_NET_SELECTED_WIRELESS_GERAN_EUTRAN = 30,
168  M2MB_NET_SELECTED_WIRELESS_UTRAN_EUTRAN = 31,
169 } M2MB_NET_SELECTED_WIRELESS_NETWORK_E;
170 
171 typedef enum
172 {
173  M2MB_NET_LTE_CIOT_PREFERENCE_CAT_M1 = 0, /* CAT-M exclusive */
174  M2MB_NET_LTE_CIOT_PREFERENCE_NB_IOT = 1, /* NB-IoT exclusive */
175  M2MB_NET_LTE_CIOT_PREFERENCE_CAT_M1_NB_IOT = 2, /* Both CAT-M and NB-IoT, CAT-M preferred */
176  M2MB_NET_LTE_CIOT_PREFERENCE_NB_IOT_CAT_M1 = 3 /* Both CAT-M and NB-IoT, NB-IoT preferred */
177 } M2MB_NET_LTE_CIOT_PREFERENCE_E;
178 
179 typedef enum M2MB_NET_BSR_CFG_TAG
180 {
181  M2MB_NET_BSR_SET_IDLE_TMR = 0,
182  M2MB_NET_BSR_GET_IDLE_TMR = 1
183 } M2MB_NET_BSR_CFG_E;
184 
185 typedef struct
186 {
187  M2MB_NET_ERR_CAUSE_E err;
189 
190 typedef struct
191 {
192  M2MB_NET_ERR_CAUSE_E err;
193  M2MB_RESULT_E response;
195 
196 typedef struct
197 {
198  M2MB_NET_ERR_CAUSE_E err;
199  M2MB_NET_STAT_E stat; //Network status
200  M2MB_NET_RAT_E rat; //Radio Access Technology
201  M2MB_NET_SRV_DOMAIN_E srvDomain;
202  UINT16 areaCode; //LAC or TAC, depending on the current RAT
203  UINT32 cellID;
205 
206 typedef struct
207 {
208  M2MB_NET_ERR_CAUSE_E err;
209  M2MB_NET_ACC_TECH_TYPE_E acc_tech;
210  UINT8 edrx;
211  UINT8 enabled;
213 
214 typedef struct
215 {
216  INT16 ecio;
218 
219 typedef struct
220 {
221  INT8 rsrq; // Reference Signal Received Quality
222  INT16 rsrp; // Reference Signal Received Power
223  INT16 snr;
225 
226 typedef struct
227 {
228  M2MB_NET_ERR_CAUSE_E err;
229  M2MB_NET_RAT_E rat;
230  INT8 rssi; //Received signal strength indication
231  UINT16 sigInfo_size;
232  void *sigInfo;
234 
235 typedef struct
236 {
237  M2MB_NET_ERR_CAUSE_E err;
238  M2MB_NET_RAT_E rat;
239  INT16 ber; //Bit error rate
241 
242 typedef struct
243 {
244  INT32 nARFCN;
245  INT32 nBSIC;
246  INT32 nSignalStrength;
248 
249 typedef struct
250 {
251  UINT32 cell_id;
252  UINT16 mcc;
253  UINT16 mnc;
254  UINT16 lac;
255  UINT16 arfcn;
256  UINT8 bsic;
257  UINT32 timing_advance;
258  UINT16 rx_lev;
260 
261 typedef struct
262 {
263  UINT32 cell_id;
264  UINT16 lac;
265  UINT16 arfcn;
266  UINT8 bsic;
267  UINT16 rx_lev;
269 
270 typedef struct
271 {
272  UINT16 arfcn;
273  UINT8 bsic;
274  UINT16 rx_lev;
275  INT16 srxlev; //Cell selection Rx level
277 
278 typedef union
279 {
284 
285 typedef struct
286 {
287  UINT32 cell_id;
288  UINT16 mcc;
289  UINT16 mnc;
290  UINT16 lac;
291  UINT16 uarfcn;
292  UINT16 psc;
293  INT16 rscp;
294  INT16 ecio;
296 
297 typedef struct
298 {
299  UINT16 uarfcn;
300  UINT16 psc;
301  INT16 rscp;
302  INT16 ecio;
303  INT16 srxlev; //Cell selection Rx level
305 
306 typedef union
307 {
311 
312 typedef struct
313 {
314  M2MB_NET_LTE_HANDOVER_E lteType;
315  UINT32 cell_id;
316  UINT16 mcc;
317  UINT16 mnc;
318  UINT16 tac;
319  UINT16 earfcn;
320  UINT16 pci;
321  INT16 rsrq;
322  INT16 rsrp;
323  INT16 rx_lev;
324  INT16 srxlev; //Cell selection Rx level
326 
327 typedef struct
328 {
329  M2MB_NET_LTE_HANDOVER_E lteType;
330  UINT16 earfcn;
331  UINT16 pci;
332  INT16 rsrq;
333  INT16 rsrp;
334  INT16 rx_lev;
335  INT16 srxlev; //Cell selection Rx level
337 
338 typedef union
339 {
343 
345 {
346  M2MB_NET_CELL_TYPE_E cellType;
347  M2MB_NET_RAT_E cellRat;
348  M2MB_NET_RESP_SET_E respSet;
349  UINT16 cell_size;
350  void *cell;
351  struct M2MB_NET_CELL_NEIGHBOR_T *next;
352  BOOLEAN lte_ue_in_idle; //Radio Status
354 
355 typedef struct
356 {
357  M2MB_NET_ERR_CAUSE_E err;
358  UINT16 neighbors_size;
359  M2MB_NET_CELL_NEIGHBOR_T *neighbors;
361 
362 typedef struct
363 {
364  M2MB_NET_ERR_CAUSE_E err;
365  UINT16 mcc;
366  UINT16 mnc;
367  M2MB_NET_RAT_E rat; //Radio Access Technology
369 
371 {
372  UINT16 mcc;
373  UINT16 mnc;
374  M2MB_NET_AVAILABILITY_E networkAv;
375  M2MB_NET_RAT_E rat;
376  struct M2MB_NET_DESCRIPTION_T *next;
378 
379 typedef struct
380 {
381  M2MB_NET_ERR_CAUSE_E err;
382  UINT16 availableNetworks_size;
383  M2MB_NET_DESCRIPTION_T *availableNetworks;
385 
386 typedef struct
387 {
388  M2MB_NET_SELECTED_WIRELESS_NETWORK_E selectedWirelessNetwork;
389  M2MB_NET_LTE_CIOT_PREFERENCE_E lte_ciot_preference;
391 
393 
394 typedef struct
395 {
396  M2MB_NET_ERR_CAUSE_E err; /* error status */
397  M2MB_NET_MODE_PREFERENCE_T mode_preference; /* mode preference */
399 
400 typedef void ( *m2mb_net_ind_callback )( M2MB_NET_HANDLE h, M2MB_NET_IND_E net_event, UINT16 resp_size, void *resp_struct, void *userdata );
401 
402 /* Global functions =============================================================================*/
403 
404 /*-----------------------------------------------------------------------------------------------*/
444 /*-----------------------------------------------------------------------------------------------*/
445 M2MB_RESULT_E m2mb_net_init( M2MB_NET_HANDLE *h, m2mb_net_ind_callback callback, void *userdata );
446 
447 /*-----------------------------------------------------------------------------------------------*/
479 /*-----------------------------------------------------------------------------------------------*/
480 M2MB_RESULT_E m2mb_net_deinit( M2MB_NET_HANDLE h );
481 
482 /*-----------------------------------------------------------------------------------------------*/
532 /*-----------------------------------------------------------------------------------------------*/
533 M2MB_RESULT_E m2mb_net_conf( M2MB_NET_HANDLE h, UINT8 argc, ... );
534 
535 /*-----------------------------------------------------------------------------------------------*/
594 /*-----------------------------------------------------------------------------------------------*/
595 M2MB_RESULT_E m2mb_net_enable_ind( M2MB_NET_HANDLE h, M2MB_NET_IND_E ind, UINT8 enable );
596 
597 /*-----------------------------------------------------------------------------------------------*/
659 M2MB_RESULT_E m2mb_net_get_signal_info( M2MB_NET_HANDLE h );
660 
661 /*-----------------------------------------------------------------------------------------------*/
713 M2MB_RESULT_E m2mb_net_get_ber( M2MB_NET_HANDLE h );
714 
715 /*-----------------------------------------------------------------------------------------------*/
738 
739 /*-----------------------------------------------------------------------------------------------*/
811 M2MB_RESULT_E m2mb_net_get_mode_preference( M2MB_NET_HANDLE h );
812 
813 /*-----------------------------------------------------------------------------------------------*/
865 M2MB_RESULT_E m2mb_net_get_current_operator_info( M2MB_NET_HANDLE h );
866 
867 /*-----------------------------------------------------------------------------------------------*/
984 M2MB_RESULT_E m2mb_net_get_current_cell_list( M2MB_NET_HANDLE h );
985 
986 /*-----------------------------------------------------------------------------------------------*/
1045 M2MB_RESULT_E m2mb_net_get_available_nw_list( M2MB_NET_HANDLE h );
1046 
1047 /*-----------------------------------------------------------------------------------------------*/
1099 M2MB_RESULT_E m2mb_net_get_reg_status_info( M2MB_NET_HANDLE h );
1100 
1101 /*-----------------------------------------------------------------------------------------------*/
1155 M2MB_RESULT_E m2mb_net_get_edrx_info( M2MB_NET_HANDLE h, M2MB_NET_ACC_TECH_TYPE_E acc_tech );
1156 
1157 /*-----------------------------------------------------------------------------------------------*/
1217 M2MB_RESULT_E m2mb_net_set_edrx_info( M2MB_NET_HANDLE h, M2MB_NET_ACC_TECH_TYPE_E acc_tech, UINT8 edrx, UINT8 enabled );
1218 
1219 
1220 /*-----------------------------------------------------------------------------------------------*/
1260 M2MB_RESULT_E m2mb_net_bsr_config( M2MB_NET_HANDLE h, M2MB_NET_BSR_CFG_E request, ... );
1261 
1262 #endif
M2MB_NET_CELL_GERAN_SUBSET2_T
Definition: m2mb_net.h:270
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:338
M2MB_NET_GET_CURRENT_OPERATOR_INFO_RESP_T
Definition: m2mb_net.h:362
M2MB_NET_REG_STATUS_T
Definition: m2mb_net.h:196
M2MB_NET_GET_SIGNAL_INFO_RESP_T
Definition: m2mb_net.h:226
m2mb_net_bsr_config
M2MB_RESULT_E m2mb_net_bsr_config(M2MB_NET_HANDLE h, M2MB_NET_BSR_CFG_E request,...)
m2mb_net_bsr_config reads or sets BSR idle timer value in miliseconds.
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:327
M2MB_NET_SIGNAL_INFO_EUTRAN_T
Definition: m2mb_net.h:219
M2MB_NET_CELL_UTRAN_U
Definition: m2mb_net.h:306
M2MB_NET_GENERIC_RESP_T
Definition: m2mb_net.h:190
M2MB_NET_SELECTED_WIRELESS_NETWORK_RESP_T
Definition: m2mb_net.h:386
M2MB_NET_GET_EDRX_INFO_RESP_T
Definition: m2mb_net.h:206
M2MB_NET_MODE_PREFERENCE_STATUS_T
Definition: m2mb_net.h:394
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:261
M2M_T_NETWORK_CELL_NEIGHBOR_T
Definition: m2mb_net.h:242
M2MB_NET_GET_CURRENT_CELL_LIST_RESP_T
Definition: m2mb_net.h:355
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:249
M2MB_NET_CELL_NEIGHBOR_T
Definition: m2mb_net.h:344
M2MB_NET_CELL_UTRAN_SUBSET1_T
Definition: m2mb_net.h:297
M2MB_NET_CELL_UTRAN_FULL_T
Definition: m2mb_net.h:285
M2MB_NET_DESCRIPTION_T
Definition: m2mb_net.h:370
M2MB_NET_CELL_EUTRAN_FULL_T
Definition: m2mb_net.h:312
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:379
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:235
M2MB_NET_ERR_CAUSE_T
Definition: m2mb_net.h:185
M2MB_NET_SIGNAL_INFO_UTRAN_T
Definition: m2mb_net.h:214
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:278
m2mb_net_deinit
M2MB_RESULT_E m2mb_net_deinit(M2MB_NET_HANDLE h)
m2mb_net_deinit deinitializes NET service for current client.