ENTS-tock
Environmental NeTworked Sensor firmware on Tock OS
Loading...
Searching...
No Matches
ModuleHandler::ModuleHandler Class Reference

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.
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ ModuleHandler()

ModuleHandler::ModuleHandler::ModuleHandler ( )

Construct a new Module Handler object.

Definition at line 10 of file module_handler.cpp.

◆ ~ModuleHandler()

ModuleHandler::ModuleHandler::~ModuleHandler ( )

Destroy the Module Handler object.

Definition at line 12 of file module_handler.cpp.

Member Function Documentation

◆ DeregisterModule()

void ModuleHandler::ModuleHandler::DeregisterModule ( int  type)

Deregister a module.

Parameters
typeMessage type of module

Definition at line 20 of file module_handler.cpp.

Referenced by TestDeregister().

◆ GetModule()

ModuleHandler::Module * ModuleHandler::ModuleHandler::GetModule ( int  type)

Get the module associated with a specific message type.

Parameters
typeMessage type
Returns
Reference to module associated with the type

Definition at line 204 of file module_handler.cpp.

Referenced by test_Connect(), test_DeregisterModule(), test_RegisterModule(), TestDeregister(), TestOnReceive(), TestOnRequest(), TestRegister(), and TestReset().

◆ OnReceive()

void ModuleHandler::ModuleHandler::OnReceive ( size_t  num_bytes)

Arduino I2C onRecieve.

Parameters
num_bytesNumber 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().

◆ OnRequest()

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().

◆ RegisterModule()

void ModuleHandler::ModuleHandler::RegisterModule ( Module *  module)

Register a module with a message type.

Parameters
modulePointer to module object
typeMessage type

Definition at line 14 of file module_handler.cpp.

Referenced by setup(), test_DeregisterModule(), test_RegisterModule(), and TestRegister().

◆ ResetModules()

void ModuleHandler::ModuleHandler::ResetModules ( void  )

Resets all modules.

Definition at line 208 of file module_handler.cpp.

References ModuleHandler::Module::Reset().

Referenced by TestReset().


The documentation for this class was generated from the following files: