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  * @deprecated LE_MDC_DISC_USER_AUTHENTIFICATION_FAILURE is deprecated.
375  * LE_MDC_DISC_USER_AUTHENTICATION_FAILURE should be used instead.
376  */
377 //--------------------------------------------------------------------------------------------------
378 #define LE_MDC_DISC_USER_AUTHENTIFICATION_FAILURE 7
379 
380 //--------------------------------------------------------------------------------------------------
381 /**
382  * Reference to a modem data connection profile.
383  */
384 //--------------------------------------------------------------------------------------------------
385 typedef struct le_mdc_Profile* le_mdc_ProfileRef_t;
386 
387 
388 //--------------------------------------------------------------------------------------------------
389 /**
390  * Enumeration of data bearer technologies.
391  */
392 //--------------------------------------------------------------------------------------------------
393 typedef enum
394 {
396  ///< Unknown
398  ///< GSM
400  ///< GPRS
402  ///< Enhanced GPRS (EDGE)
404  ///< WCDMA (UMTS)
406  ///< HSPA
408  ///< HSPA+
410  ///< Dual Cell - HSPA+
412  ///< HSDPA
414  ///< HSUPA
416  ///< Dual Cell - HSUPA
418  ///< Dual Cell - HSPA
420  ///< LTE
422  ///< LTE FDD
424  ///< LTE TDD
426  ///< LTE CA DL
428  ///< LTE CA UL
430  ///< TD-SCDMA
432  ///< CDMA2000 1X
434  ///< CDMA2000 HRPD (1xEV-DO)
436  ///< CDMA2000 HRPD (1xEV-DO RevA)
438  ///< CDMA2000 EHRPD
440  ///< IS95 1X
442  ///< HDR REV0 DPA
444  ///< HDR REVA DPA
446  ///< HDR REVB DPA
448  ///< HDR REVA MPA
450  ///< HDR REVB MPA
452  ///< HDR REVA EMPA
454  ///< HDR REVB EMPA
456  ///< HDR REVB MMPA
458  ///< HDR EVDO FMC
460  ///< 64 QAM
462  ///< S2B
463 }
465 
466 
467 //--------------------------------------------------------------------------------------------------
468 /**
469  * Enumeration of Packet Data Protocol.
470  */
471 //--------------------------------------------------------------------------------------------------
472 typedef enum
473 {
475  ///< Unknown
477  ///< IPv4
479  ///< IPv6
481  ///< IPv4 and IPv6
482 }
484 
485 
486 //--------------------------------------------------------------------------------------------------
487 /**
488  * Authentication bit mask.
489  */
490 //--------------------------------------------------------------------------------------------------
491 typedef enum
492 {
493  LE_MDC_AUTH_NONE = 0x1, ///< no authentication
494  LE_MDC_AUTH_PAP = 0x2, ///< PAP protocol
495  LE_MDC_AUTH_CHAP = 0x4 ///< CHAP protocol
496 }
498 
499 
500 //--------------------------------------------------------------------------------------------------
501 /**
502  * Enumeration of connection state.
503  */
504 //--------------------------------------------------------------------------------------------------
505 typedef enum
506 {
508  ///< Data session is disconnected
510  ///< Authenticating data session
512  ///< Data session is connected
514  ///< Suspending data session
516  ///< Incoming data session (MT-PDP context request)
517 }
519 
520 
521 //--------------------------------------------------------------------------------------------------
522 /**
523  * Enumeration of the possible reasons for the disconnection.
524  */
525 //--------------------------------------------------------------------------------------------------
526 typedef enum
527 {
529  ///< Modem has no service
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 I1
593  ///< cf. 3GPP 24.008 Annex I1
595  ///< cf. 3GPP 24.008 Annex I1
597  ///< cf. 3GPP 24.008 Annex I1
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  ///< cf. 3GPP 24.008 Annex I2
611  ///< cf. 3GPP 24.008 Annex I2
613  ///< cf. 3GPP 24.008 Annex I2
615  ///< cf. 3GPP 24.008 Annex I2
617  ///< Platform specific code.
619  ///< Undefined reason.
620 }
622 
623 
624 //--------------------------------------------------------------------------------------------------
625 /**
626  * Reference type used by Add/Remove functions for EVENT 'le_mdc_SessionState'
627  */
628 //--------------------------------------------------------------------------------------------------
629 typedef struct le_mdc_SessionStateHandler* le_mdc_SessionStateHandlerRef_t;
630 
631 
632 //--------------------------------------------------------------------------------------------------
633 /**
634  * Reference type used by Add/Remove functions for EVENT 'le_mdc_MtPdpSessionState'
635  */
636 //--------------------------------------------------------------------------------------------------
637 typedef struct le_mdc_MtPdpSessionStateHandler* le_mdc_MtPdpSessionStateHandlerRef_t;
638 
639 
640 //--------------------------------------------------------------------------------------------------
641 /**
642  * Handler for Data session connection state changes.
643  */
644 //--------------------------------------------------------------------------------------------------
645 typedef void (*le_mdc_SessionStateHandlerFunc_t)
646 (
647  le_mdc_ProfileRef_t profileRef,
648  ///< Profile reference
649  le_mdc_ConState_t ConnectionState,
650  ///< Data session connection state.
651  void* contextPtr
652  ///<
653 );
654 
655 //--------------------------------------------------------------------------------------------------
656 /**
657  * Handler for MT-PDP Data session connection state changes.
658  */
659 //--------------------------------------------------------------------------------------------------
661 (
662  le_mdc_ConState_t ConnectionState,
663  ///< MT-PDP Data session connection state.
664  void* contextPtr
665  ///<
666 );
667 
668 //--------------------------------------------------------------------------------------------------
669 /**
670  * Handler for asynchronous session start and stop result response
671  *
672  */
673 //--------------------------------------------------------------------------------------------------
674 typedef void (*le_mdc_SessionHandlerFunc_t)
675 (
676  le_mdc_ProfileRef_t profileRef,
677  ///< Profile reference
678  le_result_t result,
679  ///< Session start or stop result response
680  void* contextPtr
681  ///<
682 );
683 
684 //--------------------------------------------------------------------------------------------------
685 /**
686  * Add handler function for EVENT 'le_mdc_SessionState'
687  *
688  * This event provides information on data session connection state changes for the given profileRef.
689  *
690  */
691 //--------------------------------------------------------------------------------------------------
693 (
694  le_mdc_ProfileRef_t profileRef,
695  ///< [IN] The profile object of interest
697  ///< [IN]
698  void* contextPtr
699  ///< [IN]
700 );
701 
702 //--------------------------------------------------------------------------------------------------
703 /**
704  * Remove handler function for EVENT 'le_mdc_SessionState'
705  */
706 //--------------------------------------------------------------------------------------------------
708 (
710  ///< [IN]
711 );
712 
713 //--------------------------------------------------------------------------------------------------
714 /**
715  * Add handler function for EVENT 'le_mdc_MtPdpSessionState'
716  *
717  * This event provides information on data session connection state changes for the given profileRef.
718  *
719  */
720 //--------------------------------------------------------------------------------------------------
722 (
724  ///< [IN]
725  void* contextPtr
726  ///< [IN]
727 );
728 
729 //--------------------------------------------------------------------------------------------------
730 /**
731  * Remove handler function for EVENT 'le_mdc_MtPdpSessionState'
732  */
733 //--------------------------------------------------------------------------------------------------
735 (
737  ///< [IN]
738 );
739 
740 //--------------------------------------------------------------------------------------------------
741 /**
742  * Get Profile Reference for index
743  *
744  * @note Create a new profile if the profile's index can't be found.
745  *
746  * @warning 0 is not a valid index.
747  *
748  * @warning Ensure to check the list of supported data profiles for your specific platform.
749  *
750  * @return
751  * - Reference to the data profile
752  * - NULL if the profile index does not exist
753  */
754 //--------------------------------------------------------------------------------------------------
756 (
757  uint32_t index
758  ///< [IN] index of the profile.
759 );
760 
761 //--------------------------------------------------------------------------------------------------
762 /**
763  * Get the index for the given Profile.
764  *
765  * @return
766  * - index of the profile in the modem
767  *
768  * @note
769  * The process exits, if an invalid profile object is given
770  */
771 //--------------------------------------------------------------------------------------------------
772 uint32_t le_mdc_GetProfileIndex
773 (
774  le_mdc_ProfileRef_t profileRef
775  ///< [IN] Query this profile object
776 );
777 
778 //--------------------------------------------------------------------------------------------------
779 /**
780  * Start profile data session.
781  *
782  * @return
783  * - LE_OK on success
784  * - LE_BAD_PARAMETER if input parameter is incorrect
785  * - LE_DUPLICATE if the data session is already connected for the given profile
786  * - LE_FAULT for other failures
787  *
788  * @note
789  * The process exits, if an invalid profile object is given
790  */
791 //--------------------------------------------------------------------------------------------------
793 (
794  le_mdc_ProfileRef_t profileRef
795  ///< [IN] Start data session for this profile object
796 );
797 
798 //--------------------------------------------------------------------------------------------------
799 /**
800  * Start profile data session.
801  *
802  * @note
803  * The process exits, if an invalid profile object is given
804  */
805 //--------------------------------------------------------------------------------------------------
807 (
808  le_mdc_ProfileRef_t profileRef,
809  ///< [IN] Start data session for this profile object
810  le_mdc_SessionHandlerFunc_t handlerPtr,
811  ///< [IN] Handler for start data session result
812  void* contextPtr
813  ///< [IN]
814 );
815 
816 //--------------------------------------------------------------------------------------------------
817 /**
818  * Stop profile data session.
819  *
820  * @return
821  * - LE_OK on success
822  * - LE_BAD_PARAMETER if the input parameter is not valid
823  * - LE_FAULT for other failures
824  *
825  * @note
826  * The process exits, if an invalid profile object is given
827  */
828 //--------------------------------------------------------------------------------------------------
830 (
831  le_mdc_ProfileRef_t profileRef
832  ///< [IN] Stop data session for this profile object
833 );
834 
835 //--------------------------------------------------------------------------------------------------
836 /**
837  * Stop profile data session.
838  *
839  * @note
840  * The process exits, if an invalid profile object is given
841  */
842 //--------------------------------------------------------------------------------------------------
844 (
845  le_mdc_ProfileRef_t profileRef,
846  ///< [IN] Stop data session for this profile object
847  le_mdc_SessionHandlerFunc_t handlerPtr,
848  ///< [IN] Handler for stop data session result
849  void* contextPtr
850  ///< [IN]
851 );
852 
853 //--------------------------------------------------------------------------------------------------
854 /**
855  * Reject MT-PDP profile data session.
856  *
857  * @return
858  * - LE_OK on success
859  * - LE_BAD_PARAMETER if the input parameter is not valid
860  * - LE_FAULT for other failures
861  *
862  * @note
863  * The process exits, if an invalid profile object is given
864  */
865 //--------------------------------------------------------------------------------------------------
867 (
868  le_mdc_ProfileRef_t profileRef
869  ///< [IN] Reject MT-PDP data session for this profile object
870 );
871 
872 //--------------------------------------------------------------------------------------------------
873 /**
874  * Get the current data session state.
875  *
876  * @return
877  * - LE_OK on success
878  * - LE_BAD_PARAMETER if an input parameter is not valid
879  * - LE_FAULT on failure
880  *
881  * @note
882  * The process exits, if an invalid profile object is given
883  */
884 //--------------------------------------------------------------------------------------------------
886 (
887  le_mdc_ProfileRef_t profileRef,
888  ///< [IN] Query this profile object
889  le_mdc_ConState_t* connectionStatePtr
890  ///< [OUT] The data session state
891 );
892 
893 //--------------------------------------------------------------------------------------------------
894 /**
895  * Get the network interface name, if the data session is connected.
896  *
897  * @return
898  * - LE_OK on success
899  * - LE_OVERFLOW if the interface name would not fit in interfaceNameStr
900  * - LE_FAULT for all other errors
901  *
902  * @note
903  * The process exits, if an invalid profile object is given
904  */
905 //--------------------------------------------------------------------------------------------------
907 (
908  le_mdc_ProfileRef_t profileRef,
909  ///< [IN] Query this profile object
910  char* interfaceName,
911  ///< [OUT] The name of the network interface
912  size_t interfaceNameSize
913  ///< [IN]
914 );
915 
916 //--------------------------------------------------------------------------------------------------
917 /**
918  * Get the IPv4 address for the given profile, if the data session is connected and has an IPv4
919  * address.
920  *
921  * @return
922  * - LE_OK on success
923  * - LE_OVERFLOW if the IP address would not fit in ipAddrStr
924  * - LE_FAULT for all other errors
925  *
926  * @note
927  * The process exits, if an invalid profile object is given
928  */
929 //--------------------------------------------------------------------------------------------------
931 (
932  le_mdc_ProfileRef_t profileRef,
933  ///< [IN] Query this profile object
934  char* ipAddr,
935  ///< [OUT] The IP address in dotted format
936  size_t ipAddrSize
937  ///< [IN]
938 );
939 
940 //--------------------------------------------------------------------------------------------------
941 /**
942  * Get the gateway IPv4 address for the given profile, if the data session is connected and has an
943  * IPv4 address.
944  *
945  * @return
946  * - LE_OK on success
947  * - LE_OVERFLOW if the IP address would not fit in gatewayAddrStr
948  * - LE_FAULT for all other errors
949  *
950  * @note
951  * The process exits, if an invalid profile object is given
952  */
953 //--------------------------------------------------------------------------------------------------
955 (
956  le_mdc_ProfileRef_t profileRef,
957  ///< [IN] Query this profile object
958  char* gatewayAddr,
959  ///< [OUT] The gateway IP address in dotted format
960  size_t gatewayAddrSize
961  ///< [IN]
962 );
963 
964 //--------------------------------------------------------------------------------------------------
965 /**
966  * Get the primary/secondary DNS v4 addresses for the given profile, if the data session is
967  * connected and has an IPv4 address.
968  *
969  * @return
970  * - LE_OK on success
971  * - LE_OVERFLOW if the IP address would not fit in buffer
972  * - LE_FAULT for all other errors
973  *
974  * @note
975  * - If only one DNS address is available, then it will be returned, and an empty string will
976  * be returned for the unavailable address
977  * - The process exits, if an invalid profile object is given
978  */
979 //--------------------------------------------------------------------------------------------------
981 (
982  le_mdc_ProfileRef_t profileRef,
983  ///< [IN] Query this profile object
984  char* dns1AddrStr,
985  ///< [OUT] The primary DNS IP address in dotted format
986  size_t dns1AddrStrSize,
987  ///< [IN]
988  char* dns2AddrStr,
989  ///< [OUT] The secondary DNS IP address in dotted format
990  size_t dns2AddrStrSize
991  ///< [IN]
992 );
993 
994 //--------------------------------------------------------------------------------------------------
995 /**
996  * Get the IPv6 address for the given profile, if the data session is connected and has an IPv6
997  * address.
998  *
999  * @return
1000  * - LE_OK on success
1001  * - LE_OVERFLOW if the IP address would not fit in ipAddrStr
1002  * - LE_FAULT for all other errors
1003  *
1004  * @note
1005  * The process exits, if an invalid profile object is given
1006  */
1007 //--------------------------------------------------------------------------------------------------
1009 (
1010  le_mdc_ProfileRef_t profileRef,
1011  ///< [IN] Query this profile object
1012  char* ipAddr,
1013  ///< [OUT] The IP address in dotted format
1014  size_t ipAddrSize
1015  ///< [IN]
1016 );
1017 
1018 //--------------------------------------------------------------------------------------------------
1019 /**
1020  * Get the gateway IPv6 address for the given profile, if the data session is connected and has an
1021  * IPv6 address.
1022  *
1023  * @return
1024  * - LE_OK on success
1025  * - LE_OVERFLOW if the IP address would not fit in gatewayAddrStr
1026  * - LE_FAULT for all other errors
1027  *
1028  * @note
1029  * The process exits, if an invalid profile object is given
1030  */
1031 //--------------------------------------------------------------------------------------------------
1033 (
1034  le_mdc_ProfileRef_t profileRef,
1035  ///< [IN] Query this profile object
1036  char* gatewayAddr,
1037  ///< [OUT] The gateway IP address in dotted format
1038  size_t gatewayAddrSize
1039  ///< [IN]
1040 );
1041 
1042 //--------------------------------------------------------------------------------------------------
1043 /**
1044  * Get the primary/secondary DNS v6 addresses, if the data session is connected and has an IPv6
1045  * address.
1046  *
1047  * @return
1048  * - LE_OK on success
1049  * - LE_OVERFLOW if the IP address can't fit in buffer
1050  * - LE_FAULT for all other errors
1051  *
1052  * @note
1053  * - If only one DNS address is available, it will be returned, and an empty string will
1054  * be returned for the unavailable address.
1055  * - The process exits, if an invalid profile object is given
1056  */
1057 //--------------------------------------------------------------------------------------------------
1059 (
1060  le_mdc_ProfileRef_t profileRef,
1061  ///< [IN] Query this profile object
1062  char* dns1AddrStr,
1063  ///< [OUT] The primary DNS IP address in dotted format
1064  size_t dns1AddrStrSize,
1065  ///< [IN]
1066  char* dns2AddrStr,
1067  ///< [OUT] The secondary DNS IP address in dotted format
1068  size_t dns2AddrStrSize
1069  ///< [IN]
1070 );
1071 
1072 //--------------------------------------------------------------------------------------------------
1073 /**
1074  * Allow the caller to know if the given profile is actually supporting IPv4, if the data session
1075  * is connected.
1076  *
1077  * @return TRUE if PDP type is IPv4, FALSE otherwise.
1078  *
1079  * @note If the caller is passing a bad pointer into this function, it is a fatal error, the
1080  * function will not return.
1081  */
1082 //--------------------------------------------------------------------------------------------------
1083 bool le_mdc_IsIPv4
1084 (
1085  le_mdc_ProfileRef_t profileRef
1086  ///< [IN] Query this profile object
1087 );
1088 
1089 //--------------------------------------------------------------------------------------------------
1090 /**
1091  * Allow the caller to know if the given profile is actually supporting IPv6, if the data session
1092  * is connected.
1093  *
1094  * @return TRUE if PDP type is IPv6, FALSE otherwise.
1095  *
1096  * @note If the caller is passing a bad pointer into this function, it is a fatal error, the
1097  * function will not return.
1098  */
1099 //--------------------------------------------------------------------------------------------------
1100 bool le_mdc_IsIPv6
1101 (
1102  le_mdc_ProfileRef_t profileRef
1103  ///< [IN] Query this profile object
1104 );
1105 
1106 //--------------------------------------------------------------------------------------------------
1107 /**
1108  * Get the Data Bearer Technology for the given profile, if the data session is connected.
1109  *
1110  * @return
1111  * - LE_OK on success
1112  * - LE_FAULT for all other errors
1113  *
1114  * @note
1115  * The process exits, if an invalid profile object is given
1116  */
1117 //--------------------------------------------------------------------------------------------------
1119 (
1120  le_mdc_ProfileRef_t profileRef,
1121  ///< [IN] Query this profile object
1122  le_mdc_DataBearerTechnology_t* downlinkDataBearerTechPtrPtr,
1123  ///< [OUT] downlink data bearer technology
1124  le_mdc_DataBearerTechnology_t* uplinkDataBearerTechPtrPtr
1125  ///< [OUT] uplink data bearer technology
1126 );
1127 
1128 //--------------------------------------------------------------------------------------------------
1129 /**
1130  * Get number of bytes received/transmitted without error since the last reset.
1131  *
1132  * @return
1133  * - LE_OK on success
1134  * - LE_FAULT for all other errors
1135  *
1136  * @note
1137  * - The process exits, if an invalid pointer is given
1138  */
1139 //--------------------------------------------------------------------------------------------------
1141 (
1142  uint64_t* rxBytesPtr,
1143  ///< [OUT] bytes amount received since the last counter reset
1144  uint64_t* txBytesPtr
1145  ///< [OUT] bytes amount transmitted since the last counter reset
1146 );
1147 
1148 //--------------------------------------------------------------------------------------------------
1149 /**
1150  * Reset received/transmitted data flow statistics
1151  *
1152  * @return
1153  * - LE_OK on success
1154  * - LE_FAULT for all other errors
1155  */
1156 //--------------------------------------------------------------------------------------------------
1158 (
1159  void
1160 );
1161 
1162 //--------------------------------------------------------------------------------------------------
1163 /**
1164  * Stop collecting received/transmitted data flow statistics
1165  *
1166  * @return
1167  * - LE_OK on success
1168  * - LE_FAULT for all other errors
1169  */
1170 //--------------------------------------------------------------------------------------------------
1172 (
1173  void
1174 );
1175 
1176 //--------------------------------------------------------------------------------------------------
1177 /**
1178  * Start collecting received/transmitted data flow statistics
1179  *
1180  * @return
1181  * - LE_OK on success
1182  * - LE_FAULT for all other errors
1183  */
1184 //--------------------------------------------------------------------------------------------------
1186 (
1187  void
1188 );
1189 
1190 //--------------------------------------------------------------------------------------------------
1191 /**
1192  * Set the Packet Data Protocol (PDP) for the given profile.
1193  *
1194  * @return
1195  * - LE_OK on success
1196  * - LE_BAD_PARAMETER if the PDP is not supported
1197  * - LE_FAULT if the data session is currently connected for the given profile
1198  *
1199  * @note
1200  * The process exits, if an invalid profile object is given
1201  */
1202 //--------------------------------------------------------------------------------------------------
1204 (
1205  le_mdc_ProfileRef_t profileRef,
1206  ///< [IN] Query this profile object
1207  le_mdc_Pdp_t pdp
1208  ///< [IN] The Packet Data Protocol
1209 );
1210 
1211 //--------------------------------------------------------------------------------------------------
1212 /**
1213  * Get the Packet Data Protocol (PDP) for the given profile.
1214  *
1215  * @return
1216  * - packet data protocol value
1217  *
1218  * @note
1219  * The process exits, if an invalid profile object is given
1220  */
1221 //--------------------------------------------------------------------------------------------------
1223 (
1224  le_mdc_ProfileRef_t profileRef
1225  ///< [IN] Query this profile object
1226 );
1227 
1228 //--------------------------------------------------------------------------------------------------
1229 /**
1230  * Set the Access Point Name (APN) for the given profile.
1231  *
1232  * The APN must be an ASCII string.
1233  *
1234  * @return
1235  * - LE_OK on success
1236  * - LE_BAD_PARAMETER if an input parameter is not valid
1237  * - LE_FAULT if the data session is currently connected for the given profile
1238  *
1239  * @note If APN is too long (max APN_NAME_MAX_LEN digits), it is a fatal error, the
1240  * function will not return.
1241  *
1242  * @warning The maximum APN length might be limited by the platform.
1243  * Please refer to the platform documentation @ref platformConstraintsMdc.
1244  *
1245  * @note
1246  * The process exits, if an invalid profile object is given
1247  */
1248 //--------------------------------------------------------------------------------------------------
1250 (
1251  le_mdc_ProfileRef_t profileRef,
1252  ///< [IN] Query this profile object
1253  const char* LE_NONNULL apnStr
1254  ///< [IN] The Access Point Name
1255 );
1256 
1257 //--------------------------------------------------------------------------------------------------
1258 /**
1259  * Set the Access Point Name (APN) for the given profile according to the SIM identification
1260  * number (ICCID). If no APN is found using the ICCID, fall back on the home network (MCC/MNC)
1261  * to determine the default APN.
1262  *
1263  * @return
1264  * - LE_OK on success
1265  * - LE_BAD_PARAMETER if an input parameter is not valid
1266  * - LE_FAULT for all other errors
1267  *
1268  * @note
1269  * The process exits if an invalid profile object is given
1270  */
1271 //--------------------------------------------------------------------------------------------------
1273 (
1274  le_mdc_ProfileRef_t profileRef
1275  ///< [IN] Query this profile object
1276 );
1277 
1278 //--------------------------------------------------------------------------------------------------
1279 /**
1280  * Get the Access Point Name (APN) for the given profile.
1281  *
1282  * @return
1283  * - LE_OK on success
1284  * - LE_BAD_PARAMETER if an input parameter is not valid
1285  * - LE_OVERFLOW if the APN is is too long
1286  * - LE_FAULT on failed
1287  *
1288  * @note
1289  * The process exits, if an invalid profile object is given
1290  */
1291 //--------------------------------------------------------------------------------------------------
1293 (
1294  le_mdc_ProfileRef_t profileRef,
1295  ///< [IN] Query this profile object
1296  char* apnStr,
1297  ///< [OUT] The Access Point Name
1298  size_t apnStrSize
1299  ///< [IN]
1300 );
1301 
1302 //--------------------------------------------------------------------------------------------------
1303 /**
1304  * Set authentication property
1305  *
1306  * @return
1307  * - LE_OK on success
1308  *
1309  * @note
1310  * - The process exits, if userName or password are NULL when type is not PA_MDC_AUTH_NONE
1311  * - The process exits, if an invalid profile object is given
1312  * @note If userName is too long (max USER_NAME_MAX_LEN digits), it is a fatal error, the
1313  * function will not return.
1314  * @note If password is too long (max PASSWORD_NAME_MAX_LEN digits), it is a fatal error, the
1315  * function will not return.
1316  * @note Both PAP and CHAP authentication can be set for 3GPP network: in this case, the device
1317  * decides which authentication procedure is performed. For example, the device can have a
1318  * policy to select the most secure authentication mechanism.
1319  *
1320  */
1321 //--------------------------------------------------------------------------------------------------
1323 (
1324  le_mdc_ProfileRef_t profileRef,
1325  ///< [IN] Query this profile object
1326  le_mdc_Auth_t type,
1327  ///< [IN] Authentication type
1328  const char* LE_NONNULL userName,
1329  ///< [IN] UserName used by authentication
1330  const char* LE_NONNULL password
1331  ///< [IN] Password used by authentication
1332 );
1333 
1334 //--------------------------------------------------------------------------------------------------
1335 /**
1336  * Get authentication property
1337  *
1338  * @return
1339  * - LE_OK on success
1340  * - LE_BAD_PARAMETER if an input parameter is not valid
1341  * - LE_OVERFLOW userName or password are too small
1342  * - LE_FAULT on failed
1343  *
1344  * @note
1345  * The process exits, if an invalid profile object is given
1346  */
1347 //--------------------------------------------------------------------------------------------------
1349 (
1350  le_mdc_ProfileRef_t profileRef,
1351  ///< [IN] Query this profile object
1352  le_mdc_Auth_t* typePtr,
1353  ///< [OUT] Authentication type
1354  char* userName,
1355  ///< [OUT] UserName used by authentication
1356  size_t userNameSize,
1357  ///< [IN]
1358  char* password,
1359  ///< [OUT] Password used by authentication
1360  size_t passwordSize
1361  ///< [IN]
1362 );
1363 
1364 //--------------------------------------------------------------------------------------------------
1365 /**
1366  * Get the number of profiles on the modem.
1367  *
1368  * @return
1369  * - number of profiles existing on modem
1370  */
1371 //--------------------------------------------------------------------------------------------------
1372 uint32_t le_mdc_NumProfiles
1373 (
1374  void
1375 );
1376 
1377 //--------------------------------------------------------------------------------------------------
1378 /**
1379  * Get a profile selected by its APN
1380  *
1381  * @return
1382  * - LE_OK on success
1383  * - LE_BAD_PARAMETER if an input parameter is not valid
1384  * - LE_NOT_FOUND if the requested APN is not found
1385  */
1386 //--------------------------------------------------------------------------------------------------
1388 (
1389  const char* LE_NONNULL apnStr,
1390  ///< [IN] The Access Point Name
1391  le_mdc_ProfileRef_t* profileRefPtr
1392  ///< [OUT] profile reference
1393 );
1394 
1395 //--------------------------------------------------------------------------------------------------
1396 /**
1397  * Called to get the disconnection reason.
1398  *
1399  * @return The disconnection reason.
1400  *
1401  * @note If the caller is passing a bad pointer into this function, it is a fatal error, the
1402  * function will not return.
1403  */
1404 //--------------------------------------------------------------------------------------------------
1406 (
1407  le_mdc_ProfileRef_t profileRef
1408  ///< [IN] profile reference
1409 );
1410 
1411 //--------------------------------------------------------------------------------------------------
1412 /**
1413  * Called to get the platform specific disconnection code.
1414  *
1415  * Refer to @ref platformConstraintsSpecificErrorCodes for platform specific
1416  * disconnection code description.
1417  *
1418  * @return The platform specific disconnection code.
1419  *
1420  * @note If the caller is passing a bad pointer into this function, it is a fatal error, the
1421  * function will not return.
1422  */
1423 //--------------------------------------------------------------------------------------------------
1425 (
1426  le_mdc_ProfileRef_t profileRef
1427  ///< [IN] profile reference
1428 );
1429 
1430 //--------------------------------------------------------------------------------------------------
1431 /**
1432  * Called to get the platform specific connection failure reason.
1433  *
1434  * @note If the caller is passing a bad pointer into this function, it is a fatal error, the
1435  * function will not return.
1436  */
1437 //--------------------------------------------------------------------------------------------------
1439 (
1440  le_mdc_ProfileRef_t profileRef,
1441  ///< [IN] profile reference
1442  int32_t* failureTypePtr,
1443  ///< [OUT] platform specific failure type
1444  int32_t* failureCodePtr
1445  ///< [OUT] platform specific failure code
1446 );
1447 
1448 //--------------------------------------------------------------------------------------------------
1449 /**
1450  * Map a profile on a network interface
1451  *
1452  * * @return
1453  * - LE_OK on success
1454  * - LE_UNSUPPORTED if not supported by the target
1455  * - LE_FAULT for all other errors
1456  *
1457  */
1458 //--------------------------------------------------------------------------------------------------
1460 (
1461  le_mdc_ProfileRef_t profileRef,
1462  ///< [IN] Profile reference
1463  const char* LE_NONNULL interfaceName
1464  ///< [IN] Network interface name
1465 );
1466 
1467 #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:582
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:542
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:513
Data session is disconnected.
Definition: le_mdc_interface.h:507
le_mdc_DataBearerTechnology_t
Definition: le_mdc_interface.h:393
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:661
HDR REVB MPA.
Definition: le_mdc_interface.h:449
Dual Cell - HSPA+.
Definition: le_mdc_interface.h:409
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:570
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:511
Dual Cell - HSUPA.
Definition: le_mdc_interface.h:415
struct le_mdc_SessionStateHandler * le_mdc_SessionStateHandlerRef_t
Definition: le_mdc_interface.h:629
IPv4 and IPv6.
Definition: le_mdc_interface.h:480
le_result_t
Definition: le_basics.h:35
bool le_mdc_IsIPv4(le_mdc_ProfileRef_t profileRef)
IPv4.
Definition: le_mdc_interface.h:476
64 QAM
Definition: le_mdc_interface.h:459
void(* le_mdc_SessionStateHandlerFunc_t)(le_mdc_ProfileRef_t profileRef, le_mdc_ConState_t ConnectionState, void *contextPtr)
Definition: le_mdc_interface.h:646
Incoming data session (MT-PDP context request)
Definition: le_mdc_interface.h:515
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:614
Platform specific code.
Definition: le_mdc_interface.h:616
LTE TDD.
Definition: le_mdc_interface.h:423
le_mdc_Pdp_t
Definition: le_mdc_interface.h:472
le_mdc_DisconnectionReason_t
Definition: le_mdc_interface.h:526
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:608
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:564
le_result_t le_mdc_GetIPv4GatewayAddress(le_mdc_ProfileRef_t profileRef, char *gatewayAddr, size_t gatewayAddrSize)
HSUPA.
Definition: le_mdc_interface.h:413
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:596
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:618
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:612
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:536
void le_mdc_ConnectService(void)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:532
Authenticating data session.
Definition: le_mdc_interface.h:509
no authentication
Definition: le_mdc_interface.h:493
struct le_mdc_Profile * le_mdc_ProfileRef_t
Definition: le_mdc_interface.h:385
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:560
HDR REVB EMPA.
Definition: le_mdc_interface.h:453
HSPA+.
Definition: le_mdc_interface.h:407
S2B.
Definition: le_mdc_interface.h:461
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:602
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:495
WCDMA (UMTS)
Definition: le_mdc_interface.h:403
HDR REVA DPA.
Definition: le_mdc_interface.h:443
HSPA.
Definition: le_mdc_interface.h:405
bool le_mdc_IsIPv6(le_mdc_ProfileRef_t profileRef)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:586
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:556
IS95 1X.
Definition: le_mdc_interface.h:439
Enhanced GPRS (EDGE)
Definition: le_mdc_interface.h:401
IPv6.
Definition: le_mdc_interface.h:478
Unknown.
Definition: le_mdc_interface.h:474
LTE FDD.
Definition: le_mdc_interface.h:421
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:580
Unknown.
Definition: le_mdc_interface.h:395
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:566
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:568
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:584
Dual Cell - HSPA.
Definition: le_mdc_interface.h:417
le_result_t le_mdc_GetBytesCounters(uint64_t *rxBytesPtr, uint64_t *txBytesPtr)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:552
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:606
CDMA2000 HRPD (1xEV-DO)
Definition: le_mdc_interface.h:433
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:594
le_mdc_DisconnectionReason_t le_mdc_GetDisconnectionReason(le_mdc_ProfileRef_t profileRef)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:574
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:604
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:600
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:550
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:534
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:610
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:548
le_result_t le_mdc_TryConnectService(void)
HDR REVB MMPA.
Definition: le_mdc_interface.h:455
le_mdc_ProfileRef_t le_mdc_GetProfile(uint32_t index)
Modem has no service.
Definition: le_mdc_interface.h:528
int32_t le_mdc_GetPlatformSpecificDisconnectionCode(le_mdc_ProfileRef_t profileRef)
LTE CA DL.
Definition: le_mdc_interface.h:425
HDR REVA EMPA.
Definition: le_mdc_interface.h:451
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:530
HDR EVDO FMC.
Definition: le_mdc_interface.h:457
CDMA2000 EHRPD.
Definition: le_mdc_interface.h:437
le_result_t le_mdc_StartSession(le_mdc_ProfileRef_t profileRef)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:592
le_result_t le_mdc_ResetBytesCounter(void)
void le_mdc_DisconnectService(void)
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:572
struct le_mdc_MtPdpSessionStateHandler * le_mdc_MtPdpSessionStateHandlerRef_t
Definition: le_mdc_interface.h:637
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:578
HDR REVB DPA.
Definition: le_mdc_interface.h:445
HSDPA.
Definition: le_mdc_interface.h:411
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:590
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:538
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:505
LTE.
Definition: le_mdc_interface.h:419
le_mdc_Auth_t
Definition: le_mdc_interface.h:491
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:399
le_result_t le_mdc_GetProfileFromApn(const char *LE_NONNULL apnStr, le_mdc_ProfileRef_t *profileRefPtr)
HDR REVA MPA.
Definition: le_mdc_interface.h:447
PAP protocol.
Definition: le_mdc_interface.h:494
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:540
LTE CA UL.
Definition: le_mdc_interface.h:427
void(* le_mdc_SessionHandlerFunc_t)(le_mdc_ProfileRef_t profileRef, le_result_t result, void *contextPtr)
Definition: le_mdc_interface.h:675
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:588
CDMA2000 HRPD (1xEV-DO RevA)
Definition: le_mdc_interface.h:435
GSM.
Definition: le_mdc_interface.h:397
HDR REV0 DPA.
Definition: le_mdc_interface.h:441
TD-SCDMA.
Definition: le_mdc_interface.h:429
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:562
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:576
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:558
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:554
cf. 3GPP 24.008 Annex I2
Definition: le_mdc_interface.h:598
CDMA2000 1X.
Definition: le_mdc_interface.h:431
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:546
cf. 3GPP 24.008 Annex I1
Definition: le_mdc_interface.h:544