All Projects → QuantumLeaps → qp-arduino

QuantumLeaps / qp-arduino

Licence: GPL-3.0 license
QP real-time embedded frameworks/RTOS for Arduino (AVR and SAM)

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to qp-arduino

qm
QM model-based design tool and code generator based on UML state machines
Stars: ✭ 54 (+45.95%)
Mutual labels:  fsm, state-machine, statechart, free, code-generation, modeling-tool, uml-state-machine, qp, samek
Qpn
QP-nano real-time embedded framework/RTOS for embedded systems based on active objects (actors) and hierarchical state machines
Stars: ✭ 107 (+189.19%)
Mutual labels:  fsm, state-machine, event-driven, rtos
Qpcpp
QP/C++ real-time embedded framework/RTOS for embedded systems based on active objects (actors) and hierarchical state machines
Stars: ✭ 124 (+235.14%)
Mutual labels:  fsm, state-machine, event-driven, rtos
Qpc
QP/C real-time embedded framework/RTOS for embedded systems based on active objects (actors) and hierarchical state machines
Stars: ✭ 379 (+924.32%)
Mutual labels:  state-machine, event-driven, rtos
Helios
The free embedded operating system.
Stars: ✭ 223 (+502.7%)
Mutual labels:  sam, arduino-library, rtos
statechart
A rust implementation of statecharts: hierarchical, reactive state machines
Stars: ✭ 41 (+10.81%)
Mutual labels:  state-machine, statechart, event-driven
StateBuilder
State machine code generator for C++ and Java.
Stars: ✭ 30 (-18.92%)
Mutual labels:  state-machine, statechart, uml-state-machine
xstate
State machines and statecharts for the modern web.
Stars: ✭ 21,286 (+57429.73%)
Mutual labels:  fsm, state-machine, statechart
Umple
Umple: Model-Oriented Programming - embed models in code and vice versa and generate complete systems
Stars: ✭ 147 (+297.3%)
Mutual labels:  state-machine, modeling, code-generation
simple-state-machine
A simple Java state machine for Spring Boot projects
Stars: ✭ 25 (-32.43%)
Mutual labels:  fsm, state-machine, statechart
PsxNewLib
Playstation controller interface library for Arduino
Stars: ✭ 81 (+118.92%)
Mutual labels:  arduino-library, arduino-uno
Syslog
An Arduino library for logging to Syslog server in IETF format (RFC 5424) and BSD format (RFC 3164)
Stars: ✭ 105 (+183.78%)
Mutual labels:  arduino-library, arduino-uno
pycsp3
A Python Library for modeling combinatorial constrained problems
Stars: ✭ 39 (+5.41%)
Mutual labels:  modeling, modeling-tool
Stateless
Go library for creating state machines
Stars: ✭ 247 (+567.57%)
Mutual labels:  fsm, state-machine
gamma
An Eclipse-based modeling framework for the component-based design and analysis of reactive systems
Stars: ✭ 21 (-43.24%)
Mutual labels:  statechart, code-generation
evon
Fast and versatile event dispatcher code generator for Golang
Stars: ✭ 15 (-59.46%)
Mutual labels:  event-driven, code-generation
Arduino
🚀 Proyectos de todo tipo para arduino utilizando sus sensores y actuadores. 🤖
Stars: ✭ 27 (-27.03%)
Mutual labels:  arduino-library, arduino-uno
Arduino-GPIO
General Purpose Input/Output (GPIO) library for Arduino
Stars: ✭ 43 (+16.22%)
Mutual labels:  sam, arduino-library
Fluent State Machine
Fluent API for creating state machines in C#
Stars: ✭ 195 (+427.03%)
Mutual labels:  fsm, state-machine
ordered
Entropy-controlled contexts in Python
Stars: ✭ 36 (-2.7%)
Mutual labels:  state-machine, modeling

Brought to you by:

Quantum Leaps


QP-Arduino

This README provides a quick overview of QP for Arduino. Please refer to the companion webiste to this project at:

https://www.state-machine.com/arduino


Software Installation

The QP adaptation for Arduino is distributed in a single ZIP archive qp-<ver>_arduino-1.8.x.zip, where <ver> stands for the version of the QP frameworks.

You need to unzip the qp-<ver>_arduino-1.8.x.zip archive into your Arduino <Sketchbook> folder. To find out where your <Sketchbook> folder is, or to configure a different location for your <Sketchbook> folder, you need to open the Arduino IDE and select File|Preferences menu. The Sketchbook location will be shown at the top of the Preferences dialog box. Once you identify the <Sketchbook> folder, you simply unzip the whole qp-<ver>_arduino-1.8.x.zip archive to this folder.


Provided Libraries and Examples

The archive qp-<ver>_arduino-1.8.x.zip contains two external libraries for SAM-based Arduinos:

  • qpcpp_arm-cm -- QP/C++ framework for Arduinos based on ARM Cortex-M
  • qpn_avr -- QP-nano framework for Arduinos based on AVR

NOTE: qpn_avr is now obsolete. It is provided for backwards compatibility only!


Provided Tools

The archive also contains the QM modeling tool for Windows

  • qm -- QM modeling tool for Windows 32/64-bit

Directories and Files

After the installation, your Arduino <Sketchbook> folder should look as follows:

