Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move modules to independent repositories. #112

Merged
merged 66 commits into from
Oct 12, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
210a55c
Update cellular library to MIT license
chinglee-iot Mar 29, 2021
298ae4c
Merge branch 'FreeRTOS:main' into main
chinglee-iot Jun 30, 2021
21ea9bc
Merge branch 'FreeRTOS:main' into main
chinglee-iot Jul 16, 2021
6690f3b
Merge branch 'FreeRTOS:main' into main
chinglee-iot Jul 23, 2021
4a58d89
Merge branch 'FreeRTOS:main' into main
chinglee-iot Aug 24, 2021
955ebc0
Merge branch 'FreeRTOS:main' into main
chinglee-iot Oct 25, 2021
bba8adf
Merge branch 'FreeRTOS:main' into main
chinglee-iot Nov 4, 2021
440bec9
Merge branch 'FreeRTOS:main' into main
chinglee-iot Nov 9, 2021
a0fb7c7
Merge branch 'FreeRTOS:main' into main
chinglee-iot Nov 16, 2021
b28ed63
Merge branch 'FreeRTOS:main' into main
chinglee-iot Nov 24, 2021
b40cb10
Merge branch 'FreeRTOS:main' into main
chinglee-iot Dec 1, 2021
ca024c6
Merge branch 'FreeRTOS:main' into main
chinglee-iot Dec 1, 2021
277d8b7
Merge branch 'FreeRTOS:main' into main
chinglee-iot Dec 15, 2021
06402e9
Merge branch 'FreeRTOS:main' into main
chinglee-iot Dec 21, 2021
a993410
Merge branch 'FreeRTOS:main' into main
chinglee-iot Dec 21, 2021
45b9bcd
Merge branch 'FreeRTOS:main' into main
chinglee-iot Dec 27, 2021
cacbf87
Merge branch 'FreeRTOS:main' into main
chinglee-iot Jan 6, 2022
128407c
Merge branch 'FreeRTOS:main' into main
chinglee-iot Jan 7, 2022
b1e3e46
Merge branch 'FreeRTOS:main' into main
chinglee-iot Jan 10, 2022
70e76c4
Merge branch 'FreeRTOS:main' into main
chinglee-iot Jan 11, 2022
107896c
Merge branch 'FreeRTOS:main' into main
chinglee-iot Feb 7, 2022
b3f4fab
Merge branch 'FreeRTOS:main' into main
chinglee-iot Mar 15, 2022
5027c96
Merge branch 'FreeRTOS:main' into main
chinglee-iot Apr 27, 2022
61f5c46
Merge branch 'FreeRTOS:main' into main
chinglee-iot May 11, 2022
14cb0e7
Merge branch 'FreeRTOS:main' into main
chinglee-iot Jun 7, 2022
7a5972d
Merge branch 'FreeRTOS:main' into main
chinglee-iot Jun 22, 2022
a566304
Merge branch 'FreeRTOS:main' into main
chinglee-iot Jul 1, 2022
9dd71d0
Merge branch 'FreeRTOS:main' into main
chinglee-iot Jul 7, 2022
4584fbb
Merge branch 'FreeRTOS:main' into main
chinglee-iot Jul 18, 2022
74bfc9d
Merge branch 'FreeRTOS:main' into main
chinglee-iot Sep 23, 2022
582cc8f
Remove modules in cellular interface repo.
ActoryOu Sep 28, 2022
dcff898
Merge branch 'FreeRTOS:main' into main
chinglee-iot Sep 28, 2022
a9af14e
Update README.
ActoryOu Oct 3, 2022
b181f9e
Provide modules' repositories for reference implementations.
ActoryOu Oct 4, 2022
d484d03
Update doxygen files.
ActoryOu Oct 5, 2022
d83656e
Update HL7802 link in README.
ActoryOu Oct 5, 2022
d6c61e1
Fix spelling.
ActoryOu Oct 5, 2022
8dc3777
Align introduction.
ActoryOu Oct 5, 2022
4eb42b6
Remove Lab- prefix at url links
ActoryOu Oct 5, 2022
f415db7
Update README.
ActoryOu Oct 6, 2022
83c723a
Merge branch 'FreeRTOS:main' into main
chinglee-iot Oct 6, 2022
77c0c5d
Create Community-Supported-Ports
ActoryOu Oct 7, 2022
6ccb942
Handle undefined message when sending AT command (#110)
chinglee-iot Oct 6, 2022
606aa5d
Reset the AT command type before calling callback (#113)
chinglee-iot Oct 6, 2022
4e3dce0
Remove thirdparty folder.
ActoryOu Oct 7, 2022
ff638e8
Merged conflict.
ActoryOu Oct 7, 2022
47ab486
Remove modules folder.
ActoryOu Oct 7, 2022
05e04a0
Update README doc for integrating library with cellular modems.
ActoryOu Oct 7, 2022
a1fc8c1
Remove Transport interface part in README.
ActoryOu Oct 7, 2022
b2d188a
Merge remote-tracking branch 'actory/split' into update_doc
chinglee-iot Oct 7, 2022
4826115
Update README.md
chinglee-iot Oct 7, 2022
c5f70ca
Update README.md
chinglee-iot Oct 7, 2022
9459d43
Merge pull request #1 from chinglee-iot/update_doc
ActoryOu Oct 7, 2022
8f07d13
Convert PNG to SVG.
ActoryOu Oct 11, 2022
086bb26
Change image.
ActoryOu Oct 11, 2022
727e96e
Revert back to PNG format.
ActoryOu Oct 11, 2022
53ab4bf
Update image to odg format.
ActoryOu Oct 12, 2022
9792e93
Update image to svg format.
ActoryOu Oct 12, 2022
6ead2bb
Update image to png format.
ActoryOu Oct 12, 2022
7c42baf
Try SVG format
ActoryOu Oct 12, 2022
0249cae
Update image.
ActoryOu Oct 12, 2022
b96a271
Update image.
ActoryOu Oct 12, 2022
d5768e1
Update image.
ActoryOu Oct 12, 2022
e0d0c66
Update image.
ActoryOu Oct 12, 2022
4688213
Update image.
ActoryOu Oct 12, 2022
f1b96ac
Resize.
ActoryOu Oct 12, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
[submodule "test/unit-test/CMock"]
path = test/unit-test/CMock
url = https://github.com/ThrowTheSwitch/CMock
[submodule "modules/ThirdParty/Community-Supported-Ports"]
path = modules/ThirdParty/Community-Supported-Ports
url = https://github.com/FreeRTOS/FreeRTOS-Cellular-Interface-Community-Supported-Ports
38 changes: 23 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,14 @@
* [Folder Structure](#Folder-Structure)
* [Integrate FreeRTOS Cellular Interface with MCU platforms](#Integrate-FreeRTOS-Cellular-Interface-with-MCU-platforms)
* [Adding support for new cellular modems](#Adding-support-for-new-cellular-modems)
* [Integrate FreeRTOS Cellular Interface with Cellular Modules](#integrate-freertos-cellular-interface-with-cellular-modules)
* [Building Unit Tests](#Building-Unit-Tests)
* [Generating documentation](#Generating-documentation)
* [Contributing](#Contributing)

## Introduction

The FreeRTOS Cellular Interface exposes the capability of a few popular cellular modems through a uniform API. Currently, this repository contains libraries for these three cellular modems.

* [Quectel BG96](https://www.quectel.com/product/lte-bg96-cat-m1-nb1-egprs/)
* [Sierra Wireless HL7802](https://www.sierrawireless.com/products-and-solutions/embedded-solutions/products/hl7802/)
* [U-Blox Sara-R4](https://www.u-blox.com/en/product/sara-r4-series)

The current version of the FreeRTOS Cellular Interface encapsulates the TCP stack offered by those cellular modems. They all implement the same uniform [Cellular Library API](https://github.com/FreeRTOS/FreeRTOS-Cellular-Interface/tree/main/source/include/cellular_api.h). That API hides the complexity of AT commands, and exposes a socket-like interface to C programmers.

Even though applications can choose to use the FreeRTOS Cellular Interface API directly, the API is not designed for such a purpose. In a typical FreeRTOS system, applications use high level libraries, such as the [coreMQTT](https://github.com/FreeRTOS/coreMQTT) library and the [coreHTTP](https://github.com/FreeRTOS/coreHTTP) library, to communicate with other end points. Those high level libraries use an abstract interface, the [Transport Interface](https://github.com/FreeRTOS/coreMQTT/blob/main/source/interface/transport_interface.h), to send and receive data. A Transport Interface can be implemented on top of the FreeRTOS Cellular Interface.
The Cellular Interface library implement a simple unified [Application Programing Interfaces (APIs)](https://www.freertos.org/Documentation/api-ref/cellular/index.html) that hide the complexity of AT commands. The cellular modems to be interchangeable with the popular options built upon TCP stack and exposes a socket-like interface to C programmers.

Most cellular modems implement more or less the AT commands defined by the [3GPP TS v27.007](https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=1515) standard. This project provides an implementation of such standard AT commands in a [reusable common component](https://github.com/FreeRTOS/FreeRTOS-Cellular-Interface/tree/main/source/include/common). The three Cellular libraries in this project all take advantage of that common code. The library for each modem only implements the vendor-specific AT commands, then exposes the complete Cellular API.

Expand Down Expand Up @@ -51,12 +44,11 @@ git clone [email protected]/FreeRTOS/FreeRTOS-Cellular-Interface.git
At the root of this repository are these folders:

* source : reusable common code that implements the standard AT commands defined by 3GPP TS v27.007.
* modules : vendor-specific code that implements non-3GPP AT commands for each cellular modem.
* docs : documentations.
* test : unit test and cbmc.
* tools : tools for Coverity static analysis and CMock.

## Integrate FreeRTOS Cellular Interface with MCU platforms
## Implement Comm Interface with MCU platforms

The FreeRTOS Cellular Interface runs on MCUs. It uses an abstracted interface - the [Comm Interface](https://github.com/FreeRTOS/FreeRTOS-Cellular-Interface/tree/main/source/interface/cellular_comm_interface.h), to communicate with cellular modems. A Comm Interface must be implemented as well on the MCU platform. The most common implementations of the Comm Interface are over UART hardware, but it can be implemented over other physical interfaces such as SPI as well. The documentation of the Comm Interface is found within the [Cellular API References](https://www.freertos.org/Documentation/api-ref/cellular/cellular_porting.html#cellular_porting_comm_if). These are example implementations of the Comm Interface:

Expand All @@ -71,7 +63,7 @@ The FreeRTOS Cellular Interface uses kernel APIs for task synchronization and me

FreeRTOS Cellular Interface now supports AT commands, TCP offloaded Cellular abstraction Layer. In order to add support for a new cellular modem, the developer can use the [common component](https://github.com/FreeRTOS/FreeRTOS-Cellular-Interface/tree/main/source/include/common) that has already implemented the 3GPP standard AT commands.

In order to port the [common component](https://www.freertos.org/Documentation/api-ref/cellular_common/index.html):
In order to port the [common component](https://www.freertos.org/Documentation/api-ref/cellular/cellular_porting_module_guide.html):

1. Implement the cellular modem porting interface defined in [cellular_common_portable.h](https://github.com/FreeRTOS/FreeRTOS-Cellular-Interface/tree/main/source/include/common/cellular_common_portable.h) ([Document](https://www.freertos.org/Documentation/api-ref/cellular/cellular__common__portable_8h.html)).
2. Implement the subset of Cellular Library APIs that use vendor-specific (non-3GPP) AT commands. The APIs to be implemented are the ones not marked with an "o" in [this table](https://www.freertos.org/Documentation/api-ref/cellular/cellular_common__a_p_is.html).
Expand All @@ -82,9 +74,25 @@ It is recommended that you start by cloning the implementation of one of the exi

Current Example Implementations:

* [Quectel BG96](https://github.com/FreeRTOS/FreeRTOS-Cellular-Interface/tree/main/modules/bg96)
* [Sierra Wireless HL7802](https://github.com/FreeRTOS/FreeRTOS-Cellular-Interface/tree/main/modules/hl7802)
* [U-Blox Sara-R4](https://github.com/FreeRTOS/FreeRTOS-Cellular-Interface/tree/main/modules/sara_r4)
* [Quectel BG96](https://github.com/FreeRTOS/FreeRTOS-Cellular-Interface-Reference-Quectel-BG96)
* [Sierra Wireless HL7802](https://github.com/FreeRTOS/FreeRTOS-Cellular-Interface-Reference-Sierra-Wireless-HL7802)
* [U-Blox Sara-R4](https://github.com/FreeRTOS/FreeRTOS-Cellular-Interface-Reference-ublox-SARA-R4)

## Integrate FreeRTOS Cellular Interface with application

Once comm interface and cellular module implementation are ready, we can start to integrate
FreeRTOS Cellular Interface. The following diagram depicts the relationship of these software components:
<p align="center"><img src="/docs/plantuml/images/cellular_components.svg" width="50%"><br>

Follow these steps to integrate FreeRTOS Cellular Interface into your project:
1. Clone this repository into your project.
2. Clone one of the refenerce cellular module implementations ( BG96 / HL7802 / SARA-R4 )
or create your own cellular module implementaion in your project.
3. Implement comm interface.
4. Build these software components with your application and execute.

We also provide [Demos for FreeRTOS-Cellular-Interface on Windows simulator](https://github.com/FreeRTOS/FreeRTOS/tree/main/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator)
as references for these three cellular modems example implementations.

## Building Unit Tests

Expand Down
15 changes: 8 additions & 7 deletions docs/doxygen/pages.dox
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,20 @@ FreeRTOS Cellular Library use communication interface to communicate with cellul
This library contains the following three components in three folders.
| FreeRTOS Cellular Library folders | High Level Description |
| :--------------------| :--------------------- |
| include | FreeRTOS Cellular Library APIs definitions help to abstract the control of cellular module. |
| common | FreeRTOS Cellular Library APIs implemenation with 3GPP TS v27.007 AT commands. |
| modules | FreeRTOS Cellular Library APIs implemenation with cellular module specific AT commands. |
| source | Reusable common code that implements the standard AT commands defined by 3GPP TS v27.007. |
| docs | Documentations. |
| test | Unit test and cbmc. |
| tools | tools for Coverity static analysis and CMock. |

- <b>Supported cellular modules</b><br>
Three cellular modules are supported in this library.
| Cellular module |
| :--------------------|
| quectel BG96 |
| Sierra HL7802 |
| Ublox SARA R4 series |
| [Quectel BG96](https://github.com/FreeRTOS/FreeRTOS-Cellular-Interface-Reference-Quectel-BG96) |
| [Sierra HL7802](https://github.com/FreeRTOS/FreeRTOS-Cellular-Interface-Reference-Sierra-Wireless-HL7802) |
| [Ublox SARA R4 series](https://github.com/FreeRTOS/FreeRTOS-Cellular-Interface-Reference-ublox-SARA-R4) |
New cellular module can reference these module porting to be integrated into FreeRTOS Cellular Library.<br>
Please reference cellular common library document for detail information about porting new cellular module.
Please reference [Porting module Guide](https://www.freertos.org/Documentation/api-ref/cellular/cellular_porting_module_guide.html) document for detail information about porting new cellular module.
- <b>Currently Supported Features in FreeRTOS Cellular Library</b>
- User of FreeRTOS Cellular Library is able to use Cat-M1 cellular technology to connect to network.
- User of FreeRTOS Cellular Library is able to perform control plane operations like (initialize modem, register on a network etc.) in a vendor agnostic way.
Expand Down
6 changes: 3 additions & 3 deletions docs/doxygen/portingCellularModule.dox
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,9 @@ Reference @subpage cellular_module_urc_handler for detail information.
Three cellular module portings can be referenced.<br>
It is recommended that you start by cloning the implementation of one of the existing modems,<br>
then make modifications where your modem's vendor-specific (non-3GPP) AT commands are different. <br>
- <a href="">BG96</a>
- <a href="">HL7802</a>
- <a href="">SARA R4 series</a>
- <a href="https://github.com/FreeRTOS/FreeRTOS-Cellular-Interface-Reference-Quectel-BG96">BG96</a>
- <a href="https://github.com/FreeRTOS/FreeRTOS-Cellular-Interface-Reference-Sierra-Wireless-HL7802">HL7802</a>
- <a href="https://github.com/FreeRTOS/FreeRTOS-Cellular-Interface-Reference-ublox-SARA-R4">SARA R4 series</a>
*/

/**
Expand Down
43 changes: 43 additions & 0 deletions docs/plantuml/images/cellular_components.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions lexicon.txt
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,7 @@ closedcallback
cmakelists
cmd
cmdbuf
cmock
com
comm
commad
Expand Down
1 change: 0 additions & 1 deletion modules/ThirdParty/Community-Supported-Ports
Submodule Community-Supported-Ports deleted from 0f5e37
Loading