quarta-feira, 22 de setembro de 2021

Programando u-blox NINA-W106 com NuttX - Network Support - Acesso ao servidor u-blox THINGSTREAM.IO via PPP

Programando u-blox NINA-W106 com NuttX - Network Support - Acesso ao servidor u-blox THINGSTREAM.IO via PPP


O objetivo deste BLOG é demonstrar como é possível utilizar o NuttX para programação do U-BLOX NINA W106. Foi utilizado o EVK U-BLOX NINA W106 com o MODEM SARA G450 para o teste. O exemplo abrirá um terminal para interagir com o NuttX e  iniciar acesso  à Rede GSM via PPP e assim mandar uma mensagem à um tópico inscrito no servidor u-blox Thingstream.io da U-BLOX.

Testado no Ubuntu 20
EVK U-BLOX NINA W106


NuttX: O sistema operacional para a Internet das Coisas.

NuttX é um sistema operacional em tempo real (RTOS) com ênfase na conformidade de padrões e pequeno footprint. Escaláveis de ambientes microcontroladores de 8 bits a 32 bits, os principais padrões de governo em NuttX são os padrões Posix e ANSI. ApIs padrão adicionais do Unix e de outros RTOS comuns (como o VxWorks) são adotadas para funcionalidades não disponíveis sob esses padrões, ou para funcionalidades que não são apropriadas para ambientes profundamente incorporados (como fork()).

Apache NuttX é um esforço em incubação na Apache Software Foundation (ASF), patrocinada pela Incubadora. A incubação é necessária de todos os projetos recém-aceitos até que uma nova revisão indique que o processo de infraestrutura, comunicação e tomada de decisão se estabilizou de forma consistente com outros projetos ASF bem-sucedidos. Embora o status de incubação não seja necessariamente um reflexo da completude ou estabilidade do código, ele indica que o projeto ainda não foi totalmente endossado pela ASF.

NuttX é um sistema operacional incorporado em tempo real (RTOS). Seus objetivos são:

Rich Feature OS Set
O objetivo é fornecer implementações da maioria das interfaces padrão do SISTEMA OPERACIONAL POSIX para oferecer suporte a um ambiente de desenvolvimento rico e multi-threaded para processadores profundamente incorporados.

Não é um objetivo fornecer o nível de recursos do SO como os fornecidos pelo Linux. Para trabalhar com MCUs menores, a pequena footprint deve ser mais importante do que um conjunto de recursos extenso. Mas a conformidade padrão é mais importante do que uma pequena footprint. Certamente um RTOS menor poderia ser produzido ignorando padrões. Pense no NuttX é um pequeno trabalho linux com um conjunto de recursos muito reduzido.

Altamente escalável
Totalmente escalável de minúsculo (8 bits) a moderado incorporado (64 bits). A escalabilidade com conjunto de recursos ricos é realizada com: Muitos arquivos de origem minúsculos, link de bibliotecas estáticas, altamente configurável, uso de símbolos fracos quando disponíveis.

Conformidade de padrões
A NuttX se esforça para alcançar um alto grau de conformidade de padrões. As principais normas de governo são as normas POSIX e ANSI. ApIs padrão adicionais do Unix e de outros RTOS comuns são adotadas para funcionalidades não disponíveis sob esses padrões ou para funcionalidades que não são apropriadas para os RTOS profundamente incorporados (como fork()).

Devido a essa conformidade de padrões, o software desenvolvido sob outros OSs padrão (como o Linux) deve ser portado facilmente para NuttX.

Tempo Real Totalmente preventivo; prioridade fixa, round-robin, e agendamento "esporádico".

Licença Apache não restritiva totalmente aberta.

GNU Toolchains Compatíveis com as cadeias de ferramentas GNU baseadas no buildroot disponível para download para fornecer um ambiente completo de desenvolvimento para muitas arquiteturas.

SARA G450 

 
Módulo SARA-G450 GSM / GPRS apresenta conectividade GSM / GPRS classe 12 no popular fator de forma U-blox SARA. O módulo SARA-G450 é uma solução ideal para aplicações com espaço e custos sensíveis. Ele oferece uma excelente relação preço-desempenho para todas as aplicações M2M onde as condições ambientais (temperatura, EMC e tensões mecânicas) estão dentro dos níveis padrão. Seu rico conjunto de recursos - incluindo GSM / GPRS classe 12 e integração simples - permite que os clientes integrem facilmente o módulo e desenvolver uma ampla gama de dispositivos M2M. Graças à sua compatibilidade de pinos com os módulos u-blox SARA-G3 (GSM), SARA-U2 (HSPA), SARA-R5 / SARA-R4 (LTE-M / NB- IoT), SARA-N3 (NB-IoT), TOBY-L4 (LTE Cat 6) TOBY-L2 (LTE Cat 4) e TOBY-R2 / LARA-R2 / LARA-R3121 (LTE Cat 1), o SARA-G450 permite que os clientes utilizem o mesmo design de PCB, visando vários requisitos ambientais e diferentes tecnologias celulares. Módulos celulares u-blox são certificados e aprovados pelos principais órgãos reguladores e operadoras
 
 
PPP
 

Em redes de computadores, o Point-to-Point Protocol (PPP), em português Protocolo ponto-a-ponto é um protocolo de enlace de dados (camada 2) usado para estabelecer uma conexão direta entre dois nós. Ele pode fornecer autenticação de conexão, criptografia de transmissão (usando ECP, RFC 1968) e compressão.

O PPP é usado sobre muitos tipos de redes físicas incluindo cabo serial, linha telefônica, linha tronco, telefone celular, enlaces de rádio especializados e enlaces de fibra ótica como SONET. O PPP também é usado sobre conexões de acesso à Internet. Provedores de serviços de Internet têm usado o PPP para acesso discado à Internet pelos clientes, uma vez que pacotes IP não podem ser transmitidos sobre uma linha de modem por si próprios, sem algum protocolo de enlace de dados. 

 
U-BLOX NINA W106 E NuttX
Como o módulo U-BLOX NINA W106 é baseado no chip ESP32 (CPU), será possível rodar o Nuttx sem problemas. 


Conheça ThingStream, servidor MQTT da U-BLOX
Implementa também SSL e SN-MQTT

Ambiente thingstream

Características:
  • o custo do Thingstream como um MQTT Broker é muito menor do que o custo daqueles associados ao Azure e AWS;
  • o gerenciador de fluxo de dados é uma excelente vantagem, dados podem ser tratados no servidor e então encaminhados;
  • permite programação Node.js;
  • a segurança é diferente e muito mais simplificada do que tentar fazer uma troca de certificados com a AWS etc;
  • tem uma conexão segura em vez do dispositivo. Isso realmente simplifica a integração;
  • capacidade de se inscrever em vários tópicos diferentes;
  • nós para acessos para vários serviços da AWS Amazon, Azure IoT, IBM Watson, IFTTT (DashBoard e uma infinidade de outras opções)
  • criação de Coisas (Thing);
  • monitoração de eventos MQTT;
  • alertas quando algo não vai bem.
No modo tradicional, se você quer acessar AWS, AZURE, etc:
  • você deve fazer registro
  • gerar Certificados
  • manter, guardar e proteger seus Certificados
  • despachar cada Certificado um por um para os Devices na produção
  • você precisa manter identidades diferentes por cada um dispositivo e entregá-los com segurança
  • fortes impactos na complexidade na logística, produção tempo, configuração do sistema e custos de manutenção
Com ThingStream, se você quer acessar AWS, AZURE, etc:
  • você deve fazer um registro de CA (certificate authority) (Access ID e Secret Key), exemplo, IAM na AMAZON.
  • quando você cria um Device (Things) no ThingStream, você deve pegar as credenciais (Username, Password, Client ID) (Device Certificate), basicamente muda Client Id e Password para cada Device
  • utilize estas credenciais (Things) (Username, Password e Client ID) no Device (U-BLOX NINA W106) para acessar o ThingStream  via MQTT
  • crie Tópicos (Topics) que devem acessados pelos Devices (U-BLOX NINA W106), ou seja, para fazer Publish ou Subscribe
  • no DATAFLOW manager (Flows), o Nó ThingStream Subscribe deve estar conectado à um Tópico previamente criado para o seu Device (U-BLOX NINA W106), é por ele que começa o disparo para o DATAFLOW manager
  • Dentro do DATAFLOW pode de ter vários Nós ThingStream Subscribe
  • no DATAFLOW manager tenha fácil acesso à AWS, AZURE, etc utilizando Access ID e Secret Key e então solicite os serviços disponíveis (S3, LAMBDA, etc) (No caso da AMAZON)

FLOW

Saldo de "Publish"

Registros dos Eventos


Planos acessíveis



Colocando Nuttx no U-BLOX NINA W106

O link abaixo, é roteiro Básico para que você possa preparar o ambiente para programar o U-BLOX NINA W106 com o NuttX


    Dependências