<Sketchbook>/             - your Arduino Sketchbook folder
├───libraries/             - libraries folder
│   ├───qpcpp_arm-cm/      - QP/C++ library for ARM Cortex-M based boards
│   │   ├───examples/      - QP/C++ library examples
│   │   │   ├───blinky-sam/             - Blinky example for SAM-Arduinos
│   │   │   │   ├───blinky-sam.ino      - Blinky code (generated by QM)
│   │   │   │   └───blinky-sam.qm       - Blinky model (for QM)
│   │   │   ├───blinky2-sam/            - Blinky2 example for SAM-Arduinos
│   │   │   │   ├───blinky2-sam.ino     - Blinky2 code (generated by QM)
│   │   │   │   └───blinky2-sam.qm      - Blinky2 model (for QM)
│   │   │   ├───blinky_bsp-sam/         - Blinky example with BSP for SAM
│   │   │   │   ├───blinky_bsp-sam.ino  - Blinky-BSP code (generated by QM)
│   │   │   │   ├───blinky_bsp-sam.qm   - Blinky-BSP model (for QM)
│   │   │   │   ├───bsp.hpp             - BSP header (generated by QM)
│   │   │   │   └───bsp.cpp             - BSP source (generated by QM)
│   │   │   ├───blinky_bsp-teensy4/     - Blinky example with BSP for Teensy4
│   │   │   │   ├───blinky_bsp-teensy4.ino - Blinky-BSP code (generated by QM)
│   │   │   │   ├───blinky_bsp-teensy4.qm  - Blinky-BSP model (for QM)
│   │   │   │   ├───bsp.hpp             - BSP header (generated by QM)
│   │   │   │   └───bsp.cpp             - BSP source (generated by QM)
│   │   │   └───dpp_bsp-sam/            - DPP example with BSP for SAM
│   │   │       ├───qview/              - DPP with QView demonstration
│   │   │       ├───dpp_bsp-teensy4.ino - DPP-BSP code (generated by QM)
│   │   │       ├───dpp_bsp-teensy4.qm  - DPP-BSP model (for QM)
│   │   │       ├───bsp.hpp             - BSP header (generated by QM)
│   │   │       └───bsp.cpp             - BSP source (generated by QM)
│   │   └───src/            - QP/C++ library source
│   │
│   └───qpn_avr/            - QP-nano library for AVR-based Arduinos
│       ├───examples/       - QP-nano library examples
│       │   ├───blinky/
│       │   ├───blinky_bsp/
│       │   ├───dpp/
│       │   └───pelican/
│       └───src/
├───qm/                     - QM modeling tool
│   ├───bin/                - QM binaries (executable and DLLs)
│   │   └───qm.exe          - QM executable for Windows
│   └───html/               - QM documentation
│       └───index.html
│
├───QP-Arduino_GPL_Exception.txt - GPL exception for QP on Arduino
└───README.md               - this file

NOTE: The QP-Arduino archive contains QM for Windows only. But QM is also available for Linux and MacOS hosts. If you wish to work on those operating systems, you will need to install QM separately, as described at: https://www.state-machine.com/qm/gs.html


Working with the Examples

Assumming that you have installed the QP library in your <Sketchbook> folder, the examples provided in each QP library show up in the Arduino IDE under the menu:

File|Examples|Examples from Custom Libraries

The intended way of working with the examples is to use the QM modeling tool to modify the models (.qm files) and then to generate code from these models. In this scenario, the Arduino IDE is used only to build and upload the code to the Arduino board(s).

NOTE: The preferences in the Arduino IDE should be set up to Use external editor so that the IDE will update the code each time it is re-generated by the QM modeling tool.


Example Documentation

Each example model has documentation, which you can view in the QM tool. The model documentation shows in the Property Editor when the model item is active.


QP/Spy Software Tracing Support

The qpcpp_arm-cm library now supports the QP/Spy software tracing. This feature is also demonstrated in the qpcpp examples (with the BSP).

To activate the software tracing, you would need to un-comment the QS_ON macro at the top of bsp.cpp source file.

NOTE: Because the QP/Spy output is binary, you cannot watch it with a standard serial terminal. Instead, you need to use the QSPY host utility.


QView Demonstration

Once QP/Spy tracing is enabled, this communication with the target system can be used to for QView visualization and monitoring

The dpp_bsp-sam example demonstrates the [QView monitoring]. To see this feature, you need to upload the dpp_bsp-sam code to the Arduino UNO board and then you need to launch QView, from the sub-directory qview in the dpp_bsp-sam example.


Licensing

The QP/C++ real-time embedded framework (RTEF) for Arduino are licensed under the modified GPLv3 license with the QP-Arduino Exception (see also the file QP-Arduino_GPL_Exception.txt in the root of the archive).

Specifically, the Arduino GPLv3 Exception removes the requirement to expose your proprietary source code as long as you deploy it on an Arduino-Certified board.

The QM model-based design tool is freeware. The QM tool is provided under the terms of a simple End-User License Agreement (EULA).


Companion Web Page

Please refer to the companion web page to this project at:

https://www.state-machine.com/arduino


Support Questions

Please submit any questions or comments to the free QP support forum at:

https://sourceforge.net/p/qpc/discussion/668726

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].