Skip to content
This repository was archived by the owner on Nov 11, 2024. It is now read-only.

Commit addf595

Browse files
committed
Documentation change only: better advice on use of M10 in LENA-R8xxxM10.
The LENA-R8xxxM10 cellular module does not support access to the built-in M10 chip via CMUX, and access to the GNSS chip via ye olde AT+UGUBX mechanism, while possible, has limitations since there can be message collisions with the UPOS entity inside the cellular module [which cannot be stopped from talking to the GNSS chip if _it_ has switched it on] at the same time, leading to communications failures. Hence it is advisable to use the separate, dedicated, TXD_GNSS/RXD_GNSS pins that the LENA-R8 module offers to access the internal GNSS chip and treat the M10 as a standalone GNSS device from a ubxlib perspective. Advice is added to the location API and the examples concerning this. Our apologies to mos216 for not adding this advice earlier.
1 parent 480b6fc commit addf595

File tree

4 files changed

+58
-2
lines changed

4 files changed

+58
-2
lines changed

common/location/api/u_location.h

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,23 @@ typedef enum {
340340
* force use of AT commands, rather than the GNSS multiplexer channel, to
341341
* obtain position.
342342
*
343+
* Note: if you would like to use the M10 device inside a LENA-R8xxxM10
344+
* module, LENA-R8 does NOT support communication with that device via
345+
* CMUX, which all of the APIs here will use by default. You _may_ still
346+
* use the APIs here if you define U_NETWORK_GNSS_CFG_CELL_USE_AT_ONLY when
347+
* you build ubxlib, forcing the ubxlib code to use the more clunky, polling,
348+
* AT+UGUBX mechanism to exchange messages with the GNSS chip, however
349+
* continuous location (i.e. any API with "Continuous" in the name) is not
350+
* possible via that polling mechanism and communication attempts may also
351+
* occasionally fail, particularly soon after power-on of the GNSS chip,
352+
* as responses from the GNSS chip to messages sent by the UPOS software
353+
* entity of the LENA-R8 cellular chip, which cannot be stopped, may end
354+
* up replacing the wanted reply. Hence, for LENA-R8, it is advisable to
355+
* power the internal GNSS chip from VCC_GNSS and connect a seperate UART from
356+
* your MCU to the TXD_GNSS/RXD_GNSS pins offered by the LENA-R8 module;
357+
* then, from a ubxlib perspective, you can treat the GNSS chip inside
358+
* LENA-R8 as a standalone GNSS device.
359+
*
343360
* @param devHandle the device handle to use.
344361
* @param type the type of location fix to perform;
345362
* how this can be used depends upon the
@@ -444,6 +461,23 @@ int32_t uLocationGet(uDeviceHandle_t devHandle, uLocationType_t type,
444461
* force use of AT commands, rather than the GNSS multiplexer channel, to
445462
* obtain position.
446463
*
464+
* Note: if you would like to use the M10 device inside a LENA-R8xxxM10
465+
* module, LENA-R8 does NOT support communication with that device via
466+
* CMUX, which all of the APIs here will use by default. You _may_ still
467+
* use the APIs here if you define U_NETWORK_GNSS_CFG_CELL_USE_AT_ONLY when
468+
* you build ubxlib, forcing the ubxlib code to use the more clunky, polling,
469+
* AT+UGUBX mechanism to exchange messages with the GNSS chip, however
470+
* continuous location (i.e. any API with "Continuous" in the name) is not
471+
* possible via that polling mechanism and communication attempts may also
472+
* occasionally fail, particularly soon after power-on of the GNSS chip,
473+
* as responses from the GNSS chip to messages sent by the UPOS software
474+
* entity of the LENA-R8 cellular chip, which cannot be stopped, may end
475+
* up replacing the wanted reply. Hence, for LENA-R8, it is advisable to
476+
* power the internal GNSS chip from VCC_GNSS and connect a seperate UART from
477+
* your MCU to the TXD_GNSS/RXD_GNSS pins offered by the LENA-R8 module;
478+
* then, from a ubxlib perspective, you can treat the GNSS chip inside
479+
* LENA-R8 as a standalone GNSS device.
480+
*
447481
* #U_LOCATION_TYPE_CLOUD_CLOUD_LOCATE is not currently supported by
448482
* this function.
449483
*
@@ -513,6 +547,9 @@ int32_t uLocationGetStart(uDeviceHandle_t devHandle, uLocationType_t type,
513547
* be unresponsive. For that case, please call this function once at
514548
* startup, only calling uLocationGetStop() when you are shutting down.
515549
*
550+
* Note: this API is NOT supported for the M10 GNSS device inside a
551+
* LENA-R8xxxM10 module.
552+
*
516553
* If you are requesting #U_LOCATION_TYPE_GNSS at a high rate (e.g. faster than
517554
* once per second) then, since this code only uses UBX messages, it will
518555
* switch off NMEA output from the GNSS chip in order to ensure the desired

example/location/README.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ These examples demonstrate how to establish location in three different configur
77
- as above but continuously to a callback ([main_loc_gnss_cell_continuous.c](main_loc_gnss_cell_continuous.c)),
88
- using cloud services such as Cell Locate via a cellular \[and in future Wi-Fi\] module ([main_loc_cell_locate.c](main_loc_cell_locate.c) and [main_loc_gnss_cloud_locate.c](main_loc_gnss_cloud_locate.c)); the latter Cloud Locate service is focussed on applications where the cloud needs to know the position of the device but the device itself does not.
99

10-
IMPORTANT: there will likely be modifications to this API as we introduce more location-type services, beware!
11-
1210
# Usage
1311
To build and run these examples on a supported platform you need to travel down into the [port/platform](/port/platform)`/<platform>/mcu/<mcu>` directory of your choice and find the `runner` build. The instructions there will tell you how to set/override \#defines. The following \#defines are relevant:
1412

example/location/main_loc_gnss_cell.c

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,23 @@
1919
* a location fix, i.e. this example ONLY applies if your GNSS module is
2020
* attached to the cellular module and NOT to this MCU.
2121
*
22+
* Note: if you would like to use the M10 device inside a LENA-R8xxxM10
23+
* module, LENA-R8 does NOT support communication with that device via
24+
* CMUX, which the location API will use by default. You _may_ still
25+
* use this example if you define U_NETWORK_GNSS_CFG_CELL_USE_AT_ONLY
26+
* when you build ubxlib, forcing the ubxlib code to use the more clunky,
27+
* polling, AT+UGUBX mechanism to exchange messages with the GNSS chip,
28+
* however communication attempts may occasionally fail, particularly soon
29+
* after power-on of the GNSS chip, as responses from the GNSS chip to
30+
* messages sent by the UPOS software entity of the LENA-R8 cellular chip,
31+
* which cannot be stopped, may end up replacing the wanted reply. Hence,
32+
* for LENA-R8, it is advisable to power the internal GNSS chip from VCC_GNSS
33+
* and connect a seperate UART from your MCU to the TXD_GNSS/RXD_GNSS pins
34+
* offered by the LENA-R8 module; then, from a ubxlib perspective, you can
35+
* treat the GNSS chip inside LENA-R8 as a standalone GNSS device and
36+
* follow the main_loc_gnss.c and main_loc_gnss_continuous.c examples
37+
* instead.
38+
*
2239
* The choice of module and the choice of platform on which this
2340
* code runs is made at build time, see the README.md for
2441
* instructions.

example/location/main_loc_gnss_cell_continuous.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@
1919
* a location fix continuously, i.e. this example ONLY applies if your
2020
* GNSS module is attached to the cellular module and NOT to this MCU.
2121
*
22+
* Note that this example will NOT work for LENA-R8xxxM10 since LENA-R8
23+
* does not support CMUX access to the built-in GNSS chip and that is
24+
* required for continuous location.
25+
*
2226
* The choice of module and the choice of platform on which this
2327
* code runs is made at build time, see the README.md for
2428
* instructions.

0 commit comments

Comments
 (0)