Files
hsb/S - Software/0 - HSB MRTS Kathode-MCP/3 - Implementation/0 - Code/hsb-mrts/src/Warning.c
mmi 711f8e72be Fixed multiple bugs and errors.
- 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
2017-11-15 15:40:39 +00:00

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);
}
}