Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
32 changes: 25 additions & 7 deletions apps/gateway_lte/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,6 @@ config LTE_GATEWAY_DEFAULT_MAXIMUM_UPLINK_THROUGHPUT_KBPS
default 175 if SOC_SERIES_NRF91X
default 0

# Shuffle memory to prioritise TX buffers
configdefault NRF_MODEM_LIB_SHMEM_TX_SIZE
default 14336

configdefault NRF_MODEM_LIB_SHMEM_RX_SIZE
default 8192

#
# Defaults for native nRF91 gateways
#
Expand All @@ -26,5 +19,30 @@ configdefault LTE_PSM_REQ
default n
configdefault INFUSE_NRF_MODEM_DATA_PROFILE_DEFAULT
default 4
# Shuffle memory to prioritise TX buffers
configdefault NRF_MODEM_LIB_SHMEM_TX_SIZE
default 14336
configdefault NRF_MODEM_LIB_SHMEM_RX_SIZE
default 8192

#
# Defaults for offloaded modem_cellular gateways
#
configdefault BT_CTLR_SDC_PERIPHERAL_COUNT
default 2
configdefault MODEM_CMUX_MTU
default 1500
configdefault MODEM_CELLULAR_UART_BUFFER_SIZES
default 1500
configdefault MODEM_CELLULAR_CHAT_BUFFER_SIZE
default 256
configdefault MODEM_CELLULAR_USER_PIPE_BUFFER_SIZES
default 256
# Huge impact on RAM consumption of the application
# Limit it to 768, i.e. 2 buffers can contain our maximum packet size
configdefault NET_BUF_DATA_SIZE
default 768 if !NRF_MODEM_LIB
configdefault MODEM_PPP_NET_BUF_FRAG_SIZE
default 512

source "Kconfig.zephyr"
1 change: 1 addition & 0 deletions apps/gateway_lte/sample.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ common:
- ble
integration_platforms:
- auroch/nrf9151/ns
- kudu/nrf54l15/cpuapp
tests:
sample.app.gateway_lte:
tags: gateway
Expand Down
6 changes: 6 additions & 0 deletions apps/gateway_lte/src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#include <zephyr/net/net_if.h>
#include <zephyr/net/net_mgmt.h>
#include <zephyr/net/conn_mgr_connectivity.h>
#include <zephyr/pm/device_runtime.h>

#include <infuse/auto/bluetooth_conn_log.h>
#include <infuse/auto/time_sync_log.h>
Expand Down Expand Up @@ -261,6 +262,11 @@ int main(void)
epacket_receive(bt_adv, K_FOREVER);
epacket_receive(udp, K_FOREVER);

#ifdef CONFIG_MODEM_CELLULAR
/* For now the Cellular Modem abstraction is not linked to a connection manager */
pm_device_runtime_get(DEVICE_DT_GET(DT_ALIAS(modem)));
#endif /* CONFIG_MODEM_CELLULAR */

/* Turn on the interface */
conn_mgr_all_if_up(true);
conn_mgr_all_if_connect(true);
Expand Down
40 changes: 40 additions & 0 deletions boards/embeint/kudu/Kconfig.defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,44 @@ if BOARD_KUDU_NRF54L15_CPUAPP
configdefault ROM_START_OFFSET
default 0x800 if BOOTLOADER_MCUBOOT

if NETWORKING

# Constant latency to improve UART stability.
# According to the datasheet this increases idle power consumption by 530 uA.
# This is negligible compared to the consumption of the LTE CAT1 modem.
configdefault NRF_FORCE_CONSTANT_LATENCY
default y
configdefault NRFX_POWER
default y
configdefault NRF_SYS_EVENT
default y

# Pull-up resistor is missing for SIMDET to work
choice MODEM_CELLULAR_SIM_DETECTION
default MODEM_CELLULAR_SIM_DETECTION_FORCE_PRESENT
endchoice

# Telit modem can in theory handle up to 3.75 Mbps.
# While IP data appears to work fine at the high baudrate, for unknown
# reasons the AT DLCI channels stop responding after some time. The higher
# the baudrate, the sooner they stop responding.
# 921600 appears to be stable for hours
# 3500000 normally fails within a few minutes
configdefault MODEM_CELLULAR_NEW_BAUDRATE
default 921600

# We want to use the UART ASYNC API
configdefault UART_ASYNC_API
default y
configdefault UART_ASYNC_TX_CACHE_SIZE
default 64
choice MODEM_BACKEND_UART_IMPL
default MODEM_BACKEND_UART_ASYNC_HWFC
endchoice
configdefault UART_00_NRF_TX_BUFFER_SIZE
default 256
configdefault UART_00_INTERRUPT_DRIVEN
default n
endif # NETWORKING

