Going on with structure
Added observer/observable for RTC git-svn-id: https://svn.vbchaos.nl/svn/hsb/trunk@251 05563f52-14a8-4384-a975-3d1654cca0fa
This commit is contained in:
@@ -37,6 +37,7 @@
|
||||
#include "MAX5715.h"
|
||||
|
||||
#include "KeyboardDevice.h"
|
||||
#include "PCBA.h"
|
||||
#include "storm700.h"
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
@@ -45,6 +46,11 @@
|
||||
|
||||
|
||||
|
||||
//static const char menuMain[4][20] =
|
||||
// " 1.Tube repair"
|
||||
// " 2.Operator"
|
||||
// " 3.Calibration";
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Type definitions
|
||||
// -----------------------------------------------------------------------------
|
||||
@@ -62,6 +68,9 @@
|
||||
|
||||
static void repairMenu_task(void* parameters);
|
||||
|
||||
static void repairMenu_selectMenu(struct RepairMenu* self, char key);
|
||||
static void repairMenu_printMenu(struct RepairMenu* self);
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Function definitions
|
||||
// -----------------------------------------------------------------------------
|
||||
@@ -90,6 +99,7 @@ ErrorStatus repairMenu_construct(struct RepairMenu* self, struct Display* displa
|
||||
self->runTask = true;
|
||||
self->initialized = true;
|
||||
self->display = display;
|
||||
self->menuState = MAINMENU;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -120,6 +130,7 @@ void repairMenu_feedSecondsCounter(struct RepairMenu* self)
|
||||
|
||||
}
|
||||
|
||||
|
||||
void repairMenu_feedSecondsCounterFromISR(struct RepairMenu* self)
|
||||
{
|
||||
portBASE_TYPE higherPriorityTaskWoken = pdFALSE;
|
||||
@@ -134,73 +145,66 @@ void repairMenu_feedSecondsCounterFromISR(struct RepairMenu* self)
|
||||
}
|
||||
|
||||
|
||||
static struct RepairProcess _rp = {.initialized = false};
|
||||
struct RepairProcess* rp = &_rp;
|
||||
extern struct MAX5715* dac;
|
||||
extern struct Storm700* storm700;
|
||||
static void repairMenu_task(void* parameters)
|
||||
{
|
||||
struct RepairMenu* self = (struct RepairMenu*)parameters;
|
||||
|
||||
Display_clearLine(self->display, 3);
|
||||
|
||||
struct RepairProcessParameters rpParameters;
|
||||
rpParameters.adcRow1 = &adc1->channel[0];
|
||||
rpParameters.adcRow2 = &adc1->channel[1];
|
||||
rpParameters.adcRow3 = &adc1->channel[2];
|
||||
rpParameters.dacRow1 = &dac->dac[0];
|
||||
rpParameters.dacRow2 = &dac->dac[1];
|
||||
rpParameters.dacRow3 = &dac->dac[2];
|
||||
|
||||
// struct RepairPresetParameters presetStage1 = {.voltage = 0xE00, .duration = 300, .softstartDuration = 120};
|
||||
// struct RepairPresetParameters presetStage2 = {.voltage = 0x600, .duration = 120, .softstartDuration = 30};
|
||||
|
||||
struct RepairPresetParameters presetStage1 = {.voltage = 0xE00, .duration = 7200, .softstartDuration = 1800};
|
||||
struct RepairPresetParameters presetStage2 = {.voltage = 0x600, .duration = 1800, .softstartDuration = 900};
|
||||
|
||||
struct RepairPreset repairPreset;
|
||||
repairPreset.numberOfStages = 2;
|
||||
repairPreset.preset[0] = presetStage1;
|
||||
repairPreset.preset[1] = presetStage2;
|
||||
|
||||
rp->repairPreset = &repairPreset;
|
||||
|
||||
repairProcess_construct(rp, &rpParameters, 2, 512);
|
||||
|
||||
|
||||
while(self->runTask)
|
||||
{
|
||||
xSemaphoreTake(self->secondsSyncronisation, portMAX_DELAY);
|
||||
|
||||
uint32_t secondsCounter;
|
||||
repairProcess_getRepairTime(rp, &secondsCounter);
|
||||
int hours = (secondsCounter / (60 * 60));
|
||||
int minutes = (secondsCounter - (hours * 60 * 60)) / 60;
|
||||
int seconds = (secondsCounter - (hours * 60 * 60) - (minutes * 60));
|
||||
char buffer[20];
|
||||
snprintf (buffer, sizeof(buffer) / sizeof(buffer[0]), "%02d:%02d:%02d", hours, minutes, seconds);
|
||||
Display_write(self->display, buffer, strlen(buffer), 2, 7);
|
||||
|
||||
Display_write(self->display, "R1", strlen("R1"), 3, 3);
|
||||
Display_write(self->display, "R2", strlen("R2"), 3, 10);
|
||||
Display_write(self->display, "R3", strlen("R3"), 3, 17);
|
||||
|
||||
uint16_t value;
|
||||
ADCChannel_read(rp->adc[0], &value);
|
||||
snprintf(buffer, sizeof(buffer) / sizeof(buffer[0]), "%04xV", value);
|
||||
Display_write(self->display, buffer, strlen(buffer), 4, 1);
|
||||
|
||||
ADCChannel_read(rp->adc[1], &value);
|
||||
snprintf(buffer, sizeof(buffer) / sizeof(buffer[0]), "%04xV", value);
|
||||
Display_write(self->display, buffer, strlen(buffer), 4, 8);
|
||||
|
||||
ADCChannel_read(rp->adc[2], &value);
|
||||
snprintf(buffer, sizeof(buffer) / sizeof(buffer[0]), "%04xV", value);
|
||||
Display_write(self->display, buffer, strlen(buffer), 4, 15);
|
||||
|
||||
char key;
|
||||
Keypad_KeyState keyState;
|
||||
|
||||
// Get a new key from keyboard
|
||||
if (KeyboardDevice_read(&storm700->keyboardDevice, &key, &keyState) == SUCCESS)
|
||||
{
|
||||
// New key read
|
||||
if (keyState == RELEASED)
|
||||
{
|
||||
LOGGER_INFO(mainLog, "Key %c is released", key);
|
||||
}
|
||||
else
|
||||
{
|
||||
LOGGER_INFO(mainLog, "Key %c is pressed", key);
|
||||
}
|
||||
}
|
||||
vTaskDelay(100);
|
||||
}
|
||||
|
||||
LOGGER_INFO(mainLog, "Deleting RepairMenu task");
|
||||
vTaskDelete(self->taskHandle);
|
||||
}
|
||||
|
||||
|
||||
static void repairMenu_selectMenu(struct RepairMenu* self, char key)
|
||||
{
|
||||
switch (self->menuState)
|
||||
{
|
||||
case MAINMENU:
|
||||
{
|
||||
repairMenu_printMenu(self);
|
||||
break;
|
||||
}
|
||||
case REPAIRMENU:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void repairMenu_printMenu(struct RepairMenu* self)
|
||||
{
|
||||
switch (self->menuState)
|
||||
{
|
||||
case MAINMENU:
|
||||
{
|
||||
Display_write(self->display, PCBA_getInstance()->name, strlen(PCBA_getInstance()->name), 1, 1);
|
||||
break;
|
||||
}
|
||||
case REPAIRMENU:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user