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  * When the data session is stopped, the disconnection reason can be known using
130  * le_mdc_GetDisconnectionReason() or le_mdc_GetPlatformSpecificDisconnectionCode() (refer to
131  * your platform documentation for further details).
132  *
133  * When the data session connection fails, the failure reason can be known using
134  * le_mdc_GetDisconnectionReason(), le_mdc_GetPlatformSpecificDisconnectionCode() or
135  * le_mdc_GetPlatformSpecificFailureConnectionReason() (refer to your platform documentation
136  * for further details).
137  *
138  * A sample code can be seen in the following page:
139  * - @subpage c_mdcDataSessions
140  *
141  * @section le_mdc_dataStatistics Data Statistics
142  *
143  * Data bytes received/transmitted can be access through le_mdc_GetBytesCounters().
144  * These values correspond to the number of bytes received/transmitted since the last software reset
145  * or the last le_mdc_ResetBytesCounter() called.
146  * Making these value persistent after a software reboot is the client responsibility.
147  *
148  * A sample code can be seen in the following page:
149  * - @subpage c_mdcDataStatistics
150  *
151  * <HR>
152  *
153  * Copyright (C) Sierra Wireless Inc.
154  */
155 /**
156  * @page c_mdcDataProfiles Sample code for Data Profiles
157  *
158  * @snippet "apps/test/modemServices/mdc/mdcIntegrationTest/mdcTestComp/mdcTest.c" Profiles
159  */
160 /**
161  * @page c_mdcDataSessions Sample code for network interface settings
162  *
163  * @snippet "apps/test/modemServices/mdc/mdcIntegrationTest/mdcTestComp/mdcTest.c" Sessions
164  */
165 /**
166  * @page c_mdcDataStatistics Sample code for Data Statistics
167  *
168  * @snippet "apps/test/modemServices/mdc/mdcIntegrationTest/mdcTestComp/mdcTest.c" Statistics
169  */
170 /**
171  * @file le_mdc_interface.h
172  *
173  * Legato @ref c_mdc include file.
174  *
175  * Copyright (C) Sierra Wireless Inc.
176  */
177 
178 #ifndef LE_MDC_INTERFACE_H_INCLUDE_GUARD
179 #define LE_MDC_INTERFACE_H_INCLUDE_GUARD
180 
181 
182 #include "legato.h"
183 
184 
185 //--------------------------------------------------------------------------------------------------
186 /**
187  * Type for handler called when a server disconnects.
188  */
189 //--------------------------------------------------------------------------------------------------
190 typedef void (*le_mdc_DisconnectHandler_t)(void *);
191 
192 //--------------------------------------------------------------------------------------------------
193 /**
194  *
195  * Connect the current client thread to the service providing this API. Block until the service is
196  * available.
197  *
198  * For each thread that wants to use this API, either ConnectService or TryConnectService must be
199  * called before any other functions in this API. Normally, ConnectService is automatically called
200  * for the main thread, but not for any other thread. For details, see @ref apiFilesC_client.
201  *
202  * This function is created automatically.
203  */
204 //--------------------------------------------------------------------------------------------------
206 (
207  void
208 );
209 
210 //--------------------------------------------------------------------------------------------------
211 /**
212  *
213  * Try to connect the current client thread to the service providing this API. Return with an error
214  * if the service is not available.
215  *
216  * For each thread that wants to use this API, either ConnectService or TryConnectService must be
217  * called before any other functions in this API. Normally, ConnectService is automatically called
218  * for the main thread, but not for any other thread. For details, see @ref apiFilesC_client.
219  *
220  * This function is created automatically.
221  *
222  * @return
223  * - LE_OK if the client connected successfully to the service.
224  * - LE_UNAVAILABLE if the server is not currently offering the service to which the client is
225  * bound.
226  * - LE_NOT_PERMITTED if the client interface is not bound to any service (doesn't have a binding).
227  * - LE_COMM_ERROR if the Service Directory cannot be reached.
228  */
229 //--------------------------------------------------------------------------------------------------
231 (
232  void
233 );
234 
235 //--------------------------------------------------------------------------------------------------
236 /**
237  * Set handler called when server disconnection is detected.
238  *
239  * When a server connection is lost, call this handler then exit with LE_FATAL. If a program wants
240  * to continue without exiting, it should call longjmp() from inside the handler.
241  */
242 //--------------------------------------------------------------------------------------------------
244 (
245  le_mdc_DisconnectHandler_t disconnectHandler,
246  void *contextPtr
247 );
248 
249 //--------------------------------------------------------------------------------------------------
250 /**
251  *
252  * Disconnect the current client thread from the service providing this API.
253  *
254  * Normally, this function doesn't need to be called. After this function is called, there's no
255  * longer a connection to the service, and the functions in this API can't be used. For details, see
256  * @ref apiFilesC_client.
257  *
258  * This function is created automatically.
259  */
260 //--------------------------------------------------------------------------------------------------
262 (
263  void
264 );
265 
266 
267 //--------------------------------------------------------------------------------------------------
268 /**
269  * Maximum number of bytes in a interface name (not including the null-terminator).
270  */
271 //--------------------------------------------------------------------------------------------------
272 #define LE_MDC_INTERFACE_NAME_MAX_LEN 20
273 
274 //--------------------------------------------------------------------------------------------------
275 /**
276  * Maximum number of bytes in a profile name (including the null-terminator).
277  */
278 //--------------------------------------------------------------------------------------------------
279 #define LE_MDC_INTERFACE_NAME_MAX_BYTES 21
280 
281 //--------------------------------------------------------------------------------------------------
282 /**
283  * Maximum number of bytes in an IPv4 address (not including the null-terminator).
284  */
285 //--------------------------------------------------------------------------------------------------
286 #define LE_MDC_IPV4_ADDR_MAX_LEN 15
287 
288 //--------------------------------------------------------------------------------------------------
289 /**
290  * Maximum number of bytes in an IPv4 address (including the null-terminator).
291  */
292 //--------------------------------------------------------------------------------------------------
293 #define LE_MDC_IPV4_ADDR_MAX_BYTES 16
294 
295 //--------------------------------------------------------------------------------------------------
296 /**
297  * Maximum number of bytes in an IPv6 address (not including the null-terminator).
298  */
299 //--------------------------------------------------------------------------------------------------
300 #define LE_MDC_IPV6_ADDR_MAX_LEN 45
301 
302 //--------------------------------------------------------------------------------------------------
303 /**
304  * Maximum number of bytes in an IPv6 address (including the null-terminator).
305  */
306 //--------------------------------------------------------------------------------------------------
307 #define LE_MDC_IPV6_ADDR_MAX_BYTES 46
308 
309 //--------------------------------------------------------------------------------------------------
310 /**
311  * Maximum number of bytes in a apn name (not including the null-terminator).
312  */
313 //--------------------------------------------------------------------------------------------------
314 #define LE_MDC_APN_NAME_MAX_LEN 100
315 
316 //--------------------------------------------------------------------------------------------------
317 /**
318  * Maximum number of bytes in a apn name (including the null-terminator).
319  */
320 //--------------------------------------------------------------------------------------------------
321 #define LE_MDC_APN_NAME_MAX_BYTES 101
322 
323 //--------------------------------------------------------------------------------------------------
324 /**
325  * Maximum number of bytes in a user name (not including the null-terminator).
326  */
327 //--------------------------------------------------------------------------------------------------
328 #define LE_MDC_USER_NAME_MAX_LEN 64
329 
330 //--------------------------------------------------------------------------------------------------
331 /**
332  * Maximum number of bytes in a user name (including the null-terminator).
333  */
334 //--------------------------------------------------------------------------------------------------
335 #define LE_MDC_USER_NAME_MAX_BYTES 65
336 
337 //--------------------------------------------------------------------------------------------------
338 /**
339  * Maximum number of bytes in a password name (not including the null-terminator).
340  */
341 //--------------------------------------------------------------------------------------------------
342 #define LE_MDC_PASSWORD_NAME_MAX_LEN 100
343 
344 //--------------------------------------------------------------------------------------------------
345 /**
346  * Maximum number of bytes in a password name (including the null-terminator).
347  */
348 //--------------------------------------------------------------------------------------------------
349 #define LE_MDC_PASSWORD_NAME_MAX_BYTES 101
350 
351 //--------------------------------------------------------------------------------------------------
352 /**
353  * Default profile definition.
354  */
355 //--------------------------------------------------------------------------------------------------
356 #define LE_MDC_DEFAULT_PROFILE -1
357 
358 //--------------------------------------------------------------------------------------------------
359 /**
360  * Default profile definition for Bearer Independent Protocol (BIP).
361  */
362 //--------------------------------------------------------------------------------------------------
363 #define LE_MDC_SIMTOOLKIT_BIP_DEFAULT_PROFILE -2
364 
365 //--------------------------------------------------------------------------------------------------
366 /**
367  * Reference to a modem data connection profile.
368  */
369 //--------------------------------------------------------------------------------------------------
370 typedef struct le_mdc_Profile* le_mdc_ProfileRef_t;
371 
372 
373 //--------------------------------------------------------------------------------------------------
374 /**
375  * Enumeration of data bearer technologies.
376  */
377 //--------------------------------------------------------------------------------------------------
378 typedef enum
379 {
381  ///< Unknown
383  ///< GSM
385  ///< GPRS
387  ///< Enhanced GPRS (EDGE)
389  ///< WCDMA (UMTS)
391  ///< HSPA
393  ///< HSPA+
395  ///< Dual Cell - HSPA+
397  ///< LTE
399  ///< TD-SCDMA
401  ///< CDMA2000 1X
403  ///< CDMA2000 HRPD (1xEV-DO)
405  ///< CDMA2000 HRPD (1xEV-DO RevA)
407  ///< CDMA2000 EHRPD
408 }
410 
411 
412 //--------------------------------------------------------------------------------------------------
413 /**
414  * Enumeration of Packet Data Protocol.
415  */
416 //--------------------------------------------------------------------------------------------------
417 typedef enum
418 {
420  ///< Unknown
422  ///< IPv4
424  ///< IPv6
426  ///< IPv4 and IPv6
427 }
429 
430 
431 //--------------------------------------------------------------------------------------------------
432 /**
433  * Authentication bit mask.
434  */
435 //--------------------------------------------------------------------------------------------------
436 typedef enum
437 {
438  LE_MDC_AUTH_NONE = 0x1, ///< no authentication
439  LE_MDC_AUTH_PAP = 0x2, ///< PAP protocol
440  LE_MDC_AUTH_CHAP = 0x4 ///< CHAP protocol
441 }
443 
444 
445 //--------------------------------------------------------------------------------------------------
446 /**
447  * Enumeration of connection state.
448  */
449 //--------------------------------------------------------------------------------------------------
450 typedef enum
451 {
453  ///< Data session is disconnected
455  ///< Authenticating data session
457  ///< Data session is connected
459  ///< Suspending data session
461  ///< Incoming data session (MT-PDP context request)
462 }
464 
465 
466 //--------------------------------------------------------------------------------------------------
467 /**
468  * Enumeration of the possible reasons for the disconnection.
469  */
470 //--------------------------------------------------------------------------------------------------
471 typedef enum
472 {
474  ///< Modem has no service
476  ///< cf. 3GPP 24.008 Annex I1
478  ///< cf. 3GPP 24.008 Annex I1
480  ///< cf. 3GPP 24.008 Annex I1
482  ///< cf. 3GPP 24.008 Annex I1
484  ///< cf. 3GPP 24.008 Annex I1
486  ///< cf. 3GPP 24.008 Annex I1
488  ///< cf. 3GPP 24.008 Annex I1
490  ///< cf. 3GPP 24.008 Annex I1
492  ///< cf. 3GPP 24.008 Annex I1
494  ///< cf. 3GPP 24.008 Annex I1
496  ///< cf. 3GPP 24.008 Annex I1
498  ///< cf. 3GPP 24.008 Annex I1
500  ///< cf. 3GPP 24.008 Annex I1
502  ///< cf. 3GPP 24.008 Annex I1
504  ///< cf. 3GPP 24.008 Annex I1
506  ///< cf. 3GPP 24.008 Annex I1
508  ///< cf. 3GPP 24.008 Annex I1
510  ///< cf. 3GPP 24.008 Annex I1
512  ///< cf. 3GPP 24.008 Annex I1
514  ///< cf. 3GPP 24.008 Annex I1
516  ///< cf. 3GPP 24.008 Annex I1
518  ///< cf. 3GPP 24.008 Annex I1
520  ///< cf. 3GPP 24.008 Annex I1
522  ///< cf. 3GPP 24.008 Annex I1
524  ///< cf. 3GPP 24.008 Annex I1
526  ///< cf. 3GPP 24.008 Annex I1
528  ///< cf. 3GPP 24.008 Annex I1
530  ///< cf. 3GPP 24.008 Annex I1
532  ///< cf. 3GPP 24.008 Annex I1
534  ///< cf. 3GPP 24.008 Annex I1
536  ///< cf. 3GPP 24.008 Annex I1
538  ///< cf. 3GPP 24.008 Annex I1
540  ///< cf. 3GPP 24.008 Annex I1
542  ///< cf. 3GPP 24.008 Annex I1
544  ///< cf. 3GPP 24.008 Annex I2
546  ///< cf. 3GPP 24.008 Annex I2
548  ///< cf. 3GPP 24.008 Annex I2
550  ///< cf. 3GPP 24.008 Annex I2
552  ///< cf. 3GPP 24.008 Annex I2
554  ///< cf. 3GPP 24.008 Annex I2
556  ///< cf. 3GPP 24.008 Annex I2
558  ///< cf. 3GPP 24.008 Annex I2
560  ///< cf. 3GPP 24.008 Annex I2
562  ///< Platform specific code.
564  ///< Undefined reason.
565 }
567 
568 
569 //--------------------------------------------------------------------------------------------------
570 /**
571  * Reference type used by Add/Remove functions for EVENT 'le_mdc_SessionState'
572  */
573 //--------------------------------------------------------------------------------------------------
574 typedef struct le_mdc_SessionStateHandler* le_mdc_SessionStateHandlerRef_t;
575 
576 
577 //--------------------------------------------------------------------------------------------------
578 /**
579  * Reference type used by Add/Remove functions for EVENT 'le_mdc_MtPdpSessionState'
580  */
581 //--------------------------------------------------------------------------------------------------
582 typedef struct le_mdc_MtPdpSessionStateHandler* le_mdc_MtPdpSessionStateHandlerRef_t;
583 
584 
585 //--------------------------------------------------------------------------------------------------
586 /**
587  * Handler for Data session connection state changes.
588  */
589 //--------------------------------------------------------------------------------------------------
590 typedef void (*le_mdc_SessionStateHandlerFunc_t)
591 (
592  le_mdc_ProfileRef_t profileRef,
593  ///< Profile reference
594  le_mdc_ConState_t ConnectionState,
595  ///< Data session connection state.
596  void* contextPtr
597  ///<
598 );
599 
600 //--------------------------------------------------------------------------------------------------
601 /**
602  * Handler for MT-PDP Data session connection state changes.
603  */
604 //--------------------------------------------------------------------------------------------------
606 (
607  le_mdc_ConState_t ConnectionState,
608  ///< MT-PDP Data session connection state.
609  void* contextPtr
610  ///<
611 );
612 
613 //--------------------------------------------------------------------------------------------------
614 /**
615  * Handler for asynchronous session start and stop result response
616  *
617  */
618 //--------------------------------------------------------------------------------------------------
619 typedef void (*le_mdc_SessionHandlerFunc_t)
620 (
621  le_mdc_ProfileRef_t profileRef,
622  ///< Profile reference
623  le_result_t result,
624  ///< Session start or stop result response
625  void* contextPtr
626  ///<
627 );
628 
629 //--------------------------------------------------------------------------------------------------
630 /**
631  * Add handler function for EVENT 'le_mdc_SessionState'
632  *
633  * This event provides information on data session connection state changes for the given profileRef.
634  *
635  */
636 //--------------------------------------------------------------------------------------------------
638 (
639  le_mdc_ProfileRef_t profileRef,
640  ///< [IN] The profile object of interest
642  ///< [IN]
643  void* contextPtr
644  ///< [IN]
645 );
646 
647 //--------------------------------------------------------------------------------------------------
648 /**
649  * Remove handler function for EVENT 'le_mdc_SessionState'
650  */
651 //--------------------------------------------------------------------------------------------------
653 (
655  ///< [IN]
656 );
657 
658 //--------------------------------------------------------------------------------------------------
659 /**
660  * Add handler function for EVENT 'le_mdc_MtPdpSessionState'
661  *
662  * This event provides information on data session connection state changes for the given profileRef.
663  *
664  */
665 //--------------------------------------------------------------------------------------------------
667 (
669  ///< [IN]
670  void* contextPtr
671  ///< [IN]
672 );
673 
674 //--------------------------------------------------------------------------------------------------
675 /**
676  * Remove handler function for EVENT 'le_mdc_MtPdpSessionState'
677  */
678 //--------------------------------------------------------------------------------------------------
680 (
682  ///< [IN]
683 );
684 
685 //--------------------------------------------------------------------------------------------------
686 /**
687  * Get Profile Reference for index
688  *
689  * @note Create a new profile if the profile's index can't be found.
690  *
691  * @warning 0 is not a valid index.
692  *
693  * @warning Ensure to check the list of supported data profiles for your specific platform.
694  *
695  * @return
696  * - Reference to the data profile
697  * - NULL if the profile index does not exist
698  */
699 //--------------------------------------------------------------------------------------------------
701 (
702  uint32_t index
703  ///< [IN] index of the profile.
704 );
705 
706 //--------------------------------------------------------------------------------------------------
707 /**
708  * Get the index for the given Profile.
709  *
710  * @return
711  * - index of the profile in the modem
712  *
713  * @note
714  * The process exits, if an invalid profile object is given
715  */
716 //--------------------------------------------------------------------------------------------------
717 uint32_t le_mdc_GetProfileIndex
718 (
719  le_mdc_ProfileRef_t profileRef
720  ///< [IN] Query this profile object
721 );
722 
723 //--------------------------------------------------------------------------------------------------
724 /**
725  * Start profile data session.
726  *
727  * @return
728  * - LE_OK on success
729  * - LE_BAD_PARAMETER if input parameter is incorrect
730  * - LE_DUPLICATE if the data session is already connected for the given profile
731  * - LE_FAULT for other failures
732  *
733  * @note
734  * The process exits, if an invalid profile object is given
735  */
736 //--------------------------------------------------------------------------------------------------
738 (
739  le_mdc_ProfileRef_t profileRef
740  ///< [IN] Start data session for this profile object
741 );
742 
743 //--------------------------------------------------------------------------------------------------
744 /**
745  * Start profile data session.
746  *
747  * @note
748  * The process exits, if an invalid profile object is given
749  */
750 //--------------------------------------------------------------------------------------------------
752 (
753  le_mdc_ProfileRef_t profileRef,
754  ///< [IN] Start data session for this profile object
755  le_mdc_SessionHandlerFunc_t handlerPtr,
756  ///< [IN] Handler for start data session result
757  void* contextPtr
758  ///< [IN]
759 );
760 
761 //--------------------------------------------------------------------------------------------------
762 /**
763  * Stop profile data session.
764  *
765  * @return
766  * - LE_OK on success
767  * - LE_BAD_PARAMETER if the input parameter is not valid
768  * - LE_FAULT for other failures
769  *
770  * @note
771  * The process exits, if an invalid profile object is given
772  */
773 //--------------------------------------------------------------------------------------------------
775 (
776  le_mdc_ProfileRef_t profileRef
777  ///< [IN] Stop data session for this profile object
778 );
779 
780 //--------------------------------------------------------------------------------------------------
781 /**
782  * Stop profile data session.
783  *
784  * @note
785  * The process exits, if an invalid profile object is given
786  */
787 //--------------------------------------------------------------------------------------------------
789 (
790  le_mdc_ProfileRef_t profileRef,
791  ///< [IN] Stop data session for this profile object
792  le_mdc_SessionHandlerFunc_t handlerPtr,
793  ///< [IN] Handler for stop data session result
794  void* contextPtr
795  ///< [IN]
796 );
797 
798 //--------------------------------------------------------------------------------------------------
799 /**
800  * Reject MT-PDP profile data session.
801  *
802  * @return
803  * - LE_OK on success
804  * - LE_BAD_PARAMETER if the input parameter is not valid
805  * - LE_FAULT for other failures
806  *
807  * @note
808  * The process exits, if an invalid profile object is given
809  */
810 //--------------------------------------------------------------------------------------------------
812 (
813  le_mdc_ProfileRef_t profileRef
814  ///< [IN] Reject MT-PDP data session for this profile object
815 );
816 
817 //--------------------------------------------------------------------------------------------------
818 /**
819  * Get the current data session state.
820  *
821  * @return
822  * - LE_OK on success
823  * - LE_BAD_PARAMETER if an input parameter is not valid
824  * - LE_FAULT on failure
825  *
826  * @note
827  * The process exits, if an invalid profile object is given
828  */
829 //--------------------------------------------------------------------------------------------------
831 (
832  le_mdc_ProfileRef_t profileRef,
833  ///< [IN] Query this profile object
834  le_mdc_ConState_t* connectionStatePtr
835  ///< [OUT] The data session state
836 );
837 
838 //--------------------------------------------------------------------------------------------------
839 /**
840  * Get the network interface name, if the data session is connected.
841  *
842  * @return
843  * - LE_OK on success
844  * - LE_OVERFLOW if the interface name would not fit in interfaceNameStr
845  * - LE_FAULT for all other errors
846  *
847  * @note
848  * The process exits, if an invalid profile object is given
849  */
850 //--------------------------------------------------------------------------------------------------
852 (
853  le_mdc_ProfileRef_t profileRef,
854  ///< [IN] Query this profile object
855  char* interfaceName,
856  ///< [OUT] The name of the network interface
857  size_t interfaceNameSize
858  ///< [IN]
859 );
860 
861 //--------------------------------------------------------------------------------------------------
862 /**
863  * Get the IPv4 address for the given profile, if the data session is connected and has an IPv4
864  * address.
865  *
866  * @return
867  * - LE_OK on success
868  * - LE_OVERFLOW if the IP address would not fit in ipAddrStr
869  * - LE_FAULT for all other errors
870  *
871  * @note
872  * The process exits, if an invalid profile object is given
873  */
874 //--------------------------------------------------------------------------------------------------
876 (
877  le_mdc_ProfileRef_t profileRef,
878  ///< [IN] Query this profile object
879  char* ipAddr,
880  ///< [OUT] The IP address in dotted format
881  size_t ipAddrSize
882  ///< [IN]
883 );
884 
885 //--------------------------------------------------------------------------------------------------
886 /**
887  * Get the gateway IPv4 address for the given profile, if the data session is connected and has an
888  * IPv4 address.
889  *
890  * @return
891  * - LE_OK on success
892  * - LE_OVERFLOW if the IP address would not fit in gatewayAddrStr
893  * - LE_FAULT for all other errors
894  *
895  * @note
896  * The process exits, if an invalid profile object is given
897  */
898 //--------------------------------------------------------------------------------------------------
900 (
901  le_mdc_ProfileRef_t profileRef,
902  ///< [IN] Query this profile object
903  char* gatewayAddr,
904  ///< [OUT] The gateway IP address in dotted format
905  size_t gatewayAddrSize
906  ///< [IN]
907 );
908 
909 //--------------------------------------------------------------------------------------------------
910 /**
911  * Get the primary/secondary DNS v4 addresses for the given profile, if the data session is
912  * connected and has an IPv4 address.
913  *
914  * @return
915  * - LE_OK on success
916  * - LE_OVERFLOW if the IP address would not fit in buffer
917  * - LE_FAULT for all other errors
918  *
919  * @note
920  * - If only one DNS address is available, then it will be returned, and an empty string will
921  * be returned for the unavailable address
922  * - The process exits, if an invalid profile object is given
923  */
924 //--------------------------------------------------------------------------------------------------
926 (
927  le_mdc_ProfileRef_t profileRef,
928  ///< [IN] Query this profile object
929  char* dns1AddrStr,
930  ///< [OUT] The primary DNS IP address in dotted format
931  size_t dns1AddrStrSize,
932  ///< [IN]
933  char* dns2AddrStr,
934  ///< [OUT] The secondary DNS IP address in dotted format
935  size_t dns2AddrStrSize
936  ///< [IN]
937 );
938 
939 //--------------------------------------------------------------------------------------------------
940 /**
941  * Get the IPv6 address for the given profile, if the data session is connected and has an IPv6
942  * address.
943  *
944  * @return
945  * - LE_OK on success
946  * - LE_OVERFLOW if the IP address would not fit in ipAddrStr
947  * - LE_FAULT for all other errors
948  *
949  * @note
950  * The process exits, if an invalid profile object is given
951  */
952 //--------------------------------------------------------------------------------------------------
954 (
955  le_mdc_ProfileRef_t profileRef,
956  ///< [IN] Query this profile object
957  char* ipAddr,
958  ///< [OUT] The IP address in dotted format
959  size_t ipAddrSize
960  ///< [IN]
961 );
962 
963 //--------------------------------------------------------------------------------------------------
964 /**
965  * Get the gateway IPv6 address for the given profile, if the data session is connected and has an
966  * IPv6 address.
967  *
968  * @return
969  * - LE_OK on success
970  * - LE_OVERFLOW if the IP address would not fit in gatewayAddrStr
971  * - LE_FAULT for all other errors
972  *
973  * @note
974  * The process exits, if an invalid profile object is given
975  */
976 //--------------------------------------------------------------------------------------------------
978 (
979  le_mdc_ProfileRef_t profileRef,
980  ///< [IN] Query this profile object
981  char* gatewayAddr,
982  ///< [OUT] The gateway IP address in dotted format
983  size_t gatewayAddrSize
984  ///< [IN]
985 );
986 
987 //--------------------------------------------------------------------------------------------------
988 /**
989  * Get the primary/secondary DNS v6 addresses, if the data session is connected and has an IPv6
990  * address.
991  *
992  * @return
993  * - LE_OK on success
994  * - LE_OVERFLOW if the IP address can't fit in buffer
995  * - LE_FAULT for all other errors
996  *
997  * @note
998  * - If only one DNS address is available, it will be returned, and an empty string will
999  * be returned for the unavailable address.
1000  * - The process exits, if an invalid profile object is given
1001  */
1002 //--------------------------------------------------------------------------------------------------
1004 (
1005  le_mdc_ProfileRef_t profileRef,
1006  ///< [IN] Query this profile object
1007  char* dns1AddrStr,
1008  ///< [OUT] The primary DNS IP address in dotted format
1009  size_t dns1AddrStrSize,
1010  ///< [IN]
1011  char* dns2AddrStr,
1012  ///< [OUT] The secondary DNS IP address in dotted format
1013  size_t dns2AddrStrSize
1014  ///< [IN]
1015 );
1016 
1017 //--------------------------------------------------------------------------------------------------
1018 /**
1019  * Allow the caller to know if the given profile is actually supporting IPv4, if the data session
1020  * is connected.
1021  *
1022  * @return TRUE if PDP type is IPv4, FALSE otherwise.
1023  *
1024  * @note If the caller is passing a bad pointer into this function, it is a fatal error, the
1025  * function will not return.
1026  */
1027 //--------------------------------------------------------------------------------------------------
1028 bool le_mdc_IsIPv4
1029 (
1030  le_mdc_ProfileRef_t profileRef
1031  ///< [IN] Query this profile object
1032 );
1033 
1034 //--------------------------------------------------------------------------------------------------
1035 /**
1036  * Allow the caller to know if the given profile is actually supporting IPv6, if the data session
1037  * is connected.
1038  *
1039  * @return TRUE if PDP type is IPv6, FALSE otherwise.
1040  *
1041  * @note If the caller is passing a bad pointer into this function, it is a fatal error, the
1042  * function will not return.
1043  */
1044 //--------------------------------------------------------------------------------------------------
1045 bool le_mdc_IsIPv6
1046 (
1047  le_mdc_ProfileRef_t profileRef
1048  ///< [IN] Query this profile object
1049 );
1050 
1051 //--------------------------------------------------------------------------------------------------
1052 /**
1053  * Get the Data Bearer Technology for the given profile, if the data session is connected.
1054  *
1055  * @return
1056  * - LE_OK on success
1057  * - LE_FAULT for all other errors
1058  *
1059  * @note
1060  * The process exits, if an invalid profile object is given
1061  */
1062 //--------------------------------------------------------------------------------------------------
1064 (
1065  le_mdc_ProfileRef_t profileRef,
1066  ///< [IN] Query this profile object
1067  le_mdc_DataBearerTechnology_t* downlinkDataBearerTechPtrPtr,
1068  ///< [OUT] downlink data bearer technology
1069  le_mdc_DataBearerTechnology_t* uplinkDataBearerTechPtrPtr
1070  ///< [OUT] uplink data bearer technology
1071 );
1072 
1073 //--------------------------------------------------------------------------------------------------
1074 /**
1075  * Get number of bytes received/transmitted without error since the last reset.
1076  *
1077  * @return
1078  * - LE_OK on success
1079  * - LE_FAULT for all other errors
1080  *
1081  * @note
1082  * - The process exits, if an invalid pointer is given
1083  */
1084 //--------------------------------------------------------------------------------------------------
1086 (
1087  uint64_t* rxBytesPtr,
1088  ///< [OUT] bytes amount received since the last counter reset
1089  uint64_t* txBytesPtr
1090  ///< [OUT] bytes amount transmitted since the last counter reset
1091 );
1092 
1093 //--------------------------------------------------------------------------------------------------
1094 /**
1095  * Reset received/transmitted data flow statistics
1096  *
1097  * @return
1098  * - LE_OK on success
1099  * - LE_FAULT for all other errors
1100  */
1101 //--------------------------------------------------------------------------------------------------
1103 (
1104  void
1105 );
1106 
1107 //--------------------------------------------------------------------------------------------------
1108 /**
1109  * Set the Packet Data Protocol (PDP) for the given profile.
1110  *
1111  * @return
1112  * - LE_OK on success
1113  * - LE_BAD_PARAMETER if the PDP is not supported
1114  * - LE_FAULT if the data session is currently connected for the given profile
1115  *
1116  * @note
1117  * The process exits, if an invalid profile object is given
1118  */
1119 //--------------------------------------------------------------------------------------------------
1121 (
1122  le_mdc_ProfileRef_t profileRef,
1123  ///< [IN] Query this profile object
1124  le_mdc_Pdp_t pdp
1125  ///< [IN] The Packet Data Protocol
1126 );
1127 
1128 //--------------------------------------------------------------------------------------------------
1129 /**
1130  * Get the Packet Data Protocol (PDP) for the given profile.
1131  *
1132  * @return
1133  * - packet data protocol value
1134  *
1135  * @note
1136  * The process exits, if an invalid profile object is given
1137  */
1138 //--------------------------------------------------------------------------------------------------
1140 (
1141  le_mdc_ProfileRef_t profileRef
1142  ///< [IN] Query this profile object
1143 );
1144 
1145 //--------------------------------------------------------------------------------------------------
1146 /**
1147  * Set the Access Point Name (APN) for the given profile.
1148  *
1149  * The APN must be an ASCII string.
1150  *
1151  * @return
1152  * - LE_OK on success
1153  * - LE_BAD_PARAMETER if an input parameter is not valid
1154  * - LE_FAULT if the data session is currently connected for the given profile
1155  *
1156  * @note If APN is too long (max APN_NAME_MAX_LEN digits), it is a fatal error, the
1157  * function will not return.
1158  *
1159  * @warning The maximum APN length might be limited by the platform.
1160  * Please refer to the platform documentation.
1161  *
1162  * @note
1163  * The process exits, if an invalid profile object is given
1164  */
1165 //--------------------------------------------------------------------------------------------------
1167 (
1168  le_mdc_ProfileRef_t profileRef,
1169  ///< [IN] Query this profile object
1170  const char* LE_NONNULL apnStr
1171  ///< [IN] The Access Point Name
1172 );
1173 
1174 //--------------------------------------------------------------------------------------------------
1175 /**
1176  * Set the Access Point Name (APN) for the given profile according to the SIM identification
1177  * number (ICCID). If no APN is found using the ICCID, fall back on the home network (MCC/MNC)
1178  * to determine the default APN.
1179  *
1180  * @return
1181  * - LE_OK on success
1182  * - LE_BAD_PARAMETER if an input parameter is not valid
1183  * - LE_FAULT for all other errors
1184  *
1185  * @note
1186  * The process exits if an invalid profile object is given
1187  */
1188 //--------------------------------------------------------------------------------------------------
1190 (
1191  le_mdc_ProfileRef_t profileRef
1192  ///< [IN] Query this profile object
1193 );
1194 
1195 //--------------------------------------------------------------------------------------------------
1196 /**
1197  * Get the Access Point Name (APN) for the given profile.
1198  *
1199  * @return
1200  * - LE_OK on success
1201  * - LE_BAD_PARAMETER if an input parameter is not valid
1202  * - LE_OVERFLOW if the APN is is too long
1203  * - LE_FAULT on failed
1204  *
1205  * @note
1206  * The process exits, if an invalid profile object is given
1207  */
1208 //--------------------------------------------------------------------------------------------------
1210 (
1211  le_mdc_ProfileRef_t profileRef,
1212  ///< [IN] Query this profile object
1213  char* apnStr,
1214  ///< [OUT] The Access Point Name
1215  size_t apnStrSize
1216  ///< [IN]
1217 );
1218 
1219 //--------------------------------------------------------------------------------------------------
1220 /**
1221  * Set authentication property
1222  *
1223  * @return
1224  * - LE_OK on success
1225  *
1226  * @note
1227  * - The process exits, if userName or password are NULL when type is not PA_MDC_AUTH_NONE
1228  * - The process exits, if an invalid profile object is given
1229  * @note If userName is too long (max USER_NAME_MAX_LEN digits), it is a fatal error, the
1230  * function will not return.
1231  * @note If password is too long (max PASSWORD_NAME_MAX_LEN digits), it is a fatal error, the
1232  * function will not return.
1233  * @note Both PAP and CHAP authentification can be set for 3GPP network: in this case, the device
1234  * decides which authentication procedure is performed. For example, the device can have a
1235  * policy to select the most secure authentication mechanism.
1236  *
1237  */
1238 //--------------------------------------------------------------------------------------------------
1240 (
1241  le_mdc_ProfileRef_t profileRef,
1242  ///< [IN] Query this profile object
1243  le_mdc_Auth_t type,
1244  ///< [IN] Authentication type
1245  const char* LE_NONNULL userName,
1246  ///< [IN] UserName used by authentication
1247  const char* LE_NONNULL password
1248  ///< [IN] Password used by authentication
1249 );
1250 
1251 //--------------------------------------------------------------------------------------------------
1252 /**
1253  * Get authentication property
1254  *
1255  * @return
1256  * - LE_OK on success
1257  * - LE_BAD_PARAMETER if an input parameter is not valid
1258  * - LE_OVERFLOW userName or password are too small
1259  * - LE_FAULT on failed
1260  *
1261  * @note
1262  * The process exits, if an invalid profile object is given
1263  */
1264 //--------------------------------------------------------------------------------------------------
1266 (
1267  le_mdc_ProfileRef_t profileRef,
1268  ///< [IN] Query this profile object
1269  le_mdc_Auth_t* typePtr,
1270  ///< [OUT] Authentication type
1271  char* userName,
1272  ///< [OUT] UserName used by authentication
1273  size_t userNameSize,
1274  ///< [IN]
1275  char* password,
1276  ///< [OUT] Password used by authentication
1277  size_t passwordSize
1278  ///< [IN]
1279 );
1280 
1281 //--------------------------------------------------------------------------------------------------
1282 /**
1283  * Get the number of profiles on the modem.
1284  *
1285  * @return
1286  * - number of profiles existing on modem
1287  */
1288 //--------------------------------------------------------------------------------------------------
1289 uint32_t le_mdc_NumProfiles
1290 (
1291  void
1292 );
1293 
1294 //--------------------------------------------------------------------------------------------------
1295 /**
1296  * Get a profile selected by its APN
1297  *
1298  * @return
1299  * - LE_OK on success
1300  * - LE_BAD_PARAMETER if an input parameter is not valid
1301  * - LE_NOT_FOUND if the requested APN is not found
1302  */
1303 //--------------------------------------------------------------------------------------------------
1305 (
1306  const char* LE_NONNULL apnStr,
1307  ///< [IN] The Access Point Name
1308  le_mdc_ProfileRef_t* profileRefPtr
1309  ///< [OUT] profile reference
1310 );
1311 
1312 //--------------------------------------------------------------------------------------------------
1313 /**
1314  * Called to get the disconnection reason.
1315  *
1316  * @return The disconnection reason.
1317  *
1318  * @note If the caller is passing a bad pointer into this function, it is a fatal error, the
1319  * function will not return.
1320  */
1321 //--------------------------------------------------------------------------------------------------
1323 (
1324  le_mdc_ProfileRef_t profileRef
1325  ///< [IN] profile reference
1326 );
1327 
1328 //--------------------------------------------------------------------------------------------------
1329 /**
1330  * Called to get the platform specific disconnection code.
1331  *
1332  * @return The platform specific disconnection code.
1333  *
1334  * @note If the caller is passing a bad pointer into this function, it is a fatal error, the
1335  * function will not return.
1336  */
1337 //--------------------------------------------------------------------------------------------------
1339 (
1340  le_mdc_ProfileRef_t profileRef
1341  ///< [IN] profile reference
1342 );
1343 
1344 //--------------------------------------------------------------------------------------------------
1345 /**
1346  * Called to get the platform specific connection failure reason.
1347  *
1348  * @note If the caller is passing a bad pointer into this function, it is a fatal error, the
1349  * function will not return.
1350  */
1351 //--------------------------------------------------------------------------------------------------
1353 (
1354  le_mdc_ProfileRef_t profileRef,
1355  ///< [IN] profile reference
1356  int32_t* failureTypePtr,
1357  ///< [OUT] platform specific failure type
1358  int32_t* failureCodePtr
1359  ///< [OUT] platform specific failure code
1360 );
1361 
1362 //--------------------------------------------------------------------------------------------------
1363 /**
1364  * Map a profile on a network interface
1365  *
1366  * * @return
1367  * - LE_OK on success
1368  * - LE_UNSUPPORTED if not supported by the target
1369  * - LE_FAULT for all other errors
1370  *
1371  */
1372 //--------------------------------------------------------------------------------------------------
1374 (
1375  le_mdc_ProfileRef_t profileRef,
1376  ///< [IN] Profile reference
1377  const char* LE_NONNULL interfaceName
1378  ///< [IN] Network interface name
1379 );
1380 
1381 #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:527
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:458
Data session is disconnected.
Definition: le_mdc_interface.h:452
le_mdc_DataBearerTechnology_t
Definition: le_mdc_interface.h:378
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:606
Dual Cell - HSPA+.
Definition: le_mdc_interface.h:394
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:515
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:456
struct le_mdc_SessionStateHandler * le_mdc_SessionStateHandlerRef_t
Definition: le_mdc_interface.h:574
IPv4 and IPv6.
Definition: le_mdc_interface.h:425
le_result_t
Definition: le_basics.h:35
bool le_mdc_IsIPv4(le_mdc_ProfileRef_t profileRef)
IPv4.
Definition: le_mdc_interface.h:421
void(* le_mdc_SessionStateHandlerFunc_t)(le_mdc_ProfileRef_t profileRef, le_mdc_ConState_t ConnectionState, void *contextPtr)
Definition: le_mdc_interface.h:591
Incoming data session (MT-PDP context request)
Definition: le_mdc_interface.h:460
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:559
Platform specific code.
Definition: le_mdc_interface.h:561
le_mdc_Pdp_t
Definition: le_mdc_interface.h:417
le_mdc_DisconnectionReason_t
Definition: le_mdc_interface.h:471
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:553
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:509
le_result_t le_mdc_GetIPv4GatewayAddress(le_mdc_ProfileRef_t profileRef, char *gatewayAddr, size_t gatewayAddrSize)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:541
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:563
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:557
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:481
void le_mdc_ConnectService(void)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:477
Authenticating data session.
Definition: le_mdc_interface.h:454
no authentication
Definition: le_mdc_interface.h:438
struct le_mdc_Profile * le_mdc_ProfileRef_t
Definition: le_mdc_interface.h:370
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:505
HSPA+.
Definition: le_mdc_interface.h:392
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:547
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:440
WCDMA (UMTS)
Definition: le_mdc_interface.h:388
HSPA.
Definition: le_mdc_interface.h:390
bool le_mdc_IsIPv6(le_mdc_ProfileRef_t profileRef)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:531
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:501
Enhanced GPRS (EDGE)
Definition: le_mdc_interface.h:386
IPv6.
Definition: le_mdc_interface.h:423
Unknown.
Definition: le_mdc_interface.h:419
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:525
Unknown.
Definition: le_mdc_interface.h:380
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:511
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:513
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:529
le_result_t le_mdc_GetBytesCounters(uint64_t *rxBytesPtr, uint64_t *txBytesPtr)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:497
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:551
CDMA2000 HRPD (1xEV-DO)
Definition: le_mdc_interface.h:402
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:539
le_mdc_DisconnectionReason_t le_mdc_GetDisconnectionReason(le_mdc_ProfileRef_t profileRef)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:519
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:549
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:545
void(* le_mdc_DisconnectHandler_t)(void *)
Definition: le_mdc_interface.h:190
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:495
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:479
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:555
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:493
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:487
le_result_t le_mdc_TryConnectService(void)
le_mdc_ProfileRef_t le_mdc_GetProfile(uint32_t index)
Modem has no service.
Definition: le_mdc_interface.h:473
int32_t le_mdc_GetPlatformSpecificDisconnectionCode(le_mdc_ProfileRef_t profileRef)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:475
CDMA2000 EHRPD.
Definition: le_mdc_interface.h:406
le_result_t le_mdc_StartSession(le_mdc_ProfileRef_t profileRef)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:537
le_result_t le_mdc_ResetBytesCounter(void)
void le_mdc_DisconnectService(void)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:517
struct le_mdc_MtPdpSessionStateHandler * le_mdc_MtPdpSessionStateHandlerRef_t
Definition: le_mdc_interface.h:582
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:523
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:535
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:483
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:450
LTE.
Definition: le_mdc_interface.h:396
le_mdc_Auth_t
Definition: le_mdc_interface.h:436
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:384
le_result_t le_mdc_GetProfileFromApn(const char *LE_NONNULL apnStr, le_mdc_ProfileRef_t *profileRefPtr)
PAP protocol.
Definition: le_mdc_interface.h:439
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:485
void(* le_mdc_SessionHandlerFunc_t)(le_mdc_ProfileRef_t profileRef, le_result_t result, void *contextPtr)
Definition: le_mdc_interface.h:620
le_result_t le_mdc_RejectMtPdpSession(le_mdc_ProfileRef_t profileRef)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:533
CDMA2000 HRPD (1xEV-DO RevA)
Definition: le_mdc_interface.h:404
GSM.
Definition: le_mdc_interface.h:382
TD-SCDMA.
Definition: le_mdc_interface.h:398
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:507
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:521
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:503
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:499
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:543
CDMA2000 1X.
Definition: le_mdc_interface.h:400
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:491
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:489