Hi
I have been using my out of tree driver for my BG95 module, which I have copy pasted from the zephyr's quectel_bg9x driver (drivers/modem/quectel-bg9x) and its required files into respective folders and renamed as quectel-bg95cd and made a few additions to the code. Following is my folder structure
boards └── ... drivers └── modem ├── CMakeLists ├── Kconfig ├── Kconfig.quectel-bg95cd ├── modem_context.c ├── modem_cmd_handler.c ├── modem_iface_uart_async.c ├── modem_iface_uart_interrupt.c ├── modem_socket.c └──quectel_bg95cd.c └── zephyr └── module.yml dts └── bindings └── modem └── quectel,bg95cd.yaml include └── app └── drivers └── modem ├── quectel-bg95cd.h ├── modem_socket.h ├── modem_context.h ├── modem_cmd_handler.h └── modem_iface_uartt.h
I set the following in my main CMakeLists
list(APPEND ZEPHYR_EXTRA_MODULES ${CMAKE_CURRENT_SOURCE_DIR}/drivers) zephyr_include_directories(include/app/drivers)
I need the "quectel-bg95cd.h" to be included in my main.c file, that's why I have placed them in include/app/drivers/modem folder, so I can have access to my added functions and also to strcut's like sockaddr, modem_cmd from my main.c file
I have changed my #include "quectel-bg9x.h" into <quectel-bg95cd.h> in quectel-bg95cd.c file, and also able to include it in main.c as #include <modem/quectel-bg95cd.h>
It builds and works fine till ncs v2.5.2, when I upgraded to ncs v2.6.0, I face the following error
/include/app/drivers/modem/modem_socket.h:20:10: fatal error: sockets_internal.h: No such file or directory
I could able to see a change in the CMakeLists in zephyr's drivers/modem/CMakeLists , is that the reason I'm unable to build?? or am I doing it wrong??
For reference ,I attach my drivers/modem/CMakeLists.txt (I have tried many cmds trying to resolve but didn't help)
# SPDX-License-Identifier: Apache-2.0 zephyr_library() #zephyr_library_sources_ifdef(CONFIG_MODEM_RECEIVER modem_receiver.c) #zephyr_library_sources_ifdef(CONFIG_MODEM_SHELL modem_shell.c) #zephyr_library_sources_ifdef(CONFIG_MODEM_CONTEXT modem_context.c) #zephyr_library_sources_ifdef(CONFIG_MODEM_IFACE_UART_INTERRUPT modem_iface_uart_interrupt.c) #zephyr_library_sources_ifdef(CONFIG_MODEM_IFACE_UART_ASYNC modem_iface_uart_async.c) #zephyr_library_sources_ifdef(CONFIG_MODEM_CMD_HANDLER modem_cmd_handler.c) #zephyr_library_sources_ifdef(CONFIG_MODEM_SOCKET modem_socket.c) zephyr_library_include_directories(${ZEPHYR_BASE}/subsys/net/ip) zephyr_library_include_directories(${ZEPHYR_BASE}/subsys/net/lib/sockets) zephyr_library_include_directories(${ZEPHYR_BASE}/drivers/modem) zephyr_library_include_directories(${APPLICATION_BASE}/include/app/drivers/modem) zephyr_library_include_directories(.) # zephyr_syscall_header(${APPLICATION_BASE}/include/app/drivers/modem/modem_test.h) zephyr_syscall_header(${ZEPHYR_BASE}/drivers/modem/modem_context.h) zephyr_syscall_header(${ZEPHYR_BASE}/drivers/modem/modem_socket.h) zephyr_syscall_header(${ZEPHYR_BASE}/drivers/modem/modem_cmd_handler.h) zephyr_syscall_header(${ZEPHYR_BASE}/drivers/modem/modem_iface_uart.h) if(CONFIG_MODEM_QUECTEL_BG95CD) zephyr_library_sources(quectel-bg95cd.c) endif()
Kindly guide me with this. Thanks.