$sudo apt install \
bison flex gettext texinfo libncurses5-dev libncursesw5-dev \
gperf automake libtool pkg-config build-essential gperf genromfs \
libgmp-dev libmpc-dev libmpfr-dev libisl-dev binutils-dev libelf-dev \
libexpat-dev gcc-multilib g++-multilib picocom u-boot-tools util-linux
Nota 1: O NuttX utiliza um sistema de build semelhante ao do Kernel do Linux (https://www.kernel.org/doc/html/latest/kbuild/index.html). Ele utiliza o kconfig-frontends como seu sistema de configuração. O repositório tools.git é utilizado para instalar este pacote. Porém se você estiver usando o Ubuntu 19.10 ou mais recente, estas distribuições já contém o pacote, mas de qualquer forma, instale.

$ sudo apt-get install kconfig-frontends


Nota 2: Outra dependência para o processo do NuttX com o ESP32 é o ESP-IDF (Espressif IoT Development Framework). Este framework é nativo do ESP e mantido pela Espressif. Ele compreende um conjunto de códigos como drivers, APIs, scripts, ferramental para compilar e fazer upload do firmware e o FreeRTOS customizado. Neste ponto, uma observação conceitual é muito importante, o NuttX não usa o FreeRTOS em nenhuma camada interna, apenas algumas ferramentas auxiliares que compõem o IDF serão utilizadas para geração do binário e gravação.
Download do NuttX
$ mkdir nuttx
$ cd nuttx
$ git clone https://github.com/apache/incubator-nuttx.git nuttx
$ git clone https://github.com/apache/incubator-nuttx-apps apps
O Ubuntu e o Debian ainda fornecem o Python 2.7 como o interpretador padrão, mas alguns 
pacotes necessários podem estar faltando para distribuições mais recentes. Python 3 é
recomendado e pode ser instalado da seguinte maneira:
 
$ sudo apt-get install python3 python3-pip python3-setuptool sudo update-alternatives --install /usr/bin/python python /usr/bin/python3
 Instale agora o ESP-IDF (ESP32 TOOLS, LIBS, ETC) manualmente
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/linux-setup.html
(ESP-IDF) extrair
mkdir -p ~/esp
cd ~/esp
git clone --recursive https://github.com/espressif/esp-idf.git

osboxes@osboxes:~$ cd esp/
osboxes@osboxes:~/esp$ cd esp-idf/
osboxes@osboxes:~/esp/esp-idf$ ./install.sh
Detecting the Python interpreter
Checking "python" ...
/home/osboxes/esp/esp-idf/tools/detect_python.sh: line 16: python: command not found
Checking "python3" ...
Python 3.8.5
"python3" has been detected
Installing ESP-IDF tools
Installing tools: xtensa-esp32-elf, xtensa-esp32s2-elf, xtensa-esp32s3-elf, riscv32-esp-elf, esp32ulp-elf, esp32s2ulp-elf, openocd-esp32
Installing xtensa-esp32-elf@esp-2020r3-8.4.0
Downloading xtensa-esp32-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz to /home/osboxes/.espressif/dist/xtensa-esp32-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz.tmp
Done
Extracting /home/osboxes/.espressif/dist/xtensa-esp32-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz to /home/osboxes/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0
Installing xtensa-esp32s2-elf@esp-2020r3-8.4.0
Downloading xtensa-esp32s2-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz to /home/osboxes/.espressif/dist/xtensa-esp32s2-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz.tmp
Done
.
.
.
 $ cd nuttx
$ make -C tools/esp32/ ${HOME}/esp/esp-idf
Após a instalação do IDF, ou caso já possua o IDF instalado, execute o
seguinte comando para ativar o ambiente virtual que foi configurado na
instalação. Sempre que for realizar o build do NuttX, será necessário
ativar este ambiente.
$. ${HOME}/esp/esp-idf/export.sh
No presente momento, o NuttX utiliza 2 binários gerados através do
IDF: o bootloader e a tabela de partição. Ainda dentro do diretório
/nutxtx/nuttx/, faça o download destes binários pré configurados:
$ wget -O bootloader.bin https://github.com/saramonteiro/esp32_binaries_nuttx/blob/main/bootloader.bin?raw=true
$ wget -O partitions.bin https://github.com/saramonteiro/esp32_binaries_nuttx/blob/main/partitions.bin?raw=true

Mantenha-se no diretório do NuttX e execute o script de configuração para criar um arquivo de configuração para o
U-BLOX NINA W106. 

$ make distclean
uttX has not been configured!
To configure the project:
  tools/configure.sh <config>
For a list of available configurations:
  tools/configure.sh -L
$ ./tools/configure.sh esp32-devkitc:nsh 
 

Finalmente, faça o build e confirme em seguida que o firmware binário foi gerado:
$ make
osboxes@osboxes:~/nuttx/nuttx$ make
Create .version
Create version.h
LN: include/arch/board to /home/osboxes/nuttx/nuttx/boards/xtensa/esp32/esp32-devkitc/include
make[1]: Entering directory '/home/osboxes/nuttx/nuttx/libs/libxx'
make[1]: Leaving directory '/home/osboxes/nuttx/nuttx/libs/libxx'
make[1]: Nothing to be done for 'dirlinks'. make[1]: Entering directory '/home/osboxes/nuttx/nuttx/boards'
make[1]: Entering directory '/home/osboxes/nuttx/nuttx/openamp'
make[1]: Nothing to be done for 'dirlinks'. make[1]: Leaving directory '/home/osboxes/nuttx/nuttx/boards' make[1]: Nothing to be done for 'dirlinks'.
make[2]: Entering directory '/home/osboxes/nuttx/apps/platform'
make[1]: Leaving directory '/home/osboxes/nuttx/nuttx/openamp' make[1]: Entering directory '/home/osboxes/nuttx/apps' LN: platform/board to /home/osboxes/nuttx/apps/platform/dummy
make[2]: Entering directory '/home/osboxes/nuttx/nuttx/boards/xtensa/esp32/common'
make[2]: Leaving directory '/home/osboxes/nuttx/apps/platform' make[1]: Leaving directory '/home/osboxes/nuttx/apps' make[1]: Entering directory '/home/osboxes/nuttx/nuttx/boards' make[2]: Nothing to be done for 'context'.
make[1]: Nothing to be done for 'context'.
make[2]: Leaving directory '/home/osboxes/nuttx/nuttx/boards/xtensa/esp32/common' make[1]: Leaving directory '/home/osboxes/nuttx/nuttx/boards' make[1]: Entering directory '/home/osboxes/nuttx/nuttx/fs' make[1]: Leaving directory '/home/osboxes/nuttx/nuttx/fs'
make[2]: Entering directory '/home/osboxes/nuttx/apps'
make[1]: Entering directory '/home/osboxes/nuttx/apps'
.
.
.
make[3]: Leaving directory '/home/osboxes/nuttx/apps/system/readline'
make[2]: Leaving directory '/home/osboxes/nuttx/apps'
IN: /home/osboxes/nuttx/apps/libapps.a -> staging/libapps.a
make[1]: Leaving directory '/home/osboxes/nuttx/apps'
make[1]: Leaving directory '/home/osboxes/nuttx/nuttx/fs'
make[1]: Entering directory '/home/osboxes/nuttx/nuttx/fs' make[1]: 'libfs.a' is up to date.
make[1]: Leaving directory '/home/osboxes/nuttx/nuttx/binfmt'
make[1]: Entering directory '/home/osboxes/nuttx/nuttx/binfmt' make[1]: 'libbinfmt.a' is up to date.
make[2]: 'libboard.a' is up to date.
make[1]: Entering directory '/home/osboxes/nuttx/nuttx/arch/xtensa/src' make[2]: Entering directory '/home/osboxes/nuttx/nuttx/boards/xtensa/esp32/common'
CP: nuttx.hex
make[2]: Leaving directory '/home/osboxes/nuttx/nuttx/boards/xtensa/esp32/common' LD: nuttx make[1]: Leaving directory '/home/osboxes/nuttx/nuttx/arch/xtensa/src' CP: nuttx.bin
osboxes@osboxes:~/nuttx/nuttx$

**Este binário não tem os cabeçalhos com as informações que o bootloader do ESP32 espera encontrar, então ele deve ser removido:

$ rm nuttx.bin

E um novo binário deverá ser gerado a partir do arquivo ELF chamado “nuttx”. Para isso, é necessário usar o script esptool.py para gerar este arquivo:

esptool.py --chip esp32 elf2image --flash_mode dio --flash_size 4MB -o ./nuttx.bin nuttx

$ make menuconfig
.config - NuttX/x86_64 Configuration
────────────────────────────────────────────────────────────────────────────────────
┌───────────────────────── NuttX/x86_64 Configuration ──────────────────────────
Arrow keys navigate the menu. <Enter> selects submenus ---> (or empty │
submenus ----). Highlighted letters are hotkeys. Pressing <Y> includes, │
<N> excludes, <M> modularizes features. Press <Esc><Esc> to exit, <?> for │
Help, </> for Search. Legend: [*] built-in [ ] excluded <M> module < > │
┌───────────────────────────────────────────────────────────────────────────
Build Setup --->
System Type --->
Board Selection --->
RTOS Features --->
Device Drivers --->
│ Networking Support --->
Crypto API --->
File Systems --->
Graphics Support --->
│ Memory Management --->
Audio Support --->
Video Support --->
Wireless Support --->
Binary Loader --->
Library Routines --->
Open Asymmetric Multi Processing --->
Application Configuration --->
───────────────────────────────────────────────────────────────────────────┘
├───────────────────────────────────────────────────────────────────────────────
<Select> < Exit > < Help > < Save > < Load > │
───────────────────────────────────────────────────────────────────────────────┘

make menuconfig customiza o que deseja adicionar/retirar na placa. Por exemplo, permite adicionar os drivers de um determinado periférico, adicionar mensagens de debug, etc.
Abaixo o .config gerado pela customização escolhida
#
# Automatically generated file; DO NOT EDIT.
# NuttX/x86_64 Configuration
#

#
# License Setup
#
# CONFIG_ALLOW_BSD_COMPONENTS is not set
# CONFIG_ALLOW_GPL_COMPONENTS is not set

#
# Build Setup
#
# CONFIG_EXPERIMENTAL is not set
# CONFIG_DEFAULT_SMALL is not set
CONFIG_HOST_LINUX=y
# CONFIG_HOST_MACOS is not set
# CONFIG_HOST_WINDOWS is not set
# CONFIG_HOST_OTHER is not set

#
# Build Configuration
#
CONFIG_APPS_DIR="../apps"
CONFIG_BUILD_FLAT=y
# CONFIG_BUILD_2PASS is not set

#
# Binary Output Formats
#
CONFIG_INTELHEX_BINARY=y
# CONFIG_MOTOROLA_SREC is not set
CONFIG_RAW_BINARY=y
# CONFIG_UBOOT_UIMAGE is not set
# CONFIG_DFU_BINARY is not set

#
# Customize Header Files
#
# CONFIG_ARCH_HAVE_STDINT_H is not set
# CONFIG_ARCH_HAVE_STDBOOL_H is not set
# CONFIG_ARCH_HAVE_MATH_H is not set
# CONFIG_ARCH_FLOAT_H is not set
CONFIG_ARCH_HAVE_STDARG_H=y
# CONFIG_ARCH_STDARG_H is not set
# CONFIG_ARCH_HAVE_SETJMP is not set
CONFIG_ARCH_NONE_DEBUG_H=y
# CONFIG_ARCH_DEBUG_H is not set
# CONFIG_ARCH_CHIP_DEBUG_H is not set

#
# Debug Options
#
CONFIG_DEBUG_ALERT=y
CONFIG_DEBUG_FEATURES=y

#
# Debug SYSLOG Output Controls
#
CONFIG_DEBUG_ERROR=y
CONFIG_DEBUG_WARN=y
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_ASSERTIONS=y

#
# Subsystem Debug Options
#
# CONFIG_DEBUG_BINFMT is not set
# CONFIG_DEBUG_FS is not set
# CONFIG_DEBUG_GRAPHICS is not set
# CONFIG_DEBUG_LIB is not set
# CONFIG_DEBUG_MM is not set
# CONFIG_DEBUG_NET is not set
# CONFIG_DEBUG_POWER is not set
# CONFIG_DEBUG_WIRELESS is not set
# CONFIG_DEBUG_SCHED is not set

#
# OS Function Debug Options
#
# CONFIG_DEBUG_IRQ is not set

#
# Driver Debug Options
#
# CONFIG_DEBUG_LEDS is not set
# CONFIG_DEBUG_GPIO is not set
# CONFIG_DEBUG_TIMER is not set
CONFIG_ARCH_HAVE_STACKCHECK=y
# CONFIG_STACK_COLORATION is not set
# CONFIG_STACK_CANARIES is not set
# CONFIG_ARCH_HAVE_HEAPCHECK is not set
# CONFIG_DEBUG_SYMBOLS is not set
CONFIG_ARCH_HAVE_CUSTOMOPT=y
# CONFIG_DEBUG_NOOPT is not set
# CONFIG_DEBUG_CUSTOMOPT is not set
CONFIG_DEBUG_FULLOPT=y

#
# System Type
#
# CONFIG_ARCH_ARM is not set
# CONFIG_ARCH_AVR is not set
# CONFIG_ARCH_HC is not set
# CONFIG_ARCH_MIPS is not set
# CONFIG_ARCH_MISOC is not set
# CONFIG_ARCH_RENESAS is not set
# CONFIG_ARCH_RISCV is not set
# CONFIG_ARCH_SIM is not set
# CONFIG_ARCH_X86 is not set
# CONFIG_ARCH_X86_64 is not set
CONFIG_ARCH_XTENSA=y
# CONFIG_ARCH_Z16 is not set
# CONFIG_ARCH_Z80 is not set
# CONFIG_ARCH_OR1K is not set
CONFIG_ARCH="xtensa"
CONFIG_ARCH_CHIP="esp32"
CONFIG_ARCH_BOARD="esp32-devkitc"
CONFIG_ARCH_CHIP_ESP32=y
# CONFIG_ARCH_CHIP_ESP32S2 is not set
# CONFIG_ARCH_CHIP_XTENSA_CUSTOM is not set
# CONFIG_XTENSA_HAVE_ICACHE is not set
# CONFIG_XTENSA_HAVE_DCACHE is not set
CONFIG_ARCH_FAMILY_LX6=y
# CONFIG_ARCH_FAMILY_LX7 is not set
# CONFIG_XTENSA_USE_OVLY is not set
CONFIG_XTENSA_CP_INITSET=0x0001
CONFIG_XTENSA_DUMPBT_ON_ASSERT=y
CONFIG_XTENSA_BTDEPTH=50
# CONFIG_XTENSA_INTBACKTRACE is not set
# CONFIG_XTENSA_IMEM_USE_SEPARATE_HEAP is not set
# CONFIG_XTENSA_EXTMEM_BSS is not set
# CONFIG_XTENSA_TOOLCHAIN_XCC is not set
# CONFIG_XTENSA_TOOLCHAIN_XCLANG is not set
CONFIG_XTENSA_TOOLCHAIN_ESP=y

#
# ESP32 Configuration Options
#
# CONFIG_ARCH_CHIP_ESP32S0WD is not set
# CONFIG_ARCH_CHIP_ESP32D0WD is not set
# CONFIG_ARCH_CHIP_ESP32D2WD is not set
# CONFIG_ARCH_CHIP_ESP32U4WD is not set
# CONFIG_ARCH_CHIP_ESP32WROOM32 is not set
# CONFIG_ARCH_CHIP_ESP32WROOM32_8MB is not set
# CONFIG_ARCH_CHIP_ESP32WROOM32_16MB is not set
CONFIG_ARCH_CHIP_ESP32WROVER=y
# CONFIG_ARCH_CHIP_ESP32MINI1 is not set
# CONFIG_ARCH_CHIP_ESP32SOLO1 is not set
# CONFIG_ESP32_SINGLE_CPU is not set
CONFIG_ESP32_DUAL_CPU=y
# CONFIG_ESP32_FLASH_2M is not set
CONFIG_ESP32_FLASH_4M=y
# CONFIG_ESP32_FLASH_8M is not set
# CONFIG_ESP32_FLASH_16M is not set
CONFIG_ESP32_FLASH_DETECT=y
CONFIG_ESP32_PSRAM_8M=y
# CONFIG_ESP32_ESP32SXWDXX is not set
# CONFIG_ESP32_ESP32UXWDXX is not set
CONFIG_ESP32_ESP32DXWDXX=y
CONFIG_ESP32_FLASH_MODE_DIO=y
# CONFIG_ESP32_FLASH_MODE_DOUT is not set
# CONFIG_ESP32_FLASH_MODE_QIO is not set
# CONFIG_ESP32_FLASH_MODE_QOUT is not set
# CONFIG_ESP32_FLASH_FREQ_80M is not set
CONFIG_ESP32_FLASH_FREQ_40M=y
# CONFIG_ESP32_FLASH_FREQ_26M is not set
# CONFIG_ESP32_FLASH_FREQ_20M is not set
# CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set
# CONFIG_ESP32_DEFAULT_CPU_FREQ_160 is not set
CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y
CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240
CONFIG_ESP32_XTAL_40MZ=y
# CONFIG_ESP32_XTAL_26MHz is not set
CONFIG_ESP32_RTC_CLK_SRC_INT_RC=y
# CONFIG_ESP32_RTC_CLK_SRC_EXT_XTAL is not set
# CONFIG_ESP32_RTC_CLK_SRC_EXT_OSC is not set
# CONFIG_ESP32_RTC_CLK_SRC_INT_8MD256 is not set
CONFIG_ESP32_RT_TIMER=y
# CONFIG_ESP32_RUN_IRAM is not set
# CONFIG_ESP32_RTC_HEAP is not set
# CONFIG_ESP32_IRAM_HEAP is not set

#
# ESP32 Peripheral Selection
#
CONFIG_ESP32_UART=y
CONFIG_ESP32_TIMER=y
# CONFIG_ESP32_WDT is not set
# CONFIG_ESP32_EFUSE is not set
# CONFIG_ESP32_EMAC is not set
# CONFIG_ESP32_I2C is not set
# CONFIG_ESP32_RNG is not set
# CONFIG_ESP32_SPI is not set
# CONFIG_ESP32_SPIFLASH is not set
# CONFIG_ESP32_SPI2 is not set
# CONFIG_ESP32_SPI3 is not set
# CONFIG_ESP32_SPIRAM is not set
# CONFIG_XTENSA_TIMER1 is not set
# CONFIG_XTENSA_TIMER2 is not set
CONFIG_ESP32_TIMER0=y
# CONFIG_ESP32_TIMER1 is not set
# CONFIG_ESP32_TIMER2 is not set
# CONFIG_ESP32_TIMER3 is not set
# CONFIG_ESP32_MWDT0 is not set
# CONFIG_ESP32_MWDT1 is not set
# CONFIG_ESP32_RWDT is not set
CONFIG_ESP32_UART0=y
# CONFIG_ESP32_UART1 is not set
CONFIG_ESP32_UART2=y
# CONFIG_ESP32_WIRELESS is not set
# CONFIG_ESP32_I2C0 is not set
# CONFIG_ESP32_I2C1 is not set
# CONFIG_ESP32_AES_ACCELERATOR is not set

#
# Memory Configuration
#
CONFIG_ESP32_BT_RESERVE_DRAM=0
CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0
CONFIG_ESP32_ULP_COPROC_RESERVE_MEM=0
# CONFIG_ESP32_GPIO_IRQ is not set

#
# UART configuration
#
CONFIG_ESP32_UART0_TXPIN=1
CONFIG_ESP32_UART0_RXPIN=3
CONFIG_ESP32_UART2_TXPIN=17
CONFIG_ESP32_UART2_RXPIN=16

#
# Real-Time Timer
#
CONFIG_ESP32_RT_TIMER_TASK_NAME="rt_timer"
CONFIG_ESP32_RT_TIMER_TASK_PRIORITY=223
CONFIG_ESP32_RT_TIMER_TASK_STACK_SIZE=2048

#
# Timer/counter Configuration
#
# CONFIG_ESP32_ONESHOT is not set
# CONFIG_ESP32_FREERUN is not set
# CONFIG_ESP32_HAVE_OTA_PARTITION is not set

#
# Application Image Configuration
#
CONFIG_ESP32_APP_FORMAT_LEGACY=y

#
# MCUboot support depends on CONFIG_EXPERIMENTAL
#
# CONFIG_ESP32_PARTITION is not set
# CONFIG_ESP32_AUTO_SLEEP is not set
# CONFIG_ESP32_TICKLESS is not set
# CONFIG_ARCH_CHIP_CUSTOM is not set
# CONFIG_ARCH_TOOLCHAIN_IAR is not set
CONFIG_ARCH_TOOLCHAIN_GNU=y
# CONFIG_ARCH_GNU_NO_WEAKFUNCTIONS is not set
# CONFIG_ARCH_SIZET_LONG is not set

#
# Architecture Options
#
# CONFIG_ARCH_NOINTC is not set
CONFIG_ARCH_VECNOTIRQ=y
# CONFIG_ARCH_HAVE_IRQTRIGGER is not set
# CONFIG_ARCH_DMA is not set
# CONFIG_ARCH_HAVE_IRQPRIO is not set
# CONFIG_ARCH_ICACHE is not set
# CONFIG_ARCH_DCACHE is not set
# CONFIG_ARCH_L2CACHE is not set
# CONFIG_ARCH_HAVE_ADDRENV is not set
# CONFIG_ARCH_NEED_ADDRENV_MAPPING is not set
# CONFIG_ARCH_HAVE_EXTRA_HEAPS is not set
CONFIG_ARCH_HAVE_TEXT_HEAP=y
CONFIG_ARCH_HAVE_MULTICPU=y
# CONFIG_ARCH_HAVE_VFORK is not set
# CONFIG_ARCH_HAVE_FPU is not set
# CONFIG_ARCH_HAVE_DPFPU is not set
# CONFIG_ARCH_HAVE_MMU is not set
# CONFIG_ARCH_HAVE_MPU is not set
# CONFIG_ARCH_NAND_HWECC is not set
# CONFIG_ARCH_HAVE_EXTCLK is not set
# CONFIG_ARCH_HAVE_POWEROFF is not set
# CONFIG_ARCH_HAVE_PROGMEM is not set
CONFIG_ARCH_HAVE_RESET=y
CONFIG_ARCH_HAVE_TESTSET=y
# CONFIG_ARCH_HAVE_FETCHADD is not set
# CONFIG_ARCH_HAVE_RTC_SUBSECONDS is not set
# CONFIG_ARCH_HAVE_SYSCALL_HOOKS is not set
# CONFIG_ARCH_HAVE_BACKTRACE is not set
# CONFIG_ARCH_USE_TEXT_HEAP is not set
CONFIG_ARCH_STACKDUMP=y
# CONFIG_ENDIAN_BIG is not set
# CONFIG_ARCH_IDLE_CUSTOM is not set
# CONFIG_ARCH_HAVE_RAMFUNCS is not set
# CONFIG_ARCH_HAVE_RAMVECTORS is not set
# CONFIG_ARCH_MINIMAL_VECTORTABLE is not set

#
# Board Settings
#
CONFIG_BOARD_LOOPSPERMSEC=16717

#
# Interrupt options
#
CONFIG_ARCH_HAVE_INTERRUPTSTACK=y
CONFIG_ARCH_INTERRUPTSTACK=0
# CONFIG_ARCH_HAVE_HIPRI_INTERRUPT is not set

#
# Boot options
#
# CONFIG_BOOT_RUNFROMEXTSRAM is not set
CONFIG_BOOT_RUNFROMFLASH=y
# CONFIG_BOOT_RUNFROMISRAM is not set
# CONFIG_BOOT_RUNFROMSDRAM is not set
# CONFIG_BOOT_COPYTORAM is not set

#
# Boot Memory Configuration
#
CONFIG_RAM_START=0x20000000
CONFIG_RAM_SIZE=114688
CONFIG_ARCH_HAVE_SDRAM=y
# CONFIG_BOOT_SDRAM_DATA is not set

#
# Board Selection
#
CONFIG_ARCH_BOARD_ESP32_DEVKITC=y
# CONFIG_ARCH_BOARD_ESP32_ETHERNETKIT is not set
# CONFIG_ARCH_BOARD_ESP32_WROVERKIT is not set
# CONFIG_ARCH_BOARD_CUSTOM is not set

#
# Common Board Options
#
CONFIG_ARCH_HAVE_LEDS=y
# CONFIG_ARCH_LEDS is not set
CONFIG_ARCH_HAVE_BUTTONS=y
# CONFIG_ARCH_BUTTONS is not set

#
# Board-Specific Options
#
# CONFIG_ESP32_MERGE_BINS is not set
# CONFIG_ESP32_QEMU_IMAGE is not set

#
# Board-Common Options
#
# CONFIG_BOARD_CRASHDUMP is not set
CONFIG_BOARDCTL=y
# CONFIG_BOARDCTL_FINALINIT is not set
# CONFIG_BOARDCTL_RESET is not set
# CONFIG_BOARDCTL_UNIQUEID is not set
# CONFIG_BOARDCTL_UNIQUEKEY is not set
# CONFIG_BOARDCTL_SWITCH_BOOT is not set
# CONFIG_BOARDCTL_BOOT_IMAGE is not set
CONFIG_BOARDCTL_MKRD=y
# CONFIG_BOARDCTL_ROMDISK is not set
# CONFIG_BOARDCTL_APP_SYMTAB is not set
# CONFIG_BOARDCTL_TESTSET is not set
# CONFIG_BOARDCTL_IOCTL is not set

#
# RTOS Features
#
CONFIG_DISABLE_OS_API=y
# CONFIG_DISABLE_POSIX_TIMERS is not set
# CONFIG_DISABLE_PTHREAD is not set
# CONFIG_DISABLE_MQUEUE is not set
# CONFIG_DISABLE_ENVIRON is not set

#
# Clocks and Timers
#
CONFIG_USEC_PER_TICK=10000
# CONFIG_SYSTEMTICK_HOOK is not set
# CONFIG_SYSTEM_TIME64 is not set
CONFIG_CLOCK_MONOTONIC=y
# CONFIG_ARCH_HAVE_TIMEKEEPING is not set
# CONFIG_JULIAN_TIME is not set
CONFIG_START_YEAR=2011
CONFIG_START_MONTH=12
CONFIG_START_DAY=6
CONFIG_PREALLOC_TIMERS=4

#
# Tasks and Scheduling
#
# CONFIG_SPINLOCK is not set
# CONFIG_IRQCHAIN is not set
# CONFIG_IRQCOUNT is not set
# CONFIG_INIT_NONE is not set
CONFIG_INIT_ENTRYPOINT=y
# CONFIG_INIT_FILEPATH is not set
CONFIG_INIT_ARGS=""
CONFIG_USER_ENTRYPOINT="nsh_main"
CONFIG_USERMAIN_STACKSIZE=2048
CONFIG_USERMAIN_PRIORITY=100
CONFIG_RR_INTERVAL=200
# CONFIG_SCHED_SPORADIC is not set
CONFIG_TASK_NAME_SIZE=31
# CONFIG_SCHED_HAVE_PARENT is not set
CONFIG_SCHED_WAITPID=y
# CONFIG_SCHED_USER_IDENTITY is not set

#
# Pthread Options
#
# CONFIG_PTHREAD_MUTEX_TYPES is not set
CONFIG_PTHREAD_MUTEX_ROBUST=y
# CONFIG_PTHREAD_MUTEX_UNSAFE is not set
# CONFIG_PTHREAD_MUTEX_BOTH is not set
# CONFIG_PTHREAD_CLEANUP is not set
# CONFIG_CANCELLATION_POINTS is not set

#
# Performance Monitoring
#
# CONFIG_SCHED_SUSPENDSCHEDULER is not set
# CONFIG_SCHED_RESUMESCHEDULER is not set
# CONFIG_SCHED_IRQMONITOR is not set
# CONFIG_SCHED_CRITMONITOR is not set
# CONFIG_SCHED_CPULOAD is not set
# CONFIG_SCHED_INSTRUMENTATION is not set

#
# Files and I/O
#
CONFIG_DEV_CONSOLE=y
# CONFIG_FDCLONE_DISABLE is not set
# CONFIG_FDCLONE_STDIO is not set
CONFIG_SDCLONE_DISABLE=y
CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=8
CONFIG_FILE_STREAM=y
CONFIG_NAME_MAX=32
CONFIG_PATH_MAX=256
# CONFIG_PRIORITY_INHERITANCE is not set

#
# RTOS hooks
#
# CONFIG_BOARD_EARLY_INITIALIZE is not set
# CONFIG_BOARD_LATE_INITIALIZE is not set
# CONFIG_SCHED_STARTHOOK is not set
# CONFIG_SCHED_ATEXIT is not set
# CONFIG_SCHED_ONEXIT is not set

#
# Signal Configuration
#
CONFIG_SIG_PREALLOC_IRQ_ACTIONS=8
# CONFIG_SIG_EVTHREAD is not set
# CONFIG_SIG_DEFAULT is not set

#
# Signal Numbers
#

#
# Standard Signal Numbers
#
CONFIG_SIG_SIGUSR1=1
CONFIG_SIG_SIGUSR2=2
CONFIG_SIG_SIGALRM=3
CONFIG_SIG_PIPE=13

#
# Non-standard Signal Numbers
#
CONFIG_SIG_SIGCONDTIMEDOUT=16
CONFIG_SIG_SIGWORK=17

#
# POSIX Message Queue Options
#
CONFIG_PREALLOC_MQ_MSGS=4
CONFIG_PREALLOC_MQ_IRQ_MSGS=8
CONFIG_MQ_MAXMSGSIZE=32
# CONFIG_MODULE is not set

#
# Work queue support
#
CONFIG_SCHED_WORKQUEUE=y
CONFIG_WQUEUE_NOTIFIER=y
CONFIG_SCHED_HPWORK=y
CONFIG_SCHED_HPNTHREADS=1
CONFIG_SCHED_HPWORKPRIORITY=224
CONFIG_SCHED_HPWORKSTACKSIZE=2048
# CONFIG_SCHED_LPWORK is not set

#
# Stack and heap information
#
CONFIG_DEFAULT_TASK_STACKSIZE=2048
CONFIG_IDLETHREAD_STACKSIZE=3072
CONFIG_PTHREAD_STACK_MIN=256
CONFIG_PTHREAD_STACK_DEFAULT=2048
# CONFIG_SCHED_BACKTRACE is not set
# CONFIG_LIB_SYSCALL is not set

#
# Device Drivers
#
# CONFIG_DEV_SIMPLE_ADDRENV is not set
CONFIG_DEV_NULL=y
# CONFIG_DEV_ZERO is not set
CONFIG_DRVR_MKRD=y
# CONFIG_ARCH_HAVE_RDWR_MEM_CPU_RUN is not set

#
# Buffering
#
# CONFIG_DRVR_WRITEBUFFER is not set
# CONFIG_DRVR_READAHEAD is not set
# CONFIG_SPECIFIC_DRIVERS is not set
# CONFIG_DEV_URANDOM is not set
# CONFIG_DEV_LOOP is not set
# CONFIG_ARCH_HAVE_CAN_ERRORS is not set
# CONFIG_CAN is not set
CONFIG_ARCH_HAVE_I2CRESET=y
# CONFIG_I2C is not set
# CONFIG_ARCH_HAVE_SPI_CRCGENERATION is not set
# CONFIG_ARCH_HAVE_SPI_CS_CONTROL is not set
# CONFIG_ARCH_HAVE_SPI_BITORDER is not set
# CONFIG_SPI is not set
# CONFIG_I2S is not set

#
# Timer Driver Support
#
# CONFIG_ARCH_HAVE_PWM_PULSECOUNT is not set
# CONFIG_ARCH_HAVE_PWM_MULTICHAN is not set
# CONFIG_PWM is not set
# CONFIG_TIMER is not set
# CONFIG_ONESHOT is not set
# CONFIG_RTC is not set
# CONFIG_WATCHDOG is not set
# CONFIG_ANALOG is not set
# CONFIG_DRIVERS_AUDIO is not set
# CONFIG_FB_CMAP is not set
# CONFIG_FB_TRANSPARENCY is not set
# CONFIG_FB_UPDATE is not set
# CONFIG_FB_SYNC is not set
# CONFIG_FB_OVERLAY is not set
# CONFIG_FB_MODULEINFO is not set
# CONFIG_DRIVERS_VIDEO is not set
# CONFIG_BCH is not set
# CONFIG_INPUT is not set

#
# IO Expander/GPIO Support
#
# CONFIG_IOEXPANDER is not set
# CONFIG_DEV_GPIO is not set

#
# LCD Driver Support
#
# CONFIG_LCD is not set

#
# Character/Segment LCD Devices
#
# CONFIG_SLCD is not set

#
# Other LCD-related Devices
#
# CONFIG_LCD_OTHER is not set

#
# LED Support
#
# CONFIG_USERLED is not set
# CONFIG_LEDS_APA102 is not set
# CONFIG_LEDS_MAX7219 is not set
# CONFIG_RGBLED is not set
# CONFIG_PCA9635PW is not set
# CONFIG_NCP5623C is not set
# CONFIG_WS2812 is not set
# CONFIG_ARCH_HAVE_SDIO is not set
# CONFIG_ARCH_HAVE_SDIOWAIT_WRCOMPLETE is not set
# CONFIG_ARCH_HAVE_SDIO_PREFLIGHT is not set
# CONFIG_MMCSD is not set
CONFIG_MODEM=y
CONFIG_MODEM_U_BLOX=y
CONFIG_MODEM_U_BLOX_DEBUG=y
# CONFIG_MODEM_ALTMDM is not set
# CONFIG_MTD is not set
# CONFIG_EEPROM is not set
# CONFIG_EFUSE is not set
# CONFIG_NETDEVICES is not set
# CONFIG_PIPES is not set
# CONFIG_PM is not set
# CONFIG_DRIVERS_POWERLED is not set
# CONFIG_DRIVERS_SMPS is not set
# CONFIG_POWER is not set
# CONFIG_SENSORS is not set
CONFIG_ARCH_HAVE_SERIAL_TERMIOS=y
CONFIG_SERIAL=y
# CONFIG_SERIAL_REMOVABLE is not set
CONFIG_SERIAL_CONSOLE=y
# CONFIG_16550_UART is not set
# CONFIG_OTHER_UART_SERIALDRIVER is not set
CONFIG_MCU_SERIAL=y
CONFIG_STANDARD_SERIAL=y
CONFIG_SERIAL_NPOLLWAITERS=4
# CONFIG_SERIAL_IFLOWCONTROL is not set
# CONFIG_SERIAL_RS485CONTROL is not set
# CONFIG_SERIAL_OFLOWCONTROL is not set
# CONFIG_SERIAL_TXDMA is not set
# CONFIG_SERIAL_RXDMA is not set
# CONFIG_SERIAL_TIOCSERGSTRUCT is not set
# CONFIG_SERIAL_TERMIOS is not set
# CONFIG_TTY_FORCE_PANIC is not set
CONFIG_UART0_SERIAL_CONSOLE=y
# CONFIG_UART2_SERIAL_CONSOLE is not set
# CONFIG_OTHER_SERIAL_CONSOLE is not set
# CONFIG_NO_SERIAL_CONSOLE is not set
# CONFIG_UART_SERIALDRIVER is not set
CONFIG_UART0_SERIALDRIVER=y
# CONFIG_UART1_SERIALDRIVER is not set
CONFIG_UART2_SERIALDRIVER=y
# CONFIG_UART3_SERIALDRIVER is not set
# CONFIG_UART4_SERIALDRIVER is not set
# CONFIG_UART5_SERIALDRIVER is not set
# CONFIG_UART6_SERIALDRIVER is not set
# CONFIG_UART7_SERIALDRIVER is not set
# CONFIG_UART8_SERIALDRIVER is not set

#
# UART0 Configuration
#
CONFIG_UART0_RXBUFSIZE=256
CONFIG_UART0_TXBUFSIZE=256
CONFIG_UART0_BAUD=115200
CONFIG_UART0_BITS=8
CONFIG_UART0_PARITY=0
CONFIG_UART0_2STOP=0
# CONFIG_UART0_IFLOWCONTROL is not set
# CONFIG_UART0_OFLOWCONTROL is not set
# CONFIG_UART0_RXDMA is not set
# CONFIG_UART0_TXDMA is not set

#
# UART2 Configuration
#
CONFIG_UART2_RXBUFSIZE=2048
CONFIG_UART2_TXBUFSIZE=2048
CONFIG_UART2_BAUD=115200
CONFIG_UART2_BITS=8
CONFIG_UART2_PARITY=0
CONFIG_UART2_2STOP=0
# CONFIG_UART2_IFLOWCONTROL is not set
# CONFIG_UART2_OFLOWCONTROL is not set
# CONFIG_UART2_RXDMA is not set
# CONFIG_UART2_TXDMA is not set
# CONFIG_LPUART_SERIALDRIVER is not set
# CONFIG_LPUART0_SERIALDRIVER is not set
# CONFIG_LPUART1_SERIALDRIVER is not set
# CONFIG_LPUART2_SERIALDRIVER is not set
# CONFIG_LPUART3_SERIALDRIVER is not set
# CONFIG_LPUART4_SERIALDRIVER is not set
# CONFIG_LPUART5_SERIALDRIVER is not set
# CONFIG_LPUART6_SERIALDRIVER is not set
# CONFIG_LPUART7_SERIALDRIVER is not set
# CONFIG_LPUART8_SERIALDRIVER is not set
# CONFIG_USART0_SERIALDRIVER is not set
# CONFIG_USART1_SERIALDRIVER is not set
# CONFIG_USART2_SERIALDRIVER is not set
# CONFIG_USART3_SERIALDRIVER is not set
# CONFIG_USART4_SERIALDRIVER is not set
# CONFIG_USART5_SERIALDRIVER is not set
# CONFIG_USART6_SERIALDRIVER is not set
# CONFIG_USART7_SERIALDRIVER is not set
# CONFIG_USART8_SERIALDRIVER is not set
# CONFIG_USART9_SERIALDRIVER is not set
# CONFIG_SCI0_SERIALDRIVER is not set
# CONFIG_SCI1_SERIALDRIVER is not set
# CONFIG_SCI2_SERIALDRIVER is not set
# CONFIG_SCI3_SERIALDRIVER is not set
# CONFIG_SCI4_SERIALDRIVER is not set
# CONFIG_SCI5_SERIALDRIVER is not set
# CONFIG_SCI6_SERIALDRIVER is not set
# CONFIG_SCI7_SERIALDRIVER is not set
# CONFIG_SCI8_SERIALDRIVER is not set
# CONFIG_SCI9_SERIALDRIVER is not set
# CONFIG_SCI10_SERIALDRIVER is not set
# CONFIG_SCI11_SERIALDRIVER is not set
# CONFIG_SCI12_SERIALDRIVER is not set
# CONFIG_PSEUDOTERM is not set
# CONFIG_UART_BTH4 is not set
# CONFIG_USBDEV is not set
# CONFIG_USBHOST_HAVE_ASYNCH is not set
# CONFIG_USBHOST is not set
# CONFIG_USBMISC is not set
# CONFIG_HAVE_USBTRACE is not set
CONFIG_DRIVERS_WIRELESS=y
# CONFIG_WL_CC1101 is not set
# CONFIG_WL_GS2200M is not set
# CONFIG_WL_SPIRIT is not set
# CONFIG_SPIRIT_NETDEV is not set
# CONFIG_DRIVERS_IEEE802154 is not set
CONFIG_DRIVERS_IEEE80211=y
# CONFIG_IEEE80211_BROADCOM_FULLMAC is not set
# CONFIG_IEEE80211_BROADCOM_HAVE_CLM is not set
# CONFIG_DRIVERS_BLUETOOTH is not set
# CONFIG_DRIVERS_LPWAN is not set
# CONFIG_WL_NRF24L01 is not set
# CONFIG_DRIVERS_CONTACTLESS is not set
# CONFIG_1WIRE is not set

#
# System Logging
#
# CONFIG_ARCH_SYSLOG is not set

#
# SYSLOG options
#
CONFIG_SYSLOG_MAX_CHANNELS=1
# CONFIG_RAMLOG is not set
# CONFIG_SYSLOG_BUFFER is not set
# CONFIG_SYSLOG_INTBUFFER is not set

#
# Formatting options
#
# CONFIG_SYSLOG_TIMESTAMP is not set
# CONFIG_SYSLOG_PRIORITY is not set
# CONFIG_SYSLOG_PROCESS_NAME is not set
# CONFIG_SYSLOG_PROCESSID is not set
# CONFIG_SYSLOG_PREFIX is not set
# CONFIG_SYSLOG_COLOR_OUTPUT is not set

#
# SYSLOG channels
#
# CONFIG_SYSLOG_CHAR is not set
# CONFIG_SYSLOG_CONSOLE is not set
CONFIG_SYSLOG_DEFAULT=y
# CONFIG_SYSLOG_FILE is not set
# CONFIG_CONSOLE_SYSLOG is not set
# CONFIG_SYSLOG_CHARDEV is not set
# CONFIG_DRIVERS_RF is not set
# CONFIG_DRIVERS_RC is not set
# CONFIG_MOTOR is not set

#
# MATH Acceleration Support
#
# CONFIG_MATH_CORDIC is not set

#
# Networking Support
#
CONFIG_ARCH_HAVE_NET=y
# CONFIG_ARCH_HAVE_PHY is not set
# CONFIG_ARCH_PHY_INTERRUPT is not set
# CONFIG_ARCH_PHY_POLLED is not set
CONFIG_ARCH_HAVE_NETDEV_STATISTICS=y
# CONFIG_NET_WRITE_BUFFERS is not set
CONFIG_NET_READAHEAD=y
# CONFIG_NET_MCASTGROUP is not set
CONFIG_NET=y
# CONFIG_NET_PROMISCUOUS is not set

#
# Driver buffer configuration
#
CONFIG_NET_ETH_PKTSIZE=590
CONFIG_NET_SLIP_PKTSIZE=296
CONFIG_NET_GUARDSIZE=2
CONFIG_NET_RECV_BUFSIZE=0

#
# Link layer support
#
CONFIG_NET_ETHERNET=y
# CONFIG_NET_LOOPBACK is not set
CONFIG_NET_SLIP=y
CONFIG_SLIP_NINTERFACES=1
CONFIG_SLIP_STACKSIZE=2048
CONFIG_SLIP_DEFPRIO=128
CONFIG_NET_TUN=y
CONFIG_TUN_NINTERFACES=1
CONFIG_NET_TUN_PKTSIZE=296
CONFIG_NETDEV_LATEINIT=y

#
# Network Device Operations
#
# CONFIG_NETDEV_IOCTL is not set
# CONFIG_NETDEV_PHY_IOCTL is not set
# CONFIG_NETDEV_WIRELESS_IOCTL is not set
CONFIG_NETDEV_IFINDEX=y
# CONFIG_NETDOWN_NOTIFIER is not set

#
# Internet Protocol Selection
#
CONFIG_NET_IPv4=y
# CONFIG_NET_IPv6 is not set
# CONFIG_NET_IPFORWARD is not set

#
# Socket Support
#
CONFIG_NET_NACTIVESOCKETS=16
CONFIG_NET_SOCKOPTS=y
CONFIG_NET_TCPPROTO_OPTIONS=y
# CONFIG_NET_UDPPROTO_OPTIONS is not set
# CONFIG_NET_CANPROTO_OPTIONS is not set

#
# Raw Socket Support
#
CONFIG_NET_PKT=y
CONFIG_NET_PKT_CONNS=1

#
# Unix Domain Socket Support
#
# CONFIG_NET_LOCAL is not set

#
# Rpmsg Socket Support
#
# CONFIG_NET_RPMSG is not set

#
# SocketCAN Support
#
# CONFIG_NET_CAN is not set

#
# Netlink Socket Support
#
CONFIG_NET_NETLINK=y
CONFIG_NETLINK_CONNS=4

#
# Netlink Protocols
#
# CONFIG_NETLINK_ROUTE is not set

#
# TCP/IP Networking
#
CONFIG_NET_TCP=y
# CONFIG_NET_TCP_NO_STACK is not set
# CONFIG_NET_TCP_DELAYED_ACK is not set
CONFIG_NET_TCP_KEEPALIVE=y
# CONFIG_NET_TCPURGDATA is not set
CONFIG_NET_TCP_CONNS=8
CONFIG_NET_TCP_NPOLLWAITERS=1
CONFIG_NET_TCP_RTO=3
CONFIG_NET_TCP_WAIT_TIMEOUT=120
CONFIG_NET_MAX_LISTENPORTS=20
CONFIG_NET_TCP_FAST_RETRANSMIT_WATERMARK=3
# CONFIG_NET_TCP_WINDOW_SCALE is not set
# CONFIG_NET_TCP_NOTIFIER is not set
# CONFIG_NET_TCP_WRITE_BUFFERS is not set
# CONFIG_NET_TCPBACKLOG is not set
# CONFIG_NET_TCP_SPLIT is not set
# CONFIG_NET_SENDFILE is not set

#
# UDP Networking
#
CONFIG_NET_UDP=y
# CONFIG_NET_UDP_NO_STACK is not set
# CONFIG_NET_BROADCAST is not set
# CONFIG_NET_UDP_BINDTODEVICE is not set
# CONFIG_NET_UDP_CHECKSUMS is not set
CONFIG_NET_UDP_CONNS=8
CONFIG_NET_UDP_NPOLLWAITERS=1
# CONFIG_NET_UDP_WRITE_BUFFERS is not set
# CONFIG_NET_UDP_NOTIFIER is not set

#
# Bluetooth socket support
#

#
# IEEE 802.15.4 socket support
#

#
# ICMP Networking Support
#
CONFIG_NET_ICMP=y
# CONFIG_NET_ICMP_NO_STACK is not set
CONFIG_NET_ICMP_SOCKET=y
CONFIG_NET_ICMP_NCONNS=4
CONFIG_NET_ICMP_NPOLLWAITERS=1
# CONFIG_NET_IGMP is not set

#
# ARP Configuration
#
CONFIG_NET_ARP=y
CONFIG_NET_ARPTAB_SIZE=16
CONFIG_NET_ARP_MAXAGE=120
# CONFIG_NET_ARP_IPIN is not set
CONFIG_NET_ARP_SEND=y
CONFIG_ARP_SEND_MAXTRIES=5
CONFIG_ARP_SEND_DELAYMSEC=20

#
# User-space networking stack API
#
# CONFIG_NET_USRSOCK is not set
# CONFIG_NET_ARCH_INCR32 is not set
# CONFIG_NET_ARCH_CHKSUM is not set
# CONFIG_NET_STATISTICS is not set
# CONFIG_NET_HAVE_STAR is not set

#
# Network Topologies
#

#
# Routing Table Configuration
#
CONFIG_NET_ROUTE=y
CONFIG_ROUTE_IPv4_RAMROUTE=y
# CONFIG_ROUTE_IPv4_ROMROUTE is not set
# CONFIG_ROUTE_IPv4_FILEROUTE is not set
CONFIG_ROUTE_MAX_IPv4_RAMROUTES=4

#
# Crypto API
#
# CONFIG_CRYPTO is not set

#
# File Systems
#

#
# File system configuration
#
# CONFIG_DISABLE_MOUNTPOINT is not set
CONFIG_FS_LARGEFILE=y
# CONFIG_FS_AUTOMOUNTER is not set
CONFIG_FS_NEPOLL_DESCRIPTORS=8
# CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set
# CONFIG_PSEUDOFS_ATTRIBUTES is not set
# CONFIG_PSEUDOFS_SOFTLINKS is not set
CONFIG_SENDFILE_BUFSIZE=512
# CONFIG_EVENT_FD is not set
# CONFIG_FS_NAMED_SEMAPHORES is not set
CONFIG_FS_MQUEUE_MPATH="/var/mqueue"
CONFIG_FS_MQUEUE_NPOLLWAITERS=4
# CONFIG_FS_RAMMAP is not set

#
# Partition Table
#
# CONFIG_PTABLE_PARTITION is not set
# CONFIG_FS_FAT is not set
# CONFIG_FS_NXFFS is not set
# CONFIG_FS_ROMFS is not set
# CONFIG_FS_CROMFS is not set
# CONFIG_FS_TMPFS is not set
# CONFIG_FS_SMARTFS is not set
# CONFIG_FS_BINFS is not set
CONFIG_FS_PROCFS=y
# CONFIG_FS_PROCFS_REGISTER is not set
CONFIG_FS_PROCFS_MAX_TASKS=128

#
# Exclude individual procfs entries
#
# CONFIG_FS_PROCFS_EXCLUDE_PROCESS is not set
CONFIG_FS_PROCFS_EXCLUDE_ENVIRON=y
# CONFIG_FS_PROCFS_EXCLUDE_BLOCKS is not set
# CONFIG_FS_PROCFS_EXCLUDE_MOUNT is not set
# CONFIG_FS_PROCFS_EXCLUDE_USAGE is not set
# CONFIG_FS_PROCFS_EXCLUDE_UPTIME is not set
# CONFIG_FS_PROCFS_EXCLUDE_VERSION is not set
# CONFIG_FS_PROCFS_EXCLUDE_MEMINFO is not set
# CONFIG_FS_PROCFS_EXCLUDE_IOBINFO is not set
# CONFIG_FS_PROCFS_EXCLUDE_MOUNTS is not set
# CONFIG_FS_PROCFS_EXCLUDE_NET is not set
# CONFIG_FS_PROCFS_EXCLUDE_ROUTE is not set
# CONFIG_FS_LITTLEFS is not set
# CONFIG_FS_UNIONFS is not set
# CONFIG_FS_HOSTFS is not set

#
# Graphics Support
#
# CONFIG_NX is not set
# CONFIG_NXFONTS is not set

#
# Font Cache Pixel Depths
#
# CONFIG_NXFONTS_DISABLE_1BPP is not set
# CONFIG_NXFONTS_DISABLE_2BPP is not set
# CONFIG_NXFONTS_DISABLE_4BPP is not set
# CONFIG_NXFONTS_DISABLE_8BPP is not set
# CONFIG_NXFONTS_DISABLE_16BPP is not set
# CONFIG_NXFONTS_DISABLE_24BPP is not set
# CONFIG_NXFONTS_DISABLE_32BPP is not set
CONFIG_NXFONTS_PACKEDMSFIRST=y
# CONFIG_NXGLIB is not set

#
# Memory Management
#
CONFIG_MM_DEFAULT_MANAGER=y
# CONFIG_MM_CUSTOMIZE_MANAGER is not set
# CONFIG_MM_SMALL is not set
CONFIG_MM_REGIONS=3
# CONFIG_ARCH_HAVE_HEAP2 is not set
# CONFIG_GRAN is not set
# CONFIG_MM_FILL_ALLOCATIONS is not set
# CONFIG_MM_CIRCBUF is not set

#
# Common I/O Buffer Support
#
CONFIG_MM_IOB=y
CONFIG_IOB_NBUFFERS=24
CONFIG_IOB_BUFSIZE=196
CONFIG_IOB_NCHAINS=24
CONFIG_IOB_THROTTLE=0
# CONFIG_IOB_NOTIFIER is not set
# CONFIG_IOB_DEBUG is not set

#
# Audio Support
#
# CONFIG_AUDIO is not set

#
# Video Support
#

#
# Video subsystem
#
# CONFIG_VIDEO is not set

#
# Wireless Support
#
# CONFIG_WIRELESS is not set

#
# Binary Loader
#
# CONFIG_BINFMT_DISABLE is not set
# CONFIG_BINFMT_LOADABLE is not set
# CONFIG_PIC is not set
# CONFIG_NXFLAT is not set
# CONFIG_ELF is not set

#
# Library Routines
#

#
# Standard C Library Options
#

#
# Standard C I/O
#
# CONFIG_STDIO_DISABLE_BUFFERING is not set
CONFIG_STDIO_BUFFER_SIZE=64
CONFIG_STDIO_LINEBUFFER=y
CONFIG_NUNGET_CHARS=2
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
# CONFIG_LIBC_NUMBERED_ARGS is not set
# CONFIG_LIBC_SCANSET is not set
# CONFIG_EOL_IS_CR is not set
# CONFIG_EOL_IS_LF is not set
# CONFIG_EOL_IS_BOTH_CRLF is not set
CONFIG_EOL_IS_EITHER_CRLF=y
# CONFIG_AUDIO_SRC is not set
# CONFIG_LIBM is not set

#
# Architecture-Specific Support
#
CONFIG_ARCH_LOWPUTC=y
# CONFIG_ARCH_ROMGETC is not set
# CONFIG_LIBC_ARCH_ATOMIC is not set
CONFIG_LIBC_ARCH_MEMCPY=y
CONFIG_LIBC_ARCH_MEMCMP=y
CONFIG_LIBC_ARCH_MEMMOVE=y
CONFIG_LIBC_ARCH_MEMSET=y
# CONFIG_LIBC_ARCH_STRCHR is not set
# CONFIG_LIBC_ARCH_STRCMP is not set
# CONFIG_LIBC_ARCH_STRCPY is not set
# CONFIG_LIBC_ARCH_STRLCPY is not set
# CONFIG_LIBC_ARCH_STRNCPY is not set
# CONFIG_LIBC_ARCH_STRLEN is not set
# CONFIG_LIBC_ARCH_STRNLEN is not set
# CONFIG_LIBC_ARCH_ELF is not set

#
# stdlib Options
#
CONFIG_LIBC_RAND_ORDER=1
CONFIG_LIBC_HOMEDIR="/"
CONFIG_LIBC_TMPDIR="/tmp"
CONFIG_LIBC_MAX_TMPFILE=32

#
# Program Execution Options
#
# CONFIG_LIBC_EXECFUNCS is not set
# CONFIG_SYMTAB_ORDEREDBYNAME is not set
# CONFIG_SYMTAB_DECORATED is not set
CONFIG_POSIX_SPAWN_PROXY_STACKSIZE=1024
CONFIG_TASK_SPAWN_DEFAULT_STACKSIZE=2048
CONFIG_LIBC_HOSTNAME=""

#
# errno Decode Support
#
# CONFIG_LIBC_STRERROR is not set
# CONFIG_LIBC_PERROR_STDOUT is not set

#
# memcpy/memset Options
#

#
# pthread support
#
# CONFIG_LIBC_DLFCN is not set
# CONFIG_LIBC_MODLIB is not set
# CONFIG_LIBC_GROUP_FILE is not set
# CONFIG_LIBC_PASSWD_FILE is not set
# CONFIG_LIBC_WCHAR is not set

#
# Locale Support
#
# CONFIG_LIBC_LOCALE is not set
# CONFIG_LIBC_LZF is not set

#
# Time/Time Zone Support
#
# CONFIG_LIBC_LOCALTIME is not set

#
# Thread Local Storage (TLS)
#
# CONFIG_TLS_ALIGNED is not set
CONFIG_TLS_NELEM=4

#
# Network-Related Options
#
# CONFIG_LIBC_IPv6_ADDRCONV is not set
CONFIG_LIBC_NETDB=y

#
# NETDB Support
#
# CONFIG_LIBC_GAISTRERROR is not set
CONFIG_NETDB_BUFSIZE=256
CONFIG_NETDB_MAX_IPADDR=1
# CONFIG_NETDB_HOSTFILE is not set
CONFIG_NETDB_DNSCLIENT=y
CONFIG_NETDB_DNSCLIENT_ENTRIES=8
CONFIG_NETDB_DNSCLIENT_NAMESIZE=32
CONFIG_NETDB_DNSCLIENT_LIFESEC=3600
CONFIG_NETDB_DNSCLIENT_MAXRESPONSE=256
CONFIG_NETDB_DNSCLIENT_RECV_TIMEOUT=30
CONFIG_NETDB_DNSCLIENT_RETRIES=3
# CONFIG_NETDB_RESOLVCONF is not set
CONFIG_NETDB_DNSSERVER_NAMESERVERS=1
# CONFIG_NETDB_DNSSERVER_NOADDR is not set
CONFIG_NETDB_DNSSERVER_IPv4=y
CONFIG_NETDB_DNSSERVER_IPv4ADDR=0x08080808

#
# Non-standard Library Support
#
# CONFIG_LIBC_CRC64_FAST is not set
# CONFIG_LIBC_KBDCODEC is not set
# CONFIG_LIBC_SLCDCODEC is not set
# CONFIG_LIBC_ENVPATH is not set
# CONFIG_LIBC_HEX2BIN is not set
CONFIG_BUILTIN=y

#
# Basic CXX Support
#
# CONFIG_C99_BOOL8 is not set
CONFIG_HAVE_CXX=y
CONFIG_LIBCXXMINI=y
# CONFIG_LIBCXX is not set
# CONFIG_UCLIBCXX is not set
CONFIG_HAVE_CXXINITIALIZE=y
# CONFIG_CXX_EXCEPTION is not set
# CONFIG_LIBDSP is not set

#
# Open Asymmetric Multi Processing
#
# CONFIG_OPENAMP is not set

#
# Application Configuration
#

#
# Bootloader Utilities
#
# CONFIG_BOOT_MCUBOOT is not set

#
# CAN Utilities
#

#
# Cryptography Library Support
#
# CONFIG_CRYPTO_LIBTOMCRYPT is not set

#
# Examples
#
# CONFIG_EXAMPLES_ABNTCODI is not set
# CONFIG_EXAMPLES_ADXL372_TEST is not set
# CONFIG_EXAMPLES_APA102 is not set
# CONFIG_EXAMPLES_AUDIO_SOUND is not set
# CONFIG_EXAMPLES_BATTERY is not set
# CONFIG_EXAMPLES_SIXAXIS is not set
# CONFIG_EXAMPLES_BRIDGE is not set
# CONFIG_EXAMPLES_CALIB_UDELAY is not set
# CONFIG_EXAMPLES_CAMERA is not set
# CONFIG_EXAMPLES_CCTYPE is not set
# CONFIG_EXAMPLES_CHARGER is not set
# CONFIG_EXAMPLES_CHAT is not set
# CONFIG_EXAMPLES_CHRONO is not set
# CONFIG_EXAMPLES_CONFIGDATA is not set
# CONFIG_EXAMPLES_CORDIC is not set
# CONFIG_EXAMPLES_DHCPD is not set
# CONFIG_EXAMPLES_DHTXX is not set
# CONFIG_EXAMPLES_DISCOVER is not set
# CONFIG_EXAMPLES_ESP32_HIMEM is not set
# CONFIG_EXAMPLES_FTPC is not set
# CONFIG_EXAMPLES_FTPD is not set
# CONFIG_EXAMPLES_FXOS8700CQ is not set
# CONFIG_EXAMPLES_GPS is not set
# CONFIG_EXAMPLES_HDC1008 is not set
# CONFIG_EXAMPLES_HELLO is not set
# CONFIG_EXAMPLES_HELLOXX is not set
# CONFIG_EXAMPLES_HIDKBD is not set
# CONFIG_EXAMPLES_IGMP is not set
# CONFIG_EXAMPLES_INA219 is not set
# CONFIG_EXAMPLES_INA226 is not set
# CONFIG_EXAMPLES_IPFORWARD is not set
# CONFIG_EXAMPLES_LSM330SPI_TEST is not set
# CONFIG_EXAMPLES_LVGLDEMO is not set
# CONFIG_EXAMPLES_MAX31855 is not set
# CONFIG_EXAMPLES_MEDIA is not set
# CONFIG_EXAMPLES_MLX90614 is not set
# CONFIG_EXAMPLES_MODBUS is not set
# CONFIG_EXAMPLES_MODBUSMASTER is not set
# CONFIG_EXAMPLES_MOUNT is not set
CONFIG_EXAMPLES_MQTTC=y
CONFIG_EXAMPLES_MQTTC_PROGNAME="mqttc_pub"
CONFIG_EXAMPLES_MQTTC_STACKSIZE=8192
CONFIG_EXAMPLES_MQTTC_TXSIZE=256
CONFIG_EXAMPLES_MQTTC_RXSIZE=256
# CONFIG_EXAMPLES_NETPKT is not set
# CONFIG_EXAMPLES_NETTEST is not set
# CONFIG_EXAMPLES_NRF24L01_BTLE is not set
# CONFIG_EXAMPLES_NRF24L01TERM is not set
# CONFIG_EXAMPLES_NULL is not set
# CONFIG_EXAMPLES_NXDEMO is not set
# CONFIG_EXAMPLES_OBD2 is not set
# CONFIG_EXAMPLES_PCA9635 is not set
# CONFIG_EXAMPLES_PDCURSES is not set
# CONFIG_EXAMPLES_POSIXSPAWN is not set
# CONFIG_EXAMPLES_POWERLED is not set
# CONFIG_EXAMPLES_POWERMONITOR is not set
CONFIG_EXAMPLES_PPPD=y
CONFIG_EXAMPLES_PPPD_STACKSIZE=2048
# CONFIG_EXAMPLES_RFID_READUID is not set
# CONFIG_EXAMPLES_RGBLED is not set
# CONFIG_EXAMPLES_SENDMAIL is not set
# CONFIG_EXAMPLES_SERIALBLASTER is not set
# CONFIG_EXAMPLES_SERIALRX is not set
# CONFIG_EXAMPLES_SERLOOP is not set
# CONFIG_EXAMPLES_SLCD is not set
# CONFIG_EXAMPLES_SMPS is not set
# CONFIG_EXAMPLES_STAT is not set
# CONFIG_EXAMPLES_TCPBLASTER is not set
# CONFIG_EXAMPLES_TCPECHO is not set
# CONFIG_EXAMPLES_TERMIOS is not set
# CONFIG_EXAMPLES_TIFF is not set
# CONFIG_EXAMPLES_TOUCHSCREEN is not set
# CONFIG_EXAMPLES_UDPBLASTER is not set
# CONFIG_EXAMPLES_UDP is not set
# CONFIG_EXAMPLES_UID is not set
# CONFIG_EXAMPLES_USBSERIAL is not set
# CONFIG_EXAMPLES_USERFS is not set
# CONFIG_EXAMPLES_WEBSERVER is not set
# CONFIG_EXAMPLES_WGET is not set
# CONFIG_EXAMPLES_XBC_TEST is not set
# CONFIG_EXAMPLES_XMLRPC is not set

#
# File System Utilities
#
# CONFIG_FSUTILS_INIFILE is not set
# CONFIG_FSUTILS_INIH is not set
# CONFIG_FSUTILS_IPCFG is not set
# CONFIG_FSUTILS_PASSWD is not set

#
# GPS Utilities
#
# CONFIG_GPSUTILS_MINMEA_LIB is not set

#
# Graphics Support
#
# CONFIG_GRAPHICS_FT80X is not set
# CONFIG_GRAPHICS_LVGL is not set

#
# NxWidgets
#

#
# NxWM
#
# CONFIG_GRAPHICS_PDCURSES is not set
# CONFIG_TIFF is not set

#
# Industrial Applications
#
# CONFIG_INDUSTRY_ABNT_CODI_LIB is not set
# CONFIG_INDUSTRY_FOC is not set

#
# Interpreters
#
# CONFIG_INTERPRETERS_BAS is not set
# CONFIG_INTERPRETERS_DUKTAPE is not set
# CONFIG_INTERPRETERS_FICL is not set
# CONFIG_INTERPRETERS_MINIBASIC is not set
# CONFIG_INTERPRETERS_QUICKJS is not set
# CONFIG_INTERPRETERS_WAMR is not set
# CONFIG_INTERPRETERS_WASM3 is not set

#
# Math Library Support
#
# CONFIG_MATH_LIBTOMMATH is not set

#
# FreeModBus
#
# CONFIG_MODBUS is not set

#
# Network Utilities
#
CONFIG_NETUTILS_CHAT=y
# CONFIG_NETUTILS_CJSON is not set
# CONFIG_NETUTILS_CODECS is not set
# CONFIG_NETUTILS_DHCPD is not set
# CONFIG_NETUTILS_DISCOVER is not set
# CONFIG_NETUTILS_ESP8266 is not set
CONFIG_NETUTILS_FTPC=y
# CONFIG_DEBUG_FTPC is not set
CONFIG_FTP_TMPDIR="/tmp"
# CONFIG_FTP_SIZE_CMD_MODE_BINARY is not set
# CONFIG_FTPC_DISABLE_EPRT is not set
# CONFIG_FTPC_DISABLE_EPSV is not set
# CONFIG_NETUTILS_FTPD is not set
# CONFIG_NETUTILS_IPERF is not set
# CONFIG_NETUTILS_LIBCURL4NX is not set
CONFIG_NETUTILS_MQTTC=y
CONFIG_NETUTILS_MQTTC_VERSION="1.1.5"
# CONFIG_NETUTILS_NETCAT is not set
CONFIG_NETUTILS_NETINIT=y
# CONFIG_NETINIT_NETLOCAL is not set
# CONFIG_NETINIT_THREAD is not set
# CONFIG_NETINIT_DEBUG is not set

#
# IP Address Configuration
#

#
# IPv4 Addresses
#
CONFIG_NETINIT_IPADDR=0x0a000002
CONFIG_NETINIT_DRIPADDR=0x0a000001
CONFIG_NETINIT_NETMASK=0xffffff00
# CONFIG_NETINIT_DNS is not set
# CONFIG_NETINIT_NOMAC is not set
CONFIG_NETUTILS_NETLIB=y
# CONFIG_NETUTILS_NETLIB_GENERICURLPARSER is not set
# CONFIG_NETUTILS_NTPCLIENT is not set
CONFIG_NETUTILS_PING=y
CONFIG_NETUTILS_PPPD=y
CONFIG_NETUTILS_PPPD_PAP=y
# CONFIG_NETUTILS_REXECD is not set
# CONFIG_NETUTILS_REXEC is not set
# CONFIG_NETUTILS_SMTP is not set
# CONFIG_NETUTILS_TELNETC is not set
# CONFIG_NETUTILS_TELNETD is not set
CONFIG_NETUTILS_TFTPC=y
# CONFIG_NETUTILS_WAKEONLAN is not set
# CONFIG_NETUTILS_WEBCLIENT is not set
# CONFIG_NETUTILS_WEBSERVER is not set
# CONFIG_NETUTILS_XMLRPC is not set

#
# NSH Library
#
CONFIG_NSH_LIBRARY=y
# CONFIG_NSH_MOTD is not set

#
# Command Line Configuration
#
CONFIG_NSH_PROMPT_STRING="nsh> "
CONFIG_NSH_READLINE=y
# CONFIG_NSH_CLE is not set
CONFIG_NSH_LINELEN=64
# CONFIG_NSH_DISABLE_SEMICOLON is not set
# CONFIG_NSH_QUOTE is not set
# CONFIG_NSH_CMDPARMS is not set
CONFIG_NSH_MAXARGUMENTS=7
# CONFIG_NSH_ARGCAT is not set
CONFIG_NSH_NESTDEPTH=3
# CONFIG_NSH_DISABLEBG is not set
CONFIG_NSH_BUILTIN_APPS=y

#
# Disable Individual commands
#
# CONFIG_NSH_DISABLE_ADDROUTE is not set
# CONFIG_NSH_DISABLE_ARP is not set
# CONFIG_NSH_DISABLE_BASENAME is not set
# CONFIG_NSH_DISABLE_CAT is not set
# CONFIG_NSH_DISABLE_CD is not set
# CONFIG_NSH_DISABLE_CP is not set
# CONFIG_NSH_DISABLE_CMP is not set
CONFIG_NSH_DISABLE_DATE=y
# CONFIG_NSH_DISABLE_DD is not set
# CONFIG_NSH_DISABLE_DF is not set
# CONFIG_NSH_DISABLE_DELROUTE is not set
# CONFIG_NSH_DISABLE_DIRNAME is not set
# CONFIG_NSH_DISABLE_ECHO is not set
# CONFIG_NSH_DISABLE_ENV is not set
# CONFIG_NSH_DISABLE_EXEC is not set
# CONFIG_NSH_DISABLE_EXIT is not set
# CONFIG_NSH_DISABLE_EXPORT is not set
# CONFIG_NSH_DISABLE_FREE is not set
# CONFIG_NSH_DISABLE_GET is not set
# CONFIG_NSH_DISABLE_HELP is not set
# CONFIG_NSH_DISABLE_HEXDUMP is not set
# CONFIG_NSH_DISABLE_IFCONFIG is not set
# CONFIG_NSH_DISABLE_IFUPDOWN is not set
# CONFIG_NSH_DISABLE_KILL is not set
# CONFIG_NSH_DISABLE_LOSETUP is not set
CONFIG_NSH_DISABLE_LOSMART=y
# CONFIG_NSH_DISABLE_LS is not set
CONFIG_NSH_DISABLE_MB=y
# CONFIG_NSH_DISABLE_MKDIR is not set
# CONFIG_NSH_DISABLE_MKRD is not set
CONFIG_NSH_DISABLE_MH=y
# CONFIG_NSH_DISABLE_MOUNT is not set
# CONFIG_NSH_DISABLE_MV is not set
CONFIG_NSH_DISABLE_MW=y
# CONFIG_NSH_DISABLE_NSLOOKUP is not set
CONFIG_NSH_DISABLE_PRINTF=y
# CONFIG_NSH_DISABLE_PS is not set
# CONFIG_NSH_DISABLE_PUT is not set
# CONFIG_NSH_DISABLE_PWD is not set
# CONFIG_NSH_DISABLE_RM is not set
# CONFIG_NSH_DISABLE_RMDIR is not set
# CONFIG_NSH_DISABLE_ROUTE is not set
# CONFIG_NSH_DISABLE_SET is not set
# CONFIG_NSH_DISABLE_SOURCE is not set
# CONFIG_NSH_DISABLE_SLEEP is not set
# CONFIG_NSH_DISABLE_TIME is not set
# CONFIG_NSH_DISABLE_TEST is not set
# CONFIG_NSH_DISABLE_TELNETD is not set
CONFIG_NSH_DISABLE_TRUNCATE=y
# CONFIG_NSH_DISABLE_UMOUNT is not set
# CONFIG_NSH_DISABLE_UNAME is not set
# CONFIG_NSH_DISABLE_UNSET is not set
# CONFIG_NSH_DISABLE_USLEEP is not set
# CONFIG_NSH_DISABLE_WGET is not set
# CONFIG_NSH_DISABLE_XD is not set
CONFIG_NSH_MMCSDMINOR=0

#
# Configure Command Options
#
# CONFIG_NSH_VARS is not set
# CONFIG_NSH_CMDOPT_DD_STATS is not set
CONFIG_NSH_CODECS_BUFSIZE=128
# CONFIG_NSH_CMDOPT_HEXDUMP is not set
CONFIG_NSH_PROC_MOUNTPOINT="/proc"
CONFIG_NSH_FILEIOSIZE=512

#
# Scripting Support
#
# CONFIG_NSH_DISABLESCRIPT is not set
# CONFIG_NSH_DISABLE_ITEF is not set
# CONFIG_NSH_DISABLE_LOOPS is not set

#
# Console Configuration
#
CONFIG_NSH_CONSOLE=y
# CONFIG_NSH_ALTCONDEV is not set
CONFIG_NSH_ARCHINIT=y

#
# Networking Configuration
#
CONFIG_NSH_NETINIT=y
CONFIG_NSH_WGET_BUFF_SIZE=512
# CONFIG_NSH_LOGIN is not set
# CONFIG_NSH_CONSOLE_LOGIN is not set

#
# Platform-specific Support
#
# CONFIG_PLATFORM_CONFIGDATA is not set

#
# System Libraries and NSH Add-Ons
#
# CONFIG_SYSTEM_ADBD is not set
# CONFIG_SYSTEM_ARGTABLE3 is not set
# CONFIG_SYSTEM_CLE is not set
# CONFIG_SYSTEM_CUTERM is not set
# CONFIG_SYSTEM_EMBEDLOG is not set
# CONFIG_SYSTEM_HEX2BIN is not set
# CONFIG_SYSTEM_HEXED is not set

#
# libuv async i/o Library
#
# CONFIG_LIBUV is not set
# CONFIG_SYSTEM_NETDB is not set
CONFIG_SYSTEM_NSH=y
CONFIG_SYSTEM_NSH_PRIORITY=100
CONFIG_SYSTEM_NSH_STACKSIZE=2048
CONFIG_SYSTEM_NSH_PROGNAME="nsh"
# CONFIG_SYSTEM_NTPC is not set
CONFIG_SYSTEM_PING=y
CONFIG_SYSTEM_PING_PROGNAME="ping"
CONFIG_SYSTEM_PING_PRIORITY=100
CONFIG_SYSTEM_PING_STACKSIZE=2048
# CONFIG_SYSTEM_POPEN is not set

#
# psmq requires SYSTEM_EMBEDLOG and !DISABLE_MQUEUE
#
# CONFIG_SYSTEM_RAMTEST is not set
CONFIG_READLINE_HAVE_EXTMATCH=y
CONFIG_SYSTEM_READLINE=y
CONFIG_READLINE_ECHO=y
# CONFIG_READLINE_TABCOMPLETION is not set
# CONFIG_READLINE_CMD_HISTORY is not set
# CONFIG_SYSTEM_SETLOGMASK is not set
# CONFIG_SYSTEM_SYSTEM is not set
# CONFIG_SYSTEM_TEE is not set
# CONFIG_SYSTEM_TELNET_CHATD is not set
# CONFIG_SYSTEM_TELNET_CLIENT is not set
# CONFIG_SYSTEM_TERMCURSES is not set
# CONFIG_SYSTEM_UBLOXMODEM is not set
# CONFIG_SYSTEM_VI is not set
# CONFIG_SYSTEM_ZMODEM is not set

#
# Testing
#
# CONFIG_TESTING_CXXTEST is not set
# CONFIG_TESTING_FATUTF8 is not set
# CONFIG_TESTING_FSTEST is not set
# CONFIG_TESTING_GETPRIME is not set
# CONFIG_TESTING_IRTEST is not set
# CONFIG_TESTING_LTP is not set
# CONFIG_TESTING_MM is not set
# CONFIG_TESTING_NXFFS is not set
# CONFIG_TESTING_OSTEST is not set
# CONFIG_TESTING_SCANFTEST is not set
# CONFIG_TESTING_SENSORTEST is not set
# CONFIG_TESTING_SMART is not set
# CONFIG_TESTING_SMART_TEST is not set
# CONFIG_TESTING_UNITY is not set

#
# Wireless Libraries and NSH Add-Ons
#

#
# Bluetooth applications
#
# CONFIG_BTSAK is not set
# CONFIG_NIMBLE is not set

#
# IEEE 802.15.4 applications
#
# CONFIG_IEEE802154_I8SAK is not set
# CONFIG_IEEE802154_LIBMAC is not set
# CONFIG_IEEE802154_LIBUTILS is not set
# CONFIG_WIRELESS_IWPAN is not set
# CONFIG_WIRELESS_WAPI is not set

Além da customização, foi necessário configurar o modem U-blox SARA G450 com os seguintes parâmetros, no  código 
pppd_main.c
static FAR const char connect_script[] =
  "ECHO ON "
  "TIMEOUT 30 "
  "\"\" ATE1 "
  "OK AT+CMEE=2 "
  "OK AT+UPSD=0,1,\\\"claro.com.br\\\" "
  "OK AT+UDCONF=0,0 "
  "OK AT+CGDCONT=1,\\\"IP\\\",\\\"claro.com.br\\\" "
  "OK ATD*99***1# "
  "CONNECT \\c";
  .pap_username = "claro",
.pap_password = "claro",
bem como o Codigo em C (em negrito e com fonte maior as credenciais) do cliente mqttc-pub.c, da pasta APPS.
/**************************************************************************** * apps/examples/mqttc/mqttc_pub.c * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. The * ASF licenses this file to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance with the * License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * ****************************************************************************/ /**************************************************************************** * Included Files ****************************************************************************/ #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <sys/socket.h> #include <fcntl.h> #include <netdb.h> #include <errno.h> #include <mqtt.h> /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ /**************************************************************************** * Private Types ****************************************************************************/ struct mqttc_cfg_s { struct mqtt_client client; const FAR char *host; const FAR char *port; const FAR char *topic; const FAR char *msg; const FAR char *id; uint8_t sendbuf[CONFIG_EXAMPLES_MQTTC_TXSIZE]; uint8_t recvbuf[CONFIG_EXAMPLES_MQTTC_RXSIZE]; uint32_t tmo; uint8_t flags; uint8_t qos; }; /**************************************************************************** * Private Function Prototypes ****************************************************************************/ static FAR void *client_refresher(FAR void *data); static void parsearg(int argc, char *argv[], struct mqttc_cfg_s *cfg, int *n); static int initserver(const FAR struct mqttc_cfg_s *cfg); /**************************************************************************** * Private Functions ****************************************************************************/ /**************************************************************************** * Name: client_refresher * * Description: * The client's refresher. This function triggers back-end routines to * handle ingress/egress traffic to the broker. * ****************************************************************************/ static FAR void *client_refresher(FAR void *data) { while (1) { mqtt_sync((FAR struct mqtt_client *)data); usleep(100000U); } return NULL; } /**************************************************************************** * Name: parsearg * * Description: * Parse command line arguments. * ****************************************************************************/ static void parsearg(int argc, char *argv[], struct mqttc_cfg_s *cfg, int *n) { int opt; while ((opt = getopt(argc, argv, "h:p:m:t:n:")) != ERROR) { switch (opt) { case 'h': cfg->host = optarg; break; case 'p': cfg->port = optarg; break; case 'm': cfg->msg = optarg; break; case 't': cfg->topic = optarg; break; case 'n': *n = strtol(optarg, NULL, 10); break; default: fprintf(stderr, "ERROR: Unrecognized option\n"); break; } } } /**************************************************************************** * Name: initserver * * Description: * Resolve server's name and try to establish a connection. * ****************************************************************************/ static int initserver(const FAR struct mqttc_cfg_s *cfg) { struct addrinfo hints; struct addrinfo *servinfo; struct addrinfo *itr; int fd; int ret; memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_INET; hints.ai_socktype = SOCK_STREAM; printf("Connecting to %s:%s...\n", cfg->host, cfg->port); ret = getaddrinfo(cfg->host, cfg->port, &hints, &servinfo); if (ret < 0) { printf("ERROR! getaddrinfo() failed: %s\n", gai_strerror(ret)); } itr = servinfo; do { fd = socket(itr->ai_family, itr->ai_socktype, itr->ai_protocol); if (fd < 0) { continue; } ret = connect(fd, itr->ai_addr, itr->ai_addrlen); if (ret == 0) { break; } close(fd); fd = -1; } while ((itr = itr->ai_next) != NULL); freeaddrinfo(servinfo); if (fd < 0) { printf("ERROR! Couldn't create socket\n"); return -1; } ret = fcntl(fd, F_GETFL, 0); if (ret < 0) { printf("ERROR! fcntl() F_GETFL failed, errno: %d\n", errno); return -1; } ret = fcntl(fd, F_SETFL, ret | O_NONBLOCK); if (ret < 0) { printf("ERROR! fcntl() F_SETFL failed, errno: %d\n", errno); return -1; } return fd; } /**************************************************************************** * Public Functions ****************************************************************************/ int main(int argc, char *argv[]) { int sockfd; enum MQTTErrors mqtterr; pthread_t thrdid; int n = 1; struct mqttc_cfg_s mqtt_cfg = { .host = "mqtt.thingstream.io", .port = "1883", .topic = "esp32-sniffer/a4cf127531c8/ble", .msg = "test", .flags = MQTT_CONNECT_CLEAN_SESSION, .tmo = 400, .id = "device:352fc9a7-3211-xxxx-xxxx-a390f2e4ca86", .qos = MQTT_PUBLISH_QOS_2, }; parsearg(argc, argv, &mqtt_cfg, &n); sockfd = initserver(&mqtt_cfg); if (sockfd < 0) { return -1; } mqtterr = mqtt_init(&mqtt_cfg.client, sockfd, mqtt_cfg.sendbuf, sizeof(mqtt_cfg.sendbuf), mqtt_cfg.recvbuf, sizeof(mqtt_cfg.recvbuf), NULL); if (mqtterr != MQTT_OK) { printf("ERRPR! mqtt_init() failed.\n"); goto err_with_socket; } mqtterr = mqtt_connect(&mqtt_cfg.client, mqtt_cfg.id, NULL, /* Will topic */ NULL, /* Will message */ 0, /* Will message size */ "I7UPHZWCKHZASRDIXXXX", /* User name */ "xxxxeX6qvfBpKY2638AgYn1DqpZJa0lpBCI8yhzw", /* Password */ mqtt_cfg.flags, mqtt_cfg.tmo); if (mqtterr != MQTT_OK) { printf("ERROR! mqtt_connect() failed\n"); goto err_with_socket; } if (mqtt_cfg.client.error != MQTT_OK) { printf("error: %s\n", mqtt_error_str(mqtt_cfg.client.error)); goto err_with_socket; } else { printf("Success: Connected to broker!\n"); } /* Start a thread to refresh the client (handle egress and ingree client * traffic) */ if (pthread_create(&thrdid, NULL, client_refresher, &mqtt_cfg.client)) { printf("ERROR! pthread_create() failed.\n"); goto err_with_socket; } while (n--) { mqtterr = mqtt_publish(&mqtt_cfg.client, mqtt_cfg.topic, mqtt_cfg.msg, strlen(mqtt_cfg.msg) + 1, mqtt_cfg.qos); if (mqtterr != MQTT_OK) { printf("ERROR! mqtt_publish() failed\n"); goto err_with_thrd; } if (mqtt_cfg.client.error != MQTT_OK) { printf("error: %s\n", mqtt_error_str(mqtt_cfg.client.error)); goto err_with_thrd; } else { printf("Success: Published to broker!\n"); } sleep(5); } printf("\nDisconnecting from %s\n\n", mqtt_cfg.host); mqtterr = mqtt_disconnect(&mqtt_cfg.client); if (mqtterr != MQTT_OK) { printf("ERROR! mqtt_disconnect() failed\n"); } /* Force sending the DISCONNECT, the thread will be canceled before getting * the chance to sync this last packet. * Note however that close() would cleanly close the connection but only * through TCP (i.e. no MQTT DISCONNECT packet). */ mqtt_sync(&mqtt_cfg.client); err_with_thrd: pthread_cancel(thrdid); err_with_socket: close(sockfd); return 0; }
osboxes@osboxes:~/nuttx/nuttx$ cd ..
osboxes@osboxes:~/nuttx$ cd apps/
osboxes@osboxes:~/nuttx/apps$ cd examples/
osboxes@osboxes:~/nuttx/apps/examples$ ls
abntcodi      cctype       flowc            ini_dumper      modbusmaster   nximage        pwlines        sx127x_demo  ustream
adc           charger      foc              ipcfg           module         nxlines        pwm            system       veml6070
adxl372_test  chat         ft80x            ipforward       mount          nxterm         qencoder       tcpblaster   watchdog
ajoystick     chrono       ftpc             json            mqttc          nxtext         random         tcpecho      watched
alarm         configdata   ftpd             Kconfig         mtdpart        obd2           README.md      telnetd      watcher
apa102        cpuhog       fxos8700cq_test  leds            mtdrwb         oneshot        relays         termios      webserver
apds9960      cromfs       gpio             lis3dsh_reader  netlink_route  pca9635        rfid_readuid   thttpd       wget
audio_rttl    dac          gps              lsm303_reader   netloop        pdcurses       rgbled         tiff         wgetjson
bastest       dhcpd        hdc1008_demo     lsm330spi_test  netpkt         pf_ieee802154  romfs          timer        xbc_test
battery       dhtxx        hello            lsm6dsl_reader  nettest        pipe           rpmsgsocket    touchscreen  xmlrpc
bmi160        discover     helloxx          lvgldemo        nrf24l01_btle  poll           sendmail       udgram       zerocross
bmp180        djoystick    hidkbd           Make.defs       nrf24l01_term  popen          serialblaster  udp
bridge        elf          hts221_reader    Makefile        null           posix_spawn    serialrx       udpblaster
buttons       embedlog     i2schar          max31855        nunchuck       powerled       serloop        uid
calib_udelay  esp32_himem  i2sloop          media           nx             powermonitor   slcd           unionfs
camera        fb           igmp             mld             nxdemo         pppd           smps           usbserial
can           fboverlay    ina219           mlx90614        nxflat         pty_test       sotest         userfs
canard        flash_test   ina226           modbus          nxhello        pwfb           stat           usrsocktest
osboxes@osboxes:~/nuttx/apps/examples$ cd pppd/
osboxes@osboxes:~/nuttx/apps/examples/pppd$ ls
Kconfig  Make.defs  Make.dep  Makefile  pppd_main.c  pppd_main.home.osboxes.nuttx.apps.examples.pppd.o
osboxes@osboxes:~/nuttx/apps/examples/pppd$ nano pppd_main.c
osboxes@osboxes:~/nuttx/apps/examples/pppd$ 
Agora execute 
$make
Após compilar, será gerado um BIN, o mesmo deve ser gravado no UBLOX NINA W106, via FLASHTOOLS, junto com partitions.bin e bootloader.bin
Pode também ser utilizado esptools

TESTANDO NO U-BLOX NINA W106

Abra então o TERATERM (115200,N,8.1) e reset o U-blox NINA W106 e execute pppd &

nsh> ifconfig ppp0 Link encap:TUN at UP inet addr:10.6.19.104 DRaddr:10.6.19.104 Mask:0.0.0.0 nsh> ping www.smartcore.com.br PING 192.185.211.71 56 bytes of data 56 bytes from 192.185.211.71: icmp_seq=0 time=800 ms 56 bytes from 192.185.211.71: icmp_seq=1 time=730 ms 56 bytes from 192.185.211.71: icmp_seq=2 time=680 ms 56 bytes from 192.185.211.71: icmp_seq=3 time=630 ms 56 bytes from 192.185.211.71: icmp_seq=4 time=760 ms 56 bytes from 192.185.211.71: icmp_seq=5 time=710 ms 56 bytes from 192.185.211.71: icmp_seq=6 time=660 ms 56 bytes from 192.185.211.71: icmp_seq=7 time=790 ms 56 bytes from 192.185.211.71: icmp_seq=8 time=740 ms 56 bytes from 192.185.211.71: icmp_seq=9 time=690 ms 10 packets transmitted, 10 received, 0% packet loss, time 10100 ms nsh>

Configurando Tópico no Thingstream.io

Credenciais devem ser obtidas no ThingStream.IO

Pegue aqui as credenciais do ThingStream

O Tópico do MQTT deve ser criado aqui

Tráfego no Broker MQTT da u-BLOX

Servidor MQTT ThingStream recebendo dados (RANDOM) do Tópico do u-BLOX NINA W106
(estão em HEXADECIMAL)
DATAFLOW MANAGER

No exemplo, DATAFLOW MANAGER está inscrito no Tópico o qual u-BLOX NINA W106 publica dados.

mqtterr = mqtt_publish(&mqtt_cfg.client, mqtt_cfg.topic, mqtt_cfg.msg, strlen(mqtt_cfg.msg) + 1, mqtt_cfg.qos);

Sendo os dados publicados, o DATAFLOW MANAGER encaminha para o debug para visualização.

Basicamente o DATAFLOW MANAGER se inscreve no mesmo tópico, transforma os dados recebidos para String e mostra no debug do DATAFLOW MANAGER.


Sobre thingsteam subcribe no DATAFLOW MANAGER, é o campo que o mesmo se inscreveu
(subscribe) para receber os dados enviados pelo u-BLOX NINA W106 (publish).


Sobre a SMARTCORE

A SmartCore fornece módulos para comunicação wireless, biometria, conectividade, rastreamento e automação.
Nosso portfólio inclui modem 2G/3G/4G/NB-IoT/Cat.M, satelital, módulos WiFi, Bluetooth, GNSS / GPS, Sigfox, LoRa, leitor de cartão, leitor QR code, mecanismo de impressão, mini-board PC, antena, pigtail, LCD, bateria, repetidor GPS e sensores.
Mais detalhes em www.smartcore.com.br

Nenhum comentário:

Postar um comentário