- Added WARNING handler - put voltage calculations to dedicated module fixed last errors. Updated menu repair screen without ERROR from PID This is version 0.9.0.3, which is used for the first duration test Will also be tagged git-svn-id: https://svn.vbchaos.nl/svn/hsb/trunk@272 05563f52-14a8-4384-a975-3d1654cca0fa
116 lines
3.4 KiB
C
116 lines
3.4 KiB
C
// -----------------------------------------------------------------------------
|
|
/// @file Warning.c
|
|
/// @brief Description
|
|
// -----------------------------------------------------------------------------
|
|
// Micro-Key bv
|
|
// Industrieweg 28, 9804 TG Noordhorn
|
|
// Postbus 92, 9800 AB Zuidhorn
|
|
// The Netherlands
|
|
// Tel: +31 594 503020
|
|
// Fax: +31 594 505825
|
|
// Email: support@microkey.nl
|
|
// Web: www.microkey.nl
|
|
// -----------------------------------------------------------------------------
|
|
/// $Revision$
|
|
/// $Author$
|
|
/// $Date$
|
|
// (c) 2017 Micro-Key bv
|
|
// -----------------------------------------------------------------------------
|
|
|
|
/// @file Warning.c
|
|
/// @ingroup {group_name}
|
|
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// Include files
|
|
// -----------------------------------------------------------------------------
|
|
|
|
#include "Warning.h"
|
|
|
|
#include "platform.h"
|
|
#include "Logger.h"
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// Constant and macro definitions
|
|
// -----------------------------------------------------------------------------
|
|
|
|
#define WARNING_QUEUE_SIZE (10)
|
|
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// Type definitions
|
|
// -----------------------------------------------------------------------------
|
|
|
|
struct WarningQueueItem
|
|
{
|
|
T_WarningCode warningCode;
|
|
};
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// File-scope variables
|
|
// -----------------------------------------------------------------------------
|
|
|
|
static struct Observable observable;
|
|
static TaskHandle_t warningTaskHandle;
|
|
static QueueHandle_t warningQueue;
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// Function declarations
|
|
// -----------------------------------------------------------------------------
|
|
|
|
static void WarningTask (void* parameters);
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// Function definitions
|
|
// -----------------------------------------------------------------------------
|
|
|
|
|
|
ErrorStatus Warning_construct(void)
|
|
{
|
|
Observable_construct(&observable);
|
|
|
|
warningQueue = xQueueCreate(WARNING_QUEUE_SIZE, sizeof(struct WarningQueueItem));
|
|
xTaskCreate(WarningTask, "ErrorTask", 300, NULL, 1, &warningTaskHandle);
|
|
|
|
return SUCCESS;
|
|
}
|
|
|
|
|
|
struct Observable* Warning_getObservable(void)
|
|
{
|
|
return &observable;
|
|
}
|
|
|
|
|
|
void Warning_postWarning(T_WarningCode warningCode)
|
|
{
|
|
LOGGER_WARNING(mainLog, "WARNING POSTED WITH CODE %d", warningCode);
|
|
struct WarningQueueItem queueItem;
|
|
queueItem.warningCode = warningCode;
|
|
xQueueSend(warningQueue, &queueItem, 0);
|
|
}
|
|
|
|
|
|
void Warning_postWarningFromISR(T_WarningCode warningCode)
|
|
{
|
|
portBASE_TYPE higherPriorityTaskWoken = pdFALSE;
|
|
LOGGER_WARNING_ISR(mainLog, "WARNING POSTED FROM ISR");
|
|
|
|
struct WarningQueueItem queueItem;
|
|
queueItem.warningCode = warningCode;
|
|
xQueueSendFromISR(warningQueue, &queueItem, &higherPriorityTaskWoken);
|
|
|
|
portEND_SWITCHING_ISR(higherPriorityTaskWoken);
|
|
}
|
|
|
|
|
|
static void WarningTask (void* parameters)
|
|
{
|
|
struct WarningQueueItem queueItem;
|
|
while (1)
|
|
{
|
|
xQueueReceive(warningQueue, &queueItem, portMAX_DELAY);
|
|
Observable_notifyObservers(&observable, (const void* const)queueItem.warningCode);
|
|
}
|
|
}
|