Nanopb é uma implementação de buffers de protocolo de tamanho pequeno de código em ansi C. É especialmente adequado para uso em microcontroladores, mas se adapta a qualquer sistema com restrição de memória.
Para usar a biblioteca nanopb, você precisa fazer duas coisas:
protoc
.A maneira mais fácil de começar é estudar o projeto em "exemplos/simples". Ele contém um Makefile, que deve funcionar diretamente na maioria dos sistemas Linux. No entanto, para qualquer outro tipo de sistema de compilação, consulte as etapas manuais em README.txt nessa pasta.
As mensagens dos Protocol Buffers são definidas em um arquivo .proto
, que segue um formato padrão compatível com todas as bibliotecas de Protocol Buffers. Para usá-lo com nanopb, você precisa gerar arquivos .pb.c
e .pb.h
a partir dele:
python generator/nanopb_generator.py myprotocol.proto # For source checkout
generator-bin/nanopb_generator myprotocol.proto # For binary package
(Observação: para obter instruções para nanopb-0.3.9.x e versões anteriores, consulte a documentação dessa versão específica aqui)
Os pacotes binários para Windows, Linux e Mac OS X devem conter todas as dependências necessárias, incluindo Python, biblioteca python-protobuf e protoc. Se você estiver usando um git checkout ou uma distribuição de código-fonte simples, precisará instalar o Python separadamente. Depois de ter o Python, você pode instalar as outras dependências com pip install --upgrade protobuf grpcio-tools
.
Você pode personalizar ainda mais a geração do cabeçalho criando um arquivo .options
. Consulte a documentação para obter detalhes.
Se você deseja realizar um desenvolvimento adicional do núcleo nanopb ou verificar sua funcionalidade usando seu compilador e plataforma, você desejará executar o conjunto de testes. As regras de construção para o conjunto de testes são implementadas usando Scons, então você precisa ter isso instalado (ex: sudo apt install scons
ou pip install scons
). Para executar os testes:
cd tests
scons
Isso mostrará o progresso de vários casos de teste. Se a saída não terminar em erro, os casos de teste foram bem-sucedidos.
Nota: O Mac OS X, por padrão, usa o apelido 'clang' como 'gcc', embora na verdade não suporte as mesmas opções de linha de comando que o gcc. Para executar testes no Mac OS X, use: scons CC=clang CXX=clang++
. A mesma forma pode ser usada para executar testes com diferentes compiladores em qualquer plataforma.
Para plataformas embarcadas, atualmente há suporte para execução de testes na placa de descoberta STM32 e no simulador simavr AVR. Use scons PLATFORM=STM32
e scons PLATFORM=AVR
para executar esses testes.
O próprio código Nanopb C foi projetado para ser portátil e fácil de construir em qualquer plataforma. Freqüentemente, o maior obstáculo é executar o gerador que recebe os arquivos .proto
e gera definições .pb.c
.
Existem regras de construção para vários sistemas:
extra/nanopb.mk
, veja examples/simple
extra/FindNanopb.cmake
, veja examples/cmake
tests/site_scons
(somente gerador)BUILD.bazel
na raiz de origemconanfile.py
na raiz de origemE também integração às interfaces da plataforma: