Skip to content

Commit 7c5ba95

Browse files
add shared-active-object-for-qp.md, which documents adherance to the Shared Active Objects For QP Best Practices.
1 parent e3a8cb0 commit 7c5ba95

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed

shared-active-object-for-qp.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# Introduction
2+
3+
This document provides information on this repository's adherence
4+
to the guidelines noted at: ["Shared Active Object for QP Best Practices"](https://github.com/covemountainsoftware/Shared-Active-Objects-For-QP-Best-Practices)
5+
6+
# Section A, General
7+
****
8+
* A.1 Shared QP Readme: Yes. This file.
9+
* A.2 Source Code: Yes, this repository.
10+
* A.3 License: Yes, see LICENSE.txt.
11+
* A.4 Unit tests. Yes, all included.
12+
* A.5 Published Signals: Yes, see embeddedCliServicePubSubSignals.hpp
13+
* A.6 Subscribed Signals: n/a. No signals are subscribed.
14+
* A.7 Posted Signals: n/a. No posted signals, rather methods are
15+
provided which internally post using private signals.
16+
* A.8 QP Timers: none
17+
* A.9 Message Pool: See integration.
18+
* A.10 Microcontroller resources. See third-party embedded CLI requirements.
19+
* A.11 Interfaces. Yes, integrator must create a character device
20+
driver, see characterDeviceInterface.hpp
21+
* A.12 Interface Ownership: The embedded CLI expects to own a single
22+
character device, such as a single UART.
23+
* A.13 Example project: A linux based QP example project is provided.
24+
A microcontroller example is not provided at this time.
25+
26+
# Section B, Build System
27+
28+
* B.1 Working Build: Yes, known to build in Ubuntu 22.04 environment.
29+
The following files are of interest if not using
30+
the provided CMake build files:
31+
* drivers/characterDevice/include/characterDeviceInterface.hpp
32+
* services/embeddedCliService/include/*.hpp
33+
* services/embeddedCliService/src/embedded_cli_impl.c
34+
* services/embeddedCliService/src/embeddedCliService.cpp
35+
* B.2 Prefer CMake: This library provides CMake build files.
36+
* B.3 Static library: Not provided given just two source files to build.
37+
* B.4 Build Configuration Options: no options specific to this module.
38+
* B.5 Consistent Prefix: "cms" or "CMS" via C++ namespace and all public signals.
39+
* B.6 QP/Spy: Not provided at this time.
40+
41+
# Section C, Containing Project Responsibilities
42+
43+
* C.1 Publish Subscribe header: This project expects a "cms_pubsub.hpp" header to be present
44+
in the build include search path.
45+
* C.2 Manage Signal Ranges: See I.6.
46+
* C.3 Concrete Interfaces: integrator must provide a concrete implementation of
47+
the CharacterDevice interface.
48+
49+
# Section I, Integration
50+
51+
* I.1 Identifier: This module falls within the covemountainsoftware (CMS) vendor domain
52+
and associated identifier.
53+
* I.2 Publish/Subscribe Signals:
54+
See services/embeddedCliService/include/embeddedCliServicePubSubSignals.hpp
55+
* I.3 namespace usage: This service uses the 'cms' namespace.
56+
* I.4 Signal Enumeration Prefix: This service uses the 'CMS' prefix.
57+
* I.5 Publish/Subscribe Signals Global Namespace: Yes, this module expects that
58+
pub/sub signals are in the global C++ namespace.
59+
* I.6 Posted and Private Signal Ranges: This module expects to find the header
60+
"cms_embedded_cli_signal_range.hpp" in the
61+
build include search path.
62+
* I.7 Naming: C++ namespace 'cms' is primary means of ensuring no symbol clashes.
63+
* I.8 Static and global variables: none.
64+
* I.9 Discovery: No discovery provided at this time. However, the service publishes a
65+
CMS_EMBEDDED_CLI_ACTIVE_SIG, of event message type cms::EmbeddedCLI::Event,
66+
which includes a pointer to the service which just went active. Users
67+
of this service can then use that pointer to register any desired CLI
68+
commands.
69+
* I.10 Initialization Behavior: The service starts in an idle state and requires an external
70+
user to call BeginCliAsync(...) with a concrete character device.
71+
* I.11 Priority: No guidance provided. Typically, the CLI is a low priority active object.
72+
73+

0 commit comments

Comments
 (0)