Skip to content
/ ruuvi.firmware.c Public template
forked from ruuvi/ruuvi.firmware.c

Ruuvi Firmware version 3. Built on top of Nordic SDK 15, uses both Ruuvi and external repositories as submodules. In Beta, no breaking changes are intended but may be done if absolutely necessary

License

Notifications You must be signed in to change notification settings

dexter3k/ruuvi.firmware.c

 
 

Repository files navigation

ruuvi.firmware.c

Current git repository status:

Build Status Quality Gate Status Bugs Code Smells Coverage Duplicated Lines (%) Lines of Code Maintainability Rating Reliability Rating Technical Debt

Ruuvi Firmware version 3. Built on top of Nordic SDK 15, uses both Ruuvi and external repositories as submodules. Under development, please follow Ruuvi Blog for details. The project is in beta stage, no breaking changes are intented but will be done if absolutely necessary for some reason.

Setting up

Prerequisites

Suggested

  • Ruuvi Dev kit board and a USB power & data cable.
  • Or any other SWD programmer and a cable matching your target board.

To run makefiles locally, e.g. before making Pull Requests

SDK 15.3

Download Nordic SDK15.3 (.8GB)and install it at the project root. If you're working on multiple nRF projects, use soft linking to have only one copy.

Submodules

Run git submodule sync --recursive and git submodule update --init --recursive to update the modules from new remotes.

Toolchain

ARMGCC is used for Jenkins builds, it's recommended that you use Segger Embedded Studio for developing. You can make the project and a single variant by runnning "make variantName" (for example "make ruuvitag_b" at top level of this repository

Segger Embedded Studio can be set up by installing nRF Connect for Desktop and following Getting Started plugin instructions.

Start SES and open ruuvi_ruuvi.firmware.c.emProject at root level. Each of the target boards is in their own project.

Code style

Code is formatted with Artistic Style. Run make astyle.

Static analysis

The code can be checked with PVS Studio and Sonarcloud for some common errors, style issues and potential problems. Here is a link to generated report.

PVS

Obtain license and software from Viva64.

Installation process is described in ruuvi.docs.com

Make runs PVS Studio scan and outputs results under doxygen/html/fullhtml.

This produces hundreds of warnings, you need to filter the warnings you're interested in. For example you probably want to filter out warnings related to 64-bit systems.

Sonar scan

Travis pushes the results to SonarCloud.IO. SonarCloud uses access token which is private to Ruuvi, you'll need to fork the project and setup the SonarCloud under your own account if you wish to run Sonar Scan on your own code.

Running unit tests

Ceedling

Unit tests are implemented with Ceedling. Run the tests with ceedling test:all

Gcov

Ceedling can also generate Gcov reports with ceedling gcov:all utils:gcov. The report can be found under build/artifacts/gcov.

Unit test continuous integration

Travis will fail the build if unit test fails and Gcov results will get pushed to SonarCloud.

Usage

Compile and flash the project to your board using Segger Embedded Studio. Note: You should erase your board entirely in case there is a bootloader from a previous firmware.

If you're building binaries for distribution, use the provided make script to generate binaries. This way you can be certain to have a repeatable build process. The makefile takes tag name of current git commit and names the binaries with the tag. The version information also gets compiled into binaries. If you have tagged the version as v3.99.1 the outputs will be named $BOARD_armgcc_ruuvifw_$VARIANT_v3.99.1_$TYPE.extension. For example ruuvitag_b_armgcc_ruuvifw_default_v3.29.3-rc1_full.hex.

Tags should be valid semantic versions, starting with v and possibly having pre-release information such as -rc2. Do not add build information such as +TestFW.

How to contribute

Please let us know your thoughts on the direction and structure of the project. Does the project help you to understand how to build code for the RuuviTag? Is the structure of the project sensible to you?

If you want to assist in the project maintenance by fixing some issues doxygen.error is a good place to look for code which needs better commenting. Project badges at the top of the readme point to issues which range from trivial clarifications to complex refactoring.

If you want to add new features, please discuss the feature first, and then create ceedling unit tests for the functionality. Once the functionality is agreed and testable in can be integrated into project.

Licensing

Ruuvi code is BSD-3 licensed. Submodules and external dependencies have their own licenses, which are BSD-compatible.

Documentation

Document is generated with Doxygen. Run make doxygen to generate the docs locally, or browse to Travis built docs

About

Ruuvi Firmware version 3. Built on top of Nordic SDK 15, uses both Ruuvi and external repositories as submodules. In Beta, no breaking changes are intended but may be done if absolutely necessary

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 79.9%
  • Makefile 16.0%
  • Shell 4.1%