le_mdc_interface.h

Go to the documentation of this file.
1 
2 
3 /*
4  * ====================== WARNING ======================
5  *
6  * THE CONTENTS OF THIS FILE HAVE BEEN AUTO-GENERATED.
7  * DO NOT MODIFY IN ANY WAY.
8  *
9  * ====================== WARNING ======================
10  */
11 
12 /**
13  * @page c_mdc Modem Data Control
14  *
15  * @ref le_mdc_interface.h "API Reference"
16  *
17  * <HR>
18  *
19  * A data session is useful for applications that need to send or receive data over a network
20  * where SMS messages are insufficient. To start a data session, a data profile must
21  * be configured as specified by the target network.
22  *
23  * The Modem Data Control (mdc) API is used to manage data profiles and data sessions.
24  *
25  * @section le_mdc_binding IPC interfaces binding
26  *
27  * All the functions of this API are provided by the @b modemService service.
28  *
29  * Here's a code sample binding to modem services:
30  * @verbatim
31  bindings:
32  {
33  clientExe.clientComponent.le_mdc -> modemService.le_mdc
34  }
35  @endverbatim
36  *
37  * @section le_mdc_profile Data Profiles
38  *
39  * If a pre-defined data profile has been configured then this profile can
40  * be loaded using le_mdc_GetProfile().
41  * le_mdc_GetProfile() must be called with @c LE_MDC_DEFAULT_PROFILE to retrieve the default index
42  * used by the modem for data connection.
43  * le_mdc_GetProfile() must be called with @c LE_MDC_SIMTOOLKIT_BIP_DEFAULT_PROFILE to retrieve the
44  * default index used by the modem for Bearer Independent Protocol (BIP).
45  * The maximum number of data profiles supported is modem dependent and can be retrieved with
46  * le_mdc_NumProfiles().
47  *
48  * @note le_mdc_GetProfile() creates a new profile if the profile's index can't be found.
49  *
50  * @warning 0 is not a valid index.
51  *
52  * A pre-defined data profile can be retrieved using le_mdc_GetProfileFromApn() thanks to its
53  * APN.
54  *
55  * A default APN can be set for a defined profile with le_mdc_SetDefaultAPN(), based on the SIM
56  * identification number (ICCID). If no match is found in the database using the ICCID, the search
57  * falls back on the home network (MCC/MNC) to determine the default APN.
58  *
59  * @warning Ensure to check the list of supported data profiles for your specific platform.
60  *
61  * The following data profile parameters can be retrieved:
62  * - Packet Data Protocol using le_mdc_GetPDP().
63  * - Access Point Name using le_mdc_GetAPN().
64  * - Authentication settings using le_mdc_GetAuthentication().
65  *
66  * The following data profile parameters can be set:
67  * - Packet Data Protocol using le_mdc_SetPDP().
68  * - Access Point Name using le_mdc_SetAPN().
69  * - Authentication settings using le_mdc_SetAuthentication().
70  *
71  * @warning The maximum APN length might be limited by the platform.
72  * Please refer to the platform documentation.
73  *
74  * A sample code can be seen in the following page:
75  * - @subpage c_mdcDataProfiles
76  *
77  * @section le_mdc_session Data Sessions
78  *
79  * @subsection le_mdc_session_MO Mobile Originated (MO-PDP context activation)
80  *
81  * le_mdc_MapProfileOnNetworkInterface() may be used to map a data session with a network interface.
82  * To take effect, this API has to be called before starting the data session. Otherwise, the
83  * mapping will be taken into account at the next start of the data profile.
84  *
85  * A data session can be started using le_mdc_StartSession(). To start a data session, a
86  * data profile must be created and written to the modem, or an existing data profile
87  * can be used. A data session can be stopped using le_mdc_StopSession(). The number of
88  * simultaneous data sessions supported is dependent on the modem, but cannot be more than the
89  * maximum number of supported profiles.
90  *
91  * A data session can be started using le_mdc_StartSessionAsync() and stopped using
92  * le_mdc_StopSessionAsync(). These functions are not blocking. The response will be returned
93  * with the @c le_mdc_SessionHandlerFunc_t handler function.
94  *
95  * The current state of a data session can be queried using le_mdc_GetSessionState(). An application
96  * can also a register handler to be notified when the session state changes. The handler
97  * can be managed using le_mdc_AddSessionStateHandler() and le_mdc_RemoveSessionStateHandler().
98  *
99  * @subsection le_mdc_session_MT Mobile Terminated (MT-PDP context activation)
100  * To be notified by the MT-PDP context request, the application has to subscribe to the state
101  * handler using le_mdc_AddMtPdpSessionStateHandler().
102  * When the incoming MT-PDP context request is notified,
103  * the application takes responsibility to trigger the data session for that MT PDP request using
104  * le_mdc_StartSession. That data session can be stopped using le_mdc_StopSession().
105  *
106  * The network interface settings of that MT-PDP context can be retrieved using the provided
107  * Data Profile.
108  * Please refer to @ref le_mdc_session_networkItf.
109  *
110  * A data session can be rejected using le_mdc_RejectMtPdpSession().
111  * The number of simultaneous data sessions supported is dependent on the modem,
112  * but cannot be more than the maximum number of supported profiles.
113  *
114  * The handler can be released using le_mdc_RemoveMtPdpSessionStateHandler().
115  *
116  * @subsection le_mdc_session_networkItf Network interface settings
117  * Once a data session starts, a Linux network interface is created. It's the application's
118  * responsibility to configure the network interface, usually through a DHCP client. Query the
119  * interface name using le_mdc_GetInterfaceName(). The IP Preference can be checked with
120  * le_mdc_IsIPv4() or le_mdc_IsIPv6() when the profile is connected. The IP address for the
121  * current data session
122  * can be retrieved by le_mdc_GetIPv4Address() or le_mdc_GetIPv6Address(). The Gateway and
123  * DNS
124  * addresses can be retrieved using le_mdc_GetIPv4GatewayAddress(),
125  * le_mdc_GetIPv4DNSAddresses() or le_mdc_GetIPv6GatewayAddress(), le_mdc_GetIPv6DNSAddresses().
126  * The Access Point Name can be retrieved by le_mdc_GetAPN(). The Data bearer
127  * Technology can be retrieved by le_mdc_GetDataBearerTechnology().
128  *
129  * le_mdc_GetDisconnectionReason() or le_mdc_GetPlatformSpecificDisconnectionCode() let you get
130  * the reason for disconnection of data session by retrieving the call end failure code
131  * from @c le_mdc_ProfileRef_t.
132  *
133  * le_mdc_GetPlatformSpecificFailureConnectionReason() let you get the data session connection
134  * failure reason by retrieving the call connection failure code and type from
135  * @c le_mdc_ProfileRef_t.
136  *
137  * Please refer to @ref platformConstraintsSpecificErrorCodes for platform specific
138  * disconnection code description.
139  *
140  * A sample code can be seen in the following page:
141  * - @subpage c_mdcDataSessions
142  *
143  * @section le_mdc_dataStatistics Data Statistics
144  *
145  * The amount of received and transmitted data can be retrieved through le_mdc_GetBytesCounters().
146  * The returned values correspond to the number of received and transmitted
147  * bytes since the last call to le_mdc_ResetBytesCounter().
148  *
149  * The data statistics collection can be enabled with le_mdc_StartBytesCounter() and disabled
150  * without resetting the counters with le_mdc_StopBytesCounter().
151  *
152  * @note The data statistics collection activation and the data counters are persistent even after
153  * a reboot of the platform.
154  *
155  * A sample code can be seen in the following page:
156  * - @subpage c_mdcDataStatistics
157  *
158  * <HR>
159  *
160  * Copyright (C) Sierra Wireless Inc.
161  */
162 /**
163  * @page c_mdcDataProfiles Sample code for Data Profiles
164  *
165  * @snippet "apps/test/modemServices/mdc/mdcIntegrationTest/mdcTestComp/mdcTest.c" Profiles
166  */
167 /**
168  * @page c_mdcDataSessions Sample code for network interface settings
169  *
170  * @snippet "apps/test/modemServices/mdc/mdcIntegrationTest/mdcTestComp/mdcTest.c" Sessions
171  */
172 /**
173  * @page c_mdcDataStatistics Sample code for Data Statistics
174  *
175  * @snippet "apps/test/modemServices/mdc/mdcIntegrationTest/mdcTestComp/mdcTest.c" Statistics
176  */
177 /**
178  * @file le_mdc_interface.h
179  *
180  * Legato @ref c_mdc include file.
181  *
182  * Copyright (C) Sierra Wireless Inc.
183  */
184 
185 #ifndef LE_MDC_INTERFACE_H_INCLUDE_GUARD
186 #define LE_MDC_INTERFACE_H_INCLUDE_GUARD
187 
188 
189 #include "legato.h"
190 
191 
192 //--------------------------------------------------------------------------------------------------
193 /**
194  * Type for handler called when a server disconnects.
195  */
196 //--------------------------------------------------------------------------------------------------
197 typedef void (*le_mdc_DisconnectHandler_t)(void *);
198 
199 //--------------------------------------------------------------------------------------------------
200 /**
201  *
202  * Connect the current client thread to the service providing this API. Block until the service is
203  * available.
204  *
205  * For each thread that wants to use this API, either ConnectService or TryConnectService must be
206  * called before any other functions in this API. Normally, ConnectService is automatically called
207  * for the main thread, but not for any other thread. For details, see @ref apiFilesC_client.
208  *
209  * This function is created automatically.
210  */
211 //--------------------------------------------------------------------------------------------------
213 (
214  void
215 );
216 
217 //--------------------------------------------------------------------------------------------------
218 /**
219  *
220  * Try to connect the current client thread to the service providing this API. Return with an error
221  * if the service is not available.
222  *
223  * For each thread that wants to use this API, either ConnectService or TryConnectService must be
224  * called before any other functions in this API. Normally, ConnectService is automatically called
225  * for the main thread, but not for any other thread. For details, see @ref apiFilesC_client.
226  *
227  * This function is created automatically.
228  *
229  * @return
230  * - LE_OK if the client connected successfully to the service.
231  * - LE_UNAVAILABLE if the server is not currently offering the service to which the client is
232  * bound.
233  * - LE_NOT_PERMITTED if the client interface is not bound to any service (doesn't have a binding).
234  * - LE_COMM_ERROR if the Service Directory cannot be reached.
235  */
236 //--------------------------------------------------------------------------------------------------
238 (
239  void
240 );
241 
242 //--------------------------------------------------------------------------------------------------
243 /**
244  * Set handler called when server disconnection is detected.
245  *
246  * When a server connection is lost, call this handler then exit with LE_FATAL. If a program wants
247  * to continue without exiting, it should call longjmp() from inside the handler.
248  */
249 //--------------------------------------------------------------------------------------------------
251 (
252  le_mdc_DisconnectHandler_t disconnectHandler,
253  void *contextPtr
254 );
255 
256 //--------------------------------------------------------------------------------------------------
257 /**
258  *
259  * Disconnect the current client thread from the service providing this API.
260  *
261  * Normally, this function doesn't need to be called. After this function is called, there's no
262  * longer a connection to the service, and the functions in this API can't be used. For details, see
263  * @ref apiFilesC_client.
264  *
265  * This function is created automatically.
266  */
267 //--------------------------------------------------------------------------------------------------
269 (
270  void
271 );
272 
273 
274 //--------------------------------------------------------------------------------------------------
275 /**
276  * Maximum number of bytes in a interface name (not including the null-terminator).
277  */
278 //--------------------------------------------------------------------------------------------------
279 #define LE_MDC_INTERFACE_NAME_MAX_LEN 20
280 
281 //--------------------------------------------------------------------------------------------------
282 /**
283  * Maximum number of bytes in a profile name (including the null-terminator).
284  */
285 //--------------------------------------------------------------------------------------------------
286 #define LE_MDC_INTERFACE_NAME_MAX_BYTES 21
287 
288 //--------------------------------------------------------------------------------------------------
289 /**
290  * Maximum number of bytes in an IPv4 address (not including the null-terminator).
291  */
292 //--------------------------------------------------------------------------------------------------
293 #define LE_MDC_IPV4_ADDR_MAX_LEN 15
294 
295 //--------------------------------------------------------------------------------------------------
296 /**
297  * Maximum number of bytes in an IPv4 address (including the null-terminator).
298  */
299 //--------------------------------------------------------------------------------------------------
300 #define LE_MDC_IPV4_ADDR_MAX_BYTES 16
301 
302 //--------------------------------------------------------------------------------------------------
303 /**
304  * Maximum number of bytes in an IPv6 address (not including the null-terminator).
305  */
306 //--------------------------------------------------------------------------------------------------
307 #define LE_MDC_IPV6_ADDR_MAX_LEN 45
308 
309 //--------------------------------------------------------------------------------------------------
310 /**
311  * Maximum number of bytes in an IPv6 address (including the null-terminator).
312  */
313 //--------------------------------------------------------------------------------------------------
314 #define LE_MDC_IPV6_ADDR_MAX_BYTES 46
315 
316 //--------------------------------------------------------------------------------------------------
317 /**
318  * Maximum number of bytes in a apn name (not including the null-terminator).
319  */
320 //--------------------------------------------------------------------------------------------------
321 #define LE_MDC_APN_NAME_MAX_LEN 100
322 
323 //--------------------------------------------------------------------------------------------------
324 /**
325  * Maximum number of bytes in a apn name (including the null-terminator).
326  */
327 //--------------------------------------------------------------------------------------------------
328 #define LE_MDC_APN_NAME_MAX_BYTES 101
329 
330 //--------------------------------------------------------------------------------------------------
331 /**
332  * Maximum number of bytes in a user name (not including the null-terminator).
333  */
334 //--------------------------------------------------------------------------------------------------
335 #define LE_MDC_USER_NAME_MAX_LEN 64
336 
337 //--------------------------------------------------------------------------------------------------
338 /**
339  * Maximum number of bytes in a user name (including the null-terminator).
340  */
341 //--------------------------------------------------------------------------------------------------
342 #define LE_MDC_USER_NAME_MAX_BYTES 65
343 
344 //--------------------------------------------------------------------------------------------------
345 /**
346  * Maximum number of bytes in a password name (not including the null-terminator).
347  */
348 //--------------------------------------------------------------------------------------------------
349 #define LE_MDC_PASSWORD_NAME_MAX_LEN 100
350 
351 //--------------------------------------------------------------------------------------------------
352 /**
353  * Maximum number of bytes in a password name (including the null-terminator).
354  */
355 //--------------------------------------------------------------------------------------------------
356 #define LE_MDC_PASSWORD_NAME_MAX_BYTES 101
357 
358 //--------------------------------------------------------------------------------------------------
359 /**
360  * Default profile definition.
361  */
362 //--------------------------------------------------------------------------------------------------
363 #define LE_MDC_DEFAULT_PROFILE -1
364 
365 //--------------------------------------------------------------------------------------------------
366 /**
367  * Default profile definition for Bearer Independent Protocol (BIP).
368  */
369 //--------------------------------------------------------------------------------------------------
370 #define LE_MDC_SIMTOOLKIT_BIP_DEFAULT_PROFILE -2
371 
372 //--------------------------------------------------------------------------------------------------
373 /**
374  * Reference to a modem data connection profile.
375  */
376 //--------------------------------------------------------------------------------------------------
377 typedef struct le_mdc_Profile* le_mdc_ProfileRef_t;
378 
379 
380 //--------------------------------------------------------------------------------------------------
381 /**
382  * Enumeration of data bearer technologies.
383  */
384 //--------------------------------------------------------------------------------------------------
385 typedef enum
386 {
388  ///< Unknown
390  ///< GSM
392  ///< GPRS
394  ///< Enhanced GPRS (EDGE)
396  ///< WCDMA (UMTS)
398  ///< HSPA
400  ///< HSPA+
402  ///< Dual Cell - HSPA+
404  ///< HSDPA
406  ///< HSUPA
408  ///< Dual Cell - HSUPA
410  ///< Dual Cell - HSPA
412  ///< LTE
414  ///< LTE FDD
416  ///< LTE TDD
418  ///< LTE CA DL
420  ///< LTE CA UL
422  ///< TD-SCDMA
424  ///< CDMA2000 1X
426  ///< CDMA2000 HRPD (1xEV-DO)
428  ///< CDMA2000 HRPD (1xEV-DO RevA)
430  ///< CDMA2000 EHRPD
432  ///< IS95 1X
434  ///< HDR REV0 DPA
436  ///< HDR REVA DPA
438  ///< HDR REVB DPA
440  ///< HDR REVA MPA
442  ///< HDR REVB MPA
444  ///< HDR REVA EMPA
446  ///< HDR REVB EMPA
448  ///< HDR REVB MMPA
450  ///< HDR EVDO FMC
452  ///< 64 QAM
454  ///< S2B
455 }
457 
458 
459 //--------------------------------------------------------------------------------------------------
460 /**
461  * Enumeration of Packet Data Protocol.
462  */
463 //--------------------------------------------------------------------------------------------------
464 typedef enum
465 {
467  ///< Unknown
469  ///< IPv4
471  ///< IPv6
473  ///< IPv4 and IPv6
474 }
476 
477 
478 //--------------------------------------------------------------------------------------------------
479 /**
480  * Authentication bit mask.
481  */
482 //--------------------------------------------------------------------------------------------------
483 typedef enum
484 {
485  LE_MDC_AUTH_NONE = 0x1, ///< no authentication
486  LE_MDC_AUTH_PAP = 0x2, ///< PAP protocol
487  LE_MDC_AUTH_CHAP = 0x4 ///< CHAP protocol
488 }
490 
491 
492 //--------------------------------------------------------------------------------------------------
493 /**
494  * Enumeration of connection state.
495  */
496 //--------------------------------------------------------------------------------------------------
497 typedef enum
498 {
500  ///< Data session is disconnected
502  ///< Authenticating data session
504  ///< Data session is connected
506  ///< Suspending data session
508  ///< Incoming data session (MT-PDP context request)
509 }
511 
512 
513 //--------------------------------------------------------------------------------------------------
514 /**
515  * Enumeration of the possible reasons for the disconnection.
516  */
517 //--------------------------------------------------------------------------------------------------
518 typedef enum
519 {
521  ///< Modem has no service
523  ///< cf. 3GPP 24.008 Annex I1
525  ///< cf. 3GPP 24.008 Annex I1
527  ///< cf. 3GPP 24.008 Annex I1
529  ///< cf. 3GPP 24.008 Annex I1
531  ///< cf. 3GPP 24.008 Annex I1
533  ///< cf. 3GPP 24.008 Annex I1
535  ///< cf. 3GPP 24.008 Annex I1
537  ///< cf. 3GPP 24.008 Annex I1
539  ///< cf. 3GPP 24.008 Annex I1
541  ///< cf. 3GPP 24.008 Annex I1
543  ///< cf. 3GPP 24.008 Annex I1
545  ///< cf. 3GPP 24.008 Annex I1
547  ///< cf. 3GPP 24.008 Annex I1
549  ///< cf. 3GPP 24.008 Annex I1
551  ///< cf. 3GPP 24.008 Annex I1
553  ///< cf. 3GPP 24.008 Annex I1
555  ///< cf. 3GPP 24.008 Annex I1
557  ///< cf. 3GPP 24.008 Annex I1
559  ///< cf. 3GPP 24.008 Annex I1
561  ///< cf. 3GPP 24.008 Annex I1
563  ///< cf. 3GPP 24.008 Annex I1
565  ///< cf. 3GPP 24.008 Annex I1
567  ///< cf. 3GPP 24.008 Annex I1
569  ///< cf. 3GPP 24.008 Annex I1
571  ///< cf. 3GPP 24.008 Annex I1
573  ///< cf. 3GPP 24.008 Annex I1
575  ///< cf. 3GPP 24.008 Annex I1
577  ///< cf. 3GPP 24.008 Annex I1
579  ///< cf. 3GPP 24.008 Annex I1
581  ///< cf. 3GPP 24.008 Annex I1
583  ///< cf. 3GPP 24.008 Annex I1
585  ///< cf. 3GPP 24.008 Annex I1
587  ///< cf. 3GPP 24.008 Annex I1
589  ///< cf. 3GPP 24.008 Annex I1
591  ///< cf. 3GPP 24.008 Annex I2
593  ///< cf. 3GPP 24.008 Annex I2
595  ///< cf. 3GPP 24.008 Annex I2
597  ///< cf. 3GPP 24.008 Annex I2
599  ///< cf. 3GPP 24.008 Annex I2
601  ///< cf. 3GPP 24.008 Annex I2
603  ///< cf. 3GPP 24.008 Annex I2
605  ///< cf. 3GPP 24.008 Annex I2
607  ///< cf. 3GPP 24.008 Annex I2
609  ///< Platform specific code.
611  ///< Undefined reason.
612 }
614 
615 
616 //--------------------------------------------------------------------------------------------------
617 /**
618  * Reference type used by Add/Remove functions for EVENT 'le_mdc_SessionState'
619  */
620 //--------------------------------------------------------------------------------------------------
621 typedef struct le_mdc_SessionStateHandler* le_mdc_SessionStateHandlerRef_t;
622 
623 
624 //--------------------------------------------------------------------------------------------------
625 /**
626  * Reference type used by Add/Remove functions for EVENT 'le_mdc_MtPdpSessionState'
627  */
628 //--------------------------------------------------------------------------------------------------
629 typedef struct le_mdc_MtPdpSessionStateHandler* le_mdc_MtPdpSessionStateHandlerRef_t;
630 
631 
632 //--------------------------------------------------------------------------------------------------
633 /**
634  * Handler for Data session connection state changes.
635  */
636 //--------------------------------------------------------------------------------------------------
637 typedef void (*le_mdc_SessionStateHandlerFunc_t)
638 (
639  le_mdc_ProfileRef_t profileRef,
640  ///< Profile reference
641  le_mdc_ConState_t ConnectionState,
642  ///< Data session connection state.
643  void* contextPtr
644  ///<
645 );
646 
647 //--------------------------------------------------------------------------------------------------
648 /**
649  * Handler for MT-PDP Data session connection state changes.
650  */
651 //--------------------------------------------------------------------------------------------------
653 (
654  le_mdc_ConState_t ConnectionState,
655  ///< MT-PDP Data session connection state.
656  void* contextPtr
657  ///<
658 );
659 
660 //--------------------------------------------------------------------------------------------------
661 /**
662  * Handler for asynchronous session start and stop result response
663  *
664  */
665 //--------------------------------------------------------------------------------------------------
666 typedef void (*le_mdc_SessionHandlerFunc_t)
667 (
668  le_mdc_ProfileRef_t profileRef,
669  ///< Profile reference
670  le_result_t result,
671  ///< Session start or stop result response
672  void* contextPtr
673  ///<
674 );
675 
676 //--------------------------------------------------------------------------------------------------
677 /**
678  * Add handler function for EVENT 'le_mdc_SessionState'
679  *
680  * This event provides information on data session connection state changes for the given profileRef.
681  *
682  */
683 //--------------------------------------------------------------------------------------------------
685 (
686  le_mdc_ProfileRef_t profileRef,
687  ///< [IN] The profile object of interest
689  ///< [IN]
690  void* contextPtr
691  ///< [IN]
692 );
693 
694 //--------------------------------------------------------------------------------------------------
695 /**
696  * Remove handler function for EVENT 'le_mdc_SessionState'
697  */
698 //--------------------------------------------------------------------------------------------------
700 (
702  ///< [IN]
703 );
704 
705 //--------------------------------------------------------------------------------------------------
706 /**
707  * Add handler function for EVENT 'le_mdc_MtPdpSessionState'
708  *
709  * This event provides information on data session connection state changes for the given profileRef.
710  *
711  */
712 //--------------------------------------------------------------------------------------------------
714 (
716  ///< [IN]
717  void* contextPtr
718  ///< [IN]
719 );
720 
721 //--------------------------------------------------------------------------------------------------
722 /**
723  * Remove handler function for EVENT 'le_mdc_MtPdpSessionState'
724  */
725 //--------------------------------------------------------------------------------------------------
727 (
729  ///< [IN]
730 );
731 
732 //--------------------------------------------------------------------------------------------------
733 /**
734  * Get Profile Reference for index
735  *
736  * @note Create a new profile if the profile's index can't be found.
737  *
738  * @warning 0 is not a valid index.
739  *
740  * @warning Ensure to check the list of supported data profiles for your specific platform.
741  *
742  * @return
743  * - Reference to the data profile
744  * - NULL if the profile index does not exist
745  */
746 //--------------------------------------------------------------------------------------------------
748 (
749  uint32_t index
750  ///< [IN] index of the profile.
751 );
752 
753 //--------------------------------------------------------------------------------------------------
754 /**
755  * Get the index for the given Profile.
756  *
757  * @return
758  * - index of the profile in the modem
759  *
760  * @note
761  * The process exits, if an invalid profile object is given
762  */
763 //--------------------------------------------------------------------------------------------------
764 uint32_t le_mdc_GetProfileIndex
765 (
766  le_mdc_ProfileRef_t profileRef
767  ///< [IN] Query this profile object
768 );
769 
770 //--------------------------------------------------------------------------------------------------
771 /**
772  * Start profile data session.
773  *
774  * @return
775  * - LE_OK on success
776  * - LE_BAD_PARAMETER if input parameter is incorrect
777  * - LE_DUPLICATE if the data session is already connected for the given profile
778  * - LE_FAULT for other failures
779  *
780  * @note
781  * The process exits, if an invalid profile object is given
782  */
783 //--------------------------------------------------------------------------------------------------
785 (
786  le_mdc_ProfileRef_t profileRef
787  ///< [IN] Start data session for this profile object
788 );
789 
790 //--------------------------------------------------------------------------------------------------
791 /**
792  * Start profile data session.
793  *
794  * @note
795  * The process exits, if an invalid profile object is given
796  */
797 //--------------------------------------------------------------------------------------------------
799 (
800  le_mdc_ProfileRef_t profileRef,
801  ///< [IN] Start data session for this profile object
802  le_mdc_SessionHandlerFunc_t handlerPtr,
803  ///< [IN] Handler for start data session result
804  void* contextPtr
805  ///< [IN]
806 );
807 
808 //--------------------------------------------------------------------------------------------------
809 /**
810  * Stop profile data session.
811  *
812  * @return
813  * - LE_OK on success
814  * - LE_BAD_PARAMETER if the input parameter is not valid
815  * - LE_FAULT for other failures
816  *
817  * @note
818  * The process exits, if an invalid profile object is given
819  */
820 //--------------------------------------------------------------------------------------------------
822 (
823  le_mdc_ProfileRef_t profileRef
824  ///< [IN] Stop data session for this profile object
825 );
826 
827 //--------------------------------------------------------------------------------------------------
828 /**
829  * Stop profile data session.
830  *
831  * @note
832  * The process exits, if an invalid profile object is given
833  */
834 //--------------------------------------------------------------------------------------------------
836 (
837  le_mdc_ProfileRef_t profileRef,
838  ///< [IN] Stop data session for this profile object
839  le_mdc_SessionHandlerFunc_t handlerPtr,
840  ///< [IN] Handler for stop data session result
841  void* contextPtr
842  ///< [IN]
843 );
844 
845 //--------------------------------------------------------------------------------------------------
846 /**
847  * Reject MT-PDP profile data session.
848  *
849  * @return
850  * - LE_OK on success
851  * - LE_BAD_PARAMETER if the input parameter is not valid
852  * - LE_FAULT for other failures
853  *
854  * @note
855  * The process exits, if an invalid profile object is given
856  */
857 //--------------------------------------------------------------------------------------------------
859 (
860  le_mdc_ProfileRef_t profileRef
861  ///< [IN] Reject MT-PDP data session for this profile object
862 );
863 
864 //--------------------------------------------------------------------------------------------------
865 /**
866  * Get the current data session state.
867  *
868  * @return
869  * - LE_OK on success
870  * - LE_BAD_PARAMETER if an input parameter is not valid
871  * - LE_FAULT on failure
872  *
873  * @note
874  * The process exits, if an invalid profile object is given
875  */
876 //--------------------------------------------------------------------------------------------------
878 (
879  le_mdc_ProfileRef_t profileRef,
880  ///< [IN] Query this profile object
881  le_mdc_ConState_t* connectionStatePtr
882  ///< [OUT] The data session state
883 );
884 
885 //--------------------------------------------------------------------------------------------------
886 /**
887  * Get the network interface name, if the data session is connected.
888  *
889  * @return
890  * - LE_OK on success
891  * - LE_OVERFLOW if the interface name would not fit in interfaceNameStr
892  * - LE_FAULT for all other errors
893  *
894  * @note
895  * The process exits, if an invalid profile object is given
896  */
897 //--------------------------------------------------------------------------------------------------
899 (
900  le_mdc_ProfileRef_t profileRef,
901  ///< [IN] Query this profile object
902  char* interfaceName,
903  ///< [OUT] The name of the network interface
904  size_t interfaceNameSize
905  ///< [IN]
906 );
907 
908 //--------------------------------------------------------------------------------------------------
909 /**
910  * Get the IPv4 address for the given profile, if the data session is connected and has an IPv4
911  * address.
912  *
913  * @return
914  * - LE_OK on success
915  * - LE_OVERFLOW if the IP address would not fit in ipAddrStr
916  * - LE_FAULT for all other errors
917  *
918  * @note
919  * The process exits, if an invalid profile object is given
920  */
921 //--------------------------------------------------------------------------------------------------
923 (
924  le_mdc_ProfileRef_t profileRef,
925  ///< [IN] Query this profile object
926  char* ipAddr,
927  ///< [OUT] The IP address in dotted format
928  size_t ipAddrSize
929  ///< [IN]
930 );
931 
932 //--------------------------------------------------------------------------------------------------
933 /**
934  * Get the gateway IPv4 address for the given profile, if the data session is connected and has an
935  * IPv4 address.
936  *
937  * @return
938  * - LE_OK on success
939  * - LE_OVERFLOW if the IP address would not fit in gatewayAddrStr
940  * - LE_FAULT for all other errors
941  *
942  * @note
943  * The process exits, if an invalid profile object is given
944  */
945 //--------------------------------------------------------------------------------------------------
947 (
948  le_mdc_ProfileRef_t profileRef,
949  ///< [IN] Query this profile object
950  char* gatewayAddr,
951  ///< [OUT] The gateway IP address in dotted format
952  size_t gatewayAddrSize
953  ///< [IN]
954 );
955 
956 //--------------------------------------------------------------------------------------------------
957 /**
958  * Get the primary/secondary DNS v4 addresses for the given profile, if the data session is
959  * connected and has an IPv4 address.
960  *
961  * @return
962  * - LE_OK on success
963  * - LE_OVERFLOW if the IP address would not fit in buffer
964  * - LE_FAULT for all other errors
965  *
966  * @note
967  * - If only one DNS address is available, then it will be returned, and an empty string will
968  * be returned for the unavailable address
969  * - The process exits, if an invalid profile object is given
970  */
971 //--------------------------------------------------------------------------------------------------
973 (
974  le_mdc_ProfileRef_t profileRef,
975  ///< [IN] Query this profile object
976  char* dns1AddrStr,
977  ///< [OUT] The primary DNS IP address in dotted format
978  size_t dns1AddrStrSize,
979  ///< [IN]
980  char* dns2AddrStr,
981  ///< [OUT] The secondary DNS IP address in dotted format
982  size_t dns2AddrStrSize
983  ///< [IN]
984 );
985 
986 //--------------------------------------------------------------------------------------------------
987 /**
988  * Get the IPv6 address for the given profile, if the data session is connected and has an IPv6
989  * address.
990  *
991  * @return
992  * - LE_OK on success
993  * - LE_OVERFLOW if the IP address would not fit in ipAddrStr
994  * - LE_FAULT for all other errors
995  *
996  * @note
997  * The process exits, if an invalid profile object is given
998  */
999 //--------------------------------------------------------------------------------------------------
1001 (
1002  le_mdc_ProfileRef_t profileRef,
1003  ///< [IN] Query this profile object
1004  char* ipAddr,
1005  ///< [OUT] The IP address in dotted format
1006  size_t ipAddrSize
1007  ///< [IN]
1008 );
1009 
1010 //--------------------------------------------------------------------------------------------------
1011 /**
1012  * Get the gateway IPv6 address for the given profile, if the data session is connected and has an
1013  * IPv6 address.
1014  *
1015  * @return
1016  * - LE_OK on success
1017  * - LE_OVERFLOW if the IP address would not fit in gatewayAddrStr
1018  * - LE_FAULT for all other errors
1019  *
1020  * @note
1021  * The process exits, if an invalid profile object is given
1022  */
1023 //--------------------------------------------------------------------------------------------------
1025 (
1026  le_mdc_ProfileRef_t profileRef,
1027  ///< [IN] Query this profile object
1028  char* gatewayAddr,
1029  ///< [OUT] The gateway IP address in dotted format
1030  size_t gatewayAddrSize
1031  ///< [IN]
1032 );
1033 
1034 //--------------------------------------------------------------------------------------------------
1035 /**
1036  * Get the primary/secondary DNS v6 addresses, if the data session is connected and has an IPv6
1037  * address.
1038  *
1039  * @return
1040  * - LE_OK on success
1041  * - LE_OVERFLOW if the IP address can't fit in buffer
1042  * - LE_FAULT for all other errors
1043  *
1044  * @note
1045  * - If only one DNS address is available, it will be returned, and an empty string will
1046  * be returned for the unavailable address.
1047  * - The process exits, if an invalid profile object is given
1048  */
1049 //--------------------------------------------------------------------------------------------------
1051 (
1052  le_mdc_ProfileRef_t profileRef,
1053  ///< [IN] Query this profile object
1054  char* dns1AddrStr,
1055  ///< [OUT] The primary DNS IP address in dotted format
1056  size_t dns1AddrStrSize,
1057  ///< [IN]
1058  char* dns2AddrStr,
1059  ///< [OUT] The secondary DNS IP address in dotted format
1060  size_t dns2AddrStrSize
1061  ///< [IN]
1062 );
1063 
1064 //--------------------------------------------------------------------------------------------------
1065 /**
1066  * Allow the caller to know if the given profile is actually supporting IPv4, if the data session
1067  * is connected.
1068  *
1069  * @return TRUE if PDP type is IPv4, FALSE otherwise.
1070  *
1071  * @note If the caller is passing a bad pointer into this function, it is a fatal error, the
1072  * function will not return.
1073  */
1074 //--------------------------------------------------------------------------------------------------
1075 bool le_mdc_IsIPv4
1076 (
1077  le_mdc_ProfileRef_t profileRef
1078  ///< [IN] Query this profile object
1079 );
1080 
1081 //--------------------------------------------------------------------------------------------------
1082 /**
1083  * Allow the caller to know if the given profile is actually supporting IPv6, if the data session
1084  * is connected.
1085  *
1086  * @return TRUE if PDP type is IPv6, FALSE otherwise.
1087  *
1088  * @note If the caller is passing a bad pointer into this function, it is a fatal error, the
1089  * function will not return.
1090  */
1091 //--------------------------------------------------------------------------------------------------
1092 bool le_mdc_IsIPv6
1093 (
1094  le_mdc_ProfileRef_t profileRef
1095  ///< [IN] Query this profile object
1096 );
1097 
1098 //--------------------------------------------------------------------------------------------------
1099 /**
1100  * Get the Data Bearer Technology for the given profile, if the data session is connected.
1101  *
1102  * @return
1103  * - LE_OK on success
1104  * - LE_FAULT for all other errors
1105  *
1106  * @note
1107  * The process exits, if an invalid profile object is given
1108  */
1109 //--------------------------------------------------------------------------------------------------
1111 (
1112  le_mdc_ProfileRef_t profileRef,
1113  ///< [IN] Query this profile object
1114  le_mdc_DataBearerTechnology_t* downlinkDataBearerTechPtrPtr,
1115  ///< [OUT] downlink data bearer technology
1116  le_mdc_DataBearerTechnology_t* uplinkDataBearerTechPtrPtr
1117  ///< [OUT] uplink data bearer technology
1118 );
1119 
1120 //--------------------------------------------------------------------------------------------------
1121 /**
1122  * Get number of bytes received/transmitted without error since the last reset.
1123  *
1124  * @return
1125  * - LE_OK on success
1126  * - LE_FAULT for all other errors
1127  *
1128  * @note
1129  * - The process exits, if an invalid pointer is given
1130  */
1131 //--------------------------------------------------------------------------------------------------
1133 (
1134  uint64_t* rxBytesPtr,
1135  ///< [OUT] bytes amount received since the last counter reset
1136  uint64_t* txBytesPtr
1137  ///< [OUT] bytes amount transmitted since the last counter reset
1138 );
1139 
1140 //--------------------------------------------------------------------------------------------------
1141 /**
1142  * Reset received/transmitted data flow statistics
1143  *
1144  * @return
1145  * - LE_OK on success
1146  * - LE_FAULT for all other errors
1147  */
1148 //--------------------------------------------------------------------------------------------------
1150 (
1151  void
1152 );
1153 
1154 //--------------------------------------------------------------------------------------------------
1155 /**
1156  * Stop collecting received/transmitted data flow statistics
1157  *
1158  * @return
1159  * - LE_OK on success
1160  * - LE_FAULT for all other errors
1161  */
1162 //--------------------------------------------------------------------------------------------------
1164 (
1165  void
1166 );
1167 
1168 //--------------------------------------------------------------------------------------------------
1169 /**
1170  * Start collecting received/transmitted data flow statistics
1171  *
1172  * @return
1173  * - LE_OK on success
1174  * - LE_FAULT for all other errors
1175  */
1176 //--------------------------------------------------------------------------------------------------
1178 (
1179  void
1180 );
1181 
1182 //--------------------------------------------------------------------------------------------------
1183 /**
1184  * Set the Packet Data Protocol (PDP) for the given profile.
1185  *
1186  * @return
1187  * - LE_OK on success
1188  * - LE_BAD_PARAMETER if the PDP is not supported
1189  * - LE_FAULT if the data session is currently connected for the given profile
1190  *
1191  * @note
1192  * The process exits, if an invalid profile object is given
1193  */
1194 //--------------------------------------------------------------------------------------------------
1196 (
1197  le_mdc_ProfileRef_t profileRef,
1198  ///< [IN] Query this profile object
1199  le_mdc_Pdp_t pdp
1200  ///< [IN] The Packet Data Protocol
1201 );
1202 
1203 //--------------------------------------------------------------------------------------------------
1204 /**
1205  * Get the Packet Data Protocol (PDP) for the given profile.
1206  *
1207  * @return
1208  * - packet data protocol value
1209  *
1210  * @note
1211  * The process exits, if an invalid profile object is given
1212  */
1213 //--------------------------------------------------------------------------------------------------
1215 (
1216  le_mdc_ProfileRef_t profileRef
1217  ///< [IN] Query this profile object
1218 );
1219 
1220 //--------------------------------------------------------------------------------------------------
1221 /**
1222  * Set the Access Point Name (APN) for the given profile.
1223  *
1224  * The APN must be an ASCII string.
1225  *
1226  * @return
1227  * - LE_OK on success
1228  * - LE_BAD_PARAMETER if an input parameter is not valid
1229  * - LE_FAULT if the data session is currently connected for the given profile
1230  *
1231  * @note If APN is too long (max APN_NAME_MAX_LEN digits), it is a fatal error, the
1232  * function will not return.
1233  *
1234  * @warning The maximum APN length might be limited by the platform.
1235  * Please refer to the platform documentation.
1236  *
1237  * @note
1238  * The process exits, if an invalid profile object is given
1239  */
1240 //--------------------------------------------------------------------------------------------------
1242 (
1243  le_mdc_ProfileRef_t profileRef,
1244  ///< [IN] Query this profile object
1245  const char* LE_NONNULL apnStr
1246  ///< [IN] The Access Point Name
1247 );
1248 
1249 //--------------------------------------------------------------------------------------------------
1250 /**
1251  * Set the Access Point Name (APN) for the given profile according to the SIM identification
1252  * number (ICCID). If no APN is found using the ICCID, fall back on the home network (MCC/MNC)
1253  * to determine the default APN.
1254  *
1255  * @return
1256  * - LE_OK on success
1257  * - LE_BAD_PARAMETER if an input parameter is not valid
1258  * - LE_FAULT for all other errors
1259  *
1260  * @note
1261  * The process exits if an invalid profile object is given
1262  */
1263 //--------------------------------------------------------------------------------------------------
1265 (
1266  le_mdc_ProfileRef_t profileRef
1267  ///< [IN] Query this profile object
1268 );
1269 
1270 //--------------------------------------------------------------------------------------------------
1271 /**
1272  * Get the Access Point Name (APN) for the given profile.
1273  *
1274  * @return
1275  * - LE_OK on success
1276  * - LE_BAD_PARAMETER if an input parameter is not valid
1277  * - LE_OVERFLOW if the APN is is too long
1278  * - LE_FAULT on failed
1279  *
1280  * @note
1281  * The process exits, if an invalid profile object is given
1282  */
1283 //--------------------------------------------------------------------------------------------------
1285 (
1286  le_mdc_ProfileRef_t profileRef,
1287  ///< [IN] Query this profile object
1288  char* apnStr,
1289  ///< [OUT] The Access Point Name
1290  size_t apnStrSize
1291  ///< [IN]
1292 );
1293 
1294 //--------------------------------------------------------------------------------------------------
1295 /**
1296  * Set authentication property
1297  *
1298  * @return
1299  * - LE_OK on success
1300  *
1301  * @note
1302  * - The process exits, if userName or password are NULL when type is not PA_MDC_AUTH_NONE
1303  * - The process exits, if an invalid profile object is given
1304  * @note If userName is too long (max USER_NAME_MAX_LEN digits), it is a fatal error, the
1305  * function will not return.
1306  * @note If password is too long (max PASSWORD_NAME_MAX_LEN digits), it is a fatal error, the
1307  * function will not return.
1308  * @note Both PAP and CHAP authentification can be set for 3GPP network: in this case, the device
1309  * decides which authentication procedure is performed. For example, the device can have a
1310  * policy to select the most secure authentication mechanism.
1311  *
1312  */
1313 //--------------------------------------------------------------------------------------------------
1315 (
1316  le_mdc_ProfileRef_t profileRef,
1317  ///< [IN] Query this profile object
1318  le_mdc_Auth_t type,
1319  ///< [IN] Authentication type
1320  const char* LE_NONNULL userName,
1321  ///< [IN] UserName used by authentication
1322  const char* LE_NONNULL password
1323  ///< [IN] Password used by authentication
1324 );
1325 
1326 //--------------------------------------------------------------------------------------------------
1327 /**
1328  * Get authentication property
1329  *
1330  * @return
1331  * - LE_OK on success
1332  * - LE_BAD_PARAMETER if an input parameter is not valid
1333  * - LE_OVERFLOW userName or password are too small
1334  * - LE_FAULT on failed
1335  *
1336  * @note
1337  * The process exits, if an invalid profile object is given
1338  */
1339 //--------------------------------------------------------------------------------------------------
1341 (
1342  le_mdc_ProfileRef_t profileRef,
1343  ///< [IN] Query this profile object
1344  le_mdc_Auth_t* typePtr,
1345  ///< [OUT] Authentication type
1346  char* userName,
1347  ///< [OUT] UserName used by authentication
1348  size_t userNameSize,
1349  ///< [IN]
1350  char* password,
1351  ///< [OUT] Password used by authentication
1352  size_t passwordSize
1353  ///< [IN]
1354 );
1355 
1356 //--------------------------------------------------------------------------------------------------
1357 /**
1358  * Get the number of profiles on the modem.
1359  *
1360  * @return
1361  * - number of profiles existing on modem
1362  */
1363 //--------------------------------------------------------------------------------------------------
1364 uint32_t le_mdc_NumProfiles
1365 (
1366  void
1367 );
1368 
1369 //--------------------------------------------------------------------------------------------------
1370 /**
1371  * Get a profile selected by its APN
1372  *
1373  * @return
1374  * - LE_OK on success
1375  * - LE_BAD_PARAMETER if an input parameter is not valid
1376  * - LE_NOT_FOUND if the requested APN is not found
1377  */
1378 //--------------------------------------------------------------------------------------------------
1380 (
1381  const char* LE_NONNULL apnStr,
1382  ///< [IN] The Access Point Name
1383  le_mdc_ProfileRef_t* profileRefPtr
1384  ///< [OUT] profile reference
1385 );
1386 
1387 //--------------------------------------------------------------------------------------------------
1388 /**
1389  * Called to get the disconnection reason.
1390  *
1391  * @return The disconnection reason.
1392  *
1393  * @note If the caller is passing a bad pointer into this function, it is a fatal error, the
1394  * function will not return.
1395  */
1396 //--------------------------------------------------------------------------------------------------
1398 (
1399  le_mdc_ProfileRef_t profileRef
1400  ///< [IN] profile reference
1401 );
1402 
1403 //--------------------------------------------------------------------------------------------------
1404 /**
1405  * Called to get the platform specific disconnection code.
1406  *
1407  * Refer to @ref platformConstraintsSpecificErrorCodes for platform specific
1408  * disconnection code description.
1409  *
1410  * @return The platform specific disconnection code.
1411  *
1412  * @note If the caller is passing a bad pointer into this function, it is a fatal error, the
1413  * function will not return.
1414  */
1415 //--------------------------------------------------------------------------------------------------
1417 (
1418  le_mdc_ProfileRef_t profileRef
1419  ///< [IN] profile reference
1420 );
1421 
1422 //--------------------------------------------------------------------------------------------------
1423 /**
1424  * Called to get the platform specific connection failure reason.
1425  *
1426  * @note If the caller is passing a bad pointer into this function, it is a fatal error, the
1427  * function will not return.
1428  */
1429 //--------------------------------------------------------------------------------------------------
1431 (
1432  le_mdc_ProfileRef_t profileRef,
1433  ///< [IN] profile reference
1434  int32_t* failureTypePtr,
1435  ///< [OUT] platform specific failure type
1436  int32_t* failureCodePtr
1437  ///< [OUT] platform specific failure code
1438 );
1439 
1440 //--------------------------------------------------------------------------------------------------
1441 /**
1442  * Map a profile on a network interface
1443  *
1444  * * @return
1445  * - LE_OK on success
1446  * - LE_UNSUPPORTED if not supported by the target
1447  * - LE_FAULT for all other errors
1448  *
1449  */
1450 //--------------------------------------------------------------------------------------------------
1452 (
1453  le_mdc_ProfileRef_t profileRef,
1454  ///< [IN] Profile reference
1455  const char* LE_NONNULL interfaceName
1456  ///< [IN] Network interface name
1457 );
1458 
1459 #endif // LE_MDC_INTERFACE_H_INCLUDE_GUARD
le_result_t le_mdc_GetSessionState(le_mdc_ProfileRef_t profileRef, le_mdc_ConState_t *connectionStatePtr)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:574
le_mdc_SessionStateHandlerRef_t le_mdc_AddSessionStateHandler(le_mdc_ProfileRef_t profileRef, le_mdc_SessionStateHandlerFunc_t handlerPtr, void *contextPtr)
Suspending data session.
Definition: le_mdc_interface.h:505
Data session is disconnected.
Definition: le_mdc_interface.h:499
le_mdc_DataBearerTechnology_t
Definition: le_mdc_interface.h:385
le_mdc_Pdp_t le_mdc_GetPDP(le_mdc_ProfileRef_t profileRef)
void le_mdc_StartSessionAsync(le_mdc_ProfileRef_t profileRef, le_mdc_SessionHandlerFunc_t handlerPtr, void *contextPtr)
void(* le_mdc_MtPdpSessionStateHandlerFunc_t)(le_mdc_ConState_t ConnectionState, void *contextPtr)
Definition: le_mdc_interface.h:653
HDR REVB MPA.
Definition: le_mdc_interface.h:441
Dual Cell - HSPA+.
Definition: le_mdc_interface.h:401
le_result_t le_mdc_GetDataBearerTechnology(le_mdc_ProfileRef_t profileRef, le_mdc_DataBearerTechnology_t *downlinkDataBearerTechPtrPtr, le_mdc_DataBearerTechnology_t *uplinkDataBearerTechPtrPtr)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:562
le_result_t le_mdc_SetAPN(le_mdc_ProfileRef_t profileRef, const char *LE_NONNULL apnStr)
Data session is connected.
Definition: le_mdc_interface.h:503
Dual Cell - HSUPA.
Definition: le_mdc_interface.h:407
struct le_mdc_SessionStateHandler * le_mdc_SessionStateHandlerRef_t
Definition: le_mdc_interface.h:621
IPv4 and IPv6.
Definition: le_mdc_interface.h:472
le_result_t
Definition: le_basics.h:35
bool le_mdc_IsIPv4(le_mdc_ProfileRef_t profileRef)
IPv4.
Definition: le_mdc_interface.h:468
64 QAM
Definition: le_mdc_interface.h:451
void(* le_mdc_SessionStateHandlerFunc_t)(le_mdc_ProfileRef_t profileRef, le_mdc_ConState_t ConnectionState, void *contextPtr)
Definition: le_mdc_interface.h:638
Incoming data session (MT-PDP context request)
Definition: le_mdc_interface.h:507
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:606
Platform specific code.
Definition: le_mdc_interface.h:608
LTE TDD.
Definition: le_mdc_interface.h:415
le_mdc_Pdp_t
Definition: le_mdc_interface.h:464
le_mdc_DisconnectionReason_t
Definition: le_mdc_interface.h:518
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:600
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:556
le_result_t le_mdc_GetIPv4GatewayAddress(le_mdc_ProfileRef_t profileRef, char *gatewayAddr, size_t gatewayAddrSize)
HSUPA.
Definition: le_mdc_interface.h:405
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:588
le_result_t le_mdc_StopSession(le_mdc_ProfileRef_t profileRef)
le_result_t le_mdc_GetAPN(le_mdc_ProfileRef_t profileRef, char *apnStr, size_t apnStrSize)
void le_mdc_SetServerDisconnectHandler(le_mdc_DisconnectHandler_t disconnectHandler, void *contextPtr)
le_result_t le_mdc_GetIPv4DNSAddresses(le_mdc_ProfileRef_t profileRef, char *dns1AddrStr, size_t dns1AddrStrSize, char *dns2AddrStr, size_t dns2AddrStrSize)
le_result_t le_mdc_GetIPv6Address(le_mdc_ProfileRef_t profileRef, char *ipAddr, size_t ipAddrSize)
Undefined reason.
Definition: le_mdc_interface.h:610
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:604
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:528
void le_mdc_ConnectService(void)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:524
Authenticating data session.
Definition: le_mdc_interface.h:501
no authentication
Definition: le_mdc_interface.h:485
struct le_mdc_Profile * le_mdc_ProfileRef_t
Definition: le_mdc_interface.h:377
void le_mdc_StopSessionAsync(le_mdc_ProfileRef_t profileRef, le_mdc_SessionHandlerFunc_t handlerPtr, void *contextPtr)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:552
HDR REVB EMPA.
Definition: le_mdc_interface.h:445
HSPA+.
Definition: le_mdc_interface.h:399
S2B.
Definition: le_mdc_interface.h:453
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:594
le_result_t le_mdc_GetInterfaceName(le_mdc_ProfileRef_t profileRef, char *interfaceName, size_t interfaceNameSize)
le_result_t le_mdc_SetPDP(le_mdc_ProfileRef_t profileRef, le_mdc_Pdp_t pdp)
CHAP protocol.
Definition: le_mdc_interface.h:487
WCDMA (UMTS)
Definition: le_mdc_interface.h:395
HDR REVA DPA.
Definition: le_mdc_interface.h:435
HSPA.
Definition: le_mdc_interface.h:397
bool le_mdc_IsIPv6(le_mdc_ProfileRef_t profileRef)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:578
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:548
IS95 1X.
Definition: le_mdc_interface.h:431
Enhanced GPRS (EDGE)
Definition: le_mdc_interface.h:393
IPv6.
Definition: le_mdc_interface.h:470
Unknown.
Definition: le_mdc_interface.h:466
LTE FDD.
Definition: le_mdc_interface.h:413
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:572
Unknown.
Definition: le_mdc_interface.h:387
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:558
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:560
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:576
Dual Cell - HSPA.
Definition: le_mdc_interface.h:409
le_result_t le_mdc_GetBytesCounters(uint64_t *rxBytesPtr, uint64_t *txBytesPtr)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:544
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:598
CDMA2000 HRPD (1xEV-DO)
Definition: le_mdc_interface.h:425
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:586
le_mdc_DisconnectionReason_t le_mdc_GetDisconnectionReason(le_mdc_ProfileRef_t profileRef)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:566
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:596
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:592
void(* le_mdc_DisconnectHandler_t)(void *)
Definition: le_mdc_interface.h:197
le_result_t le_mdc_GetAuthentication(le_mdc_ProfileRef_t profileRef, le_mdc_Auth_t *typePtr, char *userName, size_t userNameSize, char *password, size_t passwordSize)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:542
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:526
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:602
void le_mdc_GetPlatformSpecificFailureConnectionReason(le_mdc_ProfileRef_t profileRef, int32_t *failureTypePtr, int32_t *failureCodePtr)
void le_mdc_RemoveSessionStateHandler(le_mdc_SessionStateHandlerRef_t handlerRef)
void le_mdc_RemoveMtPdpSessionStateHandler(le_mdc_MtPdpSessionStateHandlerRef_t handlerRef)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:540
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:534
le_result_t le_mdc_TryConnectService(void)
HDR REVB MMPA.
Definition: le_mdc_interface.h:447
le_mdc_ProfileRef_t le_mdc_GetProfile(uint32_t index)
Modem has no service.
Definition: le_mdc_interface.h:520
int32_t le_mdc_GetPlatformSpecificDisconnectionCode(le_mdc_ProfileRef_t profileRef)
LTE CA DL.
Definition: le_mdc_interface.h:417
HDR REVA EMPA.
Definition: le_mdc_interface.h:443
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:522
HDR EVDO FMC.
Definition: le_mdc_interface.h:449
CDMA2000 EHRPD.
Definition: le_mdc_interface.h:429
le_result_t le_mdc_StartSession(le_mdc_ProfileRef_t profileRef)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:584
le_result_t le_mdc_ResetBytesCounter(void)
void le_mdc_DisconnectService(void)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:564
struct le_mdc_MtPdpSessionStateHandler * le_mdc_MtPdpSessionStateHandlerRef_t
Definition: le_mdc_interface.h:629
le_result_t le_mdc_GetIPv4Address(le_mdc_ProfileRef_t profileRef, char *ipAddr, size_t ipAddrSize)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:570
HDR REVB DPA.
Definition: le_mdc_interface.h:437
HSDPA.
Definition: le_mdc_interface.h:403
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:582
le_result_t le_mdc_StartBytesCounter(void)
le_mdc_MtPdpSessionStateHandlerRef_t le_mdc_AddMtPdpSessionStateHandler(le_mdc_SessionStateHandlerFunc_t handlerPtr, void *contextPtr)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:530
le_result_t le_mdc_GetIPv6GatewayAddress(le_mdc_ProfileRef_t profileRef, char *gatewayAddr, size_t gatewayAddrSize)
le_mdc_ConState_t
Definition: le_mdc_interface.h:497
LTE.
Definition: le_mdc_interface.h:411
le_mdc_Auth_t
Definition: le_mdc_interface.h:483
le_result_t le_mdc_SetAuthentication(le_mdc_ProfileRef_t profileRef, le_mdc_Auth_t type, const char *LE_NONNULL userName, const char *LE_NONNULL password)
GPRS.
Definition: le_mdc_interface.h:391
le_result_t le_mdc_GetProfileFromApn(const char *LE_NONNULL apnStr, le_mdc_ProfileRef_t *profileRefPtr)
HDR REVA MPA.
Definition: le_mdc_interface.h:439
PAP protocol.
Definition: le_mdc_interface.h:486
uint32_t le_mdc_GetProfileIndex(le_mdc_ProfileRef_t profileRef)
uint32_t le_mdc_NumProfiles(void)
le_result_t le_mdc_SetDefaultAPN(le_mdc_ProfileRef_t profileRef)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:532
LTE CA UL.
Definition: le_mdc_interface.h:419
void(* le_mdc_SessionHandlerFunc_t)(le_mdc_ProfileRef_t profileRef, le_result_t result, void *contextPtr)
Definition: le_mdc_interface.h:667
le_result_t le_mdc_StopBytesCounter(void)
le_result_t le_mdc_RejectMtPdpSession(le_mdc_ProfileRef_t profileRef)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:580
CDMA2000 HRPD (1xEV-DO RevA)
Definition: le_mdc_interface.h:427
GSM.
Definition: le_mdc_interface.h:389
HDR REV0 DPA.
Definition: le_mdc_interface.h:433
TD-SCDMA.
Definition: le_mdc_interface.h:421
le_result_t le_mdc_MapProfileOnNetworkInterface(le_mdc_ProfileRef_t profileRef, const char *LE_NONNULL interfaceName)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:554
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:568
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:550
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:546
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:590
CDMA2000 1X.
Definition: le_mdc_interface.h:423
le_result_t le_mdc_GetIPv6DNSAddresses(le_mdc_ProfileRef_t profileRef, char *dns1AddrStr, size_t dns1AddrStrSize, char *dns2AddrStr, size_t dns2AddrStrSize)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:538
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:536