|  | # Modem configuration options | 
|  |  | 
|  | # Copyright (c) 2018 Foundries.io | 
|  | # SPDX-License-Identifier: Apache-2.0 | 
|  |  | 
|  | menuconfig MODEM | 
|  | bool "Modem drivers" | 
|  | help | 
|  | Enable config options for modem drivers. | 
|  |  | 
|  | if MODEM | 
|  |  | 
|  | module = MODEM | 
|  | module-str = modem | 
|  | source "subsys/logging/Kconfig.template.log_config" | 
|  |  | 
|  | config MODEM_RECEIVER | 
|  | bool "Modem receiver helper driver" | 
|  | depends on SERIAL_SUPPORT_INTERRUPT | 
|  | select UART_INTERRUPT_DRIVEN | 
|  | select RING_BUFFER | 
|  | help | 
|  | This driver allows modem drivers to communicate over UART with custom | 
|  | defined protocols. Driver doesn't inspect received data and all | 
|  | aspects of received protocol data are handled by application via | 
|  | work method provided.  This driver differs from the pipe UART driver | 
|  | in that callbacks are executed in a different work queue and data is | 
|  | passed around in k_pipe structures. | 
|  |  | 
|  | config MODEM_RECEIVER_MAX_CONTEXTS | 
|  | int "Maximum number of modem receiver contexts" | 
|  | depends on MODEM_RECEIVER | 
|  | range 1 10 | 
|  | default 1 | 
|  | help | 
|  | Maximum number of modem receiver contexts to handle.  For most | 
|  | purposes this should stay at 1. | 
|  |  | 
|  | config MODEM_CONTEXT | 
|  | bool "Modem context helper driver [EXPERIMENTAL]" | 
|  | select EXPERIMENTAL | 
|  | help | 
|  | This driver allows modem drivers to communicate with an interface | 
|  | using custom defined protocols. Driver doesn't inspect received data | 
|  | and all aspects of received protocol data are handled by application | 
|  | work method provided.  This driver combines abstractions for: | 
|  | modem interface, command handler, pin config and socket handling each | 
|  | of which will need to be configured. | 
|  |  | 
|  | if MODEM_CONTEXT | 
|  |  | 
|  | config MODEM_CONTEXT_MAX_NUM | 
|  | int "Maximum number of modem contexts" | 
|  | default 1 | 
|  | help | 
|  | Maximum number of modem contexts to handle.  For most | 
|  | purposes this should stay at 1. | 
|  |  | 
|  | config MODEM_CONTEXT_VERBOSE_DEBUG | 
|  | bool "Verbose debug output in the modem context" | 
|  | help | 
|  | Enabling this setting will turn on VERY heavy debugging from the | 
|  | modem context helper.  Do NOT leave on for production. | 
|  |  | 
|  | config MODEM_IFACE_UART | 
|  | bool "UART-based modem interface" | 
|  | select RING_BUFFER | 
|  | help | 
|  | To configure this layer for use, create a modem_iface_uart_data | 
|  | object and pass it's reference to modem_iface_uart_init() | 
|  | along with the modem_iface reference from your modem_context object | 
|  | and the UART device name. | 
|  |  | 
|  | if MODEM_IFACE_UART | 
|  |  | 
|  | choice MODEM_IFACE_UART_BACKEND | 
|  | prompt "UART backend to use for modem interface" | 
|  | default MODEM_IFACE_UART_INTERRUPT | 
|  |  | 
|  | config MODEM_IFACE_UART_INTERRUPT | 
|  | bool "UART-based modem interface using interrupt API" | 
|  | depends on SERIAL_SUPPORT_INTERRUPT | 
|  | select UART_INTERRUPT_DRIVEN | 
|  |  | 
|  | config MODEM_IFACE_UART_ASYNC | 
|  | bool "UART-based modem interface using async API" | 
|  | depends on SERIAL_SUPPORT_ASYNC | 
|  | select UART_ASYNC_API | 
|  |  | 
|  | endchoice | 
|  |  | 
|  | if MODEM_IFACE_UART_ASYNC | 
|  |  | 
|  | config MODEM_IFACE_UART_ASYNC_RX_BUFFER_SIZE | 
|  | int "Size in bytes of the RX buffers provided to UART driver" | 
|  | default 64 | 
|  | help | 
|  | Increasing this value decreases the number of UART interrupts needed | 
|  | to receive large packets. | 
|  |  | 
|  | config MODEM_IFACE_UART_ASYNC_RX_NUM_BUFFERS | 
|  | int "Number of RX buffers available to the UART driver" | 
|  | default 2 | 
|  | help | 
|  | This value needs to be twice the number of UART modems using the | 
|  | driver to avoid buffer starvation. | 
|  |  | 
|  | config MODEM_IFACE_UART_ASYNC_RX_TIMEOUT_US | 
|  | int "Timeout for flushing RX buffers after receiving no additional data" | 
|  | default 278 | 
|  | help | 
|  | Decreasing this value can help increase data throughput when high | 
|  | baudrates are used. 278us is 4 bytes at 115200 baud. Decreasing this | 
|  | value too much can result in spurious interrupts. Leaving it too | 
|  | high can reduce data throughput. | 
|  |  | 
|  | endif # MODEM_IFACE_UART_ASYNC | 
|  |  | 
|  | endif # MODEM_IFACE_UART | 
|  |  | 
|  | config MODEM_CMD_HANDLER | 
|  | bool "Generic modem command handler" | 
|  | select NET_BUF | 
|  | help | 
|  | This generic command handler uses a modem interface to process | 
|  | incoming data and hand it back to the modem driver via callbacks | 
|  | defined for: | 
|  | - modem responses | 
|  | - unsolicited messages | 
|  | - specified handlers for current operation | 
|  | To configure this layer for use, create a modem_cmd_handler_data | 
|  | object and pass it's reference to modem_cmd_handler_init() along with | 
|  | the modem_cmd_handler reference from your modem_context object. | 
|  |  | 
|  | config MODEM_CMD_HANDLER_MAX_PARAM_COUNT | 
|  | int "Maximum number of params parsed per command" | 
|  | depends on MODEM_CMD_HANDLER | 
|  | default 6 | 
|  | help | 
|  | This option sets the maximum number of parameters which may be | 
|  | parsed by the command handler.  This is also limited by the length | 
|  | of the match_buf (match_buf_len) field as it needs to be large | 
|  | enough to hold a single line of data (ending with /r). | 
|  |  | 
|  | endif # MODEM_CONTEXT | 
|  |  | 
|  | config MODEM_SOCKET | 
|  | bool "Generic modem socket support layer" | 
|  | depends on NET_SOCKETS | 
|  | help | 
|  | This layer provides much of the groundwork for keeping track of | 
|  | modem "sockets" throughout their lifecycle (from the initial offload | 
|  | API calls through the command handler call back layers). | 
|  | To configure this layer for use, create a modem_socket_config | 
|  | object with your socket data and pass it's reference to | 
|  | modem_socket_init(). | 
|  | Note that the modem socket uses runtime allocated file descriptors | 
|  | reserved from the fdtable, for which the max count is set using the | 
|  | Kconfig option ZVFS_OPEN_MAX. Make sure to update this value as both | 
|  | the modem sockets and the POSIX_API, if used, share them. | 
|  |  | 
|  | config MODEM_SOCKET_PACKET_COUNT | 
|  | int "Maximum number of stored packet sizes per socket" | 
|  | depends on MODEM_SOCKET | 
|  | default 6 | 
|  | help | 
|  | As the modem indicates more data is available to be received, | 
|  | these values are organized into "packets".  This setting limits | 
|  | the maximum number of packet sizes the socket can keep track of. | 
|  |  | 
|  | config MODEM_SHELL | 
|  | bool "Modem shell utilities" | 
|  | select SHELL | 
|  | help | 
|  | Activate shell module that provides modem utilities like | 
|  | sending a command to the modem UART. | 
|  |  | 
|  | config MODEM_SIM_NUMBERS | 
|  | bool "Query the SIM for IMSI and ICCID" | 
|  | default y | 
|  | help | 
|  | Query the SIM card for the IMSI and ICCID identifiers. This | 
|  | can be disabled if the application does not use a SIM. | 
|  |  | 
|  | config MODEM_CELL_INFO | 
|  | bool "Query for operator and cell info" | 
|  | help | 
|  | Query for numerical operator id, location area code and cell id. | 
|  |  | 
|  | source "drivers/modem/Kconfig.ublox-sara-r4" | 
|  | source "drivers/modem/Kconfig.quectel-bg9x" | 
|  | source "drivers/modem/Kconfig.wncm14a2a" | 
|  | source "drivers/modem/Kconfig.cellular" | 
|  | source "drivers/modem/Kconfig.at_shell" | 
|  |  | 
|  | source "drivers/modem/Kconfig.hl7800" | 
|  | source "drivers/modem/Kconfig.simcom-sim7080" | 
|  |  | 
|  | endif # MODEM |