8deaf18d8b
Do not allow the modem to sleep if the driver is busy. Fix CTS filtering. Ignore small pulses on the CTS line. Fix socket restoration. Restored sockets could be mismatched with a wrong type. UDP sockets could be duplicated during restore. Improve IO debug mode. Use warning message for IO debug mode to easily see IO transitions color coded in a terminal. Ensure the UART is enabled whenever the driver needs to send commands to the modem. Ensure DNS resolver is re-initialized after the modem is powered off. PROD-307 Signed-off-by: Ryan Erickson <ryan.erickson@lairdconnect.com>
375 lines
8.1 KiB
Plaintext
375 lines
8.1 KiB
Plaintext
# Sierra Wireless HL7800 modem driver options
|
|
|
|
# Copyright (c) 2020 Laird Connectivity
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
menuconfig MODEM_HL7800
|
|
bool "Sierra Wireless HL7800 modem driver"
|
|
select MODEM_RECEIVER
|
|
select NET_OFFLOAD
|
|
imply GPIO
|
|
help
|
|
Choose this setting to enable
|
|
Sierra Wireless HL7800 LTE-M/NB-IoT modem driver.
|
|
|
|
if MODEM_HL7800
|
|
|
|
config MODEM_HL7800_FW_UPDATE
|
|
bool "Firmware update"
|
|
select FILE_SYSTEM
|
|
help
|
|
Enable the ability to update the HL7800 via XMODEM
|
|
by providing an update file to the update API.
|
|
|
|
config MODEM_HL7800_RECV_BUF_CNT
|
|
int "The number of allocated network buffers"
|
|
default 30
|
|
|
|
config MODEM_HL7800_RECV_BUF_SIZE
|
|
int "The size of the network buffers in bytes"
|
|
default 128
|
|
|
|
config MODEM_HL7800_SET_APN_NAME_ON_STARTUP
|
|
bool "Set APN name during driver init"
|
|
help
|
|
If APN doesn't match MODEM_HL7800_APN_NAME on startup,
|
|
then it will be set.
|
|
|
|
if MODEM_HL7800_SET_APN_NAME_ON_STARTUP
|
|
|
|
config MODEM_HL7800_APN_NAME
|
|
string "APN name for establishing network connection"
|
|
help
|
|
This setting is used in the AT+CGDCONT command to set the APN name
|
|
for the PDP context.
|
|
|
|
endif # MODEM_HL7800_SET_APN_NAME_ON_STARTUP
|
|
|
|
choice MODEM_HL7800_RAT
|
|
bool "Radio Access Technology Mode"
|
|
default MODEM_HL7800_RAT_NO_CHANGE
|
|
|
|
config MODEM_HL7800_RAT_NO_CHANGE
|
|
bool "Don't change the RAT"
|
|
help
|
|
Leave the HL7800 RAT unchanged during modem init.
|
|
|
|
config MODEM_HL7800_RAT_M1
|
|
bool "LTE-M1"
|
|
help
|
|
Enable LTE Cat-M1 mode during modem init.
|
|
|
|
config MODEM_HL7800_RAT_NB1
|
|
bool "NB-IoT"
|
|
help
|
|
Enable LTE Cat-NB1 mode during modem init.
|
|
|
|
endchoice
|
|
|
|
menuconfig MODEM_HL7800_CONFIGURE_BANDS
|
|
bool "Configure modem bands"
|
|
default "y"
|
|
help
|
|
Choose this setting to configure which LTE bands the
|
|
HL7800 modem should use at boot time.
|
|
|
|
if MODEM_HL7800_CONFIGURE_BANDS
|
|
|
|
config MODEM_HL7800_BAND_1
|
|
bool "Band 1 (2000MHz)"
|
|
default "y"
|
|
help
|
|
Enable Band 1 (2000MHz)
|
|
|
|
config MODEM_HL7800_BAND_2
|
|
bool "Band 2 (1900MHz)"
|
|
default "y"
|
|
help
|
|
Enable Band 2 (1900MHz)
|
|
|
|
config MODEM_HL7800_BAND_3
|
|
bool "Band 3 (1800MHz)"
|
|
default "y"
|
|
help
|
|
Enable Band 3 (1800MHz)
|
|
|
|
config MODEM_HL7800_BAND_4
|
|
bool "Band 4 (1700MHz)"
|
|
default "y"
|
|
help
|
|
Enable Band 4 (1700MHz)
|
|
|
|
config MODEM_HL7800_BAND_5
|
|
bool "Band 5 (850MHz)"
|
|
default "y"
|
|
help
|
|
Enable Band 5 (850MHz)
|
|
|
|
config MODEM_HL7800_BAND_8
|
|
bool "Band 8 (900MHz)"
|
|
default "y"
|
|
help
|
|
Enable Band 8 (900MHz)
|
|
|
|
config MODEM_HL7800_BAND_9
|
|
bool "Band 9 (1900MHz)"
|
|
help
|
|
Enable Band 9 (1900MHz)
|
|
|
|
config MODEM_HL7800_BAND_10
|
|
bool "Band 10 (2100MHz)"
|
|
help
|
|
Enable Band 10 (2100MHz)
|
|
|
|
config MODEM_HL7800_BAND_12
|
|
bool "Band 12 (700MHz)"
|
|
default "y"
|
|
help
|
|
Enable Band 12 (700MHz)
|
|
|
|
config MODEM_HL7800_BAND_13
|
|
bool "Band 13 (700MHz)"
|
|
default "y"
|
|
help
|
|
Enable Band 13 (700MHz)
|
|
|
|
config MODEM_HL7800_BAND_14
|
|
bool "Band 14 (700MHz)"
|
|
help
|
|
Enable Band 14 (700MHz)
|
|
|
|
config MODEM_HL7800_BAND_17
|
|
bool "Band 17 (700MHz)"
|
|
help
|
|
Enable Band 17 (700MHz)
|
|
|
|
config MODEM_HL7800_BAND_18
|
|
bool "Band 18 (800MHz)"
|
|
help
|
|
Enable Band 18 (800MHz)
|
|
|
|
config MODEM_HL7800_BAND_19
|
|
bool "Band 19 (800MHz)"
|
|
help
|
|
Enable Band 19 (800MHz)
|
|
|
|
config MODEM_HL7800_BAND_20
|
|
bool "Band 20 (800MHz)"
|
|
default "y"
|
|
help
|
|
Enable Band 20 (800MHz)
|
|
|
|
config MODEM_HL7800_BAND_25
|
|
bool "Band 25 (1900MHz)"
|
|
help
|
|
Enable Band 25 (1900MHz)
|
|
|
|
config MODEM_HL7800_BAND_26
|
|
bool "Band 26 (800MHz)"
|
|
help
|
|
Enable Band 26 (800MHz)
|
|
|
|
config MODEM_HL7800_BAND_27
|
|
bool "Band 27 (800MHz)"
|
|
help
|
|
Enable Band 27 (800MHz)
|
|
|
|
config MODEM_HL7800_BAND_28
|
|
bool "Band 28 (700MHz)"
|
|
default "y"
|
|
help
|
|
Enable Band 28 (700MHz)
|
|
|
|
config MODEM_HL7800_BAND_66
|
|
bool "Band 66 (1800MHz)"
|
|
help
|
|
Enable Band 66 (1800MHz)
|
|
|
|
endif # MODEM_HL7800_CONFIGURE_BAND
|
|
|
|
menuconfig MODEM_HL7800_LOW_POWER_MODE
|
|
bool "Low power modes"
|
|
help
|
|
Choose this setting to enable a low power mode for the HL7800 modem
|
|
|
|
if MODEM_HL7800_LOW_POWER_MODE
|
|
|
|
choice
|
|
prompt "Low Power Mode"
|
|
default MODEM_HL7800_EDRX
|
|
|
|
config MODEM_HL7800_EDRX
|
|
bool "eDRX"
|
|
help
|
|
Enable LTE eDRX
|
|
|
|
config MODEM_HL7800_PSM
|
|
bool "PSM"
|
|
help
|
|
Enable Power Save Mode (PSM)
|
|
endchoice
|
|
|
|
if MODEM_HL7800_EDRX
|
|
|
|
config MODEM_HL7800_EDRX_VALUE
|
|
string "Requested eDRX timer"
|
|
default "0101"
|
|
help
|
|
Half a byte in a 4-bit format. The eDRX value refers to bit 4 to 1
|
|
of octet 3 of the Extended DRX parameters information element.
|
|
Default value is 81.92 seconds.
|
|
|
|
endif # MODEM_HL7800_EDRX
|
|
|
|
if MODEM_HL7800_PSM
|
|
|
|
config MODEM_HL7800_PSM_PERIODIC_TAU
|
|
string "Requested extended periodic TAU timer"
|
|
default "10000010"
|
|
help
|
|
Requested extended periodic TAU (tracking area update) value (T3412)
|
|
to be allocated to the UE in E-UTRAN. One byte in an 8-bit format.
|
|
Default value is 1 minute.
|
|
|
|
config MODEM_HL7800_PSM_ACTIVE_TIME
|
|
string "Requested active time"
|
|
default "00001111"
|
|
help
|
|
Requested Active Time value (T3324) to be allocated to the UE.
|
|
One byte in an 8-bit format. Default value is 30 seconds.
|
|
|
|
endif # MODEM_HL7800_PSM
|
|
|
|
choice
|
|
prompt "Default Sleep Level"
|
|
default MODEM_HL7800_SLEEP_LEVEL_HIBERNATE
|
|
help
|
|
The application can override this setting
|
|
|
|
config MODEM_HL7800_SLEEP_LEVEL_HIBERNATE
|
|
bool "Hibernate"
|
|
help
|
|
Lowest power consumption
|
|
IO state not retained
|
|
Application subsystem OFF
|
|
|
|
config MODEM_HL7800_SLEEP_LEVEL_LITE_HIBERNATE
|
|
bool "Lite Hibernate"
|
|
help
|
|
IO state retained
|
|
Application subsystem OFF
|
|
|
|
config MODEM_HL7800_SLEEP_LEVEL_SLEEP
|
|
bool "Sleep"
|
|
help
|
|
Highest power consumption of modem sleep states
|
|
IO state retained
|
|
Application subsystem ON
|
|
Allows sockets to remain open
|
|
|
|
endchoice
|
|
|
|
config MODEM_HL7800_SLEEP_DELAY_AFTER_REBOOT
|
|
int "Delay in seconds before sleep after reboot"
|
|
default 10
|
|
|
|
endif # MODEM_HL7800_LOW_POWER_MODE
|
|
|
|
config MODEM_HL7800_RX_STACK_SIZE
|
|
int "Size of the stack for the HL7800 modem driver RX thread"
|
|
default 1536 if MODEM_HL7800_POLTE
|
|
default 1280
|
|
help
|
|
This stack is used by the HL7800 RX thread.
|
|
|
|
config MODEM_HL7800_RX_WORKQ_STACK_SIZE
|
|
int "Size of the stack for the HL7800 modem driver work queue"
|
|
default 2048
|
|
help
|
|
This stack is used by the work queue to pass off net_pkt data
|
|
to the rest of the network stack, letting the rx thread continue
|
|
processing data.
|
|
|
|
config MODEM_HL7800_INIT_PRIORITY
|
|
int "HL7800 driver init priority"
|
|
default 80
|
|
help
|
|
HL7800 device driver initialization priority.
|
|
Do not mess with it unless you know what you are doing.
|
|
Note that the priority needs to be lower than the net stack
|
|
so that it can start before the networking sub-system.
|
|
|
|
config MODEM_HL7800_GET_IP_ADDR_INFO_ATTEMPTS
|
|
int "Number of attempts to get IP address info during init"
|
|
default 4
|
|
|
|
choice
|
|
prompt "Modem Boot Type"
|
|
default MODEM_HL7800_BOOT_NORMAL
|
|
|
|
config MODEM_HL7800_BOOT_NORMAL
|
|
bool "No Delay"
|
|
|
|
config MODEM_HL7800_BOOT_DELAY
|
|
bool "Delay secondary initialization of driver and network attach"
|
|
help
|
|
When true the application must call mdm_hl7800_reset.
|
|
This mode delays the validity of modem info.
|
|
|
|
config MODEM_HL7800_BOOT_IN_AIRPLANE_MODE
|
|
bool "Enter airplane mode during init"
|
|
help
|
|
mdm_hl7800_set_functionality must be used by app to exit
|
|
airplane mode.
|
|
|
|
endchoice
|
|
|
|
config MODEM_HL7800_GPS
|
|
bool "GPS command and handlers"
|
|
|
|
config MODEM_HL7800_USE_GLONASS
|
|
bool "Use GLONASS in addition to GPS"
|
|
depends on MODEM_HL7800_GPS
|
|
|
|
config MODEM_HL7800_POLTE
|
|
bool "PoLTE commands and handlers"
|
|
|
|
choice
|
|
prompt "IP Address family"
|
|
default MODEM_HL7800_ADDRESS_FAMILY_IPV4V6
|
|
help
|
|
The address family for IP connections.
|
|
|
|
config MODEM_HL7800_ADDRESS_FAMILY_IPV4
|
|
bool "IPv4"
|
|
|
|
config MODEM_HL7800_ADDRESS_FAMILY_IPV6
|
|
bool "IPv6"
|
|
|
|
config MODEM_HL7800_ADDRESS_FAMILY_IPV4V6
|
|
bool "IPv4v6"
|
|
|
|
endchoice
|
|
|
|
config MODEM_HL7800_ALLOW_SLEEP_DELAY_MS
|
|
int "Milliseconds to delay before allowing modem to sleep"
|
|
default 5000
|
|
range 5000 3600000
|
|
help
|
|
This value should be set larger than the network latency. Otherwise
|
|
the modem can go to sleep before having a chance to receive socket data.
|
|
|
|
config MODEM_HL7800_RSSI_RATE_SECONDS
|
|
int "Rate to automatically query RSSI"
|
|
default 0 if MODEM_HL7800_LOW_POWER_MODE
|
|
default 30
|
|
|
|
config MODEM_HL7800_CTS_FILTER_US
|
|
int "CTS signal filter time (microseconds)"
|
|
default 20
|
|
help
|
|
This value is used to filter the CTS signal from the modem.
|
|
CTS pulses shorter than this value will be ignored.
|
|
|
|
endif # MODEM_HL7800
|