SSID ESP32 softAP não const

Sep 22 2020

Gostaria de poder definir o SSID do wi-fi no setup (), para poder personalizá-lo com base no endereço MAC ou algo semelhante. (evitando ESP's com o mesmo código tendo o mesmo SSID). No entanto, uma vez que requer um const, não parece ser possível, ou estou faltando alguma coisa?

Estou usando platformIO se isso importa ...

Respostas

1 Majenko Sep 22 2020 at 19:31

Um constparâmetro para uma função não define o que pode ser passado. Em vez disso, é uma "promessa" da função de que não modificará os dados que você passar.

Em C, quando você passa uma "string" (que na verdade é um array de caracteres) para uma função, você não passa a string (como no conteúdo). Na verdade, você apenas passa um ponteiro para o local na memória onde a string está armazenada.

É perfeitamente possível que uma função faça modificações na "string" passada, que modificará os dados originais na memória. Isso não é realmente desejável em muitas situações.

Então, sinalizando o parâmetro conforme constvocê diz ao compilador "Deste momento em diante, os dados apontados por esta variável não devem ser alterados". Todas as tentativas de escrever na memória usando essa variável serão bloqueadas pelo compilador.

Não há diferença real entre, digamos, a char *e a, const char *exceto como o compilador trata as tentativas de gravação para eles.

Quando você passa a char *para uma função que está esperando um, const char *o ponteiro é "atualizado" para uma constante de forma que nenhuma tentativa de alterar os dados seja permitida.

O contrário não é permitido - você não pode (ou não deve) tentar converter a const char *em a char *como em alguns sistemas (sistemas de arquitetura "Princeton" com um único espaço de endereço de memória monolítica) o ponteiro pode estar apontando para dados armazenados em flash, e uma tentativa de escrever nele irá obviamente falhar.

A função que você está chamando para definir o SSID está apenas prometendo que não tentará alterar os dados que você passar. Não importa se é uma constante ou não - ambas serão tratadas como constantes e não serão alteradas.

Ananas_hoi Sep 22 2020 at 23:18

A biblioteca WifiManager pode funcionar para você, ela tem um portal cativo para configurar sua conexão wi-fi em tempo real. Ele tem algumas opções de configuração para moldá-lo à sua vontade, se não me engano, espero que sirva bem.