LTEmC v3.0.1
C device driver for LooUQ LTEm cellular modems
|
LTEmC modem driver implemented in C for portability and a small footprint.
The LooUQ LTEmC driver supports the LooUQ Circuit River LTEm1 LTE modem. The LTEm1 is designed to allow for cost-effective cellular communications in embedded systems by supporting LTE CAT-M1 and LTE CAT-NB1 (NB-IOT) communications. The LTEm1 is certified for use on the Verizon network. It is also fully tested and supported using Hologram SIMs and several US carriers.
First off, thanks for taking a look at the LTEm1 hardware and LTEmC software!
The best way to get started understanding LTEmC and considering it for your projects today is to look at the tests folder in the repository. This collection of test/examples will continue to grow in future releases and new use cases are demonstrated. The tests folder contains a series of progressive LTEm1c tests. Starting with simple platform I/O verification through to application protocol support (sockets, MQTT, HTTP), each test builds upon a succesful previous level test. While called tests, these projects they serve as examples of how to do specific use cases. These are your best source for scaffold code to start your LTEm project.
Each test shows the process for initializing, starting services, and a loop exercising the functionality of the subsystem under test.
Subsystem | Functions |
---|---|
atcmd_ | Handles invoking AT commands to the modem's module and handling response parsing. Supports variable command timeouts, thread safety and completion determination. Results are presented in a simple STRUCT with a HTTP type status code, along with the detail string response |
mdminfo_ | Provides several common service functions for understanding the state of the modem and the network connection |
gnss_ | The LTEm1 has a multi-constellation GNSS receiver (aka GPS is the US). The GNSS module provides support for accessing this functionality, like knowing exactly where your device is. |
geo_ | The LTEm1 supports the creation of geo-fence outlines and monitoring of device positioning relative to the geo-fence boundary. Note: geo_ requires the gnss_ module be built into your project to use these functions. |
sockets_ | This is the typical POSIX style sockets layer. Support if TCP/UDP/SSL clients are there. Note: server mode is not currently planned, all US networks I have worked with do not support incoming connections for cellular without add-on services like VPNs or other network constructs. I recommend alternatives to attempting direct connection to your device over cellular. |
mqtt_ | Support for MQTT client functionality is built here. Attach, connect, subscribe, unsubscribe and publish all are supported. Limited testing so far on QOS levels and advance features like clean and will. The MQTT module supports message properties appended to the topic and has a property parser available. |
http_ | Support for HTTP client functionality is found here. Perform HTTP GET or POST actions with standard or custom request headers. |
iop_ | Generally you won't directly interact with the iop_ subsystem. It performs the buffer management to/from hardware. It interfaces with the action_, sockets_, and mqtt_ subsystems to perform the necessary transfers. |
All of the core (blue) subsystems are functional. Extension subsystems (copper, with wide-borders) are optional and can be built into the application, or omitted to reduced code size. Grey boxes indicate future feature areas.
If you have an opinion on any of these functions and their applicability to your product/project please let LooUQ know. Send your thoughts to answe.nosp@m.rs@l.nosp@m.oouq..nosp@m.com.