le_mrc_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_mrc Modem Radio Control
14  *
15  * @ref le_mrc_interface.h "API Reference"
16  *
17  * <HR>
18  *
19  * The Modem Radio Control (MRC) APIs is used to control cellular network environments.
20  *
21  * It's important for many M2M apps to know details about cellular network environments (like
22  * network registration and signal quality).
23  * It allows you to limit some M2M services based on the reliability of the network environment, and
24  * provides information to control power consumption (power on or shutdown the radio module).
25  *
26  * @section le_mrc_binding IPC interfaces binding
27  *
28  * All the functions of this API are provided by the @b modemService service.
29  *
30  * Here's a code sample binding to modem services:
31  * @verbatim
32  bindings:
33  {
34  clientExe.clientComponent.le_mrc -> modemService.le_mrc
35  }
36  @endverbatim
37  *
38  * @section le_mrc_power Radio Power Management
39  * le_mrc_SetRadioPower() API allows the application to power up or shutdown the radio module.
40  *
41  * le_mrc_GetRadioPower() API displays radio module power state.
42  *
43  * A sample code can be seen in the following page:
44  * - @subpage c_mrcRadioPower
45  *
46  * @section le_mrc_configuration Radio Configuration preferences
47  *
48  * The following functions let you configure and retrieve the radio configuration preferences:
49  * le_mrc_SetAutomaticRegisterMode(), le_mrc_SetManualRegisterMode() and le_mrc_GetRegisterMode()
50  * let you set/get the selected Scan mode.
51  *
52  * le_mrc_SetBandPreferences(), le_mrc_GetBandPreferences() let you set/get the 2G/3G band
53  * preferences by using a bit mask built with @c le_mrc_BandBitMask_t
54  *
55  * The 2G/3G band preferences can be:
56  * - Band-Class-0-A-System
57  * - Band-Class-0-B-System
58  * - Band-Class-1-All-Blocks
59  * - Band-Class-2-Placeholder
60  * - Band-Class-3-A-System
61  * - Band-Class-4-All-Blocks
62  * - Band-Class-5-All-Blocks
63  * - Band-Class-6
64  * - Band-Class-7
65  * - Band-Class-8
66  * - Band-Class-9
67  * - Band-Class-10
68  * - Band-Class-11
69  * - Band-Class-12
70  * - Band-Class-13
71  * - Band-Class-14
72  * - Band-Class-15
73  * - Band-Class-16
74  * - Band-Class-17
75  * - Band-Class-18
76  * - Band-Class-19
77  * - GSM-DCS-1800
78  * - E-GSM-900 (for Extended GSM 900 band)
79  * - Primary-GSM-900
80  * - GSM-450
81  * - GSM-480
82  * - GSM-750
83  * - GSM-850
84  * - GSMR-900 (for GSM Railways GSM 900 band)
85  * - GSM-PCS-1900
86  * - WCDMA-EU-J-CH-IMT-2100 (for WCDMA Europe, Japan, and China IMT 2100 band)
87  * - WCDMA-US-PCS-1900 (for WCDMA U.S. PCS 1900 band)
88  * - WCDMA-EU-CH-DCS-1800 (for WCDMA Europe and China DCS 1800 band)
89  * - WCDMA-US-1700 (for WCDMA U.S. 1700 band)
90  * - WCDMA-US-850 (for WCDMA U.S. 850 band)
91  * - WCDMA-J-800 (for WCDMA Japan 800 band)
92  * - WCDMA-EU-2600 (for WCDMA Europe 2600 band)
93  * - WCDMA-EU-J-900 (for WCDMA Europe and Japan 900 band)
94  * - WCDMA-J-1700 (for WCDMA Japan 1700 band)
95  *
96  * le_mrc_SetLteBandPreferences(), le_mrc_GetLteBandPreferences() let you set/get the LTE band
97  * preferences by using a bit mask built with @c le_mrc_LteBandBitMask_t.
98  *
99  * The LTE band preferences can be 0 to 43 except 15, 16, 22, 23, and 26 to 32.
100  *
101  * le_mrc_SetTdScdmaBandPreferences(), le_mrc_GetTdScdmaBandPreferences() let you set/get the
102  * TD-SCDMA band preferences by using a bit mask built with @c le_mrc_TdScdmaBandBitMask_t
103  *
104  * The TD-SCDMA band preferences can be 'A' to 'F'
105  *
106  * @warning Ensure to check the supported preferences for your specific platform.
107  *
108  * le_mrc_AddPreferredOperator() , le_mrc_RemovePreferredOperator() to add/remove a preferred
109  * operator by specifying the MCC/MNC and the Radio Access Technology.
110  *
111  * le_mrc_GetPreferredOperatorsList(), le_mrc_GetFirstPreferredOperator(),
112  * le_mrc_GetNextPreferredOperator(), le_mrc_DeletePreferredOperatorsList(),
113  * le_mrc_GetPreferredOperatorDetails() let you retrieve a list of the selected preferred
114  * operators and get their details.
115  *
116  * A sample code can be seen in the following page:
117  * - @subpage c_mrcRadioConfigurationPreferences
118  *
119  * @section le_mrc_AddNetRegRejectHandler Report Network Registration Reject Indication
120  *
121  * The application can register a handler function to report network reject with reject cause,
122  * reject service domain, MNC/MCC code and the Radio Access Technology using
123  * le_mrc_AddNetRegRejectHandler() API (le_mrc_AddNetworkRejectHandler() will be deprecated).
124  *
125  * le_mrc_RemoveNetRegRejectHandler() API uninstalls the handler function.
126  *
127  * @deprecated le_mrc_NetworkRejectHandler() will be removed in near future.
128  * It will be replaced by le_mrc_AddNetRegRejectHandler().
129  *
130  * le_mrc_NetworkRejectHandler Report Network Reject Indication
131  *
132  * The application can register a handler function to report network reject with MNC/MCC code and
133  * the Radio Access Technology using le_mrc_AddNetworkRejectHandler() API.
134  *
135  * le_mrc_RemoveNetworkRejectHandler() API uninstalls the handler function.
136  *
137  * @section le_mrc_capabilities Radio Capabilities
138  *
139  * le_mrc_GetBandCapabilities() let you get the 2G/3G band capabilities by retrieving a bit mask
140  * built with @c le_mrc_BandBitMask_t
141  *
142  * le_mrc_GetLteBandCapabilities() let you get the LTE band capabilities by retrieving a bit mask
143  * built with @c le_mrc_LteBandBitMask_t
144  *
145  * le_mrc_GetTdScdmaBandCapabilities() let you get the TD-SCDMA band capabilities by retrieving
146  * a bit mask built with @c le_mrc_TdScdmaBandBitMask_t
147  *
148  * A sample code can be seen in the following page:
149  * - @subpage c_mrcBandCapabilities
150  *
151  * @section le_mrc_rat Radio Access Technology (RAT)
152  * le_mrc_GetRadioAccessTechInUse() API retrieves the current active Radio Access Technology (RAT).
153  * @note The API returns the RAT only if the device is registered on the network.
154  *
155  * The application can register a handler function to retrieve the Radio Access Technology each time
156  * the RAT changes.
157  *
158  * le_mrc_AddRatChangeHandler() API installs a RAT change handler.
159  *
160  * le_mrc_RemoveRatChangeHandler() API uninstalls the handler function.
161  *
162  * le_mrc_SetRatPreferences(), le_mrc_GetRatPreferences() let you set/get the Radio Access
163  * Technology preferences by using a bit mask built with @c le_mrc_RatBitMask_t.
164  *
165  * The Radio Access Technology preferences can be:
166  * - CDMA (CDMA2000-1X + CDMA2000-HRPD)
167  * - GSM
168  * - UMTS (UMTS)
169  * - TDSCDMA (TD-SCDMA)
170  * - LTE
171  *
172  * @note LE_MRC_BITMASK_RAT_ALL value can be used to select the RAT in automatic mode.
173  *
174  * A sample code can be seen in the following page:
175  * - @subpage c_mrcRAT
176  *
177  * @section le_mrc_registration Network Registration
178  * le_mrc_GetNetRegState() API retrieves the radio module network registration status.
179  *
180  * The application can register a handler function to retrieve the registration status each time the
181  * registration state changes.
182  *
183  * le_mrc_AddNetRegStateEventHandler() API installs a registration state handler.
184  *
185  * le_mrc_RemoveNetRegStateEventHandler() API uninstalls the handler function.
186  * @note If only one handler is registered, the le_mrc_RemoveNetRegStateHandler() API
187  * resets the registration mode to its original value before any handler functions were added.
188  *
189  * le_mrc_SetManualRegisterMode() API registers on a cellular network.
190  *
191  * Call le_mrc_SetManualRegisterModeAsync() function to set the manual registration mode
192  * asynchronously. The function is not blocking. The response will be returned with the
193  * @c le_mrc_ManualSelectionHandlerFunc_t handler function.
194  *
195  * When the network registration fails, the platform specific network registration error code can
196  * be known by using le_mrc_GetPlatformSpecificRegistrationErrorCode() API.
197  * Please refer to @ref platformConstraintsSpecificErrorCodes for platform specific
198  * registration error code description.
199  *
200  * A sample code can be seen in the following page:
201  * - @subpage c_mrcNetworkRegistration
202  *
203  * @section le_mrc_service Packet services state
204  *
205  * le_mrc_GetPacketSwitchedState() API retrieves the current Packet Switched state
206  * @ref le_mrc_NetRegState_t.
207  *
208  * The Packet Switched services state can be:
209  * - NONE
210  * - HOME
211  * - ROAMING
212  *
213  * The application can register a handler function to retrieve the Packet
214  * Switched state each time the service state changes.
215  *
216  * le_mrc_AddPacketSwitchedChangeHandler() API installs a Packet Switched state handler.
217  *
218  * le_mrc_RemovePacketSwitchedChangeHandler() API uninstalls the handler function.
219  *
220  * A sample code can be seen in the following page:
221  * - @subpage c_mrcGetService
222  *
223  * @section le_mrc_signal Signal Quality
224  *
225  * le_mrc_GetSignalQual() retrieves the received signal strength details.
226  *
227  * You must call le_mrc_MeasureSignalMetrics() to measure the signal metrics of the serving cell
228  * (aka the 'serving' cell). It returns a reference of le_mrc_MetricsRef_t type.
229  *
230  * When the signal metrics are no longer needed, you must call le_mrc_DeleteSignalMetrics() to free
231  * all allocated ressources associated with the Metrics object.
232  *
233  * le_mrc_GetRatOfSignalMetrics() returns the Radio Access Technology of the signal measures.
234  *
235  * le_mrc_GetGsmSignalMetrics() the signal strength in dBm and the bit error rate measured on GSM
236  * network.
237  *
238  * le_mrc_GetUmtsSignalMetrics() returns the signal metrics measured on UMTS or TD-SCDMA networks.
239  *
240  * le_mrc_GetLteSignalMetrics() returns the signal metrics measured on LTE network.
241  *
242  * le_mrc_GetCdmaSignalMetrics() returns the signal metrics measured on CDMA network.
243  *
244  * The application can register a handler function to get notifications when the signal strength
245  * changes of a certain threshold value.
246  *
247  * le_mrc_AddSignalStrengthChangeHandler() API installs a signal strength change handler.
248  * The RAT, the lower-range and the upper-range thresholds must be passed as input parameters. These
249  * parameters are updated each time the function is called, the previous thresholds are replaced by
250  * the new ones if the function is called with the same RAT. The event is notified when we cross the
251  * range limits in both direction.
252  *
253  * @warning A fatal error will be thrown if the RAT is not valid and the
254  * le_mrc_AddSignalStrengthChangeHandler function won't return.
255  *
256  * le_mrc_RemoveSignalStrengthChangeHandler() API uninstalls the handler function.
257  *
258  * le_mrc_SetSignalStrengthIndThresholds() API changes or sets new thresholds.
259  *
260  * le_mrc_SetSignalStrengthIndDelta() API sets a signal strength indication delta value for a
261  * specific RAT. The event is notified when the delta range is crossed in both direction.
262  *
263  * A sample code can be seen in the following page:
264  * - @subpage c_mrcQuality
265  *
266  * @section le_mrc_location Serving cell's location information
267  *
268  * le_mrc_GetServingCellId() retrieves the the serving Cell Identifier.
269  *
270  * le_mrc_GetServingCellLocAreaCode() retrieves the Location Area Code of the serving cell.
271  *
272  * le_mrc_GetServingCellLteTracAreaCode() retrieves the Tracking Area Code of the serving cell
273  * (LTE only).
274  *
275  * le_mrc_GetServingCellEarfcn() retrieves the serving cell E-UTRA Absolute Radio Frequency
276  * Channel Number (EARFCN, defined in 3GPP TS 36.101). The EARFCN is in the range from 0 to 262143.
277  *
278  * le_mrc_GetServingCellTimingAdvance() retrieves the serving cell timing advance index value.
279  * UINT32_MAX value is returned if the value is not available. The index value returned is defined
280  * by 3GPP 36.213. The index value is in the range from 0 to 1280.
281  *
282  * le_mrc_GetPhysicalServingLteCellId() retrieves the physical serving cell Id in LTE. The physical
283  * cell Id is in the range from 0 to 503.
284  *
285  * le_mrc_GetServingCellGsmBsic() retrieves the Base Station Identity Code (BSIC) for the serving
286  * cell on GSM network.
287  *
288  * le_mrc_GetServingCellScramblingCode() retrieves the primary scrambling code for the serving cell
289  * on UMTS network.
290  *
291  * The BSIC is a local colour code (CC) that allows a Mobile Station (MS) to distinguish between
292  * different neighbouring base stations. BSIC is a 6-bit length code structured the following way:
293  * NCC (PLMN colour code) 3 bits + BCC (BS colour code) 3 bits. More information is available
294  * under the 3GPP reference 23.003 (Base Station Identify Code (BSIC) )
295  *
296  * A sample code can be seen in the following page:
297  * - @subpage c_mrcLocationinformation
298  *
299  * @section le_mrc_network_information Current Network Information
300  * le_mrc_GetCurrentNetworkName() retrieves the Current Network Name.
301  * le_mrc_GetCurrentNetworkMccMnc() retrieves the Current Network PLMN information.
302  *
303  * A sample code can be seen in the following page:
304  * - @subpage c_mrcGetCurrentNetwork
305  *
306  * @section le_mrc_networkScan Network Scan
307  *
308  * Call le_mrc_PerformCellularNetworkScan() to fill a list of all network in sight.
309  * You can go through all Scan Information by calling le_mrc_GetFirstCellularNetworkScan() and
310  * le_mrc_GetNextCellularNetworkScan().
311  *
312  * Call le_mrc_PerformCellularNetworkScanAsync() to start a network scan asynchronously. The
313  * function is not blocking. The scan list reference will be returned with the handler function
314  * response (@c le_mrc_CellularNetworkScanHandlerFunc_t).
315  *
316  * For each Scan Information, you can call:
317  *
318  * - le_mrc_GetCellularNetworkMccMnc() to have the operator code.
319  * - le_mrc_GetCellularNetworkName() to get the operator name.
320  * - le_mrc_GetCellularNetworkRat() to get the radio access technology.
321  * - le_mrc_IsCellularNetworkInUse() to check if this is currently in use by the network.
322  * - le_mrc_IsCellularNetworkAvailable() to check if this is available.
323  * - le_mrc_IsCellularNetworkHome() to check if this is in home status.
324  * - le_mrc_IsCellularNetworkForbidden() to check if this is forbidden by the network.
325  *
326  * le_mrc_DeleteCellularNetworkScan() should be called when you do not need the list anymore.
327  *
328  * A sample code can be seen in the following page:
329  * - @subpage c_mrcNetworkScan
330  *
331  * @section le_mrc_PcinetworkScan PCI Network Scan
332  *
333  * Call le_mrc_PerformPciNetworkScan() to fill a list of all neighboring cells.
334  * The Pci scan is used to get the according MCC/MNC for each neightboring cells ID. Not that a cell
335  * may contain more than one MCC/MNC when sevral plmn sharing the same cell.
336  *
337  * You can go through all Scan Information by calling le_mrc_GetFirstPciScanInfo() and
338  * le_mrc_GetNextPciScanInfo(). Note that each cell info contains a list of mcc/mnc, you can go
339  * through all mcc/mnc Information for each cell by calling le_mrc_GetFirstPlmnInfo()
340  * and le_mrc_GetNextPlmnInfo(), this two APIs return a reference to PlmnInformation, then use
341  * le_mrc_GetPciScanMccMnc() by giving this reference as parameter to get the Mcc/Mnc of the Plmn.
342  *
343  * Call le_mrc_PerformPciNetworkScanAsync()to start a pci scan asynchronously. The
344  * function is not blocking. The scan list reference will be returned with the handler function
345  * response (@c le_mrc_PciNetworkScanHandlerFunc_t).
346  *
347  *
348  * For Pci Network Scan Information, you can call:
349  *
350  * - le_mrc_GetPciScanCellId() to get the physical id of each cell.
351  * - le_mrc_GetPciScanGlobalCellId() to get the global id of each cell.
352  * - le_mrc_GetPciScanMccMnc() to get the Mcc/Mnc of each plmn on each cell.
353  * - le_mrc_DeletePciNetworkScan() should be called when you do not need the list anymore.
354  *
355  * A sample code can be seen in the following page:
356  * - @subpage c_mrcPciScan
357  *
358  * @section le_mrc_ngbr Neighboring Cells Information
359  *
360  * @warning The following functions do not apply to CDMA network.
361  *
362  * You must call le_mrc_GetNeighborCellsInfo() to retrieve the neighboring cells
363  * information. It returns a reference of le_mrc_NeighborCellsRef_t type.
364  *
365  * When the neighboring cells information is no longer needed, you must call
366  * le_mrc_DeleteNeighborCellsInfo() to free all allocated resources associated with the
367  * object.
368  *
369  * Then, you can use the following function to get the information:
370  * - le_mrc_GetFirstNeighborCellInfo() and le_mrc_GetFirstNeighborCellInfo() allow to go among
371  * the single cell information retrieved with le_mrc_GetNeighborCellsInfo(). These two functions
372  * return a reference of le_mrc_CellInfoRef_t type.
373  * - le_mrc_GetNeighborCellId() gets the identifier of the cell specified with the
374  * le_mrc_CellInfoRef_t parameter (can be called for any kind of RAT). UINT32_MAX value is
375  * returned if the value is not available.
376  * - le_mrc_GetNeighborCellLocAreaCode() gets the location area code of the cell specified with the
377  * le_mrc_CellInfoRef_t parameter (can be called for any kind of RAT). UINT16_MAX value is
378  * returned if the value is not available.
379  * - le_mrc_GetNeighborCellRxLevel() gets the signal strength (in dBm) of the cell specified with
380  * the le_mrc_CellInfoRef_t parameter (can be called for any kind of RAT).
381  * - le_mrc_GetNeighborCellRat() gets the Radio Access Technology of the cell specified with
382  * the le_mrc_CellInfoRef_t parameter.
383  * - le_mrc_GetNeighborCellUmtsEcIo() gets the Ec/Io (the received energy per chip divided by the
384  * power density in the band measured in dBm on the primary CPICH channel of serving cell) of the
385  * cell specified with the le_mrc_CellInfoRef_t parameter.
386  * - le_mrc_GetNeighborCellLteIntraFreq() gets the RSRP and RSRQ of the Interfrequency of the cell
387  * specified with the le_mrc_CellInfoRef_t parameter.
388  * - le_mrc_GetNeighborCellLteInterFreq() gets the RSRP and RSRQ of the Interfrequency of the cell
389  * specified with the le_mrc_CellInfoRef_t parameter.
390  * - le_mrc_GetNeighborCellEarfcn() gets the neighbor Cell Frequency Channel Number (EARFCN).
391  * The EARFCN is in the range from 0 to 262143.
392  * - le_mrc_GetPhysicalNeighborLteCellId() gets the physical neighbor cell Id in LTE. The physical
393  * cell Id is in the range from 0 to 503.
394  * - le_mrc_GetNeighborCellGsmBsic() retrieves the Base Station Identity Code (BSIC) for the cell
395  * specified with the le_mrc_CellInfoRef_t parameter.
396  * - le_mrc_GetNeighborCellScramblingCode() retrieves the primary scrambling code for the cell
397  * specified with the le_mrc_CellInfoRef_t parameter.
398  *
399  * A sample code can be seen in the following page:
400  * - @subpage c_mrcNeighborCells
401  *
402  * @section le_mrc_jamming Jamming detection
403  *
404  * The jamming detection algorithm is based on power measurements and cell synchronization actions
405  * performed during a GSM network scan procedure.
406  * During this procedure some intermediate results are reported, that allows user to take some
407  * preventive actions if necessary.
408  * This result is reported as a jammed state probability. See @ref le_mrc_JammingStatus_t
409  * enumeration for probability description.
410  * Each time the jamming status changes during the scan procedure, it is reported to the user.
411  * See @ref le_mrc_JammingReport_t enumeration for details.
412  *
413  * The jamming status is reported:
414  * - In an unsolicited way, each time the protocol stack initiates a scan for PLMN selection or
415  * reselection.
416  * - On user demand, when a user PLMN scan is performed.
417  *
418  * Call le_mrc_StartJammingDetection() to launch jamming monitoring.
419  * By registering a handler by calling le_mrc_AddJammingDetectionEventHandler(), the notification
420  * on jamming detection can be sent to the registered application.
421  *
422  * For each jamming detection monitoring, the following APIs can be called:
423  * - le_mrc_StartJammingDetection() to start the jamming monitoring.
424  * - le_mrc_StopJammingDetection() to stop the jamming monitoring.
425  * - le_mrc_AddJammingDetectionEventHandler() to register an event handler.
426  * - le_mrc_RemoveJammingDetectionEventHandler() to remove an event handler.
427  *
428  * @section le_mrc_sar SAR backoff
429  * SAR (Specific Absorption Rate) is a measure of RF energy absorption by the human body.
430  * Users can dynamically select a pre-configured SAR backoff state so they can adjust the SAR
431  * depending on their needs. To manage SAR backoff, these API should be used:
432  * - le_mrc_SetSarBackoffState() to set a new SAR backoff state.
433  * - le_mrc_GetSarBackoffState() to get the current SAR backoff state.
434  * This feature may be unsupported by some targets. Also, the number of supported states may vary
435  * depending on the target. Please refer to @ref platformConstraintsMdc for further details.
436  *
437  * <HR>
438  *
439  * Copyright (C) Sierra Wireless Inc.
440  */
441 /**
442  * @page c_mrcRadioPower Sample code for Radio Power Management
443  *
444  * @snippet "apps/test/modemServices/mrc/mrcIntegrationTest/mrcTest/le_mrcTest.c" Radio Power
445  */
446 /**
447  * @page c_mrcRadioConfigurationPreferences Sample code for Radio Configuration Preferences
448  *
449  * @snippet "apps/test/modemServices/mrc/mrcIntegrationTest/mrcTest/le_mrcTest.c" Band Preferences
450  *
451  */
452 /**
453  * @page c_mrcRAT Sample code for Radio Access Technology
454  *
455  * @snippet "apps/test/modemServices/mrc/mrcIntegrationTest/mrcTest/le_mrcTest.c" RAT in Use
456  * @snippet "apps/test/modemServices/mrc/mrcIntegrationTest/mrcTest/le_mrcTest.c" RAT Preferences
457  *
458  */
459 /**
460  * @page c_mrcNetworkRegistration Sample code for Network Registration
461  *
462  * @snippet "apps/test/modemServices/mrc/mrcIntegrationTest/mrcTest/le_mrcTest.c" Register
463  *
464  */
465 /**
466  * @page c_mrcQuality Sample code for Signal Quality
467  *
468  * @snippet "apps/test/modemServices/mrc/mrcIntegrationTest/mrcTest/le_mrcTest.c" Signal Quality
469  *
470  */
471 /**
472  * @page c_mrcLocationinformation Sample code for Location information
473  *
474  * @snippet "apps/test/modemServices/mrc/mrcIntegrationTest/mrcTest/le_mrcTest.c" Loc information
475  *
476  */
477 /**
478  * @page c_mrcBandCapabilities Sample code for Band Capabilities
479  *
480  * @snippet "apps/test/modemServices/mrc/mrcIntegrationTest/mrcTest/le_mrcTest.c" Band Capabilities
481  *
482  */
483 /**
484  * @page c_mrcGetCurrentNetwork Sample code for Get Current Network Information
485  *
486  * @snippet "apps/test/modemServices/mrc/mrcIntegrationTest/mrcTest/le_mrcTest.c" Get Network
487  *
488  */
489 /**
490  * @page c_mrcNetworkScan Sample code for Network Scan
491  *
492  * @snippet "apps/test/modemServices/mrc/mrcIntegrationTest/mrcTest/le_mrcTest.c" Network Scan
493  *
494  */
495 /**
496  * @page c_mrcPciScan Sample code for LTE PCI Scan
497  *
498  * @snippet "apps/test/modemServices/mrc/mrcIntegrationTest/mrcTest/le_mrcTest.c" PCI Scan
499  *
500  */
501 /**
502  * @page c_mrcNeighborCells Sample code for Neighboring Cells Information
503  *
504  * @snippet "apps/test/modemServices/mrc/mrcIntegrationTest/mrcTest/le_mrcTest.c" Neighbor Cells
505  *
506  */
507 /**
508  * @page c_mrcGetService Sample code for Get the Current Packet Switched state
509  *
510  * @snippet "apps/test/modemServices/mrc/mrcIntegrationTest/mrcTest/le_mrcTest.c" Service State
511  *
512  */
513 /**
514  * @file le_mrc_interface.h
515  *
516  * Legato @ref c_mrc include file.
517  *
518  * Copyright (C) Sierra Wireless Inc.
519  */
520 
521 #ifndef LE_MRC_INTERFACE_H_INCLUDE_GUARD
522 #define LE_MRC_INTERFACE_H_INCLUDE_GUARD
523 
524 
525 #include "legato.h"
526 
527 // Internal includes for this interface
528 #include "le_mrc_common.h"
529 /** @addtogroup le_mrc le_mrc API Reference
530  * @{
531  * @file le_mrc_common.h
532  * @file le_mrc_interface.h **/
533 //--------------------------------------------------------------------------------------------------
534 /**
535  * Type for handler called when a server disconnects.
536  */
537 //--------------------------------------------------------------------------------------------------
538 typedef void (*le_mrc_DisconnectHandler_t)(void *);
539 
540 //--------------------------------------------------------------------------------------------------
541 /**
542  *
543  * Connect the current client thread to the service providing this API. Block until the service is
544  * available.
545  *
546  * For each thread that wants to use this API, either ConnectService or TryConnectService must be
547  * called before any other functions in this API. Normally, ConnectService is automatically called
548  * for the main thread, but not for any other thread. For details, see @ref apiFilesC_client.
549  *
550  * This function is created automatically.
551  */
552 //--------------------------------------------------------------------------------------------------
554 (
555  void
556 );
557 
558 //--------------------------------------------------------------------------------------------------
559 /**
560  *
561  * Try to connect the current client thread to the service providing this API. Return with an error
562  * if the service is not available.
563  *
564  * For each thread that wants to use this API, either ConnectService or TryConnectService must be
565  * called before any other functions in this API. Normally, ConnectService is automatically called
566  * for the main thread, but not for any other thread. For details, see @ref apiFilesC_client.
567  *
568  * This function is created automatically.
569  *
570  * @return
571  * - LE_OK if the client connected successfully to the service.
572  * - LE_UNAVAILABLE if the server is not currently offering the service to which the client is
573  * bound.
574  * - LE_NOT_PERMITTED if the client interface is not bound to any service (doesn't have a binding).
575  * - LE_COMM_ERROR if the Service Directory cannot be reached.
576  */
577 //--------------------------------------------------------------------------------------------------
579 (
580  void
581 );
582 
583 //--------------------------------------------------------------------------------------------------
584 /**
585  * Set handler called when server disconnection is detected.
586  *
587  * When a server connection is lost, call this handler then exit with LE_FATAL. If a program wants
588  * to continue without exiting, it should call longjmp() from inside the handler.
589  */
590 //--------------------------------------------------------------------------------------------------
592 (
593  le_mrc_DisconnectHandler_t disconnectHandler,
594  void *contextPtr
595 );
596 
597 //--------------------------------------------------------------------------------------------------
598 /**
599  *
600  * Disconnect the current client thread from the service providing this API.
601  *
602  * Normally, this function doesn't need to be called. After this function is called, there's no
603  * longer a connection to the service, and the functions in this API can't be used. For details, see
604  * @ref apiFilesC_client.
605  *
606  * This function is created automatically.
607  */
608 //--------------------------------------------------------------------------------------------------
610 (
611  void
612 );
613 
614 
615 //--------------------------------------------------------------------------------------------------
616 /**
617  * 2G/3G Band Bit Mask (64 bits)
618  */
619 //--------------------------------------------------------------------------------------------------
620 
621 
622 //--------------------------------------------------------------------------------------------------
623 /**
624  * LTE Band Bit Mask (64 bits)
625  *
626  */
627 //--------------------------------------------------------------------------------------------------
628 
629 
630 //--------------------------------------------------------------------------------------------------
631 /**
632  * TDSCDMA Band Bit Mask
633  *
634  */
635 //--------------------------------------------------------------------------------------------------
636 
637 
638 //--------------------------------------------------------------------------------------------------
639 /**
640  * Reference type for referring to MRC Scan Information objects.
641  */
642 //--------------------------------------------------------------------------------------------------
643 
644 
645 //--------------------------------------------------------------------------------------------------
646 /**
647  * Reference type for Scan Information Listing.
648  */
649 //--------------------------------------------------------------------------------------------------
650 
651 
652 //--------------------------------------------------------------------------------------------------
653 /**
654  * Reference type for PCI Scan Information Listing.
655  */
656 //--------------------------------------------------------------------------------------------------
657 
658 
659 //--------------------------------------------------------------------------------------------------
660 /**
661  * Reference type for PCI Scan Information .
662  */
663 //--------------------------------------------------------------------------------------------------
664 
665 
666 //--------------------------------------------------------------------------------------------------
667 /**
668  * Reference type for PLMN Information .
669  */
670 //--------------------------------------------------------------------------------------------------
671 
672 
673 //--------------------------------------------------------------------------------------------------
674 /**
675  * Reference type for referring to the Preferred Operator objects.
676  */
677 //--------------------------------------------------------------------------------------------------
678 
679 
680 //--------------------------------------------------------------------------------------------------
681 /**
682  * Reference type for Preferred Operator Listing.
683  */
684 //--------------------------------------------------------------------------------------------------
685 
686 
687 //--------------------------------------------------------------------------------------------------
688 /**
689  * Reference type for one Cell Information.
690  */
691 //--------------------------------------------------------------------------------------------------
692 
693 
694 //--------------------------------------------------------------------------------------------------
695 /**
696  * Reference type for all Neighboring Cells Information.
697  */
698 //--------------------------------------------------------------------------------------------------
699 
700 
701 //--------------------------------------------------------------------------------------------------
702 /**
703  * Reference type for the signal metrics.
704  */
705 //--------------------------------------------------------------------------------------------------
706 
707 
708 //--------------------------------------------------------------------------------------------------
709 /**
710  * Network Registration states.
711  */
712 //--------------------------------------------------------------------------------------------------
713 
714 
715 //--------------------------------------------------------------------------------------------------
716 /**
717  * Radio Access Technology enum
718  */
719 //--------------------------------------------------------------------------------------------------
720 
721 
722 //--------------------------------------------------------------------------------------------------
723 /**
724  * Jamming detection report type enum
725  *
726  * @note If the reported status is the final status (end of the procedure), this shall be indicated
727  * within the status report.
728  * @note Other reports, called intermediate reports, gives only intermediate results issuing from
729  * the algorithm
730  */
731 //--------------------------------------------------------------------------------------------------
732 
733 
734 //--------------------------------------------------------------------------------------------------
735 /**
736  * Jamming detection status type enum
737  *
738  * @note The final status can be only NULL or JAMMED.
739  */
740 //--------------------------------------------------------------------------------------------------
741 
742 
743 //--------------------------------------------------------------------------------------------------
744 /**
745  * Radio Bitmask Access Technology Bit Mask
746  */
747 //--------------------------------------------------------------------------------------------------
748 
749 
750 //--------------------------------------------------------------------------------------------------
751 /**
752  * Network Registration reject cause type enum.
753  */
754 //--------------------------------------------------------------------------------------------------
755 
756 
757 //--------------------------------------------------------------------------------------------------
758 /**
759  * Network Registration service domain type enum.
760  */
761 //--------------------------------------------------------------------------------------------------
762 
763 
764 //--------------------------------------------------------------------------------------------------
765 /**
766  * Network registration reject indication structure.
767  */
768 //--------------------------------------------------------------------------------------------------
769 
770 
771 //--------------------------------------------------------------------------------------------------
772 /**
773  * Handler for Network registration state changes.
774  */
775 //--------------------------------------------------------------------------------------------------
776 
777 
778 //--------------------------------------------------------------------------------------------------
779 /**
780  * Reference type used by Add/Remove functions for EVENT 'le_mrc_NetRegStateEvent'
781  */
782 //--------------------------------------------------------------------------------------------------
783 
784 
785 //--------------------------------------------------------------------------------------------------
786 /**
787  * Handler for Radio Access Technology changes.
788  *
789  */
790 //--------------------------------------------------------------------------------------------------
791 
792 
793 //--------------------------------------------------------------------------------------------------
794 /**
795  * Reference type used by Add/Remove functions for EVENT 'le_mrc_RatChange'
796  */
797 //--------------------------------------------------------------------------------------------------
798 
799 
800 //--------------------------------------------------------------------------------------------------
801 /**
802  * Handler for Packet Switched service state changes.
803  *
804  */
805 //--------------------------------------------------------------------------------------------------
806 
807 
808 //--------------------------------------------------------------------------------------------------
809 /**
810  * Reference type used by Add/Remove functions for EVENT 'le_mrc_PacketSwitchedChange'
811  */
812 //--------------------------------------------------------------------------------------------------
813 
814 
815 //--------------------------------------------------------------------------------------------------
816 /**
817  * Handler for Signal Strength value changes.
818  *
819  */
820 //--------------------------------------------------------------------------------------------------
821 
822 
823 //--------------------------------------------------------------------------------------------------
824 /**
825  * Reference type used by Add/Remove functions for EVENT 'le_mrc_SignalStrengthChange'
826  */
827 //--------------------------------------------------------------------------------------------------
828 
829 
830 //--------------------------------------------------------------------------------------------------
831 /**
832  * Handler for cellular asynchronous network scan Sending result.
833  * Returns the reference to the List object. Null pointer if the scan failed.
834  *
835  */
836 //--------------------------------------------------------------------------------------------------
837 
838 
839 //--------------------------------------------------------------------------------------------------
840 /**
841  * Handler for PCI asynchronous network scan Sending result.
842  * Returns the reference to the List object. Null pointer if the scan failed.
843  *
844  */
845 //--------------------------------------------------------------------------------------------------
846 
847 
848 //--------------------------------------------------------------------------------------------------
849 /**
850  * Handler for asynchronous manual selection response
851  *
852  */
853 //--------------------------------------------------------------------------------------------------
854 
855 
856 //--------------------------------------------------------------------------------------------------
857 /**
858  * Handler to report network reject indication.
859  *
860  * @deprecated le_mrc_NetworkRejectHandler() will be removed in near future.
861  * It will be replaced by le_mrc_AddNetRegRejectHandler().
862  *
863  */
864 //--------------------------------------------------------------------------------------------------
865 
866 
867 //--------------------------------------------------------------------------------------------------
868 /**
869  * Reference type used by Add/Remove functions for EVENT 'le_mrc_NetworkReject'
870  */
871 //--------------------------------------------------------------------------------------------------
872 
873 
874 //--------------------------------------------------------------------------------------------------
875 /**
876  * Handler to report network registration reject indication.
877  * NetworkRejectHandler is deprecated.
878  */
879 //--------------------------------------------------------------------------------------------------
880 
881 
882 //--------------------------------------------------------------------------------------------------
883 /**
884  * Reference type used by Add/Remove functions for EVENT 'le_mrc_NetRegReject'
885  */
886 //--------------------------------------------------------------------------------------------------
887 
888 
889 //--------------------------------------------------------------------------------------------------
890 /**
891  * Handler for jamming detection event.
892  */
893 //--------------------------------------------------------------------------------------------------
894 
895 
896 //--------------------------------------------------------------------------------------------------
897 /**
898  * Reference type used by Add/Remove functions for EVENT 'le_mrc_JammingDetectionEvent'
899  */
900 //--------------------------------------------------------------------------------------------------
901 
902 
903 //--------------------------------------------------------------------------------------------------
904 /**
905  * Add handler function for EVENT 'le_mrc_NetRegStateEvent'
906  *
907  * This event provides information on network registration state changes.
908  *
909  * @note <b>multi-app safe</b>
910  */
911 //--------------------------------------------------------------------------------------------------
913 (
915  ///< [IN]
916  void* contextPtr
917  ///< [IN]
918 );
919 
920 //--------------------------------------------------------------------------------------------------
921 /**
922  * Remove handler function for EVENT 'le_mrc_NetRegStateEvent'
923  */
924 //--------------------------------------------------------------------------------------------------
926 (
928  ///< [IN]
929 );
930 
931 //--------------------------------------------------------------------------------------------------
932 /**
933  * Add handler function for EVENT 'le_mrc_RatChange'
934  *
935  * This event provides information on Radio Access Technology changes.
936  *
937  * @note <b>multi-app safe</b>
938  */
939 //--------------------------------------------------------------------------------------------------
941 (
943  ///< [IN]
944  void* contextPtr
945  ///< [IN]
946 );
947 
948 //--------------------------------------------------------------------------------------------------
949 /**
950  * Remove handler function for EVENT 'le_mrc_RatChange'
951  */
952 //--------------------------------------------------------------------------------------------------
954 (
956  ///< [IN]
957 );
958 
959 //--------------------------------------------------------------------------------------------------
960 /**
961  * Add handler function for EVENT 'le_mrc_PacketSwitchedChange'
962  *
963  * This event provides information on Packet Switched service changes.
964  *
965  * @note <b>multi-app safe</b>
966  */
967 //--------------------------------------------------------------------------------------------------
969 (
971  ///< [IN]
972  void* contextPtr
973  ///< [IN]
974 );
975 
976 //--------------------------------------------------------------------------------------------------
977 /**
978  * Remove handler function for EVENT 'le_mrc_PacketSwitchedChange'
979  */
980 //--------------------------------------------------------------------------------------------------
982 (
984  ///< [IN]
985 );
986 
987 //--------------------------------------------------------------------------------------------------
988 /**
989  * Add handler function for EVENT 'le_mrc_SignalStrengthChange'
990  *
991  * This event provides information on Signal Strength value changes.
992  *
993  * @note <b>NOT multi-app safe</b>
994  */
995 //--------------------------------------------------------------------------------------------------
997 (
998  le_mrc_Rat_t rat,
999  ///< [IN] Radio Access Technology
1000  int32_t lowerRangeThreshold,
1001  ///< [IN] Lower-range Signal strength threshold in dBm
1002  int32_t upperRangeThreshold,
1003  ///< [IN] Upper-range Signal strength threshold in dBm
1005  ///< [IN]
1006  void* contextPtr
1007  ///< [IN]
1008 );
1009 
1010 //--------------------------------------------------------------------------------------------------
1011 /**
1012  * Remove handler function for EVENT 'le_mrc_SignalStrengthChange'
1013  */
1014 //--------------------------------------------------------------------------------------------------
1016 (
1018  ///< [IN]
1019 );
1020 
1021 //--------------------------------------------------------------------------------------------------
1022 /**
1023  * This function sets signal strength indication thresholds for a specific RAT.
1024  *
1025  * @return
1026  * - LE_OK Function succeeded.
1027  * - LE_BAD_PARAMETER Bad parameters
1028  * - LE_FAULT Function failed.
1029  *
1030  * @note <b>NOT multi-app safe</b>
1031  */
1032 //--------------------------------------------------------------------------------------------------
1034 (
1035  le_mrc_Rat_t rat,
1036  ///< [IN] Radio Access Technology
1037  int32_t lowerRangeThreshold,
1038  ///< [IN] Lower-range Signal strength threshold in dBm
1039  int32_t upperRangeThreshold
1040  ///< [IN] Upper-range Signal strength threshold in dBm
1041 );
1042 
1043 //--------------------------------------------------------------------------------------------------
1044 /**
1045  * This function sets a signal strength indication delta for a specific RAT.
1046  *
1047  * @return
1048  * - LE_OK Function succeeded.
1049  * - LE_BAD_PARAMETER Bad parameters.
1050  * - LE_FAULT Function failed.
1051  *
1052  * @note The signal delta is set in units of 0.1 dBm. For example, to set a delta of 10.6 dBm, the
1053  * delta value must be set to 106.
1054  *
1055  * @warning The signal delta resolution is platform dependent. Please refer to
1056  * @ref platformConstraintsMdc section for full details.
1057  */
1058 //--------------------------------------------------------------------------------------------------
1060 (
1061  le_mrc_Rat_t rat,
1062  ///< [IN] Radio Access Technology
1063  uint16_t delta
1064  ///< [IN] Signal delta in units of 0.1 dBm
1065 );
1066 
1067 //--------------------------------------------------------------------------------------------------
1068 /**
1069  * Enable the automatic Selection Register mode.
1070  *
1071  * @return
1072  * - LE_FAULT Function failed.
1073  * - LE_OK Function succeeded.
1074  *
1075  * @note <b>NOT multi-app safe</b>
1076  */
1077 //--------------------------------------------------------------------------------------------------
1079 (
1080  void
1081 );
1082 
1083 //--------------------------------------------------------------------------------------------------
1084 /**
1085  * Set the manual Selection Register mode with the MCC/MNC parameters.
1086  *
1087  * @return
1088  * - LE_FAULT Function failed.
1089  * - LE_OK Function succeeded.
1090  *
1091  * @note If strings are not set, too long (bigger than LE_MRC_MCC_LEN/LE_MRC_MNC_LEN digits), or too
1092  * short (less than LE_MRC_MCC_LEN/LE_MRC_MNC_LEN-1 digits) it's a fatal error, the function
1093  * won't return.
1094  *
1095  * @note <b>NOT multi-app safe</b>
1096  */
1097 //--------------------------------------------------------------------------------------------------
1099 (
1100  const char* LE_NONNULL mcc,
1101  ///< [IN] Mobile Country Code
1102  const char* LE_NONNULL mnc
1103  ///< [IN] Mobile Network Code
1104 );
1105 
1106 //--------------------------------------------------------------------------------------------------
1107 /**
1108  * Set the manual selection register mode asynchronously. This function is not blocking,
1109  * the response will be returned with a handler function.
1110  *
1111  * @note If strings are not set, too long (bigger than LE_MRC_MCC_LEN/LE_MRC_MNC_LEN digits), or too
1112  * short (less than LE_MRC_MCC_LEN/LE_MRC_MNC_LEN-1 digits) it's a fatal error, the function
1113  * won't return.
1114  *
1115  *@note <b>NOT multi-app safe</b>
1116  *
1117  */
1118 //--------------------------------------------------------------------------------------------------
1120 (
1121  const char* LE_NONNULL mcc,
1122  ///< [IN] Mobile Country Code
1123  const char* LE_NONNULL mnc,
1124  ///< [IN] Mobile Network Code
1126  ///< [IN] handler for sending result
1127  void* contextPtr
1128  ///< [IN]
1129 );
1130 
1131 //--------------------------------------------------------------------------------------------------
1132 /**
1133  * Get the selected Selection Register mode.
1134  *
1135  * @return
1136  * - LE_FAULT Function failed.
1137  * - LE_OK Function succeeded.
1138  *
1139  * @note <b>multi-app safe</b>
1140  */
1141 //--------------------------------------------------------------------------------------------------
1143 (
1144  bool* isManualPtrPtr,
1145  ///< [OUT] true if the scan mode is manual, false if the scan mode is automatic.
1146  char* mccPtr,
1147  ///< [OUT] Mobile Country Code
1148  size_t mccPtrSize,
1149  ///< [IN]
1150  char* mncPtr,
1151  ///< [OUT] Mobile Network Code
1152  size_t mncPtrSize
1153  ///< [IN]
1154 );
1155 
1156 //--------------------------------------------------------------------------------------------------
1157 /**
1158  * Get the Packet Switched state.
1159  *
1160  * @return
1161  * - LE_FAULT Function failed.
1162  * - LE_OK Function succeeded.
1163  *
1164  * @note <b>multi-app safe</b>
1165  */
1166 //--------------------------------------------------------------------------------------------------
1168 (
1169  le_mrc_NetRegState_t* statePtr
1170  ///< [OUT] The current Packet switched state.
1171 );
1172 
1173 //--------------------------------------------------------------------------------------------------
1174 /**
1175  * Get the platform specific network registration error code.
1176  *
1177  * Refer to @ref platformConstraintsSpecificErrorCodes for platform specific
1178  * registration error code description.
1179  *
1180  * @return the platform specific registration error code
1181  *
1182  */
1183 //--------------------------------------------------------------------------------------------------
1185 (
1186  void
1187 );
1188 
1189 //--------------------------------------------------------------------------------------------------
1190 /**
1191  * Set the Radio Access Technology preferences by using a bit mask.
1192  *
1193  * @return
1194  * - LE_FAULT Function failed.
1195  * - LE_OK Function succeeded.
1196  * - LE_UNSUPPORTED Not supported by platform.
1197  *
1198  * @note <b>NOT multi-app safe</b>
1199  */
1200 //--------------------------------------------------------------------------------------------------
1202 (
1203  le_mrc_RatBitMask_t ratMask
1204  ///< [IN] Bit mask for the Radio Access Technology preferences.
1205 );
1206 
1207 //--------------------------------------------------------------------------------------------------
1208 /**
1209  * Get the Radio Access Technology preferences
1210  *
1211  * @return
1212  * - LE_FAULT Function failed.
1213  * - LE_OK Function succeeded.
1214  *
1215  * @note <b>multi-app safe</b>
1216  */
1217 //--------------------------------------------------------------------------------------------------
1219 (
1220  le_mrc_RatBitMask_t* ratMaskPtrPtr
1221  ///< [OUT] Bit mask for the Radio Access Technology preferences.
1222 );
1223 
1224 //--------------------------------------------------------------------------------------------------
1225 /**
1226  * Set the 2G/3G Band preferences by using a bit mask.
1227  *
1228  * @return
1229  * - LE_FAULT Function failed.
1230  * - LE_OK Function succeeded.
1231  *
1232  * @note <b>NOT multi-app safe</b>
1233  */
1234 //--------------------------------------------------------------------------------------------------
1236 (
1237  le_mrc_BandBitMask_t bandMask
1238  ///< [IN] Bit mask for 2G/3G Band preferences.
1239 );
1240 
1241 //--------------------------------------------------------------------------------------------------
1242 /**
1243  * Get the Bit mask for 2G/3G Band preferences.
1244  *
1245  * @return
1246  * - LE_FAULT Function failed.
1247  * - LE_OK Function succeeded.
1248  *
1249  * @note <b>multi-app safe</b>
1250  */
1251 //--------------------------------------------------------------------------------------------------
1253 (
1254  le_mrc_BandBitMask_t* bandMaskPtrPtr
1255  ///< [OUT] Bit mask for 2G/3G Band preferences.
1256 );
1257 
1258 //--------------------------------------------------------------------------------------------------
1259 /**
1260  * Set the LTE Band preferences by using a bit mask.
1261  *
1262  * @return
1263  * - LE_FAULT Function failed.
1264  * - LE_OK Function succeeded.
1265  * - LE_UNSUPPORTED The platform doesn't support setting LTE Band preferences.
1266  *
1267  * @note <b>NOT multi-app safe</b>
1268  */
1269 //--------------------------------------------------------------------------------------------------
1271 (
1272  le_mrc_LteBandBitMask_t bandMask
1273  ///< [IN] Bit mask for LTE Band preferences.
1274 );
1275 
1276 //--------------------------------------------------------------------------------------------------
1277 /**
1278  * Get the Bit mask for LTE Band preferences.
1279  *
1280  * @return
1281  * - LE_FAULT Function failed.
1282  * - LE_OK Function succeeded.
1283  *
1284  * @note <b>multi-app safe</b>
1285  */
1286 //--------------------------------------------------------------------------------------------------
1288 (
1289  le_mrc_LteBandBitMask_t* bandMaskPtrPtr
1290  ///< [OUT] Bit mask for LTE Band preferences.
1291 );
1292 
1293 //--------------------------------------------------------------------------------------------------
1294 /**
1295  * Set the TD-SCDMA Band preferences by using a bit mask.
1296  *
1297  * @return
1298  * - LE_OK Function succeeded.
1299  * - LE_FAULT Function failed.
1300  * - LE_UNSUPPORTED The platform doesn't support setting TD-SCDMA Band preferences.
1301  *
1302  * @note <b>NOT multi-app safe</b>
1303  */
1304 //--------------------------------------------------------------------------------------------------
1306 (
1307  le_mrc_TdScdmaBandBitMask_t bandMask
1308  ///< [IN] Bit mask for TD-SCDMA Band preferences.
1309 );
1310 
1311 //--------------------------------------------------------------------------------------------------
1312 /**
1313  * Get the Bit mask for TD-SCDMA Band preferences.
1314  *
1315  * @return
1316  * - LE_OK Function succeeded.
1317  * - LE_FAULT Function failed.
1318  * - LE_UNSUPPORTED The platform doesn't support getting TD-SCDMA Band preferences.
1319  *
1320  * @note <b>multi-app safe</b>
1321  */
1322 //--------------------------------------------------------------------------------------------------
1324 (
1325  le_mrc_TdScdmaBandBitMask_t* bandMaskPtrPtr
1326  ///< [OUT] Bit mask for TD-SCDMA Band preferences.
1327 );
1328 
1329 //--------------------------------------------------------------------------------------------------
1330 /**
1331  * Add a preferred operator by specifying the MCC/MNC and the Radio Access Technology.
1332  *
1333  * @return
1334  * - LE_UNSUPPORTED List of User Preferred operators not available.
1335  * - LE_FAULT Function failed.
1336  * - LE_BAD_PARAMETER RAT mask is invalid.
1337  * - LE_OK Function succeeded.
1338  *
1339  * @note If strings are not set, too long (bigger than LE_MRC_MCC_LEN/LE_MRC_MNC_LEN digits), or too
1340  * short (less than LE_MRC_MCC_LEN/LE_MRC_MNC_LEN-1 digits) it's a fatal error, the function
1341  * won't return.
1342  *
1343  * @note <b>NOT multi-app safe</b>
1344  */
1345 //--------------------------------------------------------------------------------------------------
1347 (
1348  const char* LE_NONNULL mcc,
1349  ///< [IN] Mobile Country Code
1350  const char* LE_NONNULL mnc,
1351  ///< [IN] Mobile Network Code
1352  le_mrc_RatBitMask_t ratMask
1353  ///< [IN] Bit mask for the Radio Access Technology preferences.
1354 );
1355 
1356 //--------------------------------------------------------------------------------------------------
1357 /**
1358  * Remove a preferred operator by specifying the MCC/MNC.
1359  *
1360  * @return
1361  * - LE_UNSUPPORTED List of User Preferred operators not available.
1362  * - LE_NOT_FOUND Operator not found in the User Preferred operators list.
1363  * - LE_FAULT Function failed.
1364  * - LE_OK Function succeeded.
1365  *
1366  * @note If strings are not set, too long (bigger than LE_MRC_MCC_LEN/LE_MRC_MNC_LEN digits), or too
1367  * short (less than LE_MRC_MCC_LEN/LE_MRC_MNC_LEN-1 digits) it's a fatal error, the function
1368  * won't return.
1369  *
1370  * @note <b>NOT multi-app safe</b>
1371  */
1372 //--------------------------------------------------------------------------------------------------
1374 (
1375  const char* LE_NONNULL mcc,
1376  ///< [IN] Mobile Country Code
1377  const char* LE_NONNULL mnc
1378  ///< [IN] Mobile Network Code
1379 );
1380 
1381 //--------------------------------------------------------------------------------------------------
1382 /**
1383  * This function must be called to retrieve a list of the preferred operators.
1384  *
1385  * @return
1386  * - Reference to the List object.
1387  * - Null pointer if there is no preferences list.
1388  *
1389  * @note <b>multi-app safe</b>
1390  */
1391 //--------------------------------------------------------------------------------------------------
1393 (
1394  void
1395 );
1396 
1397 //--------------------------------------------------------------------------------------------------
1398 /**
1399  * This function must be called to get the first Operator object reference in the list of the
1400  * preferred operators retrieved with le_mrc_GetPreferredOperators().
1401  *
1402  * @return
1403  * - NULL No operator information found.
1404  * - le_mrc_PreferredOperatorRef The Operator object reference.
1405  *
1406  * @note If the caller is passing a bad reference into this function, it's a fatal error, the
1407  * function won't return.
1408  *
1409  * @note <b>multi-app safe</b>
1410  */
1411 //--------------------------------------------------------------------------------------------------
1413 (
1414  le_mrc_PreferredOperatorListRef_t preferredOperatorListRef
1415  ///< [IN] The list of the preferred operators.
1416 );
1417 
1418 //--------------------------------------------------------------------------------------------------
1419 /**
1420  * This function must be called to get the next Operator object reference in the list of the
1421  * preferred operators retrieved with le_mrc_GetPreferredOperators().
1422  *
1423  * @return
1424  * - NULL No operator information found.
1425  * - le_mrc_PreferredOperatorRef The Operator object reference.
1426  *
1427  * @note If the caller is passing a bad reference into this function, it's a fatal error, the
1428  * function won't return.
1429  *
1430  * @note <b>multi-app safe</b>
1431  */
1432 //--------------------------------------------------------------------------------------------------
1434 (
1435  le_mrc_PreferredOperatorListRef_t preferredOperatorListRef
1436  ///< [IN] The list of the preferred operators.
1437 );
1438 
1439 //--------------------------------------------------------------------------------------------------
1440 /**
1441  * This function must be called to delete the list of the preferred operators retrieved with
1442  * le_mrc_GetPreferredOperators().
1443  *
1444  * @note On failure, the process exits, so you don't have to worry about checking the returned
1445  * reference for validity.
1446  *
1447  * @note <b>multi-app safe</b>
1448  */
1449 //--------------------------------------------------------------------------------------------------
1451 (
1452  le_mrc_PreferredOperatorListRef_t preferredOperatorListRef
1453  ///< [IN] The list of the preferred operators.
1454 );
1455 
1456 //--------------------------------------------------------------------------------------------------
1457 /**
1458  * This function must be called to get the Operator information details.
1459  *
1460  * @return
1461  * - LE_OK on success
1462  * - LE_OVERFLOW if the MCC or MNC would not fit in buffer
1463  * - LE_FAULT for all other errors
1464  *
1465  * @note <b>multi-app safe</b>
1466  */
1467 //--------------------------------------------------------------------------------------------------
1469 (
1470  le_mrc_PreferredOperatorRef_t preferredOperatorRef,
1471  ///< [IN] Operator object reference.
1472  char* mccPtr,
1473  ///< [OUT] Mobile Country Code.
1474  size_t mccPtrSize,
1475  ///< [IN]
1476  char* mncPtr,
1477  ///< [OUT] Mobile Network Code.
1478  size_t mncPtrSize,
1479  ///< [IN]
1480  le_mrc_RatBitMask_t* ratMaskPtr
1481  ///< [OUT] Bit mask for the RAT preferences.
1482 );
1483 
1484 //--------------------------------------------------------------------------------------------------
1485 /**
1486  * Get the network registration state.
1487  *
1488  * @return LE_FAULT The function failed to get the Network registration state.
1489  * @return LE_BAD_PARAMETER A bad parameter was passed.
1490  * @return LE_OK The function succeeded.
1491  *
1492  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
1493  * function won't return.
1494  *
1495  * @note <b>multi-app safe</b>
1496  */
1497 //--------------------------------------------------------------------------------------------------
1499 (
1500  le_mrc_NetRegState_t* statePtr
1501  ///< [OUT] Network Registration state.
1502 );
1503 
1504 //--------------------------------------------------------------------------------------------------
1505 /**
1506  * Get the signal quality.
1507  *
1508  * @return LE_FAULT The function failed to get the Signal Quality information.
1509  * @return LE_BAD_PARAMETER A bad parameter was passed.
1510  * @return LE_OK The function succeeded.
1511  *
1512  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
1513  * function won't return.
1514  *
1515  * @note <b>multi-app safe</b>
1516  */
1517 //--------------------------------------------------------------------------------------------------
1519 (
1520  uint32_t* qualityPtr
1521  ///< [OUT] [OUT] Received signal strength quality (0 = no signal strength,
1522  ///< 5 = very good signal strength).
1523 );
1524 
1525 //--------------------------------------------------------------------------------------------------
1526 /**
1527  * Set the power of the Radio Module.
1528  *
1529  * @return LE_BAD_PARAMETER Bad power mode specified.
1530  * @return LE_FAULT Function failed.
1531  * @return LE_OK Function succeed.
1532  *
1533  * @note <b>NOT multi-app safe</b>
1534  */
1535 //--------------------------------------------------------------------------------------------------
1537 (
1538  le_onoff_t power
1539  ///< [IN] The power state.
1540 );
1541 
1542 //--------------------------------------------------------------------------------------------------
1543 /**
1544  * Must be called to get the Radio Module power state.
1545  *
1546  * @return LE_FAULT The function failed to get the Radio Module power state.
1547  * @return LE_BAD_PARAMETER if powerPtr is NULL.
1548  * @return LE_OK The function succeed.
1549  *
1550  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
1551  * function won't return.
1552  *
1553  * @note <b>multi-app safe</b>
1554  */
1555 //--------------------------------------------------------------------------------------------------
1557 (
1558  le_onoff_t* powerPtr
1559  ///< [OUT] Power state.
1560 );
1561 
1562 //--------------------------------------------------------------------------------------------------
1563 /**
1564  * This function must be called to perform a cellular network scan.
1565  *
1566  * @return Reference to the List object. Null pointer if the scan failed.
1567  *
1568  * @note <b>multi-app safe</b>
1569  */
1570 //--------------------------------------------------------------------------------------------------
1572 (
1573  le_mrc_RatBitMask_t ratMask
1574  ///< [IN] Radio Access Technology mask
1575 );
1576 
1577 //--------------------------------------------------------------------------------------------------
1578 /**
1579  * This function must be called to perform a PCI network scan.
1580  *
1581  * @return Reference to the List object. Null pointer if the scan failed.
1582  *
1583  * @warning PCI scan is platform dependent. Please refer to @ref platformConstraintsMdc for further
1584  * details.
1585  *
1586  * @note On devices with the watchdog service enabled, the timeout is 4 mins. On those without, the
1587  * timeout is 5 mins.
1588  *
1589  * @note <b>multi-app safe</b>
1590  */
1591 //--------------------------------------------------------------------------------------------------
1593 (
1594  le_mrc_RatBitMask_t ratMask
1595  ///< [IN] Radio Access Technology mask
1596 );
1597 
1598 //--------------------------------------------------------------------------------------------------
1599 /**
1600  * This function must be called to perform a cellular network scan asynchronously. This function
1601  * is not blocking, the response will be returned with a handler function.
1602  *
1603  *@note <b>multi-app safe</b>
1604  *
1605  */
1606 //--------------------------------------------------------------------------------------------------
1608 (
1609  le_mrc_RatBitMask_t ratMask,
1610  ///< [IN] Radio Access Technology mask
1612  ///< [IN] handler for sending result.
1613  void* contextPtr
1614  ///< [IN]
1615 );
1616 
1617 //--------------------------------------------------------------------------------------------------
1618 /**
1619  * This function must be called to perform a PCI network scan asynchronously. This function
1620  * is not blocking, the response will be returned with a handler function.
1621  *
1622  * @warning PCI scan is platform dependent. Please refer to @ref platformConstraintsMdc for further
1623  * details.
1624  *
1625  *@note <b>multi-app safe</b>
1626  *
1627  */
1628 //--------------------------------------------------------------------------------------------------
1630 (
1631  le_mrc_RatBitMask_t ratMask,
1632  ///< [IN] Radio Access Technology mask
1634  ///< [IN] handler for sending result.
1635  void* contextPtr
1636  ///< [IN]
1637 );
1638 
1639 //--------------------------------------------------------------------------------------------------
1640 /**
1641  * This function must be called to get the first Scan Information object reference in the list of
1642  * scan Information retrieved with le_mrc_PerformCellularNetworkScan().
1643  *
1644  * @return NULL No scan information found.
1645  * @return le_mrc_ScanInformationRef_t The Scan Information object reference.
1646  *
1647  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
1648  * function won't return.
1649  *
1650  * @note <b>multi-app safe</b>
1651  */
1652 //--------------------------------------------------------------------------------------------------
1654 (
1655  le_mrc_ScanInformationListRef_t scanInformationListRef
1656  ///< [IN] The list of scan information.
1657 );
1658 
1659 //--------------------------------------------------------------------------------------------------
1660 /**
1661  * This function must be called to get the next Scan Information object reference in the list of
1662  * scan Information retrieved with le_mrc_PerformCellularNetworkScan().
1663  *
1664  * @return NULL No scan information found.
1665  * @return le_mrc_ScanInformationRef_t The Scan Information object reference.
1666  *
1667  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
1668  * function won't return.
1669  *
1670  * @note <b>multi-app safe</b>
1671  */
1672 //--------------------------------------------------------------------------------------------------
1674 (
1675  le_mrc_ScanInformationListRef_t scanInformationListRef
1676  ///< [IN] The list of scan information.
1677 );
1678 
1679 //--------------------------------------------------------------------------------------------------
1680 /**
1681  * This function must be called to get the first Pci Scan Information object reference in the list of
1682  * scan Information retrieved with le_mrc_PerformPciNetworkScan().
1683  *
1684  * @return NULL No scan information found.
1685  * @return The Scan Information object reference.
1686  *
1687  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
1688  * function won't return.
1689  *
1690  * @note <b>multi-app safe</b>
1691  */
1692 //--------------------------------------------------------------------------------------------------
1694 (
1695  le_mrc_PciScanInformationListRef_t scanInformationListRef
1696  ///< [IN] The list of scan information.
1697 );
1698 
1699 //--------------------------------------------------------------------------------------------------
1700 /**
1701  * This function must be called to get the next Scan Information object reference in the list of
1702  * scan Information retrieved with le_mrc_PerformPciNetworkScan().
1703  *
1704  * @return NULL No scan information found.
1705  * @return The Scan Information object reference.
1706  *
1707  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
1708  * function won't return.
1709  *
1710  * @note <b>multi-app safe</b>
1711  */
1712 //--------------------------------------------------------------------------------------------------
1714 (
1715  le_mrc_PciScanInformationListRef_t scanInformationListRef
1716  ///< [IN] The list of scan information.
1717 );
1718 
1719 //--------------------------------------------------------------------------------------------------
1720 /**
1721  * This function must be called to get the first Plmn Information object reference in the list of
1722  * Plmn on each cell.
1723  *
1724  * @return NULL No scan information found.
1725  * @return le_mrc_PlmnInformationRef_t The Plmn Information object reference.
1726  *
1727  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
1728  * function won't return.
1729  *
1730  */
1731 //--------------------------------------------------------------------------------------------------
1733 (
1734  le_mrc_PciScanInformationRef_t pciScanInformationRef
1735  ///< [IN] [IN] The reference to the cell information.
1736 );
1737 
1738 //--------------------------------------------------------------------------------------------------
1739 /**
1740  * This function must be called to get the next Plmn Information object reference in the list of
1741  * Plmn on each cell.
1742  *
1743  * @return NULL No scan information found.
1744  * @return le_mrc_PlmnInformationRef_t The Plmn Information object reference.
1745  *
1746  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
1747  * function won't return.
1748  *
1749  */
1750 //--------------------------------------------------------------------------------------------------
1752 (
1754  ///< [IN] [IN] The reference to the cell information.
1755 );
1756 
1757 //--------------------------------------------------------------------------------------------------
1758 /**
1759  * This function must be called to get the physical cell id referenced by PciScanInformation which
1760  * is returned by le_mrc_GetFirstPciScanInfo() and le_mrc_GetNextPciScanInfo().
1761  *
1762  * @return The Physical Cell Identifier.
1763  *
1764  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
1765  * function won't return.
1766  */
1767 //--------------------------------------------------------------------------------------------------
1768 uint16_t le_mrc_GetPciScanCellId
1769 (
1770  le_mrc_PciScanInformationRef_t pciScanInformationRef
1771  ///< [IN] [IN] The reference to the cell information.
1772 );
1773 
1774 //--------------------------------------------------------------------------------------------------
1775 /**
1776  * This function must be called to get the global cell id referenced by PciScanInformation which is
1777  * returned by le_mrc_GetFirstPciScanInfo() and le_mrc_GetNextPciScanInfo().
1778  *
1779  * @return The Global Cell Identifier.
1780  *
1781  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
1782  * function won't return.
1783  */
1784 //--------------------------------------------------------------------------------------------------
1786 (
1787  le_mrc_PciScanInformationRef_t pciScanInformationRef
1788  ///< [IN] [IN] The reference to the cell information.
1789 );
1790 
1791 //--------------------------------------------------------------------------------------------------
1792 /**
1793  * This function must be called to get the Mcc/Mnc of each PLMN referenced in the list of
1794  * Plmn Information retrieved with le_mrc_GetFirstPlmnInfo() and le_mrc_GetNextPlmnInfo().
1795  *
1796  * @return
1797  * - LE_OK on success
1798  * - LE_OVERFLOW if the MCC or MNC would not fit in buffer
1799  * - LE_FAULT for all other errors
1800  *
1801  *
1802  */
1803 //--------------------------------------------------------------------------------------------------
1805 (
1807  ///< [IN] [IN] The reference to the cell information.
1808  char* mccPtr,
1809  ///< [OUT] Mobile Country Code
1810  size_t mccPtrSize,
1811  ///< [IN]
1812  char* mncPtr,
1813  ///< [OUT] Mobile Network Code
1814  size_t mncPtrSize
1815  ///< [IN]
1816 );
1817 
1818 //--------------------------------------------------------------------------------------------------
1819 /**
1820  * This function must be called to delete the list of the Scan Information retrieved with
1821  * le_mrc_PerformCellularNetworkScan().
1822  *
1823  * @note
1824  * On failure, the process exits, so you don't have to worry about checking the returned
1825  * reference for validity.
1826  *
1827  * @note <b>multi-app safe</b>
1828  */
1829 //--------------------------------------------------------------------------------------------------
1831 (
1832  le_mrc_ScanInformationListRef_t scanInformationListRef
1833  ///< [IN] The list of scan information.
1834 );
1835 
1836 //--------------------------------------------------------------------------------------------------
1837 /**
1838  * This function must be called to delete the list of the Pci Scan Information retrieved with
1839  * le_mrc_PerformPciNetworkScan() or le_mrc_PerformPciNetworkScanAsync().
1840  *
1841  * @note
1842  * On failure, the process exits, so you don't have to worry about checking the returned
1843  * reference for validity.
1844  *
1845  */
1846 //--------------------------------------------------------------------------------------------------
1848 (
1849  le_mrc_PciScanInformationListRef_t scanInformationListRef
1850  ///< [IN] The list of scan information.
1851 );
1852 
1853 //--------------------------------------------------------------------------------------------------
1854 /**
1855  * This function must be called to get the Cellular Network Code [mcc:mnc]
1856  *
1857  * @return
1858  * - LE_OK on success
1859  * - LE_OVERFLOW if the MCC or MNC would not fit in buffer
1860  * - LE_FAULT for all other errors
1861  *
1862  * @note On failure, the process exits, so you don't have to worry about checking the returned
1863  * reference for validity.
1864  *
1865  * @note <b>multi-app safe</b>
1866  */
1867 //--------------------------------------------------------------------------------------------------
1869 (
1870  le_mrc_ScanInformationRef_t scanInformationRef,
1871  ///< [IN] Scan information reference
1872  char* mccPtr,
1873  ///< [OUT] Mobile Country Code
1874  size_t mccPtrSize,
1875  ///< [IN]
1876  char* mncPtr,
1877  ///< [OUT] Mobile Network Code
1878  size_t mncPtrSize
1879  ///< [IN]
1880 );
1881 
1882 //--------------------------------------------------------------------------------------------------
1883 /**
1884  * This function must be called to get the Cellular Network Name.
1885  *
1886  * @return
1887  * - LE_OK on success
1888  * - LE_OVERFLOW if the operator name would not fit in buffer
1889  * - LE_FAULT for all other errors
1890  *
1891  * @note On failure, the process exits, so you don't have to worry about checking the returned
1892  * reference for validity.
1893  *
1894  * @note <b>multi-app safe</b>
1895  */
1896 //--------------------------------------------------------------------------------------------------
1898 (
1899  le_mrc_ScanInformationRef_t scanInformationRef,
1900  ///< [IN] Scan information reference
1901  char* namePtr,
1902  ///< [OUT] Name of operator
1903  size_t namePtrSize
1904  ///< [IN]
1905 );
1906 
1907 //--------------------------------------------------------------------------------------------------
1908 /**
1909  * This function must be called to get the radio access technology of a scanInformationRef.
1910  *
1911  * @return the radio access technology
1912  *
1913  * @note On failure, the process exits.
1914  *
1915  * @note <b>multi-app safe</b>
1916  */
1917 //--------------------------------------------------------------------------------------------------
1919 (
1920  le_mrc_ScanInformationRef_t scanInformationRef
1921  ///< [IN] Scan information reference
1922 );
1923 
1924 //--------------------------------------------------------------------------------------------------
1925 /**
1926  * This function must be called to check if a cellular network is currently in use.
1927  *
1928  * @return true The network is in use
1929  * @return false The network isn't in use
1930  *
1931  * @note On failure, the process exits, so you don't have to worry about checking the returned
1932  * reference for validity.
1933  *
1934  * @note <b>multi-app safe</b>
1935  */
1936 //--------------------------------------------------------------------------------------------------
1938 (
1939  le_mrc_ScanInformationRef_t scanInformationRef
1940  ///< [IN] Scan information reference
1941 );
1942 
1943 //--------------------------------------------------------------------------------------------------
1944 /**
1945  * This function must be called to check if a cellular network is available.
1946  *
1947  * @return true The network is available
1948  * @return false The network isn't available
1949  *
1950  * @note On failure, the process exits, so you don't have to worry about checking the returned
1951  * reference for validity.
1952  *
1953  * @note <b>multi-app safe</b>
1954  */
1955 //--------------------------------------------------------------------------------------------------
1957 (
1958  le_mrc_ScanInformationRef_t scanInformationRef
1959  ///< [IN] Scan information reference
1960 );
1961 
1962 //--------------------------------------------------------------------------------------------------
1963 /**
1964  * This function must be called to check if a cellular network is currently in home mode.
1965  *
1966  * @return true The network is home
1967  * @return false The network is roaming
1968  *
1969  * @note On failure, the process exits, so you don't have to worry about checking the returned
1970  * reference for validity.
1971  *
1972  * @note <b>multi-app safe</b>
1973  */
1974 //--------------------------------------------------------------------------------------------------
1976 (
1977  le_mrc_ScanInformationRef_t scanInformationRef
1978  ///< [IN] Scan information reference
1979 );
1980 
1981 //--------------------------------------------------------------------------------------------------
1982 /**
1983  * This function must be called to check if a cellular network is forbidden by the operator.
1984  *
1985  * @return true The network is forbidden
1986  * @return false The network is allowed
1987  *
1988  * @note On failure, the process exits, so you don't have to worry about checking the returned
1989  * reference for validity.
1990  *
1991  * @note <b>multi-app safe</b>
1992  */
1993 //--------------------------------------------------------------------------------------------------
1995 (
1996  le_mrc_ScanInformationRef_t scanInformationRef
1997  ///< [IN] Scan information reference
1998 );
1999 
2000 //--------------------------------------------------------------------------------------------------
2001 /**
2002  * This function must be called to get the current network name information.
2003  *
2004  * @return
2005  * - LE_OK on success
2006  * - LE_BAD_PARAMETER if nameStr is NULL
2007  * - LE_OVERFLOW if the Home Network Name can't fit in nameStr
2008  * - LE_FAULT on any other failure
2009  *
2010  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
2011  * function won't return.
2012  *
2013  * @note <b>multi-app safe</b>
2014  */
2015 //--------------------------------------------------------------------------------------------------
2017 (
2018  char* nameStr,
2019  ///< [OUT] the home network Name
2020  size_t nameStrSize
2021  ///< [IN]
2022 );
2023 
2024 //--------------------------------------------------------------------------------------------------
2025 /**
2026  * This function must be called to get the current network PLMN information.
2027  *
2028  * @return
2029  * - LE_OK on success
2030  * - LE_FAULT on any other failure
2031  *
2032  * @note <b>multi-app safe</b>
2033  */
2034 //--------------------------------------------------------------------------------------------------
2036 (
2037  char* mccStr,
2038  ///< [OUT] the mobile country code
2039  size_t mccStrSize,
2040  ///< [IN]
2041  char* mncStr,
2042  ///< [OUT] the mobile network code
2043  size_t mncStrSize
2044  ///< [IN]
2045 );
2046 
2047 //--------------------------------------------------------------------------------------------------
2048 /**
2049  * This function must be called to get the current Radio Access Technology in use.
2050  *
2051  * @return LE_OK Function succeeded.
2052  * @return LE_BAD_PARAMETER Invalid parameter.
2053  * @return LE_FAULT Function failed to get the Radio Access Technology.
2054  *
2055  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
2056  * function won't return.
2057  *
2058  * @note The API returns the RAT only if the device is registered on the network.
2059  * le_mrc_GetNetRegState() function can be called first to obtain the network registration
2060  * state.
2061  *
2062  * @note <b>multi-app safe</b>
2063  */
2064 //--------------------------------------------------------------------------------------------------
2066 (
2067  le_mrc_Rat_t* ratPtr
2068  ///< [OUT] The Radio Access Technology.
2069 );
2070 
2071 //--------------------------------------------------------------------------------------------------
2072 /**
2073  * This function must be called to retrieve the Neighboring Cells information. It creates and
2074  * returns a reference to the Neighboring Cells information.
2075  *
2076  * @return A reference to the Neighboring Cells information.
2077  * @return NULL if no Cells Information are available.
2078  *
2079  * @note <b>multi-app safe</b>
2080  */
2081 //--------------------------------------------------------------------------------------------------
2083 (
2084  void
2085 );
2086 
2087 //--------------------------------------------------------------------------------------------------
2088 /**
2089  * This function must be called to delete the Neighboring Cells information.
2090  *
2091  * @note On failure, the process exits, so you don't have to worry about checking the returned
2092  * reference for validity.
2093  *
2094  * @note <b>multi-app safe</b>
2095  */
2096 //--------------------------------------------------------------------------------------------------
2098 (
2099  le_mrc_NeighborCellsRef_t ngbrCellsRef
2100  ///< [IN] Neighboring Cells reference.
2101 );
2102 
2103 //--------------------------------------------------------------------------------------------------
2104 /**
2105  * This function must be called to get the first Cell Information reference in the list of
2106  * Neighboring Cells information retrieved with le_mrc_GetNeighborCellsInfo().
2107  *
2108  * @return NULL No Cell information object found.
2109  * @return le_mrc_CellInfoRef_t The Cell information object reference.
2110  *
2111  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
2112  * function won't return.
2113  *
2114  * @note <b>multi-app safe</b>
2115  */
2116 //--------------------------------------------------------------------------------------------------
2118 (
2119  le_mrc_NeighborCellsRef_t ngbrCellsRef
2120  ///< [IN] Neighboring Cells reference.
2121 );
2122 
2123 //--------------------------------------------------------------------------------------------------
2124 /**
2125  * This function must be called to get the next Cell Information reference in the list of
2126  * Neighboring Cells information retrieved with le_mrc_GetNeighborCellsInfo().
2127  *
2128  * @return NULL No Cell information object found.
2129  * @return le_mrc_CellInfoRef_t Cell information object reference.
2130  *
2131  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
2132  * function won't return.
2133  *
2134  * @note <b>multi-app safe</b>
2135  */
2136 //--------------------------------------------------------------------------------------------------
2138 (
2139  le_mrc_NeighborCellsRef_t ngbrCellsRef
2140  ///< [IN] Neighboring Cells reference.
2141 );
2142 
2143 //--------------------------------------------------------------------------------------------------
2144 /**
2145  * This function must be called to get the Physical Cell Identifier.
2146  *
2147  * @return The Physical Cell Identifier. UINT32_MAX value is returned if the Cell Identifier is not
2148  * available.
2149  *
2150  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
2151  * function won't return.
2152  *
2153  * @note <b>multi-app safe</b>
2154  */
2155 //--------------------------------------------------------------------------------------------------
2156 uint32_t le_mrc_GetNeighborCellId
2157 (
2158  le_mrc_CellInfoRef_t ngbrCellInfoRef
2159  ///< [IN] Cell information reference.
2160 );
2161 
2162 //--------------------------------------------------------------------------------------------------
2163 /**
2164  * This function must be called to get the Location Area Code of a cell.
2165  *
2166  * @return The Location Area Code of a cell. UINT16_MAX value is returned if the value is not
2167  * available.
2168  *
2169  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
2170  * function won't return.
2171  *
2172  * @note <b>multi-app safe</b>
2173  */
2174 //--------------------------------------------------------------------------------------------------
2176 (
2177  le_mrc_CellInfoRef_t ngbrCellInfoRef
2178  ///< [IN] Cell information reference.
2179 );
2180 
2181 //--------------------------------------------------------------------------------------------------
2182 /**
2183  * This function must be called to get the signal strength of a cell.
2184  *
2185  * @return The signal strength of a cell in dBm.
2186  *
2187  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
2188  * function won't return.
2189  *
2190  * @note <b>multi-app safe</b>
2191  */
2192 //--------------------------------------------------------------------------------------------------
2194 (
2195  le_mrc_CellInfoRef_t ngbrCellInfoRef
2196  ///< [IN] Cell information reference.
2197 );
2198 
2199 //--------------------------------------------------------------------------------------------------
2200 /**
2201  * This function must be called to get the Radio Access Technology of a cell.
2202  *
2203  * @return The Radio Access Technology of a cell.
2204  *
2205  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
2206  * function won't return.
2207  *
2208  * @note <b>multi-app safe</b>
2209  */
2210 //--------------------------------------------------------------------------------------------------
2212 (
2213  le_mrc_CellInfoRef_t ngbrCellInfoRef
2214  ///< [IN] Cell information reference.
2215 );
2216 
2217 //--------------------------------------------------------------------------------------------------
2218 /**
2219  * This function must be called to get the Ec/Io; the received energy per chip divided by the power
2220  * density in the band measured in dBm on the primary CPICH channel of serving cell (negative value)
2221  *
2222  * @return
2223  * - The Ec/Io of a cell given in dB with 1 decimal place. (only applicable for UMTS network).
2224  * - INT32_MAX when the value isn't available.
2225  *
2226  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
2227  * function won't return.
2228  *
2229  * @note <b>multi-app safe</b>
2230  */
2231 //--------------------------------------------------------------------------------------------------
2233 (
2234  le_mrc_CellInfoRef_t ngbrCellInfoRef
2235  ///< [IN] Cell information reference.
2236 );
2237 
2238 //--------------------------------------------------------------------------------------------------
2239 /**
2240  * This function must be called to get the RSRP and RSRQ of the Intrafrequency of a LTE cell.
2241  *
2242  * @return
2243  * - LE_OK on success
2244  * - LE_FAULT on failure
2245  *
2246  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
2247  * function won't return.
2248  *
2249  * @note <b>multi-app safe</b>
2250  */
2251 //--------------------------------------------------------------------------------------------------
2253 (
2254  le_mrc_CellInfoRef_t ngbrCellInfoRef,
2255  ///< [IN] Cell information reference.
2256  int32_t* rsrqPtr,
2257  ///< [OUT] Reference Signal Received Quality value in dB with 1 decimal
2258  ///< place
2259  int32_t* rsrpPtr
2260  ///< [OUT] Reference Signal Receiver Power value in dBm with 1 decimal
2261  ///< place
2262 );
2263 
2264 //--------------------------------------------------------------------------------------------------
2265 /**
2266  * This function must be called to get the RSRP and RSRQ of the Interfrequency of a LTE cell.
2267  *
2268  * @return
2269  * - LE_OK on success
2270  * - LE_FAULT on failure
2271  *
2272  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
2273  * function won't return.
2274  *
2275  * @note <b>multi-app safe</b>
2276  */
2277 //--------------------------------------------------------------------------------------------------
2279 (
2280  le_mrc_CellInfoRef_t ngbrCellInfoRef,
2281  ///< [IN] Cell information reference.
2282  int32_t* rsrqPtr,
2283  ///< [OUT] Reference Signal Received Quality value in dB with 1 decimal
2284  ///< place
2285  int32_t* rsrpPtr
2286  ///< [OUT] Reference Signal Receiver Power value in dBm with 1 decimal
2287  ///< place
2288 );
2289 
2290 //--------------------------------------------------------------------------------------------------
2291 /**
2292  * This function must be called to get the neighbor cell primary scrambling code.
2293  *
2294  * @return The neighbor cell primary scrambling code. UINT16_MAX value is returned if the value is
2295  * not available.
2296  *
2297  * @note <b>multi-app safe</b>
2298  */
2299 //--------------------------------------------------------------------------------------------------
2301 (
2302  le_mrc_CellInfoRef_t ngbrCellInfoRef
2303  ///< [IN] Cell information reference
2304 );
2305 
2306 //--------------------------------------------------------------------------------------------------
2307 /**
2308  * This function must be called to measure the signal metrics. It creates and returns a reference
2309  * to the signal metrics.
2310  *
2311  * @return A reference to the signal metrics.
2312  * @return NULL if no signal metrics are available.
2313  *
2314  * @note <b>multi-app safe</b>
2315  */
2316 //--------------------------------------------------------------------------------------------------
2318 (
2319  void
2320 );
2321 
2322 //--------------------------------------------------------------------------------------------------
2323 /**
2324  * This function must be called to delete the the signal metrics.
2325  *
2326  * @note On failure, the process exits, so you don't have to worry about checking the returned
2327  * reference for validity.
2328  *
2329  * @note <b>multi-app safe</b>
2330  */
2331 //--------------------------------------------------------------------------------------------------
2333 (
2334  le_mrc_MetricsRef_t MetricsRef
2335  ///< [IN] Signal metrics reference.
2336 );
2337 
2338 //--------------------------------------------------------------------------------------------------
2339 /**
2340  * This function returns the Radio Access Technology of the signal metrics.
2341  *
2342  * @return The Radio Access Technology of the signal measure.
2343  *
2344  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
2345  * function won't return.
2346  *
2347  * @note <b>multi-app safe</b>
2348  */
2349 //--------------------------------------------------------------------------------------------------
2351 (
2352  le_mrc_MetricsRef_t MetricsRef
2353  ///< [IN] Signal metrics reference.
2354 );
2355 
2356 //--------------------------------------------------------------------------------------------------
2357 /**
2358  * This function returns the signal strength in dBm and the bit error rate measured on GSM network.
2359  *
2360  * @return
2361  * - LE_OK on success
2362  * - LE_FAULT on failure
2363  *
2364  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
2365  * function won't return.
2366  *
2367  * @note <b>multi-app safe</b>
2368  */
2369 //--------------------------------------------------------------------------------------------------
2371 (
2372  le_mrc_MetricsRef_t MetricsRef,
2373  ///< [IN] Signal metrics reference.
2374  int32_t* rssiPtr,
2375  ///< [OUT] Signal strength in dBm
2376  uint32_t* berPtr
2377  ///< [OUT] Bit error rate.
2378 );
2379 
2380 //--------------------------------------------------------------------------------------------------
2381 /**
2382  * This function returns the signal metrics measured on UMTS or TD-SCDMA networks.
2383  *
2384  * @return
2385  * - LE_OK on success
2386  * - LE_FAULT on failure
2387  *
2388  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
2389  * function won't return.
2390  *
2391  * @note <b>multi-app safe</b>
2392  */
2393 //--------------------------------------------------------------------------------------------------
2395 (
2396  le_mrc_MetricsRef_t MetricsRef,
2397  ///< [IN] Signal metrics reference.
2398  int32_t* ssPtr,
2399  ///< [OUT] Signal strength in dBm
2400  uint32_t* blerPtr,
2401  ///< [OUT] Block error rate
2402  int32_t* ecioPtr,
2403  ///< [OUT] Ec/Io value in dB with 1 decimal place (-15 = -1.5 dB) (Negative
2404  ///< value)
2405  int32_t* rscpPtr,
2406  ///< [OUT] Measured RSCP in dBm (negative value, value INT32_MAX means
2407  ///< that RSCP is not available)
2408  int32_t* sinrPtr
2409  ///< [OUT] Measured SINR in dB (only applicable for TD-SCDMA network, value
2410  ///< INT32_MAX means that the SINR is not available)
2411 );
2412 
2413 //--------------------------------------------------------------------------------------------------
2414 /**
2415  * This function returns the signal metrics measured on LTE network.
2416  *
2417  * @return
2418  * - LE_OK on success
2419  * - LE_FAULT on failure
2420  * - sinrPtr and ioPtr return INT32_MAX when the value isn't available.
2421  *
2422  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
2423  * function won't return.
2424  *
2425  * @note <b>multi-app safe</b>
2426  */
2427 //--------------------------------------------------------------------------------------------------
2429 (
2430  le_mrc_MetricsRef_t MetricsRef,
2431  ///< [IN] Signal metrics reference.
2432  int32_t* ssPtr,
2433  ///< [OUT] Signal strength in dBm
2434  uint32_t* blerPtr,
2435  ///< [OUT] Block error rate
2436  int32_t* rsrqPtr,
2437  ///< [OUT] RSRQ value in dB as measured by L1 with 1 decimal place
2438  int32_t* rsrpPtr,
2439  ///< [OUT] Current RSRP in dBm as measured by L1 with 1 decimal place
2440  int32_t* snrPtr
2441  ///< [OUT] SNR level in dB with 1 decimal place (15 = 1.5 dB)
2442 );
2443 
2444 //--------------------------------------------------------------------------------------------------
2445 /**
2446  * This function returns the signal metrics measured on CDMA network.
2447  *
2448  * @return
2449  * - LE_OK on success
2450  * - LE_FAULT on failure
2451  * - rscpPtr and sinrPtr return INT32_MAX when the value isn't available.
2452  *
2453  * @note If the caller is passing a bad pointer into this function, it's a fatal error, the
2454  * function won't return.
2455  *
2456  * @note <b>multi-app safe</b>
2457  */
2458 //--------------------------------------------------------------------------------------------------
2460 (
2461  le_mrc_MetricsRef_t MetricsRef,
2462  ///< [IN] Signal metrics reference.
2463  int32_t* ssPtr,
2464  ///< [OUT] Signal strength in dBm
2465  uint32_t* erPtr,
2466  ///< [OUT] Frame/Packet error rate
2467  int32_t* ecioPtr,
2468  ///< [OUT] ECIO value in dB with 1 decimal place (-15 = -1.5 dB) (Negative
2469  ///< value)
2470  int32_t* sinrPtr,
2471  ///< [OUT] SINR level in dB with 1 decimal place, (only applicable for
2472  ///< 1xEV-DO, value INT32_MAX means that the value is not available)
2473  int32_t* ioPtr
2474  ///< [OUT] Received IO in dBm (only applicable for 1xEV-DO, value INT32_MAX
2475  ///< means that the value is not available)
2476 );
2477 
2478 //--------------------------------------------------------------------------------------------------
2479 /**
2480  * This function must be called to get the serving Cell Identifier.
2481  *
2482  * @return The Cell Identifier. UINT32_MAX value is returned if the value is not available.
2483  *
2484  * @note When the module is in UMTS network, the API returns the serving UTRAN Cell Identity (UC-Id)
2485  * which is used to identify the cell uniquely.
2486  * It is composed of the Controlling Radio Network Controller Identifier (CRNC-Id, 12 bits) and the
2487  * Cell Identifier (C-Id, 16 bits). (3GPP 25.401, section 6.1.5)
2488  * The Cell Identifier is coded in the lower 2 bytes of the 4 bytes UC-Id and the CRNC-Id is coded
2489  * in the upper 2 bytes.
2490  * Example: the API returns 7807609 -> 0x772279 (CRNC-Id = 0x77 , cell ID = 0x2279)
2491  *
2492  * @note <b>multi-app safe</b>
2493  */
2494 //--------------------------------------------------------------------------------------------------
2495 uint32_t le_mrc_GetServingCellId
2496 (
2497  void
2498 );
2499 
2500 //--------------------------------------------------------------------------------------------------
2501 /**
2502  * This function must be called to get the Location Area Code of the serving cell.
2503  *
2504  * @return The Location Area Code. UINT32_MAX value is returned if the value is not available.
2505  *
2506  * @note <b>multi-app safe</b>
2507  */
2508 //--------------------------------------------------------------------------------------------------
2510 (
2511  void
2512 );
2513 
2514 //--------------------------------------------------------------------------------------------------
2515 /**
2516  * This function must be called to get the Tracking Area Code of the serving cell (LTE only).
2517  *
2518  * @return The Tracking Area Code. UINT16_MAX value is returned if the value is not available.
2519  *
2520  * @note <b>multi-app safe</b>
2521  */
2522 //--------------------------------------------------------------------------------------------------
2524 (
2525  void
2526 );
2527 
2528 //--------------------------------------------------------------------------------------------------
2529 /**
2530  * This function must be called to get the serving cell primary scrambling code.
2531  *
2532  * @return The serving cell primary scrambling code. UINT16_MAX value is returned if the value is
2533  * not available.
2534  *
2535  * @note <b>multi-app safe</b>
2536  */
2537 //--------------------------------------------------------------------------------------------------
2539 (
2540  void
2541 );
2542 
2543 //--------------------------------------------------------------------------------------------------
2544 /**
2545  * Get the Bit mask for 2G/3G Band capabilities.
2546  *
2547  * @return
2548  * - LE_OK on success
2549  * - LE_FAULT on failure
2550  * - LE_UNSUPPORTED Unable to get the 2G/3G Band capabilities on this platform
2551  *
2552  * @note <b>multi-app safe</b>
2553  */
2554 //--------------------------------------------------------------------------------------------------
2556 (
2557  le_mrc_BandBitMask_t* bandMaskPtrPtr
2558  ///< [OUT] Bit mask for 2G/3G Band capabilities.
2559 );
2560 
2561 //--------------------------------------------------------------------------------------------------
2562 /**
2563  * Get the Bit mask for LTE Band capabilities.
2564  *
2565  * @return
2566  * - LE_OK on success
2567  * - LE_FAULT on failure
2568  * - LE_UNSUPPORTED Unable to get the LTE Band capabilities on this platform
2569  *
2570  * @note <b>multi-app safe</b>
2571  */
2572 //--------------------------------------------------------------------------------------------------
2574 (
2575  le_mrc_LteBandBitMask_t* bandMaskPtrPtr
2576  ///< [OUT] Bit mask for LTE Band capabilities.
2577 );
2578 
2579 //--------------------------------------------------------------------------------------------------
2580 /**
2581  * Get the Bit mask for TD-SCDMA Band capabilities.
2582  *
2583  * @return
2584  * - LE_OK on success
2585  * - LE_FAULT on failure
2586  * - LE_UNSUPPORTED Unable to get the TD-SCDMA Band Capabilities on this platform
2587  *
2588  * @note <b>multi-app safe</b>
2589  */
2590 //--------------------------------------------------------------------------------------------------
2592 (
2593  le_mrc_TdScdmaBandBitMask_t* bandMaskPtrPtr
2594  ///< [OUT] Bit mask for TD-SCDMA Band capabilities.
2595 );
2596 
2597 //--------------------------------------------------------------------------------------------------
2598 /**
2599  * Add handler function for EVENT 'le_mrc_NetworkReject'
2600  *
2601  * Event to report network reject indication.
2602  *
2603  */
2604 //--------------------------------------------------------------------------------------------------
2606 (
2608  ///< [IN]
2609  void* contextPtr
2610  ///< [IN]
2611 );
2612 
2613 //--------------------------------------------------------------------------------------------------
2614 /**
2615  * Remove handler function for EVENT 'le_mrc_NetworkReject'
2616  */
2617 //--------------------------------------------------------------------------------------------------
2619 (
2621  ///< [IN]
2622 );
2623 
2624 //--------------------------------------------------------------------------------------------------
2625 /**
2626  * Add handler function for EVENT 'le_mrc_NetRegReject'
2627  *
2628  * Event to report network registration reject indication.
2629  * NetworkReject will be deprecated.
2630  */
2631 //--------------------------------------------------------------------------------------------------
2633 (
2635  ///< [IN]
2636  void* contextPtr
2637  ///< [IN]
2638 );
2639 
2640 //--------------------------------------------------------------------------------------------------
2641 /**
2642  * Remove handler function for EVENT 'le_mrc_NetRegReject'
2643  */
2644 //--------------------------------------------------------------------------------------------------
2646 (
2648  ///< [IN]
2649 );
2650 
2651 //--------------------------------------------------------------------------------------------------
2652 /**
2653  * Add handler function for EVENT 'le_mrc_JammingDetectionEvent'
2654  *
2655  * This event provides information on jamming detection.
2656  */
2657 //--------------------------------------------------------------------------------------------------
2659 (
2661  ///< [IN]
2662  void* contextPtr
2663  ///< [IN]
2664 );
2665 
2666 //--------------------------------------------------------------------------------------------------
2667 /**
2668  * Remove handler function for EVENT 'le_mrc_JammingDetectionEvent'
2669  */
2670 //--------------------------------------------------------------------------------------------------
2672 (
2674  ///< [IN]
2675 );
2676 
2677 //--------------------------------------------------------------------------------------------------
2678 /**
2679  * Start the jamming detection monitoring.
2680  *
2681  * @warning The jamming detection feature might be limited by the platform.
2682  * Please refer to the platform documentation @ref platformConstraintsMdc.
2683  *
2684  * @return
2685  * - LE_OK The function succeeded.
2686  * - LE_FAULT The function failed.
2687  * - LE_DUPLICATE The feature is already activated and an activation is requested.
2688  * - LE_UNSUPPORTED The feature is not supported.
2689  */
2690 //--------------------------------------------------------------------------------------------------
2692 (
2693  void
2694 );
2695 
2696 //--------------------------------------------------------------------------------------------------
2697 /**
2698  * Stop the jamming detection monitoring.
2699  *
2700  * @return
2701  * - LE_OK The function succeeded.
2702  * - LE_FAULT The function failed or the application did not start the jamming detection.
2703  * - LE_UNSUPPORTED The feature is not supported.
2704  */
2705 //--------------------------------------------------------------------------------------------------
2707 (
2708  void
2709 );
2710 
2711 //--------------------------------------------------------------------------------------------------
2712 /**
2713  * Set the SAR backoff state
2714  *
2715  * @warning The SAR backoff feature might be unsupported by some platforms.
2716  * Please refer to the platform documentation @ref platformConstraintsMdc.
2717  *
2718  * @return
2719  * - LE_OK The function succeeded.
2720  * - LE_FAULT The function failed.
2721  * - LE_UNSUPPORTED The feature is not supported.
2722  * - LE_OUT_OF_RANGE The provided index is out of range.
2723  */
2724 //--------------------------------------------------------------------------------------------------
2726 (
2727  uint8_t state
2728  ///< [IN] New state to enable. By default, SAR is disabled (state = 0).
2729  ///< Refer to @ref platformConstraitsMdc for the number of maximum states.
2730 );
2731 
2732 //--------------------------------------------------------------------------------------------------
2733 /**
2734  * Get the SAR backoff state
2735  *
2736  * @warning The SAR backoff feature might be unsupported by some platforms.
2737  * Please refer to the platform documentation @ref platformConstraintsMdc.
2738  *
2739  * @return
2740  * - LE_OK The function succeeded.
2741  * - LE_FAULT The function failed.
2742  * - LE_UNSUPPORTED The feature is not supported.
2743  */
2744 //--------------------------------------------------------------------------------------------------
2746 (
2747  uint8_t* statePtr
2748  ///< [OUT] Current state. By default, SAR is disabled (state = 0).
2749  ///< Refer to @ref platformConstraitsMdc for the number of maximum states.
2750 );
2751 
2752 //--------------------------------------------------------------------------------------------------
2753 /**
2754  * Get the serving cell radio frequency channel number. The EARFCN is in the range from 0 to 262143.
2755  *
2756  * @return The serving cell frequency channel number. UINT32_MAX value is returned if the value is
2757  * not available.
2758  */
2759 //--------------------------------------------------------------------------------------------------
2761 (
2762  void
2763 );
2764 
2765 //--------------------------------------------------------------------------------------------------
2766 /**
2767  * Get the neighbor cell radio frequency channel number. The EARFCN is in the range from 0
2768  * to 262143.
2769  *
2770  * @return The neighbor cell frequency channel number. UINT32_MAX value is returned if the value is
2771  * not available.
2772  */
2773 //--------------------------------------------------------------------------------------------------
2775 (
2776  le_mrc_CellInfoRef_t ngbrCellInfoRef
2777  ///< [IN] The cell information reference
2778 );
2779 
2780 //--------------------------------------------------------------------------------------------------
2781 /**
2782  * Get the serving cell timing advance index value. Timing advance index value is in the range
2783  * from 0 to 1280.
2784  *
2785  * @return The serving cell timing advance index value. UINT32_MAX value is returned if the value
2786  * is not available.
2787  */
2788 //--------------------------------------------------------------------------------------------------
2790 (
2791  void
2792 );
2793 
2794 //--------------------------------------------------------------------------------------------------
2795 /**
2796  * Get the physical serving cell Id. The physical cell Id is in the range from 0 to 503.
2797  *
2798  * @return The physical serving cell Id. UINT16_MAX value is returned if the value is
2799  * not available.
2800  */
2801 //--------------------------------------------------------------------------------------------------
2803 (
2804  void
2805 );
2806 
2807 //--------------------------------------------------------------------------------------------------
2808 /**
2809  * Get the neighbor physical cell Id. The physical cell Id is in the range from 0 to 503.
2810  *
2811  * @return The physical serving cell Id. UINT16_MAX value is returned if the value is
2812  * not available.
2813  */
2814 //--------------------------------------------------------------------------------------------------
2816 (
2817  le_mrc_CellInfoRef_t ngbrCellInfoRef
2818  ///< [IN] The cell information reference
2819 );
2820 
2821 //--------------------------------------------------------------------------------------------------
2822 /**
2823  * Get the Base Station Identity Code (BSIC) for the serving cell on GSM network.
2824  *
2825  * @return LE_OK The function succeeded.
2826  * @return LE_BAD_PARAMETER Bad parameter passed to the function
2827  * @return LE_FAULT The function failed.
2828  * @return LE_UNAVAILABLE The BSIC is not available. The BSIC value is set to UINT8_MAX.
2829  */
2830 //--------------------------------------------------------------------------------------------------
2832 (
2833  uint8_t* BSICPtr
2834  ///< [OUT] The BSIC value
2835 );
2836 
2837 //--------------------------------------------------------------------------------------------------
2838 /**
2839  * Get the Base Station Identity Code (BSIC) for a neighbour cell on GSM network.
2840  *
2841  * @return LE_OK The function succeeded.
2842  * @return LE_BAD_PARAMETER Bad parameter passed to the function
2843  * @return LE_FAULT The function failed.
2844  * @return LE_UNAVAILABLE The BSIC is not available. The BSIC value is set to UINT8_MAX.
2845  */
2846 //--------------------------------------------------------------------------------------------------
2848 (
2849  le_mrc_CellInfoRef_t ngbrCellInfoRef,
2850  ///< [IN] The cell information reference.
2851  uint8_t* bsicPtr
2852  ///< [OUT] The BSIC value
2853 );
2854 
2855 /** @} **/
2856 
2857 #endif // LE_MRC_INTERFACE_H_INCLUDE_GUARD
le_mrc_PreferredOperatorRef_t le_mrc_GetNextPreferredOperator(le_mrc_PreferredOperatorListRef_t preferredOperatorListRef)
void le_mrc_RemoveNetworkRejectHandler(le_mrc_NetworkRejectHandlerRef_t handlerRef)
int32_t le_mrc_GetPlatformSpecificRegistrationErrorCode(void)
void(* le_mrc_NetRegStateHandlerFunc_t)(le_mrc_NetRegState_t state, void *contextPtr)
Definition: le_mrc_common.h:537
le_mrc_PlmnInformationRef_t le_mrc_GetNextPlmnInfo(le_mrc_PciScanInformationRef_t plmnRef)
le_result_t le_mrc_GetBandPreferences(le_mrc_BandBitMask_t *bandMaskPtrPtr)
le_result_t le_mrc_SetRadioPower(le_onoff_t power)
le_result_t le_mrc_SetTdScdmaBandPreferences(le_mrc_TdScdmaBandBitMask_t bandMask)
uint16_t le_mrc_GetPhysicalServingLteCellId(void)
le_mrc_NetRegStateEventHandlerRef_t le_mrc_AddNetRegStateEventHandler(le_mrc_NetRegStateHandlerFunc_t handlerPtr, void *contextPtr)
le_result_t
Definition: le_basics.h:46
le_result_t le_mrc_SetManualRegisterMode(const char *LE_NONNULL mcc, const char *LE_NONNULL mnc)
uint32_t le_mrc_GetServingCellLocAreaCode(void)
struct le_mrc_Metrics * le_mrc_MetricsRef_t
Definition: le_mrc_common.h:249
int32_t le_mrc_GetNeighborCellRxLevel(le_mrc_CellInfoRef_t ngbrCellInfoRef)
le_mrc_Rat_t le_mrc_GetCellularNetworkRat(le_mrc_ScanInformationRef_t scanInformationRef)
void le_mrc_ConnectService(void)
struct le_mrc_PciScanInformation * le_mrc_PciScanInformationRef_t
Definition: le_mrc_common.h:201
struct le_mrc_PlmnInformation * le_mrc_PlmnInformationRef_t
Definition: le_mrc_common.h:209
void le_mrc_RemoveSignalStrengthChangeHandler(le_mrc_SignalStrengthChangeHandlerRef_t handlerRef)
void(* le_mrc_DisconnectHandler_t)(void *)
Definition: le_mrc_interface.h:538
le_result_t le_mrc_GetNeighborCellGsmBsic(le_mrc_CellInfoRef_t ngbrCellInfoRef, uint8_t *bsicPtr)
le_mrc_PreferredOperatorRef_t le_mrc_GetFirstPreferredOperator(le_mrc_PreferredOperatorListRef_t preferredOperatorListRef)
le_mrc_PciScanInformationRef_t le_mrc_GetFirstPciScanInfo(le_mrc_PciScanInformationListRef_t scanInformationListRef)
le_mrc_PreferredOperatorListRef_t le_mrc_GetPreferredOperatorsList(void)
le_result_t le_mrc_TryConnectService(void)
le_result_t le_mrc_SetSignalStrengthIndDelta(le_mrc_Rat_t rat, uint16_t delta)
le_mrc_Rat_t le_mrc_GetRatOfSignalMetrics(le_mrc_MetricsRef_t MetricsRef)
le_result_t le_mrc_SetAutomaticRegisterMode(void)
struct le_mrc_PreferredOperatorList * le_mrc_PreferredOperatorListRef_t
Definition: le_mrc_common.h:225
le_result_t le_mrc_GetUmtsSignalMetrics(le_mrc_MetricsRef_t MetricsRef, int32_t *ssPtr, uint32_t *blerPtr, int32_t *ecioPtr, int32_t *rscpPtr, int32_t *sinrPtr)
le_result_t le_mrc_GetSignalQual(uint32_t *qualityPtr)
void(* le_mrc_JammingDetectionHandlerFunc_t)(le_mrc_JammingReport_t report, le_mrc_JammingStatus_t status, void *contextPtr)
Definition: le_mrc_common.h:673
void le_mrc_RemoveRatChangeHandler(le_mrc_RatChangeHandlerRef_t handlerRef)
le_mrc_NetRegState_t
Definition: le_mrc_common.h:257
void le_mrc_DeleteCellularNetworkScan(le_mrc_ScanInformationListRef_t scanInformationListRef)
struct le_mrc_NeighborCells * le_mrc_NeighborCellsRef_t
Definition: le_mrc_common.h:241
le_mrc_RatChangeHandlerRef_t le_mrc_AddRatChangeHandler(le_mrc_RatChangeHandlerFunc_t handlerPtr, void *contextPtr)
void(* le_mrc_ManualSelectionHandlerFunc_t)(le_result_t result, void *contextPtr)
Definition: le_mrc_common.h:625
le_result_t le_mrc_GetGsmSignalMetrics(le_mrc_MetricsRef_t MetricsRef, int32_t *rssiPtr, uint32_t *berPtr)
le_result_t le_mrc_SetSarBackoffState(uint8_t state)
le_result_t le_mrc_GetNetRegState(le_mrc_NetRegState_t *statePtr)
le_mrc_PciScanInformationListRef_t le_mrc_PerformPciNetworkScan(le_mrc_RatBitMask_t ratMask)
le_result_t le_mrc_GetPciScanMccMnc(le_mrc_PlmnInformationRef_t plmnRef, char *mccPtr, size_t mccPtrSize, char *mncPtr, size_t mncPtrSize)
struct le_mrc_JammingDetectionEventHandler * le_mrc_JammingDetectionEventHandlerRef_t
Definition: le_mrc_common.h:528
bool le_mrc_IsCellularNetworkForbidden(le_mrc_ScanInformationRef_t scanInformationRef)
void le_mrc_PerformPciNetworkScanAsync(le_mrc_RatBitMask_t ratMask, le_mrc_PciNetworkScanHandlerFunc_t handlerPtr, void *contextPtr)
le_mrc_SignalStrengthChangeHandlerRef_t le_mrc_AddSignalStrengthChangeHandler(le_mrc_Rat_t rat, int32_t lowerRangeThreshold, int32_t upperRangeThreshold, le_mrc_SignalStrengthChangeHandlerFunc_t handlerPtr, void *contextPtr)
void le_mrc_DisconnectService(void)
le_result_t le_mrc_GetCellularNetworkName(le_mrc_ScanInformationRef_t scanInformationRef, char *namePtr, size_t namePtrSize)
void le_mrc_DeleteSignalMetrics(le_mrc_MetricsRef_t MetricsRef)
le_result_t le_mrc_GetRadioAccessTechInUse(le_mrc_Rat_t *ratPtr)
le_result_t le_mrc_StartJammingDetection(void)
struct le_mrc_ScanInformationList * le_mrc_ScanInformationListRef_t
Definition: le_mrc_common.h:185
le_result_t le_mrc_GetLteBandPreferences(le_mrc_LteBandBitMask_t *bandMaskPtrPtr)
uint32_t le_mrc_GetServingCellId(void)
void(* le_mrc_PacketSwitchedChangeHandlerFunc_t)(le_mrc_NetRegState_t state, void *contextPtr)
Definition: le_mrc_common.h:565
uint16_t le_mrc_GetNeighborCellScramblingCode(le_mrc_CellInfoRef_t ngbrCellInfoRef)
uint32_t le_mrc_GetPciScanGlobalCellId(le_mrc_PciScanInformationRef_t pciScanInformationRef)
bool le_mrc_IsCellularNetworkAvailable(le_mrc_ScanInformationRef_t scanInformationRef)
le_result_t le_mrc_GetPacketSwitchedState(le_mrc_NetRegState_t *statePtr)
void(* le_mrc_CellularNetworkScanHandlerFunc_t)(le_mrc_ScanInformationListRef_t listRef, void *contextPtr)
Definition: le_mrc_common.h:594
le_result_t le_mrc_GetNeighborCellLteInterFreq(le_mrc_CellInfoRef_t ngbrCellInfoRef, int32_t *rsrqPtr, int32_t *rsrpPtr)
le_result_t le_mrc_GetLteSignalMetrics(le_mrc_MetricsRef_t MetricsRef, int32_t *ssPtr, uint32_t *blerPtr, int32_t *rsrqPtr, int32_t *rsrpPtr, int32_t *snrPtr)
le_result_t le_mrc_GetCellularNetworkMccMnc(le_mrc_ScanInformationRef_t scanInformationRef, char *mccPtr, size_t mccPtrSize, char *mncPtr, size_t mncPtrSize)
uint32_t le_mrc_GetServingCellTimingAdvance(void)
struct le_mrc_NetRegStateEventHandler * le_mrc_NetRegStateEventHandlerRef_t
Definition: le_mrc_common.h:480
void(* le_mrc_NetRegRejectHandlerFunc_t)(const le_mrc_NetRegRejectInd_t *LE_NONNULL networkRejectIndPtr, void *contextPtr)
Definition: le_mrc_common.h:660
void le_mrc_RemoveNetRegRejectHandler(le_mrc_NetRegRejectHandlerRef_t handlerRef)
uint32_t le_mrc_GetNeighborCellId(le_mrc_CellInfoRef_t ngbrCellInfoRef)
le_result_t le_mrc_GetPreferredOperatorDetails(le_mrc_PreferredOperatorRef_t preferredOperatorRef, char *mccPtr, size_t mccPtrSize, char *mncPtr, size_t mncPtrSize, le_mrc_RatBitMask_t *ratMaskPtr)
le_mrc_ScanInformationRef_t le_mrc_GetNextCellularNetworkScan(le_mrc_ScanInformationListRef_t scanInformationListRef)
struct le_mrc_PciScanInformationList * le_mrc_PciScanInformationListRef_t
Definition: le_mrc_common.h:193
le_result_t le_mrc_GetLteBandCapabilities(le_mrc_LteBandBitMask_t *bandMaskPtrPtr)
void le_mrc_PerformCellularNetworkScanAsync(le_mrc_RatBitMask_t ratMask, le_mrc_CellularNetworkScanHandlerFunc_t handlerPtr, void *contextPtr)
struct le_mrc_NetworkRejectHandler * le_mrc_NetworkRejectHandlerRef_t
Definition: le_mrc_common.h:512
le_result_t le_mrc_GetSarBackoffState(uint8_t *statePtr)
le_mrc_PciScanInformationRef_t le_mrc_GetNextPciScanInfo(le_mrc_PciScanInformationListRef_t scanInformationListRef)
le_mrc_PacketSwitchedChangeHandlerRef_t le_mrc_AddPacketSwitchedChangeHandler(le_mrc_PacketSwitchedChangeHandlerFunc_t packetHandlerPtr, void *contextPtr)
uint32_t le_mrc_GetServingCellEarfcn(void)
le_mrc_NeighborCellsRef_t le_mrc_GetNeighborCellsInfo(void)
le_result_t le_mrc_SetRatPreferences(le_mrc_RatBitMask_t ratMask)
#define LE_FULL_API
Definition: le_apiFeatures.h:40
uint16_t le_mrc_GetServingCellScramblingCode(void)
LE_FULL_API void le_mrc_SetServerDisconnectHandler(le_mrc_DisconnectHandler_t disconnectHandler, void *contextPtr)
le_result_t le_mrc_GetRadioPower(le_onoff_t *powerPtr)
le_mrc_JammingDetectionEventHandlerRef_t le_mrc_AddJammingDetectionEventHandler(le_mrc_JammingDetectionHandlerFunc_t handlerPtr, void *contextPtr)
void(* le_mrc_PciNetworkScanHandlerFunc_t)(le_mrc_PciScanInformationListRef_t listRef, void *contextPtr)
Definition: le_mrc_common.h:610
le_result_t le_mrc_SetBandPreferences(le_mrc_BandBitMask_t bandMask)
le_result_t le_mrc_StopJammingDetection(void)
le_result_t le_mrc_GetRatPreferences(le_mrc_RatBitMask_t *ratMaskPtrPtr)
le_mrc_MetricsRef_t le_mrc_MeasureSignalMetrics(void)
uint16_t le_mrc_GetServingCellLteTracAreaCode(void)
void le_mrc_DeleteNeighborCellsInfo(le_mrc_NeighborCellsRef_t ngbrCellsRef)
le_mrc_CellInfoRef_t le_mrc_GetFirstNeighborCellInfo(le_mrc_NeighborCellsRef_t ngbrCellsRef)
le_result_t le_mrc_GetNeighborCellLteIntraFreq(le_mrc_CellInfoRef_t ngbrCellInfoRef, int32_t *rsrqPtr, int32_t *rsrpPtr)
le_mrc_CellInfoRef_t le_mrc_GetNextNeighborCellInfo(le_mrc_NeighborCellsRef_t ngbrCellsRef)
bool le_mrc_IsCellularNetworkHome(le_mrc_ScanInformationRef_t scanInformationRef)
le_result_t le_mrc_GetBandCapabilities(le_mrc_BandBitMask_t *bandMaskPtrPtr)
struct le_mrc_CellInfo * le_mrc_CellInfoRef_t
Definition: le_mrc_common.h:233
void le_mrc_RemoveNetRegStateEventHandler(le_mrc_NetRegStateEventHandlerRef_t handlerRef)
le_mrc_NetworkRejectHandlerRef_t le_mrc_AddNetworkRejectHandler(le_mrc_NetworkRejectHandlerFunc_t handlerPtr, void *contextPtr)
struct le_mrc_RatChangeHandler * le_mrc_RatChangeHandlerRef_t
Definition: le_mrc_common.h:488
void(* le_mrc_RatChangeHandlerFunc_t)(le_mrc_Rat_t rat, void *contextPtr)
Definition: le_mrc_common.h:551
le_result_t le_mrc_RemovePreferredOperator(const char *LE_NONNULL mcc, const char *LE_NONNULL mnc)
le_mrc_NetRegRejectHandlerRef_t le_mrc_AddNetRegRejectHandler(le_mrc_NetRegRejectHandlerFunc_t handlerPtr, void *contextPtr)
void(* le_mrc_NetworkRejectHandlerFunc_t)(const char *LE_NONNULL mcc, const char *LE_NONNULL mnc, le_mrc_Rat_t rat, void *contextPtr)
Definition: le_mrc_common.h:642
struct le_mrc_PreferredOperator * le_mrc_PreferredOperatorRef_t
Definition: le_mrc_common.h:217
void le_mrc_DeletePciNetworkScan(le_mrc_PciScanInformationListRef_t scanInformationListRef)
uint16_t le_mrc_GetPhysicalNeighborLteCellId(le_mrc_CellInfoRef_t ngbrCellInfoRef)
bool le_mrc_IsCellularNetworkInUse(le_mrc_ScanInformationRef_t scanInformationRef)
le_mrc_Rat_t
Definition: le_mrc_common.h:280
void le_mrc_DeletePreferredOperatorsList(le_mrc_PreferredOperatorListRef_t preferredOperatorListRef)
le_mrc_Rat_t le_mrc_GetNeighborCellRat(le_mrc_CellInfoRef_t ngbrCellInfoRef)
le_result_t le_mrc_GetCdmaSignalMetrics(le_mrc_MetricsRef_t MetricsRef, int32_t *ssPtr, uint32_t *erPtr, int32_t *ecioPtr, int32_t *sinrPtr, int32_t *ioPtr)
struct le_mrc_NetRegRejectHandler * le_mrc_NetRegRejectHandlerRef_t
Definition: le_mrc_common.h:520
void le_mrc_RemoveJammingDetectionEventHandler(le_mrc_JammingDetectionEventHandlerRef_t handlerRef)
void(* le_mrc_SignalStrengthChangeHandlerFunc_t)(int32_t ss, void *contextPtr)
Definition: le_mrc_common.h:579
uint16_t le_mrc_GetPciScanCellId(le_mrc_PciScanInformationRef_t pciScanInformationRef)
le_result_t le_mrc_GetTdScdmaBandPreferences(le_mrc_TdScdmaBandBitMask_t *bandMaskPtrPtr)
le_result_t le_mrc_GetCurrentNetworkMccMnc(char *mccStr, size_t mccStrSize, char *mncStr, size_t mncStrSize)
le_result_t le_mrc_GetRegisterMode(bool *isManualPtrPtr, char *mccPtr, size_t mccPtrSize, char *mncPtr, size_t mncPtrSize)
int32_t le_mrc_GetNeighborCellUmtsEcIo(le_mrc_CellInfoRef_t ngbrCellInfoRef)
void le_mrc_RemovePacketSwitchedChangeHandler(le_mrc_PacketSwitchedChangeHandlerRef_t handlerRef)
void le_mrc_SetManualRegisterModeAsync(const char *LE_NONNULL mcc, const char *LE_NONNULL mnc, le_mrc_ManualSelectionHandlerFunc_t handlerPtr, void *contextPtr)
le_mrc_PlmnInformationRef_t le_mrc_GetFirstPlmnInfo(le_mrc_PciScanInformationRef_t pciScanInformationRef)
le_mrc_ScanInformationRef_t le_mrc_GetFirstCellularNetworkScan(le_mrc_ScanInformationListRef_t scanInformationListRef)
struct le_mrc_ScanInformation * le_mrc_ScanInformationRef_t
Definition: le_mrc_common.h:177
le_result_t le_mrc_SetLteBandPreferences(le_mrc_LteBandBitMask_t bandMask)
le_result_t le_mrc_AddPreferredOperator(const char *LE_NONNULL mcc, const char *LE_NONNULL mnc, le_mrc_RatBitMask_t ratMask)
le_result_t le_mrc_GetCurrentNetworkName(char *nameStr, size_t nameStrSize)
struct le_mrc_PacketSwitchedChangeHandler * le_mrc_PacketSwitchedChangeHandlerRef_t
Definition: le_mrc_common.h:496
le_mrc_ScanInformationListRef_t le_mrc_PerformCellularNetworkScan(le_mrc_RatBitMask_t ratMask)
le_result_t le_mrc_GetServingCellGsmBsic(uint8_t *BSICPtr)
uint32_t le_mrc_GetNeighborCellEarfcn(le_mrc_CellInfoRef_t ngbrCellInfoRef)
le_result_t le_mrc_SetSignalStrengthIndThresholds(le_mrc_Rat_t rat, int32_t lowerRangeThreshold, int32_t upperRangeThreshold)
uint32_t le_mrc_GetNeighborCellLocAreaCode(le_mrc_CellInfoRef_t ngbrCellInfoRef)
struct le_mrc_SignalStrengthChangeHandler * le_mrc_SignalStrengthChangeHandlerRef_t
Definition: le_mrc_common.h:504
le_onoff_t
Definition: le_basics.h:98
le_result_t le_mrc_GetTdScdmaBandCapabilities(le_mrc_TdScdmaBandBitMask_t *bandMaskPtrPtr)