threads: add logging

This commit is contained in:
Vasily Davydov 2023-05-12 00:57:55 +03:00
parent 90656fae95
commit 1a4c09c4ad
6 changed files with 45 additions and 6 deletions

View File

@ -6,17 +6,21 @@
*/
#include "ThreadCommon.h"
#include "Log.h"
ThreadCommon::QueueManager::QueueManager() {}
bool ThreadCommon::QueueManager::createQueue(size_t queue_length, size_t item_size, Queue_id qid)
{
QueueHandle_t queue_to_create;
LOG_DEBUG("Creating queue with id %d", qid);
if ((queue_to_create = xQueueCreate(queue_length, item_size)))
{
LOG_DEBUG("Queue with id %d has been created", qid);
queues.insert({qid, queue_to_create});
return true;
}
LOG_ERROR("Failed to cerate queue with id %d", qid);
return false;
}

View File

@ -1,4 +1,5 @@
#include "ThreadCommon.h"
#include "Log.h"
ThreadCommon::ThreadManager::ThreadManager(){}
@ -10,12 +11,18 @@ bool ThreadCommon::ThreadManager::createTask(void (*task_func)(void*),
void* parameters)
{
const char * t_name = name.c_str();
LOG_DEBUG("Creating task [name: %s, priority: %ld, stack: %ld]",
t_name, priority, stack_size);
BaseType_t taskCreated = xTaskCreate(task_func,
t_name,
stack_size,
parameters,
priority,
NULL);
assert(taskCreated == pdPASS);
if (!(taskCreated == pdPASS))
{
LOG_ERROR("Failed to create a task [name: %s, priority: %ld, stack: %ld]",
t_name, priority, stack_size)
}
return (taskCreated == pdPASS);
}

View File

@ -7,15 +7,17 @@
#include "Manager.h"
#include "ThreadCommon.h"
#include "Log.h"
Manager::Manager(ThreadCommon::QueueManager* qm)
: _qm(qm), _menu{qm}
{
LOG_DEBUG("Creating Manager");
}
Manager::~Manager()
{
// TODO Auto-generated destructor stub
LOG_ERROR("Deleting Manager");
}
Event::EventPair Manager::parseEvent(Event* e)
@ -32,6 +34,7 @@ Event::EventPair Manager::parseEvent(Event* e)
return p;
}
}
LOG_WARNING("Event is empty");
return {ERROR_RETURN, Event::Null};
}

View File

@ -6,6 +6,7 @@
*/
#include "Master.h"
#include "Log.h"
static const char* rotary_direction[] =
{
@ -17,7 +18,7 @@ static const char* rotary_direction[] =
Master::Master(ThreadCommon::QueueManager* qm) : _qm(qm)
{
LOG_DEBUG("Creating Master");
}
void Master::HandleEventType(Event* e, Event::EventType type)
@ -29,6 +30,7 @@ void Master::HandleEventType(Event* e, Event::EventType type)
case Event::Rotary:
//Comes from rotary, goes to manager
_qm->send<Event>(ThreadCommon::QueueManager::manager_event_master, e, 0);
LOG_DEBUG("Rotary: %s has been forwarded to manager", rotary_direction[e->getDataOf(type)]);
break;
case Event::InternalTemp:
// TODO remove (deprecated)
@ -37,10 +39,12 @@ void Master::HandleEventType(Event* e, Event::EventType type)
//Comes from sensors, goes to relay & manager
_qm->send<Event>(ThreadCommon::QueueManager::relay_event_master, e, 0);
_qm->send<Event>(ThreadCommon::QueueManager::manager_event_master, e, 0);
LOG_DEBUG("ExtTemp: %d has been forwarded to manager and relay", e->getDataOf(type));
break;
case Event::SetPoint:
//Comes from manager, goes to relay
_qm->send<Event>(ThreadCommon::QueueManager::relay_event_master, e, 0);
LOG_DEBUG("SetPoint: %d has been forwarded to relay", e->getDataOf(type));
break;
default:
assert(0);

View File

@ -8,6 +8,7 @@
#include "Rotary.h"
#include "board.h"
#include "queue.h"
#include "Log.h"
static QueueHandle_t * p_rotary_isr_q;
@ -20,6 +21,10 @@ extern "C"
portBASE_TYPE xHigherPriorityWoken = pdFALSE;
uint8_t data = ThreadCommon::RotaryAction::Right;
xQueueSendFromISR (*p_rotary_isr_q, &data, &xHigherPriorityWoken);
if(!xHigherPriorityWoken)
{
LOG_WARNING("[PIN_INT0_IRQn] portEND_SWITCHING_ISR called with False value");
}
portEND_SWITCHING_ISR(xHigherPriorityWoken);
}
@ -30,6 +35,10 @@ extern "C"
portBASE_TYPE xHigherPriorityWoken = pdFALSE;
uint8_t data = ThreadCommon::RotaryAction::Left;
xQueueSendFromISR (*p_rotary_isr_q, &data, &xHigherPriorityWoken);
if(!xHigherPriorityWoken)
{
LOG_WARNING("[PIN_INT1_IRQn] portEND_SWITCHING_ISR called with False value");
}
portEND_SWITCHING_ISR(xHigherPriorityWoken);
}
@ -40,16 +49,23 @@ extern "C"
portBASE_TYPE xHigherPriorityWoken = pdFALSE;
uint8_t data = ThreadCommon::RotaryAction::Press;
xQueueSendFromISR (*p_rotary_isr_q, &data, &xHigherPriorityWoken);
if(!xHigherPriorityWoken)
{
LOG_WARNING("[PIN_INT2_IRQn] portEND_SWITCHING_ISR called with False value");
}
portEND_SWITCHING_ISR(xHigherPriorityWoken);
}
}
Rotary::Rotary(ThreadCommon::QueueManager* qm) : _qm(qm)
{
LOG_DEBUG("Creating Rotary");
}
Rotary::~Rotary() {}
Rotary::~Rotary()
{
LOG_ERROR("Deleting Rotary");
}
void Rotary::taskFunction()
{

View File

@ -5,16 +5,19 @@
*/
#include "UserInterface.h"
#include "Log.h"
#include <cstring>
UserInterface::UserInterface(ThreadCommon::QueueManager* qm) :
_qm(qm), lcd1(nullptr)
{
LOG_DEBUG("Creating UserInterface");
this->initLCD1();
}
UserInterface::~UserInterface()
{
LOG_ERROR("Deleting UserInterface");
delete this->lcd1;
delete this->lcd1_rs;
delete this->lcd1_en;
@ -45,7 +48,7 @@ void UserInterface::handleEvent(InterfaceWithData* ui_data)
break;
default:
//Should never happen.
printf("WARNING: [UserInterface::handleEvent] executed default case.\n");
LOG_ERROR("[UserInterface::handleEvent] executed default case");
break;
}
}
@ -59,11 +62,13 @@ void UserInterface::handleLCD(LiquidCrystal *lcd, const char *str)
//Interpret empty string as clear.
if(!strlen(str))
lcd->clear();
LOG_INFO("Clear up LCD");
//Print the text otherwise.
else
{
lcd->setCursor(0, 0);
lcd->print(str);
LOG_INFO("Printing [%s] on LCD");
}
}