Giter VIP home page Giter VIP logo

propolis's Introduction

Propolis

Contains common C/C++ libraries used in multiple SwarmUS projects. The libraries does not use the heap and thus can be used in embedded development.

Pheromones

A wrapper over nanopb for serialization and deserialization of messages

Requirements

Note that you will need some requirements since we use protobuf and nanopb

  • Protoc and some python deps to build Pheromones. Check Pheromones repo for more info
  • The python libraries for protobuf to generate the required files

Nanopb itself will be fetch at generation to allow compilation on embedded targets. On Ubuntu 20.04 you can download these requirements using apt install protobuf-compiler python3-protobuf

Libraries

Pheromones

A library used for communication between the Hivemind clients. Note that as of now, there is some restrictions since the library does not use heap. Notably the length of the strings are maximum 32 characters, including the NULL terminating character. The arrays of arguments for a function call have a maximum of 16 arguments. The library does a lot of copies as of now, but it will be fixed eventually.

Note that we are using std::variant, if you use this library on an embedded target, avoid std::visit because of it's code and cpu cycle overhead.

FreeRTOS

A couple libraries to ease development using FreeRTOS

Static-utils

Library to manage freertos objects without using heap allocations

C-common

A library for common C utilities used in low level code (e.g. drivers and such). Can be used in embedded development without issues.

Building

git clone https://github.com/SwarmUS/Propolis
cd Propolis
mkdir build
cd build
cmake ..
make

`

Development

We use a couple tools and static analyzers, to follow them use.

cmake -DENABLE_ERROR_ON_MISSING_TOOL=ON -DENABLE_WARNINGS_AS_ERROR=ON -DENABLE_WARNINGS=ON -DENABLE_CLANG_TIDY_CHECK=ON -DENABLE_TESTS=ON -DCMAKE_BUILD_TYPE=Debug ..

propolis's People

Contributors

xgroleau avatar g-lesssard avatar cquesnel avatar stlaperriere avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.