|
ENTS-tock
Environmental NeTworked Sensor firmware on Tock OS
|
Interface for the module handler. More...
#include <module_handler/include/module_handler.hpp>
Public Member Functions | |
| ModuleHandler () | |
| Construct a new Module Handler object. | |
| ~ModuleHandler () | |
| Destroy the Module Handler object. | |
| void | RegisterModule (Module *module) |
| Register a module with a message type. | |
| void | DeregisterModule (int type) |
| Deregister a module. | |
| Module * | GetModule (int type) |
| Get the module associated with a specific message type. | |
| void | ResetModules (void) |
| Resets all modules. | |
| void | OnReceive (size_t num_bytes) |
| Arduino I2C onRecieve. | |
| void | OnRequest (void) |
| Arduino I2C onRequest. | |
Interface for the module handler.
The ModuleHandler class provides an interface for communication between a host mcu and a client mcu. Commands are encoded via protobuf to save bandwidth on the I2C interface. Every OnReceive call should be followed by an OnRequest call to retrieve status codes or data produced by the command.
Functional calls are tied to Arduino Wire library. For unit tests, the define UNIT_TEST creates a global buffer that can be used in place of real i2c communication.
Definition at line 53 of file module_handler.hpp.
| ModuleHandler::ModuleHandler::ModuleHandler | ( | ) |
Construct a new Module Handler object.
Definition at line 10 of file module_handler.cpp.
| ModuleHandler::ModuleHandler::~ModuleHandler | ( | ) |
Destroy the Module Handler object.
Definition at line 12 of file module_handler.cpp.
| void ModuleHandler::ModuleHandler::DeregisterModule | ( | int | type | ) |
Deregister a module.
| type | Message type of module |
Definition at line 20 of file module_handler.cpp.
Referenced by TestDeregister().
| ModuleHandler::Module * ModuleHandler::ModuleHandler::GetModule | ( | int | type | ) |
Get the module associated with a specific message type.
| type | Message type |
Definition at line 204 of file module_handler.cpp.
Referenced by test_Connect(), test_DeregisterModule(), test_RegisterModule(), TestDeregister(), TestOnReceive(), TestOnRequest(), TestRegister(), and TestReset().
| void ModuleHandler::ModuleHandler::OnReceive | ( | size_t | num_bytes | ) |
Arduino I2C onRecieve.
| num_bytes | Number of bytes received from controller |
Definition at line 25 of file module_handler.cpp.
References DecodeEsp32Command(), and i.
Referenced by onReceive(), test_Connect(), TestOnReceive(), and TestOnRequest().
| void ModuleHandler::ModuleHandler::OnRequest | ( | void | ) |
Arduino I2C onRequest.
Due to the I2C buffer size on Arduino, the buffer passed to the module is limited to 32 bytes.
Buffer size for the Wire Arduino library. Determines the max number of bytes that can be communicated. Varies between platforms but avr uses a buffer size of 32.
Definition at line 113 of file module_handler.cpp.
References i.
Referenced by onRequest(), and TestOnRequest().
| void ModuleHandler::ModuleHandler::RegisterModule | ( | Module * | module | ) |
Register a module with a message type.
| module | Pointer to module object |
| type | Message type |
Definition at line 14 of file module_handler.cpp.
Referenced by setup(), test_DeregisterModule(), test_RegisterModule(), and TestRegister().
| void ModuleHandler::ModuleHandler::ResetModules | ( | void | ) |
Resets all modules.
Definition at line 208 of file module_handler.cpp.
References ModuleHandler::Module::Reset().
Referenced by TestReset().