ESP32 (7) – menuconfig

luca 23/01/2017 0

Come abbiamo visto nei precedenti tutorials, la configurazione di diversi aspetti del framework esp-idf avviene tramite un menu di configurazione:

esp32-menu01

esp32-menu00

E’ possibile utilizzare lo stesso menu per configurare opzioni/parametri relativi al programama che stiamo sviluppando: nel tutorial di oggi vedremo come fare!

Kconfig

Il menu di configurazione del framework viene configurato tramite alcuni files di testo. La sintassi di questi files è mutuata dalla configurazione del kernel Linux e prende il nome di kconfig language.

Per poter aggiungere opzioni relative al nostro programma, è necessario creare un file chiamato Kconfig.projbuild nella stessa cartella che contiene  il sorgente del programma:

esp32-menu00b

Il contenuto di questo file è raggruppato all’interno delle voci:

menu "Nome menu"
[...]
endmenu

che indicano il nome della voce di menu principale sotto la quale saranno ragruppati tutti i parametri che andremo a definire all’interno. Se ad esempio scriviamo

menu "Custom configuration"

avremo:

esp32-menu02

I parametri di configurazione più semplici hanno la seguente struttura:

config <nomeparametro>
  <tipo parametro> <prompt>
  range min max
  default <valore di default>
  help
    <spiegazione>

Il tipo parametro può assumere i seguenti valori:

  • string, per parametri di tipo testo
  • int, per parametri a valori interi
  • hex, per parametri espressi in esadecimale
  • bool, per parametri di tipo binario

Se ad esempio vogliamo configurare la porta TCP sulla quale è in ascolto un server, la definizione del relativo parametro può essere:

config TcpPort
  int "Server TCP port"
  range 1 65535
  default 80
  help
    Enter the TCP port the server is listening on

E’ inoltre possibile realizzare voci di menu a scelta multipla:

choice
  config <choice_1>
    bool <prompt>
  config <choice_2>
    bool <prompt>
  ...
  default <default choice>

Una volta configurati i diversi parametri, i loro valori sono salvati nel file sdkconfig all’interno della cartella principale del progetto:

esp32-menu04

Il nome delle costanti corrispondenti ai diversi parametri è CONFIG_<nome parametro>. Riprendendo l’esempio sopra, la costante relativa alla porta TCP da utilizzare nel nostro programma avrà nome CONFIG_TcpPort.

Nel mio repository Github trovate un esempio completo. Il file Kconfig.projbuild definisce alcuni parametri per illustrare i diversi tipi possibili:

esp32-menu03

Una volta configurati, i parametri vengono scritti nel file sdkconfig:

esp32-menu05

ed eseguendo il programma, visualizzati anche via seriale:

esp32-menu06

Conclusioni

La possibilità di estendere l’uso del menu di configurazione del framework a parametri custom del nostro programma consente di configurare tutti gli aspetti di un progetto in maniera comoda e unificata. Nell’esempio precedente i parametri relativi alla rete wifi (SSID e password) erano hardcoded all’interno del sorgente del programma: una scelta migliore è ora esternalizzare tali parametri inserendoli proprio nel menu di configurazione… provate!

Leave A Response »

Questo sito usa i cookie per poterti offrire una migliore esperienza di navigazione maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi