Tutorial de Desenvolvimento com Código-Fonte do MeshCore
Pré-requisitos
Ferramenta necessária
Antes de começar, prepare as seguintes ferramentas:
Instalar PlatformIO
Pesquise por PlatformIO no marketplace de Extensões do VS Code e instale-o.

Após a instalação, geralmente um ícone em forma de formiga aparecerá na barra de ferramentas à esquerda.

Preparação do projeto
Abra uma pasta onde você quer ter o seu projeto. Abra a pasta no terminal. Clique aqui para fazer o git clone do projeto.
Abra o VSCode, em seguida clique no ícone do PlatformIO, escolha select a folder. Selecione a pasta onde você fez o clone do projeto.

O PlatformIO instalará automaticamente as dependências necessárias. Após a instalação bem-sucedida, você verá Project has been successfully updated

Desenvolvimento de firmware
Tutorial de desenvolvimento
Encontre o ambiente para a sua placa-alvo. Pegue o T1000-E Bluetooth Companion como exemplo:

Então o PlatformIO irá preparar as dependências necessárias para a placa.
Altere o seu código. Recomenda-se alterar o arquivo variant.h da sua placa.
Após completar a codificação, execute o seguinte comando para compilar o código e convertê-lo em um arquivo uf2.
pio run -e t1000e_companion_radio_ble
pio run -e t1000e_companion_radio_ble -t create_uf2
Pressione e segure o botão do dispositivo, depois conecte rapidamente o cabo de carregamento duas vezes, o LED verde ficará aceso de forma contínua. Arraste o arquivo uf2 para o disco que aparecer. O arquivo uf2 deve ser encontrado em .pio\build\t1000e_companion_radio_ble
Exemplo
Controle da luz do usuário
Este exemplo mostra como controlar a luz do usuário para ficar constantemente ligada. Copie o código a seguir para /examples/companion_radio/ui-new/ui-orig/UITask.cpp
void UITask::userLedHandler() {
#ifdef PIN_STATUS_LED
#ifdef T1000_E
// T1000-E: keep status LED continuously on.
digitalWrite(PIN_STATUS_LED, LED_STATE_ON);
return;
#endif
static int state = 0;
static int next_change = 0;
static int last_increment = 0;

Compile-o e grave o arquivo uf2 no seu T1000-E.
(Avançado) Envio de PR
Obrigado por considerar contribuir para o projeto MeshCore! Como você pode contribuir? 1. Reportando bugs
- Use o rastreador de Issues
- Use um título claro (por exemplo, "Crash when calling begin() with invalid pin")
- Descreva exatamente os passos para reproduzir
- Inclua sua placa, versão da IDE, versão da biblioteca e trecho de código relevante
- Anexe um sketch de exemplo mínimo e completo, se possível
2. Sugerindo melhorias / novas funcionalidades
- Abra uma issue com o prefixo [Feature request]
- Explique o caso de uso → que problema isso resolveria?
- Descreva sua API / comportamento ideal (exemplos de código são muito úteis) 3. Enviando alterações de código (Pull Requests)
Pequenas correções
(erros de digitação, comentários, exemplos, pequenas correções de bugs) → Basta abrir um pull request — não é necessário abrir issue antes
Mudanças maiores / novas funcionalidades
- Abra primeiro uma issue para discutir a ideia
- Obtenha uma aprovação inicial dos mantenedores
- Faça um fork do repositório a partir do branch 'dev' e crie seu branch (fix/xxx, feature/yyy, docs/whatever)
- Faça suas alterações
- Atualize ou adicione exemplos quando apropriado
- Adicione/atualize comentários no código
- Envie o pull request
Diretrizes para Pull Request
- Uma funcionalidade / correção = um pull request (PRs menores são mais fáceis e rápidos de revisar)
- Use mensagens de commit descritivas Bom: Fix I2C timeout handling on ESP32 Ruim: update
- Faça referência a qualquer issue relacionada (Fixes #123, Closes #89, etc.)
- Se você alterar a API pública, atualize README.md e library.properties
- Novas funcionalidades devem incluir um sketch de exemplo em examples/
Estilo de codificação
Por favor, siga o estilo C++ existente (conforme o .clang-format)
- Indentação de 2 espaços (sem tabs)
- camelCase para funções e variáveis
- UpperCamelCase / PascalCase para nomes de classes
- Constantes
#defineem ALL_CAPS - Mantenha as linhas com < ~100 caracteres quando possível (Mas a consistência com o código existente é mais importante do que regras rígidas)