- Sep 18, 2019
-
-
kongr45gpen authored
-
- Sep 02, 2019
-
-
kongr45gpen authored
MessageParser overhaul This MR: * Changes the name of some `MessageParser` functions * Implements most of the **CCSDS space packet** and **ECSS TC & TM** headers, along with their tests * Adds documentation for all ECSS Definition constants * Removes template from all `Message::appendString()` functions * Add a `Message::appendMessage()` function See merge request acubesat/obc/ecss-services!46
-
kongr45gpen authored
-
kongr45gpen authored
Fixes on warnings & errors This MR performs a minor tidying of the ECSS-services repo: * Most doxygen warnings are fixed * Tests are now expected to return no errors, unless explicitly specified (Closes #19) Note: !46 has to be merged before this. See merge request acubesat/obc/ecss-services!48
-
kongr45gpen authored
-
kongr45gpen authored
Apply suggestion to src/Helpers/TimeAndDate.cpp
-
kongr45gpen authored
-
kongr45gpen authored
-
kongr45gpen authored
Add MessageParser tests Apply suggestion to src/MessageParser.cpp Fix documentation typo
-
kongr45gpen authored
Closes #19
-
kongr45gpen authored
-
kongr45gpen authored
-
kongr45gpen authored
-
kongr45gpen authored
-
kongr45gpen authored
This reduces the size of the code from 208608 to 208072 bytes, which is totally negligible
-
kongr45gpen authored
-
kongr45gpen authored
-
kongr45gpen authored
-
kongr45gpen authored
Update documentation for the ECSS definitions Group Services and ECSS Definitions into a doxygen page
-
kongr45gpen authored
-
kongr45gpen authored
-
- Sep 01, 2019
-
-
kongr45gpen authored
Logging This adds a Logging "library" to the ECSS Services repo. This library allows logging messages with different severities, and allows the user of the services to choose which severity they want displayed. A comparison between [Google (glog)](https://github.com/google/glog), [spdlog](https://github.com/gabime/spdlog), [plog](https://github.com/SergiusTheBest/plog) and [Boost::Log](https://www.boost.org/doc/libs/1_63_0/libs/log/doc/html/index.html) was made, and we decided to go with a custom lite solution, also compatible with `etl::string`. The following log levels are supported, but they are up for discussion: |Level|Description| |---|---| | **trace** | Very detailed information, useful for tracking the individual steps of an operation.| | **debug** | General debugging information.| | **info** | Noteworthy or periodical events.| | **notice** | Uncommon but expected events.| | **warning** | Unexpected events that do not compromise the operability of a function.| | **error** | Unexpected failure of an operation.| | **emergency** | Unexpected failure that renders the entire system unusable.| | **disabled** | Use this log level to disable logging entirely. No message should be logged as disabled.| The library uses `#define`s that allow logging in this way: ```c++ LOG_ERROR << "Configuration not found"; LOG_INFO << "The camera took " << 15 << " pictures today"; LOG_DEBUG << "Ran function " << functionName << " with " << getId(functionName); ``` Closes #18. It is lite enough to be used [on a microcontroller](https://gitlab.com/acubesat/obc/mockup-4/commit/4aaa55bb72030cee6cf4eca7b082297cf60edf37). **See https://acubesat.gitlab.io/obc/ecss-services/docs/classLogger.html for more detailed documentation of the Logger functionality**. The following images show a sample log output on x86 and on an MCU via UART:  See merge request acubesat/obc/ecss-services!44
-
kongr45gpen authored
-
kongr45gpen authored
-
kongr45gpen authored
Use a non-templated version of etl::string Set the etl format as a static variable for the Logger This prevents wasting time recreating the format variable every time the LOG function is called. Force inlining the LOG function This forces the compiler to check the `if constexpr` structure, and disable the logging line entirely if needed. Never redefine the log level Move `disabled` logging level to ease level checks
-
kongr45gpen authored
Thanks @xlxs41 for the suggestion!
-
kongr45gpen authored
Reinstantiate log level checks Fix documentation, as suggested by @thodkatz Add a few more documentation lines to LogEntry Fixes for cppcheck-misra and vera checks due to updates & false positives
-
kongr45gpen authored
Apply suggestion to inc/Logger.hpp Be explicit about the type used in the LogLevel enumeration This makes LogLevel an unscoped strongly-type enumeration, making sure there is consistency between the expected log level of uint8_t
-
kongr45gpen authored
Thanks @xlxs41 for the suggestion!
-
kongr45gpen authored
-
kongr45gpen authored
Fix a bug with error names not showing up in the logs
-
kongr45gpen authored
Take care of MISRA and vera++ concerns
-
kongr45gpen authored
-
kongr45gpen authored
-
kongr45gpen authored
-
kongr45gpen authored
Add the function that stores the logs
-
kongr45gpen authored
-
kongr45gpen authored
Switch order of execution to improve performance Fix the build
-
kongr45gpen authored
-
kongr45gpen authored
CI pipeline optimization Resolves #46 and #40. The average pipeline time is ~11 minutes until failure or success with the current CI configuration. Main causes of this are: - The original Docker image used for the runners (`lycantropos/cmake`) is bloated, weighing at about **600 MB** for the [latest tag](https://hub.docker.com/r/lycantropos/cmake/tags). This image is downloaded for every stage of the pipeline separately, and due to its size, there is a huge delay between setup and start of the stage. - There are too many calls to `apt-get update` and `install`, that are executed at every stage without reason. Plus, downloading and installing additional packages *for every stage* is also time-consuming, which contributes to the delays. This problem is solved by creating a lighter Docker image (`lightspot21/acubesat-ci`), based on Alpine Linux, which contains all the necessary tools for linting and building (`cmake`, `cppcheck`, `clang-tidy`, `gcc`, `vera++`) plus the code coverage tools `gcovr` and `lcov`. The whole package weighs at **168 MB** for the [latest tag](https://cloud.docker.com/repository/docker/lightspot21/acubesat-ci/tags), which is **73%** less than what we use currently. Gains: - Average pipeline time down to **5-7 minutes** from 11-13 (variation is due to server load) with some times even earlier when failing, resulting in quicker fixes. - Ability to directly control tool versions. All comments/ideas are welcome, especially on optimizing the Docker image size even more! See merge request acubesat/obc/ecss-services!51
-