debug interface for dhb created.

This is useful to track states or values
in child handler. some documentation added.
New doxygen group for interfaced added.
This commit is contained in:
Robin Müller 2019-11-09 13:07:26 +01:00
parent bf7bc342ff
commit 801bd4d7eb
6 changed files with 35 additions and 9 deletions

View File

@ -7,8 +7,10 @@
#include <framework/returnvalues/HasReturnvaluesIF.h> #include <framework/returnvalues/HasReturnvaluesIF.h>
#include <framework/ipc/MessageQueueIF.h> #include <framework/ipc/MessageQueueIF.h>
/** /**
* \brief Interface for component which uses actions * @brief
* Interface for component which uses actions
* *
* @details
* This interface is used to execute actions in the component. Actions, in the sense of this interface, are activities with a well-defined beginning and * This interface is used to execute actions in the component. Actions, in the sense of this interface, are activities with a well-defined beginning and
* end in time. They may adjust sub-states of components, but are not supposed to change * end in time. They may adjust sub-states of components, but are not supposed to change
* the main mode of operation, which is handled with the HasModesIF described below. * the main mode of operation, which is handled with the HasModesIF described below.
@ -23,6 +25,8 @@
* parameters and immediately start execution of the action. It is, however, not required to * parameters and immediately start execution of the action. It is, however, not required to
* immediately finish execution. Instead, this may be deferred to a later point in time, at * immediately finish execution. Instead, this may be deferred to a later point in time, at
* which the component needs to inform the caller about finished or failed execution. * which the component needs to inform the caller about finished or failed execution.
*
* \ingroup interfaces
*/ */
class HasActionsIF { class HasActionsIF {
public: public:

View File

@ -834,8 +834,9 @@ ReturnValue_t DeviceHandlerBase::getStateOfSwitches(void) {
ReturnValue_t result = getSwitches(&switches, &numberOfSwitches); ReturnValue_t result = getSwitches(&switches, &numberOfSwitches);
if ((result == RETURN_OK) && (numberOfSwitches != 0)) { if ((result == RETURN_OK) && (numberOfSwitches != 0)) {
while (numberOfSwitches > 0) { while (numberOfSwitches > 0) {
if (powerSwitcher->getSwitchState(switches[numberOfSwitches - 1]) if (powerSwitcher-> getSwitchState(switches[numberOfSwitches - 1])
== PowerSwitchIF::SWITCH_OFF) { == PowerSwitchIF::SWITCH_OFF)
{
return PowerSwitchIF::SWITCH_OFF; return PowerSwitchIF::SWITCH_OFF;
} }
numberOfSwitches--; numberOfSwitches--;
@ -1267,4 +1268,7 @@ void DeviceHandlerBase::setTaskIF(PeriodicTaskIF* task_){
executingTask = task_; executingTask = task_;
} }
void DeviceHandlerBase::debugInterface(uint8_t positionTracker) {
}

View File

@ -553,6 +553,18 @@ protected:
*/ */
virtual void fillCommandAndReplyMap() = 0; virtual void fillCommandAndReplyMap() = 0;
/**
* @brief Can be implemented by child handler to
* perform debugging
* @details Example: Calling this in performOperation
* to track values like mode. An optional position tracker can be supplied
* to provide the child handler a way to know where the debugInterface was called
*
* Please delete all debugInterface calls in DHB after debugging is finished !
*/
virtual void debugInterface(uint8_t positionTracker = 0);
/** /**
* This is a helper method to facilitate inserting entries in the command map. * This is a helper method to facilitate inserting entries in the command map.
* @param deviceCommand Identifier of the command to add. * @param deviceCommand Identifier of the command to add.

View File

@ -137,9 +137,10 @@ void EventManager::printEvent(EventMessage* message) {
error << "0x" << std::hex << message->getReporter() << std::dec; error << "0x" << std::hex << message->getReporter() << std::dec;
} }
error << " reported " << translateEvents(message->getEvent()) << " (" error << " reported " << translateEvents(message->getEvent()) << " ("
<< std::dec << message->getEventId() << std::hex << ") P1: 0x" << std::dec << message->getEventId() << ") " << std::endl;
<< message->getParameter1() << " P2: 0x"
<< message->getParameter2() << std::dec << std::endl; error << std::hex << "P1 Hex: 0x" << message->getParameter1() << ", P1 Dec: " << std::dec << message->getParameter1() << std::endl;
error << std::hex << "P2 Hex: 0x" << message->getParameter2() << ", P2 Dec: " << std::dec << message->getParameter2() << std::endl;
break; break;
} }

View File

@ -1,6 +1,7 @@
#include <framework/modes/HasModesIF.h> #include <framework/modes/HasModesIF.h>
#include <framework/modes/ModeHelper.h> #include <framework/modes/ModeHelper.h>
#include <framework/ipc/MessageQueueSenderIF.h> #include <framework/ipc/MessageQueueSenderIF.h>
#include <framework/serviceinterface/ServiceInterfaceStream.h>
ModeHelper::ModeHelper(HasModesIF *owner) : ModeHelper::ModeHelper(HasModesIF *owner) :
theOneWhoCommandedAMode(0), commandedMode(HasModesIF::MODE_OFF), commandedSubmode( theOneWhoCommandedAMode(0), commandedMode(HasModesIF::MODE_OFF), commandedSubmode(
@ -42,7 +43,6 @@ ReturnValue_t ModeHelper::handleModeCommand(CommandMessage* message) {
} }
countdown.setTimeout(timeout); countdown.setTimeout(timeout);
owner->startTransition(mode, submode); owner->startTransition(mode, submode);
} }
break; break;

View File

@ -11,8 +11,13 @@
#include <framework/events/Event.h> #include <framework/events/Event.h>
#include <framework/returnvalues/HasReturnvaluesIF.h> #include <framework/returnvalues/HasReturnvaluesIF.h>
/** /**
* This interface defines a connection to a device that is capable of turning on and off *
* switches of devices identified by a switch ID. * @brief This interface defines a connection to a device that is capable of turning on and off
* switches of devices identified by a switch ID.
* @details The virtual functions of this interface do not allow to make any assignments
* because they can be called asynchronosuly (const ending).
*
* @ingroup interfaces
*/ */
class PowerSwitchIF : public HasReturnvaluesIF { class PowerSwitchIF : public HasReturnvaluesIF {
public: public: