[修改] 增加freeRTOS
1. 版本FreeRTOSv202212.01,命名为kernel;
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,50 @@
|
||||
<table>
|
||||
<tr>
|
||||
<td colspan="3"><center><b>Code Size of cellularLibrary (example generated with GCC for ARM Cortex-M)</b></center></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>File</b></td>
|
||||
<td><b><center>With -O1 Optimization</center></b></td>
|
||||
<td><b><center>With -Os Optimization</center></b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>cellular_3gpp_api.c</td>
|
||||
<td><center>6.4K</center></td>
|
||||
<td><center>5.9K</center></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>cellular_3gpp_urc_handler.c</td>
|
||||
<td><center>0.9K</center></td>
|
||||
<td><center>0.8K</center></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>cellular_at_core.c</td>
|
||||
<td><center>1.4K</center></td>
|
||||
<td><center>1.2K</center></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>cellular_common_api.c</td>
|
||||
<td><center>0.7K</center></td>
|
||||
<td><center>0.6K</center></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>cellular_common.c</td>
|
||||
<td><center>1.7K</center></td>
|
||||
<td><center>1.5K</center></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>cellular_pkthandler.c</td>
|
||||
<td><center>1.7K</center></td>
|
||||
<td><center>1.6K</center></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>cellular_pktio.c</td>
|
||||
<td><center>2.0K</center></td>
|
||||
<td><center>1.8K</center></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Total estimates</b></td>
|
||||
<td><b><center>14.8K</center></b></td>
|
||||
<td><b><center>13.4K</center></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -0,0 +1,228 @@
|
||||
<doxygenlayout version="1.0">
|
||||
<!-- Generated by doxygen 1.8.20 -->
|
||||
<!-- Navigation index tabs for HTML output -->
|
||||
<navindex>
|
||||
<tab type="mainpage" visible="yes" title=""/>
|
||||
<tab type="pages" visible="yes" title="" intro=""/>
|
||||
<!-- Hide the default "Data Structures" tab and use the "Modules" tab for data
|
||||
structures. This allows internal data structures to be hidden. -->
|
||||
<tab type="modules" visible="yes" title="Data types and Constants" intro="This library defines the following data types and constants."/>
|
||||
<tab type="namespaces" visible="yes" title="">
|
||||
<tab type="namespacelist" visible="yes" title="" intro=""/>
|
||||
<tab type="namespacemembers" visible="yes" title="" intro=""/>
|
||||
</tab>
|
||||
<tab type="interfaces" visible="no" title="">
|
||||
<tab type="interfacelist" visible="no" title="" intro=""/>
|
||||
<tab type="interfaceindex" visible="no" title=""/>
|
||||
<tab type="interfacehierarchy" visible="yes" title="" intro=""/>
|
||||
</tab>
|
||||
<tab type="classes" visible="no" title="">
|
||||
<tab type="classlist" visible="no" title="" intro=""/>
|
||||
<tab type="classindex" visible="no" title=""/>
|
||||
<tab type="hierarchy" visible="no" title="" intro=""/>
|
||||
<tab type="classmembers" visible="no" title="" intro=""/>
|
||||
</tab>
|
||||
<tab type="structs" visible="no" title="">
|
||||
<tab type="structlist" visible="no" title="" intro=""/>
|
||||
<tab type="structindex" visible="no" title=""/>
|
||||
</tab>
|
||||
<tab type="exceptions" visible="no" title="">
|
||||
<tab type="exceptionlist" visible="no" title="" intro=""/>
|
||||
<tab type="exceptionindex" visible="no" title=""/>
|
||||
<tab type="exceptionhierarchy" visible="yes" title="" intro=""/>
|
||||
</tab>
|
||||
<tab type="files" visible="no" title="">
|
||||
<tab type="filelist" visible="yes" title="Files" intro="The following files are associated with this library."/>
|
||||
<tab type="globals" visible="no" title="" intro=""/>
|
||||
</tab>
|
||||
<tab type="examples" visible="yes" title="" intro=""/>
|
||||
</navindex>
|
||||
|
||||
<!-- Layout definition for a class page -->
|
||||
<class>
|
||||
<briefdescription visible="yes"/>
|
||||
<includes visible="$SHOW_INCLUDE_FILES"/>
|
||||
<inheritancegraph visible="$CLASS_GRAPH"/>
|
||||
<collaborationgraph visible="$COLLABORATION_GRAPH"/>
|
||||
<memberdecl>
|
||||
<nestedclasses visible="yes" title=""/>
|
||||
<publictypes title=""/>
|
||||
<services title=""/>
|
||||
<interfaces title=""/>
|
||||
<publicslots title=""/>
|
||||
<signals title=""/>
|
||||
<publicmethods title=""/>
|
||||
<publicstaticmethods title=""/>
|
||||
<publicattributes title=""/>
|
||||
<publicstaticattributes title=""/>
|
||||
<protectedtypes title=""/>
|
||||
<protectedslots title=""/>
|
||||
<protectedmethods title=""/>
|
||||
<protectedstaticmethods title=""/>
|
||||
<protectedattributes title=""/>
|
||||
<protectedstaticattributes title=""/>
|
||||
<packagetypes title=""/>
|
||||
<packagemethods title=""/>
|
||||
<packagestaticmethods title=""/>
|
||||
<packageattributes title=""/>
|
||||
<packagestaticattributes title=""/>
|
||||
<properties title=""/>
|
||||
<events title=""/>
|
||||
<privatetypes title=""/>
|
||||
<privateslots title=""/>
|
||||
<privatemethods title=""/>
|
||||
<privatestaticmethods title=""/>
|
||||
<privateattributes title=""/>
|
||||
<privatestaticattributes title=""/>
|
||||
<friends title=""/>
|
||||
<related title="" subtitle=""/>
|
||||
<membergroups visible="yes"/>
|
||||
</memberdecl>
|
||||
<detaileddescription title=""/>
|
||||
<memberdef>
|
||||
<inlineclasses title=""/>
|
||||
<typedefs title=""/>
|
||||
<enums title=""/>
|
||||
<services title=""/>
|
||||
<interfaces title=""/>
|
||||
<constructors title=""/>
|
||||
<functions title=""/>
|
||||
<related title=""/>
|
||||
<variables title=""/>
|
||||
<properties title=""/>
|
||||
<events title=""/>
|
||||
</memberdef>
|
||||
<allmemberslink visible="yes"/>
|
||||
<usedfiles visible="$SHOW_USED_FILES"/>
|
||||
<authorsection visible="yes"/>
|
||||
</class>
|
||||
|
||||
<!-- Layout definition for a namespace page -->
|
||||
<namespace>
|
||||
<briefdescription visible="yes"/>
|
||||
<memberdecl>
|
||||
<nestednamespaces visible="yes" title=""/>
|
||||
<constantgroups visible="yes" title=""/>
|
||||
<interfaces visible="yes" title=""/>
|
||||
<classes visible="yes" title=""/>
|
||||
<structs visible="yes" title=""/>
|
||||
<exceptions visible="yes" title=""/>
|
||||
<typedefs title=""/>
|
||||
<sequences title=""/>
|
||||
<dictionaries title=""/>
|
||||
<enums title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
<membergroups visible="yes"/>
|
||||
</memberdecl>
|
||||
<detaileddescription title=""/>
|
||||
<memberdef>
|
||||
<inlineclasses title=""/>
|
||||
<typedefs title=""/>
|
||||
<sequences title=""/>
|
||||
<dictionaries title=""/>
|
||||
<enums title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
</memberdef>
|
||||
<authorsection visible="yes"/>
|
||||
</namespace>
|
||||
|
||||
<!-- Layout definition for a file page -->
|
||||
<file>
|
||||
<briefdescription visible="yes"/>
|
||||
<includes visible="$SHOW_INCLUDE_FILES"/>
|
||||
<includegraph visible="$INCLUDE_GRAPH"/>
|
||||
<includedbygraph visible="$INCLUDED_BY_GRAPH"/>
|
||||
<sourcelink visible="yes"/>
|
||||
<memberdecl>
|
||||
<interfaces visible="yes" title=""/>
|
||||
<classes visible="yes" title=""/>
|
||||
<structs visible="yes" title=""/>
|
||||
<exceptions visible="yes" title=""/>
|
||||
<namespaces visible="yes" title=""/>
|
||||
<constantgroups visible="yes" title=""/>
|
||||
<defines title=""/>
|
||||
<typedefs title=""/>
|
||||
<sequences title=""/>
|
||||
<dictionaries title=""/>
|
||||
<enums title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
<membergroups visible="yes"/>
|
||||
</memberdecl>
|
||||
<detaileddescription title=""/>
|
||||
<memberdef>
|
||||
<inlineclasses title=""/>
|
||||
<defines title=""/>
|
||||
<typedefs title=""/>
|
||||
<sequences title=""/>
|
||||
<dictionaries title=""/>
|
||||
<enums title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
</memberdef>
|
||||
<authorsection/>
|
||||
</file>
|
||||
|
||||
<!-- Layout definition for a group page -->
|
||||
<group>
|
||||
<briefdescription visible="yes"/>
|
||||
<groupgraph visible="$GROUP_GRAPHS"/>
|
||||
<memberdecl>
|
||||
<nestedgroups visible="yes" title=""/>
|
||||
<dirs visible="yes" title=""/>
|
||||
<files visible="yes" title=""/>
|
||||
<namespaces visible="yes" title=""/>
|
||||
<classes visible="yes" title=""/>
|
||||
<defines title=""/>
|
||||
<typedefs title=""/>
|
||||
<sequences title=""/>
|
||||
<dictionaries title=""/>
|
||||
<enums title=""/>
|
||||
<enumvalues title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
<signals title=""/>
|
||||
<publicslots title=""/>
|
||||
<protectedslots title=""/>
|
||||
<privateslots title=""/>
|
||||
<events title=""/>
|
||||
<properties title=""/>
|
||||
<friends title=""/>
|
||||
<membergroups visible="yes"/>
|
||||
</memberdecl>
|
||||
<detaileddescription title=""/>
|
||||
<memberdef>
|
||||
<pagedocs/>
|
||||
<inlineclasses title=""/>
|
||||
<defines title=""/>
|
||||
<typedefs title=""/>
|
||||
<sequences title=""/>
|
||||
<dictionaries title=""/>
|
||||
<enums title=""/>
|
||||
<enumvalues title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
<signals title=""/>
|
||||
<publicslots title=""/>
|
||||
<protectedslots title=""/>
|
||||
<privateslots title=""/>
|
||||
<events title=""/>
|
||||
<properties title=""/>
|
||||
<friends title=""/>
|
||||
</memberdef>
|
||||
<authorsection visible="yes"/>
|
||||
</group>
|
||||
|
||||
<!-- Layout definition for a directory page -->
|
||||
<directory>
|
||||
<briefdescription visible="yes"/>
|
||||
<directorygraph visible="yes"/>
|
||||
<memberdecl>
|
||||
<dirs visible="yes"/>
|
||||
<files visible="yes"/>
|
||||
</memberdecl>
|
||||
<detaileddescription title=""/>
|
||||
</directory>
|
||||
</doxygenlayout>
|
||||
@ -0,0 +1,421 @@
|
||||
/**
|
||||
@mainpage Overview
|
||||
@anchor cellular
|
||||
@brief FreeRTOS Cellular library
|
||||
|
||||
FreeRTOS Cellular Library use communication interface to communicate with cellular modules to provide cellular network connectivity.
|
||||
|
||||
<b>FreeRTOS Cellular Library</b>
|
||||
- <b>Repository structure</b><br>
|
||||
This library contains the following three components in three folders.
|
||||
| FreeRTOS Cellular Library folders | High Level Description |
|
||||
| :--------------------| :--------------------- |
|
||||
| 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](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 [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.
|
||||
- User of FreeRTOS Cellular Library is able to send and receive data using TCP/IP in a vendor agnostic way given that TCP/IP stack is running on the cellular modem.
|
||||
- User of FreeRTOS Cellular Library is able to put the modem in different low power modes (PSM and eDRX) in a vendor agnostic way.
|
||||
- User of FreeRTOS Cellular Library is able to receive asynchronous notifications about various events like "disconnected", "signal strength changed" etc. to enable them to take appropriate action as desired.
|
||||
- User of FreeRTOS Cellular Library is able to use the existing application protocol clients (MQTT, HTTP) over cellular seamlessly. i.e. any existing user application using MQTT which works over WiFi/Ethernet shall work over Cellular given the underlying cellular technology permits that.<br>
|
||||
|
||||
|
||||
@section cellular_memory_requirements Memory Requirements
|
||||
@brief Memory requirements of the Cellular library.
|
||||
|
||||
@include{doc} size_table.md
|
||||
*/
|
||||
|
||||
/**
|
||||
@page Design
|
||||
|
||||
@section FreeRTOS_Cellular_Library_Design Cellular Interface Design
|
||||
|
||||
FreeRTOS Cellular Library uses communication interface to communicate with cellular modules.<br>
|
||||
Users of FreeRTOS Cellular Library should create a instance of CellularCommInterface and pass it
|
||||
to Cellular_Init function as paremeters.
|
||||
|
||||
\image html comm_interaction.png "Cellular library interacts with comm interface" width=800px
|
||||
|
||||
The following communication interface implementation can be used as reference.
|
||||
- <a href="https://github.com/aws/amazon-freertos/blob/feature/cellular/vendors/pc/boards/windows/ports/comm_if/comm_if_windows.c">FreeRTOS windows simulator comm interface </a>
|
||||
- <a href="https://github.com/aws/amazon-freertos/blob/feature/cellular/vendors/st/boards/stm32l475_discovery/ports/comm_if/comm_if_st.c"> STM32 L475 discovery board comm interface </a>
|
||||
- <a href="https://github.com/aws/amazon-freertos/blob/feature/cellular/vendors/sierra/boards/sensorhub/ports/comm_if/comm_if_sierra.c"> Sierra sensorhub board comm interface </a>
|
||||
<b></b>
|
||||
|
||||
@section cellular_socket_api_desing Cellular Socket API Design
|
||||
|
||||
FreeRTOS Cellular Interface offloads the TCP/IP stacks to cellular module. The implementation
|
||||
of the socket APIs use module specific AT commands. Cellular socket APIs abstract the differences
|
||||
between different cellular module. The following are cellular socket APIs:
|
||||
- @function_name{Cellular_CreateSocket}
|
||||
- @function_name{Cellular_SocketSetSockOpt}
|
||||
- @function_name{Cellular_SocketSend}
|
||||
- @function_name{Cellular_SocketRecv}
|
||||
- @function_name{Cellular_SocketClose}
|
||||
- @function_name{Cellular_GetHostByName}
|
||||
- @function_name{Cellular_SocketRegisterDataReadyCallback}
|
||||
- @function_name{Cellular_SocketRegisterClosedCallback}
|
||||
- @function_name{Cellular_SocketRegisterSocketOpenCallback}
|
||||
|
||||
Cellular socket APIs and cellular modem events change cellular socket state.
|
||||
See the below graph for the socket state transitions:
|
||||
@image html cellular_socket_state.png width=70%
|
||||
*/
|
||||
|
||||
/**
|
||||
@page cellular_config Configurations
|
||||
@brief Configurations of the Cellular Library.
|
||||
|
||||
Some configuration settings are C pre-processor constants, and some are function-like macros for logging. They can be set with a `#define` in the config file (**cellular_config.h**) or by using a compiler option such as -D in gcc.
|
||||
|
||||
@section CELLULAR_DO_NOT_USE_CUSTOM_CONFIG
|
||||
@copydoc CELLULAR_DO_NOT_USE_CUSTOM_CONFIG
|
||||
|
||||
@section CELLULAR_MCC_MAX_SIZE
|
||||
@copydoc CELLULAR_MCC_MAX_SIZE
|
||||
|
||||
@section CELLULAR_MNC_MAX_SIZE
|
||||
@copydoc CELLULAR_MNC_MAX_SIZE
|
||||
|
||||
@section CELLULAR_ICCID_MAX_SIZE
|
||||
@copydoc CELLULAR_ICCID_MAX_SIZE
|
||||
|
||||
@section CELLULAR_IMSI_MAX_SIZE
|
||||
@copydoc CELLULAR_IMSI_MAX_SIZE
|
||||
|
||||
@section CELLULAR_FW_VERSION_MAX_SIZE
|
||||
@copydoc CELLULAR_FW_VERSION_MAX_SIZE
|
||||
|
||||
@section CELLULAR_HW_VERSION_MAX_SIZE
|
||||
@copydoc CELLULAR_HW_VERSION_MAX_SIZE
|
||||
|
||||
@section CELLULAR_SERIAL_NUM_MAX_SIZE
|
||||
@copydoc CELLULAR_SERIAL_NUM_MAX_SIZE
|
||||
|
||||
@section CELLULAR_IMEI_MAX_SIZE
|
||||
@copydoc CELLULAR_IMEI_MAX_SIZE
|
||||
|
||||
@section CELLULAR_NETWORK_NAME_MAX_SIZE
|
||||
@copydoc CELLULAR_NETWORK_NAME_MAX_SIZE
|
||||
|
||||
@section CELLULAR_APN_MAX_SIZE
|
||||
@copydoc CELLULAR_APN_MAX_SIZE
|
||||
|
||||
@section CELLULAR_PDN_USERNAME_MAX_SIZE
|
||||
@copydoc CELLULAR_PDN_USERNAME_MAX_SIZE
|
||||
|
||||
@section CELLULAR_PDN_PASSWORD_MAX_SIZE
|
||||
@copydoc CELLULAR_PDN_PASSWORD_MAX_SIZE
|
||||
|
||||
@section CELLULAR_IP_ADDRESS_MAX_SIZE
|
||||
@copydoc CELLULAR_IP_ADDRESS_MAX_SIZE
|
||||
|
||||
@section CELLULAR_AT_CMD_MAX_SIZE
|
||||
@copydoc CELLULAR_AT_CMD_MAX_SIZE
|
||||
|
||||
@section CELLULAR_NUM_SOCKET_MAX
|
||||
@copydoc CELLULAR_NUM_SOCKET_MAX
|
||||
|
||||
@section CELLULAR_MANUFACTURE_ID_MAX_SIZE
|
||||
@copydoc CELLULAR_MANUFACTURE_ID_MAX_SIZE
|
||||
|
||||
@section CELLULAR_MODEL_ID_MAX_SIZE
|
||||
@copydoc CELLULAR_MODEL_ID_MAX_SIZE
|
||||
|
||||
@section CELLULAR_EDRX_LIST_MAX_SIZE
|
||||
@copydoc CELLULAR_EDRX_LIST_MAX_SIZE
|
||||
|
||||
@section CELLULAR_PDN_CONTEXT_ID_MIN
|
||||
@copydoc CELLULAR_PDN_CONTEXT_ID_MIN
|
||||
|
||||
@section CELLULAR_PDN_CONTEXT_ID_MAX
|
||||
@copydoc CELLULAR_PDN_CONTEXT_ID_MAX
|
||||
|
||||
@section CELLULAR_MAX_RAT_PRIORITY_COUNT
|
||||
@copydoc CELLULAR_MAX_RAT_PRIORITY_COUNT
|
||||
|
||||
@section CELLULAR_MAX_SEND_DATA_LEN
|
||||
@copydoc CELLULAR_MAX_SEND_DATA_LEN
|
||||
|
||||
@section CELLULAR_MAX_RECV_DATA_LEN
|
||||
@copydoc CELLULAR_MAX_RECV_DATA_LEN
|
||||
|
||||
@section CELLULAR_SUPPORT_GETHOSTBYNAME
|
||||
@copydoc CELLULAR_SUPPORT_GETHOSTBYNAME
|
||||
|
||||
@section CELLULAR_COMM_IF_SEND_TIMEOUT_MS
|
||||
@copydoc CELLULAR_COMM_IF_SEND_TIMEOUT_MS
|
||||
|
||||
@section CELLULAR_COMM_IF_RECV_TIMEOUT_MS
|
||||
@copydoc CELLULAR_COMM_IF_RECV_TIMEOUT_MS
|
||||
|
||||
@section CELLULAR_CONFIG_STATIC_ALLOCATION_CONTEXT
|
||||
@copydoc CELLULAR_CONFIG_STATIC_ALLOCATION_CONTEXT
|
||||
|
||||
@section CELLULAR_CONFIG_STATIC_COMM_CONTEXT_ALLOCATION
|
||||
@copydoc CELLULAR_CONFIG_STATIC_COMM_CONTEXT_ALLOCATION
|
||||
|
||||
@section CELLULAR_CONFIG_DEFAULT_RAT
|
||||
@copydoc CELLULAR_CONFIG_DEFAULT_RAT
|
||||
|
||||
@section CELLULAR_CONFIG_STATIC_SOCKET_CONTEXT_ALLOCATION
|
||||
@copydoc CELLULAR_CONFIG_STATIC_SOCKET_CONTEXT_ALLOCATION
|
||||
|
||||
@section cellular_logerror LogError
|
||||
@copydoc LogError
|
||||
|
||||
@section cellular_logwarn LogWarn
|
||||
@copydoc LogWarn
|
||||
|
||||
@section cellular_loginfo LogInfo
|
||||
@copydoc LogInfo
|
||||
|
||||
@section cellular_logdebug LogDebug
|
||||
@copydoc LogDebug
|
||||
|
||||
@section CELLULAR_MODEM_NO_EPS_NETWORK
|
||||
@brief Macro to disable querying evolved packet system (EPS) network registration status in Cellular_CommonGetServiceStatus.<br>
|
||||
@note Cellular modem porting can define this macro in cellular_config.h to disable this function.<br>
|
||||
|
||||
<b>Default value:</b> undefined
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
@functions_page{cellular,cellular}
|
||||
@functions_brief{cellular}
|
||||
|
||||
<b>Control plane APIs</b>
|
||||
|
||||
- @function_name{Cellular_Init}
|
||||
@function_brief{Cellular_Init}
|
||||
- @function_name{Cellular_Cleanup}
|
||||
@function_brief{Cellular_Cleanup}
|
||||
- @function_name{Cellular_SetRatPriority}
|
||||
@function_brief{Cellular_SetRatPriority}
|
||||
- @function_name{Cellular_GetRatPriority}
|
||||
@function_brief{Cellular_GetRatPriority}
|
||||
- @function_name{Cellular_RfOn}
|
||||
@function_brief{Cellular_RfOn}
|
||||
- @function_name{Cellular_RfOff}
|
||||
@function_brief{Cellular_RfOff}
|
||||
|
||||
<b>Hardware info</b>
|
||||
|
||||
- @function_name{Cellular_GetSimCardStatus}
|
||||
@function_brief{Cellular_GetSimCardStatus}
|
||||
- @function_name{Cellular_GetSimCardInfo}
|
||||
@function_brief{Cellular_GetSimCardInfo}
|
||||
- @function_name{Cellular_GetModemInfo}
|
||||
@function_brief{Cellular_GetModemInfo}
|
||||
|
||||
<b>Network registration</b>
|
||||
|
||||
- @function_name{Cellular_GetRegisteredNetwork}
|
||||
@function_brief{Cellular_GetRegisteredNetwork}
|
||||
- @function_name{Cellular_GetNetworkTime}
|
||||
@function_brief{Cellular_GetNetworkTime}
|
||||
- @function_name{Cellular_GetSignalInfo}
|
||||
@function_brief{Cellular_GetSignalInfo}
|
||||
- @function_name{Cellular_GetServiceStatus}
|
||||
@function_brief{Cellular_GetServiceStatus}
|
||||
|
||||
<b>Enable data network</b>
|
||||
|
||||
- @function_name{Cellular_SetPdnConfig}
|
||||
@function_brief{Cellular_SetPdnConfig}
|
||||
- @function_name{Cellular_GetPdnStatus}
|
||||
@function_brief{Cellular_GetPdnStatus}
|
||||
- @function_name{Cellular_ActivatePdn}
|
||||
@function_brief{Cellular_ActivatePdn}
|
||||
- @function_name{Cellular_DeactivatePdn}
|
||||
@function_brief{Cellular_DeactivatePdn}
|
||||
- @function_name{Cellular_GetIPAddress}
|
||||
@function_brief{Cellular_GetIPAddress}
|
||||
- @function_name{Cellular_SetDns}
|
||||
@function_brief{Cellular_SetDns}
|
||||
|
||||
<b>Device and network status callback functions</b>
|
||||
|
||||
- @function_name{Cellular_RegisterUrcNetworkRegistrationEventCallback}
|
||||
@function_brief{Cellular_RegisterUrcNetworkRegistrationEventCallback}
|
||||
- @function_name{Cellular_RegisterUrcPdnEventCallback}
|
||||
@function_brief{Cellular_RegisterUrcPdnEventCallback}
|
||||
- @function_name{Cellular_RegisterUrcSignalStrengthChangedCallback}
|
||||
@function_brief{Cellular_RegisterUrcSignalStrengthChangedCallback}
|
||||
- @function_name{Cellular_RegisterModemEventCallback}
|
||||
@function_brief{Cellular_RegisterModemEventCallback}
|
||||
- @function_name{Cellular_RegisterUrcGenericCallback}
|
||||
@function_brief{Cellular_RegisterUrcGenericCallback}
|
||||
|
||||
<b>Power saveing modes</b>
|
||||
|
||||
- @function_name{Cellular_GetPsmSettings}
|
||||
@function_brief{Cellular_GetPsmSettings}
|
||||
- @function_name{Cellular_SetPsmSettings}
|
||||
@function_brief{Cellular_SetPsmSettings}
|
||||
- @function_name{Cellular_GetEidrxSettings}
|
||||
@function_brief{Cellular_GetEidrxSettings}
|
||||
- @function_name{Cellular_SetEidrxSettings}
|
||||
@function_brief{Cellular_SetEidrxSettings}
|
||||
|
||||
<b>Custom AT command</b>
|
||||
|
||||
- @function_name{Cellular_ATCommandRaw}
|
||||
@function_brief{Cellular_ATCommandRaw}
|
||||
|
||||
<b>Data plan APIs</b>
|
||||
|
||||
- @function_name{Cellular_CreateSocket}
|
||||
@function_brief{Cellular_CreateSocket}
|
||||
- @function_name{Cellular_SocketConnect}
|
||||
@function_brief{Cellular_SocketConnect}
|
||||
- @function_name{Cellular_SocketSend}
|
||||
@function_brief{Cellular_SocketSend}
|
||||
- @function_name{Cellular_SocketRecv}
|
||||
@function_brief{Cellular_SocketRecv}
|
||||
- @function_name{Cellular_SocketClose}
|
||||
@function_brief{Cellular_SocketClose}
|
||||
- @function_name{Cellular_GetHostByName}
|
||||
@function_brief{Cellular_GetHostByName}
|
||||
- @function_name{Cellular_SocketSetSockOpt}
|
||||
@function_brief{Cellular_SocketSetSockOpt}
|
||||
- @function_name{Cellular_SocketRegisterSocketOpenCallback}
|
||||
@function_brief{Cellular_SocketRegisterSocketOpenCallback}
|
||||
- @function_name{Cellular_SocketRegisterDataReadyCallback}
|
||||
@function_brief{Cellular_SocketRegisterDataReadyCallback}
|
||||
- @function_name{Cellular_SocketRegisterClosedCallback}
|
||||
@function_brief{Cellular_SocketRegisterClosedCallback}
|
||||
*/
|
||||
|
||||
/**
|
||||
@page cellular_porting Porting Guide
|
||||
@brief Guide for porting Cellular library to a new platform.
|
||||
|
||||
To use the Cellular library, a platform must implement the following components:
|
||||
1. [Configuration Macros](@ref cellular_porting_config)
|
||||
2. [Cellular Communication Interface](@ref cellular_porting_comm_if)
|
||||
3. [Cellular platform dependency](@ref cellular_platform_dependency)
|
||||
|
||||
@section cellular_porting_config Configuration Macros
|
||||
@brief Settings that must be set as macros in the config header `cellular_config.h`, or passed in as compiler options.
|
||||
|
||||
@note If a custom configuration header `cellular_config.h` is not provided, then the @ref CELLULAR_DO_NOT_USE_CUSTOM_CONFIG macro must be defined.
|
||||
|
||||
@see [Configurations](@ref cellular_config)
|
||||
|
||||
In addition, the following logging macros are used throughout the library:
|
||||
- @ref LogError
|
||||
- @ref LogWarn
|
||||
- @ref LogInfo
|
||||
- @ref LogDebug
|
||||
|
||||
@section cellular_porting_comm_if Cellular Communication Interface
|
||||
@brief FreeRTOS Cellular Library use communication interface to communicate with cellular modules.
|
||||
|
||||
CellularCommInterface includes the following four function pointers.
|
||||
Reference the document page for prototype.
|
||||
- @subpage CellularCommInterfaceOpen_t
|
||||
@copybrief CellularCommInterfaceOpen_t
|
||||
- @subpage CellularCommInterfaceSend_t
|
||||
@copybrief CellularCommInterfaceSend_t
|
||||
- @subpage CellularCommInterfaceRecv_t
|
||||
@copybrief CellularCommInterfaceRecv_t
|
||||
- @subpage CellularCommInterfaceClose_t
|
||||
@copybrief CellularCommInterfaceClose_t
|
||||
|
||||
@section cellular_platform_dependency Cellular platform dependency
|
||||
@brief Cellular platform depndency
|
||||
|
||||
FreeRTOS Cellular Library makes use of the following OS platform functions.<br>
|
||||
<b>"cellular_platform.h"</b> is referenced during FreeRTOS Cellular Library compilation.<br>
|
||||
User of FreeRTOS Cellular Library should provide these APIs and data structures in "cellular_platform.h".<br>
|
||||
A default implementation with FreeRTOS is provided in FreeRTOS Labs cellular demo.
|
||||
- <b>Threads</b><br>The following APIs and macros should be provided in cellular_platform.h
|
||||
```
|
||||
|
||||
bool Platform_CreateDetachedThread( void ( * threadRoutine )( void * ),
|
||||
void * pArgument,
|
||||
int32_t priority,
|
||||
size_t stackSize );
|
||||
|
||||
#define PLATFORM_THREAD_DEFAULT_STACK_SIZE ( 2048U )
|
||||
#define PLATFORM_THREAD_DEFAULT_PRIORITY ( 5U )
|
||||
```
|
||||
- <b>Mutex</b><br>The following APIs and data structure should be provided in cellular_platform.h.<br>
|
||||
FreeRTOS Cellular Library use static mutex allocation. Data fields in PlatformMutex can be defined by developers.
|
||||
```
|
||||
typedef struct PlatformMutex
|
||||
{
|
||||
...
|
||||
} PlatformMutex_t;
|
||||
|
||||
bool PlatformMutex_Create( PlatformMutex_t * pNewMutex,
|
||||
bool recursive );
|
||||
void PlatformMutex_Destroy( PlatformMutex_t * pMutex );
|
||||
void PlatformMutex_Lock( PlatformMutex_t * pMutex );
|
||||
bool PlatformMutex_TryLock( PlatformMutex_t * pMutex );
|
||||
void PlatformMutex_Unlock( PlatformMutex_t * pMutex );
|
||||
```
|
||||
- <b>Memory</b><br>The following malloc/free style APIs should be provided in cellular_platform.h.<br>
|
||||
The <a href="https://www.freertos.org/a00111.html">FreeRTOS memory management document</a> can be referenced for these APIs.
|
||||
```
|
||||
// Example implementation of FreeRTOS malloc/free
|
||||
#define Platform_Malloc pvPortMalloc
|
||||
#define Platform_Free vPortFree
|
||||
```
|
||||
- <b>EventGroup</b><br>The following APIs and handle should be provided in cellular_platform.h.<br>
|
||||
Please reference <a href="https://www.freertos.org/event-groups-API.html">FreeRTOS EvengGroup function prototypes</a>.
|
||||
```
|
||||
// Example implementation of FreeRTOS EvengGroup
|
||||
#define PlatformEventGroupHandle_t EventGroupHandle_t
|
||||
#define PlatformEventGroup_Delete vEventGroupDelete
|
||||
#define PlatformEventGroup_ClearBits xEventGroupClearBits
|
||||
#define PlatformEventGroup_Create xEventGroupCreate
|
||||
#define PlatformEventGroup_GetBits xEventGroupGetBits
|
||||
#define PlatformEventGroup_SetBits xEventGroupSetBits
|
||||
#define PlatformEventGroup_SetBitsFromISR xEventGroupSetBitsFromISR
|
||||
#define PlatformEventGroup_WaitBits xEventGroupWaitBits
|
||||
|
||||
```
|
||||
- <b>Delay</b><br>The following API should be provided in cellular_platform.h.<br>
|
||||
Please reference <a href="https://www.freertos.org/a00127.html">FreeRTOS Task Control function prototypes</a>.
|
||||
```
|
||||
// Example implementation of FreeRTOS Task Control
|
||||
#define Platform_Delay( delayMs ) vTaskDelay( pdMS_TO_TICKS( delayMs ) )
|
||||
```
|
||||
*/
|
||||
|
||||
/**
|
||||
* @paramstructs_group{cellular,Cellular}
|
||||
* @paramstructs_brief{cellular,cellular}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @handles_group{cellular,Cellular}
|
||||
* @handles_brief{cellular library}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @functionpointers_group{cellular,Cellular}
|
||||
* @functionpointers_brief{cellular library}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @enums_group{cellular,Cellular}
|
||||
* @enums_brief{cellular library}
|
||||
*/
|
||||
@ -0,0 +1,338 @@
|
||||
/**
|
||||
@page cellular_porting_module_guide Porting Module Guide
|
||||
@brief FreeRTOS Cellular Common Library<br>
|
||||
|
||||
|
||||
FreeRTOS Cellular Common Library provides the following functions to help cellular module implementing FreeRTOS Cellular Library APIs.<br>
|
||||
- FreeRTOS Cellular Library APIs implementation with 3GPP TS v27.007 AT commands.
|
||||
- AT command functions to help implementing FreeRTOS Cellular Library APIs with vendor specific AT commands.
|
||||
<br>
|
||||
|
||||
The following diagram illustrates the relation between cellular common and cellular module porting.<br>
|
||||
Reference @subpage porting_cellular_module for detail porting information and implemented @subpage cellular_common_functions.
|
||||
@image html cellular_common_module.png width=70%
|
||||
<br>
|
||||
*/
|
||||
|
||||
/**
|
||||
@page porting_cellular_module Porting cellular module
|
||||
@brief Introduction to cellular module porting<br>
|
||||
|
||||
Cellular common library provides APIS and URC handler implemented with 3GPP v27.007 AT commands.<br>
|
||||
These APIs and URC handler can be reused when porting cellular module. <br>
|
||||
Reference the following pages for detail information.
|
||||
- @subpage cellular_common_APIs
|
||||
- @subpage cellular_common_URC_handlers
|
||||
|
||||
Porting cellular module with cellular common portable with the following steps.<br>
|
||||
-# <b>Create a folder in modules with the following files. </b>
|
||||
- modules/(module_name)/cellular_(module_name).c
|
||||
- modules/(module_name)/cellular_(module_name)_api.c
|
||||
- modules/(module_name)/cellular_(module_name)_urc_handler.c
|
||||
- modules/(module_name)/cellular_(module_name)_wrapper.c
|
||||
-# <b>Implement cellular module porting interface @ref cellular_common_portable.h in cellular_(module_name).c </b><br>
|
||||
Reference @subpage cellular_module for detail information.
|
||||
-# <b>Implement FreeRTOS Cellular Library API with cellular module specific AT commands in cellular_(module_name)_api.c </b><br>
|
||||
Reference @subpage cellular_module_api for detail information.
|
||||
-# <b>Implement URC handler to handle URC event and call the corresponding callback function in cellular_(module_name)_urc_handler.c </b><br>
|
||||
Reference @subpage cellular_module_urc_handler for detail information.
|
||||
-# <b>Create FreeRTOS Cellular Library APIs implemented with 3GPP TS v27.007 AT commands ( @ref cellular_common_api.h ) in cellular_(module_name)_wrapper.c</b><br>
|
||||
|
||||
<b>Cellular module porting examples</b><br>
|
||||
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="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>
|
||||
*/
|
||||
|
||||
/**
|
||||
@page cellular_common_APIs Cellular common APIs
|
||||
@brief Cellular common supported APIs
|
||||
|
||||
<b>Cellular common supported APIs</b><br>
|
||||
Cellular common library has 3GPP AT command implemented APIs.<br>
|
||||
They can be used to minimize porting efforts when implement FreeRTOS Cellular Library APIs.<br>
|
||||
| FreeRTOS Cellular Library APIs | Cellular common supported |
|
||||
| :-------------------------------------------------------| :-----------------------: |
|
||||
| Cellular_Init | O |
|
||||
| Cellular_Cleanup | O |
|
||||
| Cellular_SetRatPriority | |
|
||||
| Cellular_GetRatPriority | |
|
||||
| Cellular_RfOn | O |
|
||||
| Cellular_RfOff | O |
|
||||
| Cellular_GetSimCardStatus | |
|
||||
| Cellular_GetSimCardInfo | O |
|
||||
| Cellular_GetModemInfo | O |
|
||||
| Cellular_GetRegisteredNetwork | O |
|
||||
| Cellular_GetNetworkTime | O |
|
||||
| Cellular_GetSignalInfo | |
|
||||
| Cellular_GetServiceStatus | O |
|
||||
| Cellular_SetPdnConfig | O |
|
||||
| Cellular_GetPdnStatus | |
|
||||
| Cellular_ActivatePdn | |
|
||||
| Cellular_DeactivatePdn | |
|
||||
| Cellular_GetIPAddress | O |
|
||||
| Cellular_SetDns | |
|
||||
| Cellular_RegisterUrcNetworkRegistrationEventCallback | O |
|
||||
| Cellular_RegisterUrcPdnEventCallback | O |
|
||||
| Cellular_RegisterUrcSignalStrengthChangedCallback | |
|
||||
| Cellular_RegisterModemEventCallback | O |
|
||||
| Cellular_RegisterUrcGenericCallback | O |
|
||||
| Cellular_GetPsmSettings | O |
|
||||
| Cellular_SetPsmSettings | O |
|
||||
| Cellular_GetEidrxSettings | O |
|
||||
| Cellular_SetEidrxSettings | O |
|
||||
| Cellular_ATCommandRaw | O |
|
||||
| Cellular_CreateSocket | O |
|
||||
| Cellular_SocketConnect | |
|
||||
| Cellular_SocketSend | |
|
||||
| Cellular_SocketRecv | |
|
||||
| Cellular_SocketClose | |
|
||||
| Cellular_GetHostByName | |
|
||||
| Cellular_SocketSetSockOpt | O |
|
||||
| Cellular_SocketRegisterSocketOpenCallback | O |
|
||||
| Cellular_SocketRegisterDataReadyCallback | O |
|
||||
| Cellular_SocketRegisterClosedCallback | O |
|
||||
*/
|
||||
|
||||
/**
|
||||
@page cellular_common_URC_handlers Cellular common URC handlers
|
||||
@brief Cellular common supported URC handlers
|
||||
|
||||
<b>Cellular common supported URC handler</b><br>
|
||||
FreeRTOS Cellular Library APIs callback function is called in URC handler. <br>
|
||||
3GPP URC handlers are also provided by cellular common library. <br>
|
||||
They can be used to reduce porting effort. <br>
|
||||
| FreeRTOS Cellular Library callback functions | Event | Cellular common supported |
|
||||
| :----------------------------------------------------| :----------------------------------------- | :-----------------------: |
|
||||
| Cellular_RegisterUrcNetworkRegistrationEventCallback | CELLULAR_URC_EVENT_NETWORK_CS_REGISTRATION | O |
|
||||
| Cellular_RegisterUrcNetworkRegistrationEventCallback | CELLULAR_URC_EVENT_NETWORK_PS_REGISTRATION | O |
|
||||
| Cellular_RegisterUrcPdnEventCallback | CELLULAR_URC_EVENT_PDN_ACTIVATED | |
|
||||
| Cellular_RegisterUrcPdnEventCallback | CELLULAR_URC_EVENT_PDN_DEACTIVATED | |
|
||||
| Cellular_RegisterUrcSignalStrengthChangedCallback | CELLULAR_URC_EVENT_SIGNAL_CHANGED | |
|
||||
| Cellular_RegisterModemEventCallback | CELLULAR_MODEM_EVENT_BOOTUP_OR_REBOOT | |
|
||||
| Cellular_RegisterModemEventCallback | CELLULAR_MODEM_EVENT_POWERED_DOWN | |
|
||||
| Cellular_RegisterModemEventCallback | CELLULAR_MODEM_EVENT_PSM_ENTER | |
|
||||
| Cellular_SocketRegisterSocketOpenCallback | CELLULAR_URC_SOCKET_OPENED | |
|
||||
| Cellular_SocketRegisterSocketOpenCallback | CELLULAR_URC_SOCKET_OPEN_FAILED | |
|
||||
| Cellular_SocketRegisterDataReadyCallback | None | |
|
||||
| Cellular_SocketRegisterClosedCallback | None | |
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
@page cellular_module cellular_module
|
||||
@brief Implement cellular module porting interface. <br>
|
||||
- Implement functions defined cellular_common_portable.h
|
||||
- @ref Cellular_ModuleInit
|
||||
- @ref Cellular_ModuleCleanUp
|
||||
- @ref Cellular_ModuleEnableUE
|
||||
- @ref Cellular_ModuleEnableUrc
|
||||
@image html cellular_module_porting_functions.png width=80%
|
||||
- Create variable instance defined in cellular_common_portable.h
|
||||
- AT command response token tables.
|
||||
- \ref CellularTokenTable_t.pCellularSrcTokenErrorTable : indicate AT command is success
|
||||
- @ref CellularTokenTable_t.cellularSrcTokenErrorTableSize
|
||||
- @ref CellularTokenTable_t.pCellularSrcTokenSuccessTable : indicat AT command fails
|
||||
- @ref CellularTokenTable_t.cellularSrcTokenSuccessTableSize
|
||||
- URC handler table
|
||||
- @ref CellularTokenTable_t.pCellularUrcTokenWoPrefixTable : URC token without prefix "+". These tokens are used in URC handler tables.<br>
|
||||
( E.X "APP READY", "POWER ON" )
|
||||
- @ref CellularTokenTable_t.cellularUrcTokenWoPrefixTableSize
|
||||
*/
|
||||
|
||||
/**
|
||||
@page cellular_module_api cellular_module_api
|
||||
@brief Implement FreeRTOS Cellular Library API with cellular module specific AT commands. <br>
|
||||
- Create FreeRTOS Cellular Library APIs implemented with module specific AT commands with cellular_common.h and cellular_at_core.h
|
||||
- AT command related data structure
|
||||
- @ref CellularAtReq_t : AT command request data structure
|
||||
- @ref CellularAtDataReq_t : Data send data structure
|
||||
- Send AT command APIs
|
||||
- @ref _Cellular_AtcmdRequestWithCallback : Default timeout
|
||||
- @ref _Cellular_TimeoutAtcmdRequestWithCallback : Custom timeout
|
||||
- Send AT command APIs for data receive ( E.X socket data receive )
|
||||
- @ref _Cellular_TimeoutAtcmdDataRecvRequestWithCallback
|
||||
- Send AT command APIS for data send ( E.X socket data send )
|
||||
- @ref _Cellular_TimeoutAtcmdDataSendRequestWithCallback : Basic data send API
|
||||
- @ref _Cellular_AtcmdDataSend : Prefix callback function to indicate data mode start
|
||||
- @ref _Cellular_TimeoutAtcmdDataSendSuccessToken : Extra success token to indicate AT commnad success
|
||||
@image html cellular_API_implementation.png width=80%
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
@page cellular_module_urc_handler cellular_module_urc_handler
|
||||
@brief Implement URC handler to handle URC event and call the corresponding callback function. <br>
|
||||
- @ref CellularTokenTable_t.pCellularUrcHandlerTable : URC handler table of @ref CellularAtParseTokenHandler_t
|
||||
- @ref CellularTokenTable_t.cellularPrefixToParserMapSize
|
||||
Example URC handler table.
|
||||
```
|
||||
CellularAtParseTokenMap_t CellularUrcHandlerTable[] =
|
||||
{
|
||||
{ "CEREG", Cellular_CommonUrcProcessCereg },
|
||||
{ "CGREG", Cellular_CommonUrcProcessCgreg },
|
||||
{ "CREG", Cellular_CommonUrcProcessCreg },
|
||||
{ "NORMAL POWER DOWN", _Cellular_ProcessPowerDown },
|
||||
}
|
||||
uint32_t CellularUrcHandlerTableSize = 4;
|
||||
```
|
||||
@image html cellular_URC_handler_implementation.png width=80%
|
||||
*/
|
||||
|
||||
/**
|
||||
@paramstructs_group{cellular_common,Cellular_common}
|
||||
@paramstructs_brief{cellular_common,cellular_common}
|
||||
*/
|
||||
|
||||
/**
|
||||
@functionpointers_group{cellular_common,Cellular_common}
|
||||
@functionpointers_brief{cellular_common library}
|
||||
*/
|
||||
|
||||
/**
|
||||
@enums_group{cellular_common,Cellular_common}
|
||||
@enums_brief{cellular_common library}
|
||||
*/
|
||||
|
||||
/**
|
||||
@functions_page{cellular_common,cellular_common}
|
||||
@functions_brief{cellular_common}
|
||||
|
||||
<b>The following APIs are 3GPP v27.007 AT command implemented FreeRTOS Cellular Library APIs.</b><br>
|
||||
- @function_name{Cellular_CommonInit}
|
||||
@function_brief{Cellular_CommonInit}
|
||||
- @function_name{Cellular_CommonCleanup}
|
||||
@function_brief{Cellular_CommonCleanup}
|
||||
- @function_name{Cellular_CommonRegisterUrcNetworkRegistrationEventCallback}
|
||||
@function_brief{Cellular_CommonRegisterUrcNetworkRegistrationEventCallback}
|
||||
- @function_name{Cellular_CommonRegisterUrcPdnEventCallback}
|
||||
@function_brief{Cellular_CommonRegisterUrcPdnEventCallback}
|
||||
- @function_name{Cellular_CommonRegisterUrcSignalStrengthChangedCallback}
|
||||
@function_brief{Cellular_CommonRegisterUrcSignalStrengthChangedCallback}
|
||||
- @function_name{Cellular_CommonRegisterUrcGenericCallback}
|
||||
@function_brief{Cellular_CommonRegisterUrcGenericCallback}
|
||||
- @function_name{Cellular_CommonRegisterModemEventCallback}
|
||||
@function_brief{Cellular_CommonRegisterModemEventCallback}
|
||||
- @function_name{Cellular_CommonATCommandRaw}
|
||||
@function_brief{Cellular_CommonATCommandRaw}
|
||||
- @function_name{Cellular_CommonCreateSocket}
|
||||
@function_brief{Cellular_CommonCreateSocket}
|
||||
- @function_name{Cellular_CommonSocketSetSockOpt}
|
||||
@function_brief{Cellular_CommonSocketSetSockOpt}
|
||||
- @function_name{Cellular_CommonSocketRegisterDataReadyCallback}
|
||||
@function_brief{Cellular_CommonSocketRegisterDataReadyCallback}
|
||||
- @function_name{Cellular_CommonSocketRegisterSocketOpenCallback}
|
||||
@function_brief{Cellular_CommonSocketRegisterSocketOpenCallback}
|
||||
- @function_name{Cellular_CommonSocketRegisterClosedCallback}
|
||||
@function_brief{Cellular_CommonSocketRegisterClosedCallback}
|
||||
- @function_name{Cellular_CommonRfOn}
|
||||
@function_brief{Cellular_CommonRfOn}
|
||||
- @function_name{Cellular_CommonRfOff}
|
||||
@function_brief{Cellular_CommonRfOff}
|
||||
- @function_name{Cellular_CommonGetIPAddress}
|
||||
@function_brief{Cellular_CommonGetIPAddress}
|
||||
- @function_name{Cellular_CommonGetModemInfo}
|
||||
@function_brief{Cellular_CommonGetModemInfo}
|
||||
- @function_name{Cellular_CommonGetEidrxSettings}
|
||||
@function_brief{Cellular_CommonGetEidrxSettings}
|
||||
- @function_name{Cellular_CommonSetEidrxSettings}
|
||||
@function_brief{Cellular_CommonSetEidrxSettings}
|
||||
- @function_name{Cellular_CommonGetRegisteredNetwork}
|
||||
@function_brief{Cellular_CommonGetRegisteredNetwork}
|
||||
- @function_name{Cellular_CommonGetNetworkTime}
|
||||
@function_brief{Cellular_CommonGetNetworkTime}
|
||||
- @function_name{Cellular_CommonGetServiceStatus}
|
||||
@function_brief{Cellular_CommonGetServiceStatus}
|
||||
- @function_name{Cellular_CommonSetPdnConfig}
|
||||
@function_brief{Cellular_CommonSetPdnConfig}
|
||||
- @function_name{Cellular_CommonGetPsmSettings}
|
||||
@function_brief{Cellular_CommonGetPsmSettings}
|
||||
- @function_name{Cellular_CommonSetPsmSettings}
|
||||
@function_brief{Cellular_CommonSetPsmSettings}
|
||||
- @function_name{Cellular_CommonGetSimCardInfo}
|
||||
@function_brief{Cellular_CommonGetSimCardInfo}
|
||||
- @function_name{Cellular_CommonGetSimCardLockStatus}
|
||||
@function_brief{Cellular_CommonGetSimCardLockStatus}
|
||||
|
||||
The following APIs can be used when implementating FreeRTOS Cellular Library APIs with module specific AT command.<br>
|
||||
<b>AT command parsing functions</b><br>
|
||||
- @function_name{Cellular_ATRemovePrefix}
|
||||
@function_brief{Cellular_ATRemovePrefix}
|
||||
- @function_name{Cellular_ATRemoveLeadingWhiteSpaces}
|
||||
@function_brief{Cellular_ATRemoveLeadingWhiteSpaces}
|
||||
- @function_name{Cellular_ATRemoveTrailingWhiteSpaces}
|
||||
@function_brief{Cellular_ATRemoveTrailingWhiteSpaces}
|
||||
- @function_name{Cellular_ATRemoveAllWhiteSpaces}
|
||||
@function_brief{Cellular_ATRemoveAllWhiteSpaces}
|
||||
- @function_name{Cellular_ATRemoveOutermostDoubleQuote}
|
||||
@function_brief{Cellular_ATRemoveOutermostDoubleQuote}
|
||||
- @function_name{Cellular_ATRemoveAllDoubleQuote}
|
||||
@function_brief{Cellular_ATRemoveAllDoubleQuote}
|
||||
- @function_name{Cellular_ATGetNextTok}
|
||||
@function_brief{Cellular_ATGetNextTok}
|
||||
- @function_name{Cellular_ATGetSpecificNextTok}
|
||||
@function_brief{Cellular_ATGetSpecificNextTok}
|
||||
- @function_name{Cellular_ATHexStrToHex}
|
||||
@function_brief{Cellular_ATHexStrToHex}
|
||||
- @function_name{Cellular_ATIsStrDigit}
|
||||
@function_brief{Cellular_ATIsStrDigit}
|
||||
- @function_name{Cellular_ATIsPrefixPresent}
|
||||
@function_brief{Cellular_ATIsPrefixPresent}
|
||||
- @function_name{Cellular_ATStrDup}
|
||||
@function_brief{Cellular_ATStrDup}
|
||||
- @function_name{Cellular_ATStrStartWith}
|
||||
@function_brief{Cellular_ATStrStartWith}
|
||||
- @function_name{Cellular_ATcheckErrorCode}
|
||||
@function_brief{Cellular_ATcheckErrorCode}
|
||||
- @function_name{Cellular_ATStrtoi}
|
||||
@function_brief{Cellular_ATStrtoi}
|
||||
|
||||
<b>Cellular common library helper functions</b><br>
|
||||
- @function_name{_Cellular_LibInit}
|
||||
@function_brief{_Cellular_LibInit}
|
||||
- @function_name{_Cellular_LibCleanup}
|
||||
@function_brief{_Cellular_LibCleanup}
|
||||
- @function_name{_Cellular_CheckLibraryStatus}
|
||||
@function_brief{_Cellular_CheckLibraryStatus}
|
||||
- @function_name{_Cellular_TranslatePktStatus}
|
||||
@function_brief{_Cellular_TranslatePktStatus}
|
||||
- @function_name{_Cellular_CreateSocketData}
|
||||
@function_brief{_Cellular_CreateSocketData}
|
||||
- @function_name{_Cellular_RemoveSocketData}
|
||||
@function_brief{_Cellular_RemoveSocketData}
|
||||
- @function_name{_Cellular_IsValidSocket}
|
||||
@function_brief{_Cellular_IsValidSocket}
|
||||
- @function_name{_Cellular_IsValidPdn}
|
||||
@function_brief{_Cellular_IsValidPdn}
|
||||
- @function_name{_Cellular_ConvertCsqSignalRssi}
|
||||
@function_brief{_Cellular_ConvertCsqSignalRssi}
|
||||
- @function_name{_Cellular_ConvertCsqSignalBer}
|
||||
@function_brief{_Cellular_ConvertCsqSignalBer}
|
||||
- @function_name{_Cellular_GetModuleContext}
|
||||
@function_brief{_Cellular_GetModuleContext}
|
||||
- @function_name{_Cellular_ComputeSignalBars}
|
||||
@function_brief{_Cellular_ComputeSignalBars}
|
||||
- @function_name{_Cellular_GetCurrentRat}
|
||||
@function_brief{_Cellular_GetCurrentRat}
|
||||
- @function_name{_Cellular_TranslatePktStatus}
|
||||
@function_brief{_Cellular_TranslatePktStatus}
|
||||
- @function_name{_Cellular_TranslateAtCoreStatus}
|
||||
@function_brief{_Cellular_TranslateAtCoreStatus}
|
||||
- @function_name{_Cellular_AtcmdRequestWithCallback}
|
||||
@function_brief{_Cellular_AtcmdRequestWithCallback}
|
||||
- @function_name{_Cellular_TimeoutAtcmdRequestWithCallback}
|
||||
@function_brief{_Cellular_TimeoutAtcmdRequestWithCallback}
|
||||
- @function_name{_Cellular_TimeoutAtcmdDataRecvRequestWithCallback}
|
||||
@function_brief{_Cellular_TimeoutAtcmdDataRecvRequestWithCallback}
|
||||
- @function_name{_Cellular_TimeoutAtcmdDataSendRequestWithCallback}
|
||||
@function_brief{_Cellular_TimeoutAtcmdDataSendRequestWithCallback}
|
||||
- @function_name{_Cellular_AtcmdDataSend}
|
||||
@function_brief{_Cellular_AtcmdDataSend}
|
||||
- @function_name{_Cellular_TimeoutAtcmdDataSendSuccessToken}
|
||||
@function_brief{_Cellular_TimeoutAtcmdDataSendSuccessToken}
|
||||
|
||||
*/
|
||||
|
||||
@ -0,0 +1,132 @@
|
||||
/*
|
||||
* Stylesheet for Doxygen HTML output.
|
||||
*
|
||||
* This file defines styles for custom elements in the header/footer and
|
||||
* overrides some of the default Doxygen styles.
|
||||
*
|
||||
* Styles in this file do not affect the treeview sidebar.
|
||||
*/
|
||||
|
||||
/* Set the margins to place a small amount of whitespace on the left and right
|
||||
* side of the page. */
|
||||
div.contents {
|
||||
margin-left:4em;
|
||||
margin-right:4em;
|
||||
}
|
||||
|
||||
/* Justify text in paragraphs. */
|
||||
p {
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
/* Style of section headings. */
|
||||
h1 {
|
||||
border-bottom: 1px solid #879ECB;
|
||||
color: #354C7B;
|
||||
font-size: 160%;
|
||||
font-weight: normal;
|
||||
padding-bottom: 4px;
|
||||
padding-top: 8px;
|
||||
}
|
||||
|
||||
/* Style of subsection headings. */
|
||||
h2:not(.memtitle):not(.groupheader) {
|
||||
font-size: 125%;
|
||||
margin-bottom: 0px;
|
||||
margin-top: 16px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
/* Style of paragraphs immediately after subsection headings. */
|
||||
h2 + p {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
/* Style of subsection headings. */
|
||||
h3 {
|
||||
font-size: 100%;
|
||||
margin-bottom: 0px;
|
||||
margin-left: 2em;
|
||||
margin-right: 2em;
|
||||
}
|
||||
|
||||
/* Style of paragraphs immediately after subsubsection headings. */
|
||||
h3 + p {
|
||||
margin-top: 0px;
|
||||
margin-left: 2em;
|
||||
margin-right: 2em;
|
||||
}
|
||||
|
||||
/* Style of the prefix "AWS IoT Device SDK C" that appears in the header. */
|
||||
#csdkprefix {
|
||||
color: #757575;
|
||||
}
|
||||
|
||||
/* Style of the "Return to main page" link that appears in the header. */
|
||||
#returntomain {
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
/* Style of the dividers on Configuration Settings pages. */
|
||||
div.configpagedivider {
|
||||
margin-left: 0px !important;
|
||||
margin-right: 0px !important;
|
||||
margin-top: 20px !important;
|
||||
}
|
||||
|
||||
/* Style of configuration setting names. */
|
||||
dl.section.user ~ h1 {
|
||||
border-bottom: none;
|
||||
color: #000000;
|
||||
font-family: monospace, fixed;
|
||||
font-size: 16px;
|
||||
margin-bottom: 0px;
|
||||
margin-left: 2em;
|
||||
margin-top: 1.5em;
|
||||
}
|
||||
|
||||
/* Style of paragraphs on a configuration settings page. */
|
||||
dl.section.user ~ * {
|
||||
margin-bottom: 10px;
|
||||
margin-left: 4em;
|
||||
margin-right: 4em;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
/* Hide the configuration setting marker. */
|
||||
dl.section.user {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Overrides for code fragments and lines. */
|
||||
div.fragment {
|
||||
background: #ffffff;
|
||||
border: none;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
div.line {
|
||||
color: #3a3a3a;
|
||||
}
|
||||
|
||||
/* Overrides for code syntax highlighting colors. */
|
||||
span.comment {
|
||||
color: #008000;
|
||||
}
|
||||
|
||||
span.keyword, span.keywordtype, span.keywordflow {
|
||||
color: #0000ff;
|
||||
}
|
||||
|
||||
span.preprocessor {
|
||||
color: #50015a;
|
||||
}
|
||||
|
||||
span.stringliteral, span.charliteral {
|
||||
color: #800c0c;
|
||||
}
|
||||
|
||||
a.code, a.code:visited, a.line, a.line:visited {
|
||||
color: #496194;
|
||||
}
|
||||
@ -0,0 +1,22 @@
|
||||
@startuml
|
||||
|
||||
Title FreeRTOS Cellular Library URC handler implementation
|
||||
|
||||
participant Application
|
||||
participant Cellular_modules_porting
|
||||
participant Cellular_common
|
||||
participant Cellular_modem
|
||||
|
||||
note over Cellular_modules_porting : Create variable CellularUrcHandlerTable\n\nCellularAtParseTokenMap_t CellularUrcHandlerTable[] =\n{\n { "CEREG", Cellular_CommonUrcProcessCereg },\n { "CGREG", Cellular_CommonUrcProcessCgreg },\n { "CREG", Cellular_CommonUrcProcessCreg },\n { "NORMAL POWER DOWN", _Cellular_ProcessPowerDown }\n}\nuint32_t CellularUrcHandlerTableSize = 4;
|
||||
|
||||
Cellular_modem ->Cellular_common : "NORMAL POWER DOWN"
|
||||
|
||||
Cellular_common -> Cellular_modules_porting : Call the callback function\n_Cellular_ProcessPowerDown( pContext, "NORMAL POWER DOWN" )
|
||||
|
||||
Cellular_modules_porting ->Application : Call the callback function registered in\nCellular_RegisterModemEventCallback()
|
||||
|
||||
Cellular_modem ->Cellular_common : "+CREG: 2,0"
|
||||
Cellular_common -> Cellular_common : Call the callback function\nCellular_CommonUrcProcessCreg( pContext, "+CREG: 2,0" )
|
||||
Cellular_common->Application : callback function registered in\nCellular_RegisterUrcNetworkRegistrationEventCallback()
|
||||
|
||||
@enduml
|
||||
@ -0,0 +1,31 @@
|
||||
@startuml
|
||||
|
||||
Title FreeRTOS Cellular Library API implementation
|
||||
|
||||
participant Application
|
||||
participant "FreeRTOS Cellular Library"
|
||||
participant Cellular_modules_porting
|
||||
participant Cellular_common
|
||||
participant Cellular_modem
|
||||
|
||||
Application ->"FreeRTOS Cellular Library" : Cellular_GetSimCardStatus()
|
||||
|
||||
"FreeRTOS Cellular Library"->Cellular_modules_porting :Cellular_GetSimCardStatus()
|
||||
|
||||
Cellular_modules_porting->Cellular_common:Get module context passed in Cellular_ModuleInt() :\n_Cellular_GetModuleContext()
|
||||
|
||||
Cellular_modules_porting->Cellular_modules_porting:Setup AT commnand request:\nCellularAtReq_t = \n{\n pAtCmd = "AT+QSIMSTAT?"\n atCmdType = CELLULAR_AT_WITH_PREFIX\n pAtRspPrefix = "+QSIMSTAT"\n respCallback = _Cellular_RecvFuncGetSimCardStatus\n pData = &simCardState\n dataLen = sizeof( CellularSimCardState_t )\n};\n
|
||||
|
||||
Cellular_modules_porting->Cellular_common:Send AT command with cellular common APIs:\n _Cellular_AtcmdRequestWithCallback( CellularAtReq_t )
|
||||
|
||||
Cellular_common ->Cellular_modem : AT+QSIMSTAT?
|
||||
|
||||
Cellular_modem -> Cellular_common : +QSIMSTAT: ....
|
||||
|
||||
Cellular_modem -> Cellular_common : OK
|
||||
|
||||
Cellular_common ->Cellular_modules_porting : Call the callback function with corresponding data field \n_Cellular_RecvFuncGetSimCardStatus( pData, dataLen )
|
||||
|
||||
Cellular_modules_porting ->Application : Return parsing status and data
|
||||
|
||||
@enduml
|
||||
@ -0,0 +1,35 @@
|
||||
@startuml
|
||||
|
||||
Title FreeRTOS Cellular Library interaction with cellular module porting APIs
|
||||
|
||||
participant Application
|
||||
participant "FreeRTOS Cellular Library"
|
||||
participant Cellular_common
|
||||
participant Cellular_modules_porting
|
||||
|
||||
Application ->"FreeRTOS Cellular Library" : Cellular_Init()
|
||||
|
||||
"FreeRTOS Cellular Library" -> Cellular_common : Cellular_CommonInit()
|
||||
|
||||
Cellular_common -> Cellular_modules_porting : Cellular_moduleInit()
|
||||
|
||||
Cellular_common -> Cellular_modules_porting : Cellular_moduleEnableUE()
|
||||
|
||||
Cellular_common -> Cellular_modules_porting : Cellular_moduleEnableUrc
|
||||
|
||||
Cellular_common --> "FreeRTOS Cellular Library" :
|
||||
|
||||
"FreeRTOS Cellular Library" --> Application :
|
||||
|
||||
|
||||
Application ->"FreeRTOS Cellular Library" : Cellular_CleanUp()
|
||||
|
||||
"FreeRTOS Cellular Library" -> Cellular_common : Cellular_CommonCleanUp()
|
||||
|
||||
Cellular_common -> Cellular_modules_porting : Cellular_moduleCleanUp()
|
||||
|
||||
Cellular_common --> "FreeRTOS Cellular Library" :
|
||||
|
||||
"FreeRTOS Cellular Library" --> Application :
|
||||
|
||||
@enduml
|
||||
@ -0,0 +1,74 @@
|
||||
@startuml
|
||||
|
||||
Title FreeRTOS Cellular Library interaction with com interface
|
||||
|
||||
participant Application
|
||||
participant "FreeRTOS Cellular Library"
|
||||
participant cellular_comm_interface
|
||||
participant cellular_modem
|
||||
|
||||
note over Application : Application needs cellular connecitvity.\nCellular_Init() is called to open FreeRTOS \nCellular Library. Communication interface\n, pCommInterface, is provided by\napplication to "FreeRTOS Cellular Library".
|
||||
|
||||
Application -> "FreeRTOS Cellular Library" : Cellular_Init( pCommInterface )
|
||||
|
||||
activate Application
|
||||
|
||||
"FreeRTOS Cellular Library" ->cellular_comm_interface : pCommInterface->Open( receiveCallback )
|
||||
|
||||
cellular_comm_interface->cellular_modem : Register receive callback\nOpen and setup communication device driver\nPower on and enable device
|
||||
|
||||
cellular_comm_interface-->"FreeRTOS Cellular Library":
|
||||
|
||||
"FreeRTOS Cellular Library"-->Application:
|
||||
|
||||
deactivate Application
|
||||
|
||||
note over Application : "FreeRTOS Cellular Library" APIs ready.\nApplication get network time with\nCellular_GetNetworkTime() function
|
||||
|
||||
Application -> "FreeRTOS Cellular Library" : Cellular_GetNetworkTime()
|
||||
|
||||
activate Application
|
||||
|
||||
"FreeRTOS Cellular Library"->cellular_comm_interface : pCommInterface->Send()
|
||||
|
||||
cellular_comm_interface->cellular_modem : AT+CCLK?
|
||||
|
||||
cellular_modem->cellular_comm_interface : +CCLK: "20/06/09,12:06:33+32"
|
||||
|
||||
cellular_comm_interface->cellular_comm_interface : Store `+CCLK: "20/06/09,12:06:33+32"` in buffer
|
||||
|
||||
cellular_comm_interface->"FreeRTOS Cellular Library" : receiveCallback
|
||||
|
||||
"FreeRTOS Cellular Library"->cellular_comm_interface : pCommInterface->recv()
|
||||
|
||||
cellular_comm_interface-->"FreeRTOS Cellular Library" : Return data in buffer
|
||||
|
||||
cellular_modem->cellular_comm_interface : OK
|
||||
|
||||
cellular_comm_interface->cellular_comm_interface : Store `OK` in buffer
|
||||
|
||||
cellular_comm_interface->"FreeRTOS Cellular Library" : receiveCallback
|
||||
|
||||
cellular_comm_interface-->"FreeRTOS Cellular Library" : Return data in buffer
|
||||
|
||||
"FreeRTOS Cellular Library"->Application : Return network time
|
||||
|
||||
deactivate Application
|
||||
|
||||
note over Application : Applicaton no longer need cellular\nconnectivity. Cellular_Cleanup() is \ncalled to close FreeRTOS Cellular Library.
|
||||
|
||||
Application -> "FreeRTOS Cellular Library" : Cellular_Cleanup()
|
||||
|
||||
activate Application
|
||||
|
||||
"FreeRTOS Cellular Library"->cellular_comm_interface : pCommInterface->Close()
|
||||
|
||||
cellular_comm_interface->cellular_modem : Power off device\nClose communication device driver\n
|
||||
|
||||
cellular_comm_interface-->"FreeRTOS Cellular Library":
|
||||
|
||||
"FreeRTOS Cellular Library"-->Application:
|
||||
|
||||
deactivate Application
|
||||
|
||||
@enduml
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 42 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 41 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 58 KiB |
@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="9in" height="7in" class="slides-canvas" viewBox="0 0 648 504">
|
||||
<defs>
|
||||
<linearGradient id="lg_b1cbe9_I0a3c1e5_92b9e4_90_4a_740a2" x1="0" y1="33" x2="0" y2="91" spreadMethod="reflect" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#B1CBE9" />
|
||||
<stop offset="0.5" stop-color="#A3C1E5" />
|
||||
<stop offset="1" stop-color="#92B9E4" />
|
||||
</linearGradient>
|
||||
<linearGradient id="lg_b1cbe9_I0a3c1e5_92b9e4_90_65_798b5" x1="0" y1="47" x2="0" y2="107" spreadMethod="reflect" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#B1CBE9" />
|
||||
<stop offset="0.5" stop-color="#A3C1E5" />
|
||||
<stop offset="1" stop-color="#92B9E4" />
|
||||
</linearGradient>
|
||||
<linearGradient id="lg_ffdd9c_I0ffd78e_ffd479_90_f9_d0275" x1="0" y1="202" x2="0" y2="306" spreadMethod="reflect" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#FFDD9C" />
|
||||
<stop offset="0.5" stop-color="#FFD78E" />
|
||||
<stop offset="1" stop-color="#FFD479" />
|
||||
</linearGradient>
|
||||
<marker id="ah1" markerUnits="userSpaceOnUse" markerWidth="36" markerHeight="21" viewBox="-18 -10.5 36 21" orient="auto">
|
||||
<path d="M-9 5.25L0 0-9-5.25" fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" />
|
||||
</marker>
|
||||
</defs>
|
||||
<g text-rendering="geometricPrecision" transform="scale(1, 1)">
|
||||
<rect x="0" y="0" width="648" height="504" fill="#FFFFFF" />
|
||||
<path fill="url(#lg_b1cbe9_I0a3c1e5_92b9e4_90_4a_740a2)" d="M13.75 381.88L623.4 381.88 623.4 439.9 13.75 439.9z" />
|
||||
<path stroke-width="0.5" stroke="#5B9BD5" fill="none" d="M13.75 381.88L623.4 381.88 623.4 439.9 13.75 439.9z" />
|
||||
<g transform="matrix(1, 0, 0, 1, 20.952362, 385.47693)"><text font-family="Noto Sans" font-style="normal" font-weight="normal" font-stretch="normal" font-size="18pt" fill="#000000" x="206.31061" y="33.614155"><tspan x="206.80165" y="34.1052" id="tp_0_shadow" fill="#000000" fill-opacity="0.27">Comm Interface</tspan><tspan x="206.31061" y="33.614155" id="tp_0">Comm Interface</tspan></text></g>
|
||||
<path fill="url(#lg_b1cbe9_I0a3c1e5_92b9e4_90_65_798b5)" d="M13.75 48.12L623.4 48.12 623.4 108.89 13.75 108.89z" />
|
||||
<path stroke-width="0.5" stroke="#5B9BD5" fill="none" d="M13.75 48.12L623.4 48.12 623.4 108.89 13.75 108.89z" />
|
||||
<g transform="matrix(1, 0, 0, 1, 20.952362, 51.7163)"><text font-family="Noto Sans" font-style="normal" font-weight="normal" font-stretch="normal" font-size="18pt" fill="#000000" x="234.31061" y="34.990295"><tspan x="234.80165" y="35.481342" id="tp_1_shadow" fill="#000000" fill-opacity="0.27">Application</tspan><tspan x="234.31061" y="34.990295" id="tp_1">Application</tspan></text></g>
|
||||
<g transform="matrix(1, 0, 0, 1, 338.37567, 109.73605)"><text font-family="Noto Sans" font-style="normal" font-weight="normal" font-stretch="normal" font-size="15pt" fill="#000000" x="0" y="42.83686"><tspan x="0" y="18.836859">FreeRTOS Cellular Interface</tspan><tspan xml:space="preserve" x="257.48438" y="18.836859"> </tspan><tspan x="0" y="42.83686">APIs request</tspan></text></g>
|
||||
<path fill="#FFE699" fill-opacity="0.5" d="M13.75 161.67L623.4 161.67 623.4 349.85 13.75 349.85z" />
|
||||
<path fill="url(#lg_ffdd9c_I0ffd78e_ffd479_90_f9_d0275)" d="M59.93 202.83L299.01 202.83 299.01 306.91 59.93 306.91z" />
|
||||
<path stroke-width="0.5" stroke="#FFC000" fill="none" d="M59.93 202.83L299.01 202.83 299.01 306.91 59.93 306.91z" />
|
||||
<g transform="matrix(1, 0, 0, 1, 67.13109, 206.43106)"><text font-family="Noto Sans" font-style="normal" font-weight="normal" font-stretch="normal" font-size="18pt" fill="#000000" x="22.080612" y="71.0426"><tspan x="7.376346" y="42.733643" id="tp_2_shadow" fill="#000000" fill-opacity="0.27">FreeRTOS-Cellular-</tspan><tspan x="6.8852997" y="42.242596" id="tp_2">FreeRTOS-Cellular-</tspan><tspan x="22.57166" y="71.533646" id="tp_3_shadow" fill="#000000" fill-opacity="0.27">Interface library</tspan><tspan x="22.080612" y="71.0426" id="tp_3">Interface library</tspan></text></g>
|
||||
<path fill="url(#lg_ffdd9c_I0ffd78e_ffd479_90_f9_d0275)" d="M348.12 202.83L587.19 202.83 587.19 306.91 348.12 306.91z" />
|
||||
<path stroke-width="0.5" stroke="#FFC000" fill="none" d="M348.12 202.83L587.19 202.83 587.19 306.91 348.12 306.91z" />
|
||||
<g transform="matrix(1, 0, 0, 1, 355.31573, 206.43106)"><text font-family="Noto Sans" font-style="normal" font-weight="normal" font-stretch="normal" font-size="18pt" fill="#000000" x="22.088425" y="71.0426"><tspan x="24.079472" y="42.733643" id="tp_4_shadow" fill="#000000" fill-opacity="0.27">Cellular Module</tspan><tspan x="23.588425" y="42.242596" id="tp_4">Cellular Module</tspan><tspan xml:space="preserve" x="201.08842" y="42.242596"> </tspan><tspan x="22.579472" y="71.533646" id="tp_5_shadow" fill="#000000" fill-opacity="0.27">implementation</tspan><tspan x="22.088425" y="71.0426" id="tp_5">implementation</tspan></text></g>
|
||||
<path marker-end="url(#ah1)" stroke-width="3" stroke="#000000" fill="none" d="M318.58 108.89L318.58 156.09 318.58 157.59" />
|
||||
<path marker-end="url(#ah1)" stroke-width="3" stroke="#000000" fill="none" d="M318.58 349.85L318.58 376.29 318.58 377.79" />
|
||||
</g>
|
||||
</svg>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 21 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 164 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 61 KiB |
Reference in New Issue
Block a user