endif # BOARD_KUDU_NRF54L15_CPUAPP
1 change: 1 addition & 0 deletions boards/embeint/kudu/kudu_cpuapp.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,4 @@ supported:
- retained_mem
- spi
- watchdog
- netif:modem
16 changes: 16 additions & 0 deletions boards/embeint/kudu/kudu_cpuapp_common.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
fuel-gauge0 = &fuel_gauge;
environmental0 = &sht4x;
imu0 = &lsm6dsv;
modem = &telit_le910c1;
};
};

Expand Down Expand Up @@ -124,6 +125,21 @@
status = "okay";
};

&uart00 {
status = "okay";
pinctrl-0 = <&uart00_default>;
pinctrl-1 = <&uart00_sleep>;
pinctrl-names = "default", "sleep";
current-speed = <115200>;
hw-flow-control;

telit_le910c1: telit_le910c1 {
compatible = "telit,le910cx";
mdm-power-gpios = <&gpio2 3 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
mdm-reset-gpios = <&gpio0 1 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
};
};

&spi20 {
status = "okay";
cs-gpios = <&gpio1 7 (GPIO_ACTIVE_LOW)>,
Expand Down
14 changes: 7 additions & 7 deletions generated/Kconfig.kv_keys
Original file line number Diff line number Diff line change
Expand Up @@ -81,37 +81,37 @@ config KV_STORE_KEY_EPACKET_UDP_PORT

config KV_STORE_KEY_LTE_MODEM_MODEL
bool "Enable KV key LTE_MODEM_MODEL"
default y if NRF_MODEM_LIB
default y if NRF_MODEM_LIB || MODEM_CELLULAR
help
Modem model as returned by AT+CGMM

config KV_STORE_KEY_LTE_MODEM_FIRMWARE_REVISION
bool "Enable KV key LTE_MODEM_FIRMWARE_REVISION"
default y if NRF_MODEM_LIB
default y if NRF_MODEM_LIB || MODEM_CELLULAR
help
Modem firmware revision as returned by AT+CGMR

config KV_STORE_KEY_LTE_MODEM_ESN
bool "Enable KV key LTE_MODEM_ESN"
default y if NRF_MODEM_LIB
default y if NRF_MODEM_LIB || MODEM_CELLULAR
help
'Electronic Serial Number' as returned by AT+CGSN=0

config KV_STORE_KEY_LTE_MODEM_IMEI
bool "Enable KV key LTE_MODEM_IMEI"
default y if NRF_MODEM_LIB
default y if NRF_MODEM_LIB || MODEM_CELLULAR
help
'International Modem Equiment Identifier' as returned by AT+CGSN=1

config KV_STORE_KEY_LTE_SIM_UICC
bool "Enable KV key LTE_SIM_UICC"
default y if NRF_MODEM_LIB
default y if NRF_MODEM_LIB || MODEM_CELLULAR
help
SIM Universal Identifier (https://www.itu.int/en/ITU-T/inr/forms/Pages/iin.aspx)

config KV_STORE_KEY_LTE_PDP_CONFIG
bool "Enable KV key LTE_PDP_CONFIG"
default y if NRF_MODEM_LIB
default y if NRF_MODEM_LIB || MODEM_CELLULAR
help
Packet Data Protocol (PDP) default context configuration

Expand All @@ -123,7 +123,7 @@ config KV_STORE_KEY_LTE_NETWORKING_MODES

config KV_STORE_KEY_LTE_SIM_IMSI
bool "Enable KV key LTE_SIM_IMSI"
default y if NRF_MODEM_LIB
default y if NRF_MODEM_LIB || MODEM_CELLULAR
help
'International Modem Subscriber Identity' as returned by AT+CIMI

Expand Down
4 changes: 2 additions & 2 deletions generated/Kconfig.rpc_commands
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@ config INFUSE_RPC_COMMAND_HEAP_STATS_REQUIRED_AUTH

config INFUSE_RPC_COMMAND_LTE_AT_CMD
bool "Enable RPC lte_at_cmd"
depends on NRF_MODEM_LIB
depends on NRF_MODEM_LIB || MODEM_CELLULAR
default y if INFUSE_SDK
help
Run AT command against LTE modem
Expand All @@ -241,7 +241,7 @@ config INFUSE_RPC_COMMAND_LTE_AT_CMD_REQUIRED_AUTH

config INFUSE_RPC_COMMAND_LTE_STATE
bool "Enable RPC lte_state"
depends on INFUSE_NRF_MODEM_MONITOR
depends on INFUSE_MODEM_MONITOR
default y if INFUSE_SDK
help
Get current LTE interface state
Expand Down
2 changes: 1 addition & 1 deletion generated/include/infuse/rpc/types.h
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ struct rpc_struct_wifi_state {
struct rpc_struct_lte_state {
/** Network registration state */
uint8_t registration_state;
/** 0 = None, 7 = LTE-M, 9 = NB-IoT */
/** Access Technology (3GPP TS 127.007) */
uint8_t access_technology;
/** Mobile Country Code */
uint16_t mcc;
Expand Down
50 changes: 50 additions & 0 deletions include/infuse/validation/cellular_modem.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/**
* @file
* @copyright 2024 Embeint Holdings Pty Ltd
* @author Jordan Yates <[email protected]>
*
* SPDX-License-Identifier: FSL-1.1-ALv2
*/

#ifndef INFUSE_SDK_INCLUDE_INFUSE_VALIDATION_CELLULAR_MODEM_H_
#define INFUSE_SDK_INCLUDE_INFUSE_VALIDATION_CELLULAR_MODEM_H_

#include <zephyr/device.h>
#include <zephyr/sys/util.h>

#ifdef __cplusplus
extern "C" {
#endif

/**
* @defgroup validation_cellular_modem nRF modem validation API
* @{
*/

enum {
/** Check modem firmware version */
VALIDATION_CELLULAR_MODEM_FW_VERSION = 0,
/** Check SIM card found */
VALIDATION_CELLULAR_MODEM_SIM_CARD = BIT(0),
};

/**
* @brief Validate the behaviour of LTE modem
*
* @param dev Modem device
* @param flags Validation tests to run
*
* @retval 0 On success
* @retval -errno On failure
*/
int infuse_validation_cellular_modem(const struct device *dev, uint8_t flags);

/**
* @}
*/

#ifdef __cplusplus
}
#endif

#endif /* INFUSE_SDK_INCLUDE_INFUSE_VALIDATION_CELLULAR_MODEM_H_ */
20 changes: 20 additions & 0 deletions kconfig/Kconfig.defaults.net
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,26 @@ if NETWORKING
configdefault WIFI
default y if $(dt_chosen_enabled,$(DT_CHOSEN_Z_WIFI))

# LTE Modem
if $(dt_alias_enabled,modem)
configdefault MODEM
default y
configdefault MODEM_CELLULAR
default y
configdefault MODEM_MODULES
default y
configdefault MODEM_DEDICATED_WORKQUEUE
default y
configdefault MODEM_AT_USER_PIPE
default y
configdefault NET_DRIVERS
default y
configdefault NET_L2_PPP
default y
configdefault NET_L2_PPP_OPTION_DNS_USE
default y
endif # $(dt_alias_enabled,modem)

if WIFI

# Reduce the default priority to prevent blocking other threads
Expand Down
1 change: 1 addition & 0 deletions lib/modem_monitor/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Modem library integration

zephyr_sources(modem_monitor.c)
add_subdirectory_ifdef(CONFIG_INFUSE_CELLULAR_MODEM_MONITOR modem_cellular)
add_subdirectory_ifdef(CONFIG_INFUSE_NRF_MODEM_MONITOR modem_nrf9x)
8 changes: 8 additions & 0 deletions lib/modem_monitor/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,15 @@ config INFUSE_MODEM_MONITOR_CONNECTIVITY_TIMEOUT_SEC
being assigned to a PDP context other than 0, which the network stack
integration fails to handle.

# Disable the hardcoded APN from Zephyr by default
configdefault MODEM_CELLULAR_APN
default ""

config INFUSE_MODEM_MONITOR_DEFAULT_PDP_APN
string "Default APN to use for PDP context 0"
depends on KV_STORE_KEY_LTE_PDP_CONFIG
# internet is unlikely to be correct, but nothing is guaranteed to be incorrect
default "internet" if MODEM_CELLULAR
default ""
help
The default APN to use for PDP context 0, if it has not been set to
Expand All @@ -49,6 +55,7 @@ config INFUSE_MODEM_MONITOR_DEFAULT_PDP_APN_SET
choice INFUSE_MODEM_MONITOR_DEFAULT_PDP_FAMILY
prompt "Default protocol family to use for PDP context 0"
depends on INFUSE_MODEM_MONITOR_DEFAULT_PDP_APN_SET
default INFUSE_MODEM_MONITOR_DEFAULT_PDP_FAMILY_IPV4 if MODEM_CELLULAR
default INFUSE_MODEM_MONITOR_DEFAULT_PDP_FAMILY_IPV4V6

config INFUSE_MODEM_MONITOR_DEFAULT_PDP_FAMILY_IPV4
Expand All @@ -67,4 +74,5 @@ endchoice

endif # INFUSE_MODEM_MONITOR

rsource "modem_cellular/Kconfig"
rsource "modem_nrf9x/Kconfig"
3 changes: 3 additions & 0 deletions lib/modem_monitor/modem_cellular/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# LTE modem library integration

zephyr_sources(cellular_modem_monitor.c)
10 changes: 10 additions & 0 deletions lib/modem_monitor/modem_cellular/Kconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Cellular Modem monitor configuration

config INFUSE_CELLULAR_MODEM_MONITOR
bool "Infuse-IoT integration with Cellular Modems"
depends on KV_STORE
depends on MODEM_CELLULAR
select MODEM_CELLULAR_SUSPEND_ASYNC
select INFUSE_MODEM_MONITOR
select INFUSE_WORKQ
default y
Loading