Corrected menu items

Added all tests except eeprom and keypad

git-svn-id: https://svn.vbchaos.nl/svn/hsb/trunk@243 05563f52-14a8-4384-a975-3d1654cca0fa
This commit is contained in:
swo
2017-10-06 13:37:21 +00:00
parent e54e15da18
commit 0e69a81570
2 changed files with 285 additions and 130 deletions

View File

@@ -43,12 +43,13 @@
// Constant and macro definitions
// -----------------------------------------------------------------------------
#define ANSI_TERMINAL_RESET "\x1b[2J"
#define ANSI_TERMINAL_HOME "\x1b[H"
#define CON_INF_MAX_MENU_ITEMS (15)
#define HW_VAL_MENU_OUTPUT_BUFFER_SIZE (64)
// -----------------------------------------------------------------------------
// Type definitions.
@@ -84,6 +85,7 @@ struct HwValidationMenu
int menuItemSelected;
struct IODevice* ioDevice;
bool initialized;
char outputBuffer[HW_VAL_MENU_OUTPUT_BUFFER_SIZE];
};

View File

@@ -30,6 +30,9 @@
#include "DisplayDevice.h"
#include "gpio.h"
#include "adc.h"
#include "PCBA.h"
#include "MAX5715.h"
#include "nhd0420.h"
#include "Logger.h"
@@ -41,6 +44,8 @@
#define CMD_BUFFER_SIZE (10)
#define HW_VALIDATION_MENU_DAC_MAX_VALUE (4095)
// -----------------------------------------------------------------------------
// Type definitions
// -----------------------------------------------------------------------------
@@ -50,14 +55,12 @@ typedef enum
CONSOLE_MAIN_MENU,
CONSOLE_TEST_POWER,
CONSOLE_TEST_DISPLAY,
CONSOLE_TEST_KEYPAD,
CONSOLE_TEST_ADC,
CONSOLE_TEST_DAC,
CONSOLE_TEST_INTERLOCK,
CONSOLE_TEST_SOLENOID,
CONSOLE_TEST_RELAY,
CONSOLE_TEST_PCB_VARIANT,
CONSOLE_TEST_EEPROM,
CONSOLE_TEST_GENERIC,
CONSOLE_IDLE
}Menu_States_t;
@@ -66,14 +69,12 @@ typedef enum
DISPLAY_MENU_MAIN,
DISPLAY_MENU_POWER,
DISPLAY_MENU_DISPLAY,
DISPLAY_MENU_KEYPAD,
DISPLAY_MENU_ADC,
DISPLAY_MENU_DAC,
DISPLAY_MENU_INTERLOCK,
DISPLAY_MENU_SOLENOID,
DISPLAY_MENU_RELAY,
DISPLAY_MENU_PCB_VARIANT,
DISPLAY_MENU_EEPROM
DISPLAY_MENU_GENERIC
}Display_States_t;
typedef enum
@@ -100,37 +101,37 @@ static const char conInfHeader[] =
" \r\n";
static const char conInfMainMenu[] =
ANSI_TERMINAL_RESET
ANSI_TERMINAL_HOME
" MAIN MENU \r\n"
" Select one of the options: \r\n"
" [%c] Test Power \r\n"
" [%c] Test Display \r\n"
" [%c] Test Keypad \r\n"
" [%c] Test ADCs \r\n"
" [%c] Test DACs \r\n"
" [%c] Test Interlocks \r\n"
" [%c] Test Solenoids \r\n"
" [%c] Test relays \r\n"
" [%c] Test PCB variant \r\n"
" [%c] Test EEPROM \r\n"
" [%c] Test Keypad/EEPROM/PCB variant \r\n"
" \r\n";
enum
{
MENU_MAIN_POWER,
MENU_MAIN_DISPLAY,
MENU_MAIN_KEYPAD,
MENU_MAIN_ADC,
MENU_MAIN_DAC,
MENU_MAIN_INTERLOCK,
MENU_MAIN_SOLENOID,
MENU_MAIN_RELAY,
MENU_MAIN_PCB_VARIANT,
MENU_MAIN_EEPROM,
MENU_MAIN_GENERIC,
MENU_MAIN_LAST
};
static const char conTestPower[] =
ANSI_TERMINAL_RESET
ANSI_TERMINAL_HOME
" TEST POWER \r\n"
" \r\n"
" Control the 6V5 power supply \r\n"
@@ -150,6 +151,8 @@ enum
static const char conTestDisplay[] =
ANSI_TERMINAL_RESET
ANSI_TERMINAL_HOME
" TEST Display \r\n"
" \r\n"
" Test the display and backlight \r\n"
@@ -175,6 +178,8 @@ enum
static const char conTestADC[] =
ANSI_TERMINAL_RESET
ANSI_TERMINAL_HOME
" TEST ADC[0-2] \r\n"
" \r\n"
" Test the ADC channel 0-2 \r\n"
@@ -195,6 +200,8 @@ enum
};
static const char conTestDAC[] =
ANSI_TERMINAL_RESET
ANSI_TERMINAL_HOME
" TEST DAC[0-2] \r\n"
" \r\n"
" Test the DAC channel 0-2 \r\n"
@@ -232,6 +239,8 @@ enum
};
static const char conTestInterlock[] =
ANSI_TERMINAL_RESET
ANSI_TERMINAL_HOME
" TEST Interlock \r\n"
" \r\n"
" Test the interlock [1-2] \r\n"
@@ -250,6 +259,8 @@ enum
};
static const char conTestSolenoid[] =
ANSI_TERMINAL_RESET
ANSI_TERMINAL_HOME
" TEST Solenoid \r\n"
" \r\n"
" Test the interlock [1-2] \r\n"
@@ -266,6 +277,8 @@ enum
static const char conTestRelays[] =
ANSI_TERMINAL_RESET
ANSI_TERMINAL_HOME
" TEST Relays \r\n"
" \r\n"
" Test the relays [1-6] \r\n"
@@ -276,7 +289,6 @@ static const char conTestRelays[] =
" [%c] Toggle Relay 4 \r\n"
" [%c] Toggle Relay 5 \r\n"
" [%c] Toggle Relay 6 \r\n"
" [%c] Clear all relays \r\n"
" [%c] Back \r\n"
" \r\n";
@@ -288,12 +300,33 @@ enum
MENU_TEST_RELAYS_TOGGLE_4,
MENU_TEST_RELAYS_TOGGLE_5,
MENU_TEST_RELAYS_TOGGLE_6,
MENU_TEST_RELAYS_CLEAR_ALL,
MENU_TEST_RELAYS_BACK,
MENU_TEST_RELAYS_LAST
};
static const char conTestGeneric[] =
ANSI_TERMINAL_RESET
ANSI_TERMINAL_HOME
" TEST KEYPAD/EEPROM/PCB VARIANT \r\n"
" \r\n"
" Test the relays [1-6] \r\n"
" \r\n"
" [%c] Read keypad \r\n"
" [%c] Test EEPROM \r\n"
" [%c] Get PCB variant \r\n"
" [%c] Back \r\n"
" \r\n";
enum
{
MENU_TEST_GENERIC_KEYPAD,
MENU_TEST_GENERIC_EEPROM,
MENU_TEST_GENERIC_PCB_VARIANT,
MENU_TEST_GENERIC_BACK,
MENU_TEST_GENERIC_LAST
};
@@ -308,6 +341,7 @@ static void hwValidationMenuUpdate( struct HwValidationMenu* self );
static void hwValidationMenuDisplay(struct HwValidationMenu* self, Display_States_t display );
static ErrorStatus hwValidationMenuReceiveMessage(struct HwValidationMenu* self, uint8_t * pData, uint16_t numBytes );
static ErrorStatus hwValidationMenuSetDac(struct HwValidationMenu* self, struct MAX5715_DAC* dac, uint16_t value);
// -----------------------------------------------------------------------------
// Function definitions
@@ -323,6 +357,8 @@ ErrorStatus HwValidationMenu_construct(struct HwValidationMenu* self, struct IOD
{
self->ioDevice = ioDevice;
self->testItems = testItems;
self->taskPriority = taskPriority;
self->stackSize = stackSize;
@@ -417,7 +453,6 @@ void hwValidationMenuUpdate( struct HwValidationMenu* self )
static void hwValidationMenuSM(struct HwValidationMenu* self, Button_Pressed_t button )
{
static Menu_States_t menuState = CONSOLE_IDLE;
char outputBuffer[128];
int outputBufferLength = 0;
switch( menuState )
@@ -455,62 +490,50 @@ static void hwValidationMenuSM(struct HwValidationMenu* self, Button_Pressed_t b
if( self->menuItemSelected == MENU_MAIN_POWER )
{
self->menuItemSelected = 0;
menuState = CONSOLE_TEST_DISPLAY;
menuState = CONSOLE_TEST_POWER;
hwValidationMenuDisplay(self, DISPLAY_MENU_POWER );
}
else if( self->menuItemSelected == MENU_MAIN_POWER )
else if( self->menuItemSelected == MENU_MAIN_DISPLAY)
{
self->menuItemSelected = 0;
menuState = CONSOLE_TEST_DISPLAY;
hwValidationMenuDisplay(self, DISPLAY_MENU_DISPLAY );
}
else if( self->menuItemSelected == MENU_MAIN_DISPLAY )
{
self->menuItemSelected = 0;
menuState = CONSOLE_TEST_DISPLAY;
hwValidationMenuDisplay(self, MENU_MAIN_KEYPAD );
}
else if( self->menuItemSelected == MENU_MAIN_KEYPAD )
{
self->menuItemSelected = 0;
menuState = CONSOLE_TEST_DISPLAY;
hwValidationMenuDisplay(self, MENU_MAIN_ADC );
}
else if( self->menuItemSelected == MENU_MAIN_ADC)
{
self->menuItemSelected = 0;
menuState = CONSOLE_TEST_DISPLAY;
hwValidationMenuDisplay(self, DISPLAY_MENU_DAC );
menuState = CONSOLE_TEST_ADC;
hwValidationMenuDisplay(self, DISPLAY_MENU_ADC );
}
else if( self->menuItemSelected == MENU_MAIN_DAC )
{
self->menuItemSelected = 0;
menuState = CONSOLE_TEST_DISPLAY;
hwValidationMenuDisplay(self, DISPLAY_MENU_INTERLOCK );
menuState = CONSOLE_TEST_DAC;
hwValidationMenuDisplay(self, DISPLAY_MENU_DAC );
}
else if( self->menuItemSelected == MENU_MAIN_INTERLOCK )
{
self->menuItemSelected = 0;
menuState = CONSOLE_TEST_DISPLAY;
hwValidationMenuDisplay(self, DISPLAY_MENU_SOLENOID );
menuState = CONSOLE_TEST_INTERLOCK;
hwValidationMenuDisplay(self, DISPLAY_MENU_INTERLOCK );
}
else if( self->menuItemSelected == MENU_MAIN_SOLENOID )
{
self->menuItemSelected = 0;
menuState = CONSOLE_TEST_DISPLAY;
hwValidationMenuDisplay(self, DISPLAY_MENU_RELAY );
menuState = CONSOLE_TEST_SOLENOID;
hwValidationMenuDisplay(self, DISPLAY_MENU_SOLENOID );
}
else if( self->menuItemSelected == MENU_MAIN_RELAY )
{
self->menuItemSelected = 0;
menuState = CONSOLE_TEST_DISPLAY;
hwValidationMenuDisplay(self, DISPLAY_MENU_PCB_VARIANT );
menuState = CONSOLE_TEST_RELAY;
hwValidationMenuDisplay(self, DISPLAY_MENU_RELAY );
}
else if( self->menuItemSelected == MENU_MAIN_EEPROM )
else if( self->menuItemSelected == MENU_MAIN_GENERIC )
{
self->menuItemSelected = 0;
menuState = CONSOLE_TEST_DISPLAY;
hwValidationMenuDisplay(self, DISPLAY_MENU_EEPROM );
menuState = CONSOLE_TEST_GENERIC;
hwValidationMenuDisplay(self, DISPLAY_MENU_GENERIC );
}
}
@@ -544,26 +567,26 @@ static void hwValidationMenuSM(struct HwValidationMenu* self, Button_Pressed_t b
// Turn on 6V5 power ( enable active low )
if(GPIO_setValue(self->testItems->power6v5Enable, false) == SUCCESS)
{
outputBufferLength = sprintf(outputBuffer, "Power: Off\r\n");
outputBufferLength = sprintf(self->outputBuffer, "Power: Off\r\n");
}
else
{
outputBufferLength = sprintf(outputBuffer, "Power: Failure\r\n");
outputBufferLength = sprintf(self->outputBuffer, "Power: Failure\r\n");
}
IODevice_write(self->ioDevice, outputBuffer, outputBufferLength);
IODevice_write(self->ioDevice, self->outputBuffer, outputBufferLength);
}
else if (self->menuItemSelected == MENU_TEST_POWER_OFF )
{
//Turn on 6V5 power ( enable active low )
if( GPIO_setValue(self->testItems->power6v5Enable, true) == SUCCESS)
{
outputBufferLength = sprintf(outputBuffer, "Power: Off\r\n");
outputBufferLength = sprintf(self->outputBuffer, "Power: Off\r\n");
}
else
{
outputBufferLength = sprintf(outputBuffer, "Power: Failure\r\n");
outputBufferLength = sprintf(self->outputBuffer, "Power: Failure\r\n");
}
IODevice_write(self->ioDevice, outputBuffer, outputBufferLength);
IODevice_write(self->ioDevice, self->outputBuffer, outputBufferLength);
}
else if (self->menuItemSelected == MENU_TEST_POWER_BACK )
{
@@ -601,67 +624,67 @@ static void hwValidationMenuSM(struct HwValidationMenu* self, Button_Pressed_t b
if( self->menuItemSelected == MENU_TEST_DISPLAY_BL_10)
{
// Set display backlight to 10%
if( DisplayDevice_setBrightness(self->testItems->display, 10) == SUCCESS)
if( DisplayDevice_setBrightness(self->testItems->display, 1) == SUCCESS)
{
outputBufferLength = sprintf(outputBuffer, "Display: bl set to 10%%\r\n");
outputBufferLength = sprintf(self->outputBuffer, "Display: bl set to 10%%\r\n");
}
else
{
outputBufferLength = sprintf(outputBuffer, "Display: failed to set bl\r\n");
outputBufferLength = sprintf(self->outputBuffer, "Display: failed to set bl\r\n");
}
IODevice_write(self->ioDevice, outputBuffer, outputBufferLength);
IODevice_write(self->ioDevice, self->outputBuffer, outputBufferLength);
}
else if (self->menuItemSelected == MENU_TEST_DISPLAY_BL_50 )
{
// Set display backlight to 50%
if( DisplayDevice_setBrightness(self->testItems->display, 50) == SUCCESS)
if( DisplayDevice_setBrightness(self->testItems->display, 4) == SUCCESS)
{
outputBufferLength = sprintf(outputBuffer, "Display: bl set to 50%%\r\n");
outputBufferLength = sprintf(self->outputBuffer, "Display: bl set to 50%%\r\n");
}
else
{
outputBufferLength = sprintf(outputBuffer, "Display: failed to set bl\r\n");
outputBufferLength = sprintf(self->outputBuffer, "Display: failed to set bl\r\n");
}
IODevice_write(self->ioDevice, outputBuffer, outputBufferLength);
IODevice_write(self->ioDevice, self->outputBuffer, outputBufferLength);
}
else if (self->menuItemSelected == MENU_TEST_DISPLAY_BL_100 )
{
// Set display backlight to 100%
if( DisplayDevice_setBrightness(self->testItems->display, 100) == SUCCESS)
if( DisplayDevice_setBrightness(self->testItems->display, 8) == SUCCESS)
{
outputBufferLength = sprintf(outputBuffer, "Display: bl set to 100%%\r\n");
outputBufferLength = sprintf(self->outputBuffer, "Display: bl set to 100%%\r\n");
}
else
{
outputBufferLength = sprintf(outputBuffer, "Display: failed to set bl\r\n");
outputBufferLength = sprintf(self->outputBuffer, "Display: failed to set bl\r\n");
}
IODevice_write(self->ioDevice, outputBuffer, outputBufferLength);
IODevice_write(self->ioDevice, self->outputBuffer, outputBufferLength);
}
else if (self->menuItemSelected == MENU_TEST_DISPLAY_SHOW_TEXT )
{
const char buffer[] = "Display Test Text";
if( DisplayDevice_write(self->testItems->display, buffer, sizeof(buffer), 2, 2) == SUCCESS)
{
outputBufferLength = sprintf(outputBuffer, "Display: text written\r\n");
outputBufferLength = sprintf(self->outputBuffer, "Display: text written\r\n");
}
else
{
outputBufferLength = sprintf(outputBuffer, "Display: write failed\r\n");
outputBufferLength = sprintf(self->outputBuffer, "Display: write failed\r\n");
}
IODevice_write(self->ioDevice, outputBuffer, outputBufferLength);
IODevice_write(self->ioDevice, self->outputBuffer, outputBufferLength);
}
else if (self->menuItemSelected == MENU_TEST_DISPLAY_CLEAR_DISPLAY )
{
// Clear display
if( DisplayDevice_clear(self->testItems->display) == SUCCESS)
{
outputBufferLength = sprintf(outputBuffer, "Display: cleared\r\n");
outputBufferLength = sprintf(self->outputBuffer, "Display: cleared\r\n");
}
else
{
outputBufferLength = sprintf(outputBuffer, "Display: Clear failed\r\n");
outputBufferLength = sprintf(self->outputBuffer, "Display: Clear failed\r\n");
}
IODevice_write(self->ioDevice, outputBuffer, outputBufferLength);
IODevice_write(self->ioDevice, self->outputBuffer, outputBufferLength);
}
else if (self->menuItemSelected == MENU_TEST_DISPLAY_BACK )
{
@@ -674,10 +697,12 @@ static void hwValidationMenuSM(struct HwValidationMenu* self, Button_Pressed_t b
break;
case CONSOLE_TEST_KEYPAD:
// No sub items
// TODO: Implement test
break;
// case CONSOLE_TEST_KEYPAD:
// outputBufferLength = sprintf(self->outputBuffer, "[TODO] KEYPAD TEST\r\n");
// IODevice_write(self->ioDevice, self->outputBuffer, outputBufferLength);
// // No sub items
// // TODO: Implement test
// break;
case CONSOLE_TEST_ADC:
if( button == BUTTON_UP )
@@ -705,37 +730,37 @@ static void hwValidationMenuSM(struct HwValidationMenu* self, Button_Pressed_t b
{
if(ADCChannel_read(&self->testItems->internalADC->channel[0], &adcValue) == SUCCESS)
{
outputBufferLength = sprintf(outputBuffer, "ADC0 value:%d\r\n", adcValue);
outputBufferLength = sprintf(self->outputBuffer, "ADC0 value:%d\r\n", adcValue);
}
else
{
outputBufferLength = sprintf(outputBuffer, "ADC0: failed to read\r\n");
outputBufferLength = sprintf(self->outputBuffer, "ADC0: failed to read\r\n");
}
IODevice_write(self->ioDevice, outputBuffer, outputBufferLength);
IODevice_write(self->ioDevice, self->outputBuffer, outputBufferLength);
}
else if (self->menuItemSelected == MENU_TEST_ADC_CH_1 )
{
if(ADCChannel_read(&self->testItems->internalADC->channel[0], &adcValue) == SUCCESS)
if(ADCChannel_read(&self->testItems->internalADC->channel[1], &adcValue) == SUCCESS)
{
outputBufferLength = sprintf(outputBuffer, "ADC1 value:%d\r\n", adcValue);
outputBufferLength = sprintf(self->outputBuffer, "ADC1 value:%d\r\n", adcValue);
}
else
{
outputBufferLength = sprintf(outputBuffer, "ADC1: failed to read\r\n");
outputBufferLength = sprintf(self->outputBuffer, "ADC1: failed to read\r\n");
}
IODevice_write(self->ioDevice, outputBuffer, outputBufferLength);
IODevice_write(self->ioDevice, self->outputBuffer, outputBufferLength);
}
else if (self->menuItemSelected == MENU_TEST_ADC_CH_2 )
{
if(ADCChannel_read(&self->testItems->internalADC->channel[2], &adcValue) == SUCCESS)
{
outputBufferLength = sprintf(outputBuffer, "ADC2 value:%d\r\n", adcValue);
outputBufferLength = sprintf(self->outputBuffer, "ADC2 value:%d\r\n", adcValue);
}
else
{
outputBufferLength = sprintf(outputBuffer, "ADC2: failed to read\r\n");
outputBufferLength = sprintf(self->outputBuffer, "ADC2: failed to read\r\n");
}
IODevice_write(self->ioDevice, outputBuffer, outputBufferLength);
IODevice_write(self->ioDevice, self->outputBuffer, outputBufferLength);
}
else if (self->menuItemSelected == MENU_TEST_ADC_BACK )
{
@@ -751,73 +776,73 @@ static void hwValidationMenuSM(struct HwValidationMenu* self, Button_Pressed_t b
if( button == BUTTON_UP )
{
if( self->menuItemSelected == 0 )
self->menuItemSelected = (MENU_TEST_ADC_LAST - 1);
self->menuItemSelected = (MENU_TEST_DAC_LAST - 1);
else
self->menuItemSelected--;
hwValidationMenuDisplay(self, DISPLAY_MENU_ADC );
hwValidationMenuDisplay(self, DISPLAY_MENU_DAC );
}
else if( button == BUTTON_DOWN )
{
if( self->menuItemSelected == (MENU_TEST_ADC_LAST - 1) )
if( self->menuItemSelected == (MENU_TEST_DAC_LAST - 1) )
self->menuItemSelected = 0;
else
self->menuItemSelected++;
hwValidationMenuDisplay(self, DISPLAY_MENU_ADC );
hwValidationMenuDisplay(self, DISPLAY_MENU_DAC );
}
else if( button == BUTTON_ENTER )
{
// DAC 0
if( self->menuItemSelected == MENU_TEST_DAC_CH_0_0V0)
{
hwValidationMenuSetDac(self, &self->testItems->externalDAC->dac[0], 0);
}
else if (self->menuItemSelected == MENU_TEST_DAC_CH_0_1V25 )
{
//TODO: Implement test
hwValidationMenuSetDac(self, &self->testItems->externalDAC->dac[0], HW_VALIDATION_MENU_DAC_MAX_VALUE / 4);
}
else if (self->menuItemSelected == MENU_TEST_DAC_CH_0_2V5 )
{
//TODO: Implement test
hwValidationMenuSetDac(self, &self->testItems->externalDAC->dac[0], HW_VALIDATION_MENU_DAC_MAX_VALUE / 2);
}
else if (self->menuItemSelected == MENU_TEST_DAC_CH_0_5V0 )
{
//TODO: Implement test
hwValidationMenuSetDac(self, &self->testItems->externalDAC->dac[0], HW_VALIDATION_MENU_DAC_MAX_VALUE);
}
// DAC 1
else if( self->menuItemSelected == MENU_TEST_DAC_CH_1_0V0)
{
//TODO: Implement test
hwValidationMenuSetDac(self, &self->testItems->externalDAC->dac[1], 0);
}
else if (self->menuItemSelected == MENU_TEST_DAC_CH_1_1V25 )
{
//TODO: Implement test
hwValidationMenuSetDac(self, &self->testItems->externalDAC->dac[1], HW_VALIDATION_MENU_DAC_MAX_VALUE / 4);
}
else if (self->menuItemSelected == MENU_TEST_DAC_CH_1_2V5 )
{
//TODO: Implement test
hwValidationMenuSetDac(self, &self->testItems->externalDAC->dac[1], HW_VALIDATION_MENU_DAC_MAX_VALUE / 2);
}
else if (self->menuItemSelected == MENU_TEST_DAC_CH_1_5V0 )
{
//TODO: Implement test
hwValidationMenuSetDac(self, &self->testItems->externalDAC->dac[1], HW_VALIDATION_MENU_DAC_MAX_VALUE);
}
// DAC 2
else if( self->menuItemSelected == MENU_TEST_DAC_CH_2_0V0)
{
//TODO: Implement test
hwValidationMenuSetDac(self, &self->testItems->externalDAC->dac[2], 0);
}
else if (self->menuItemSelected == MENU_TEST_DAC_CH_2_1V25 )
{
//TODO: Implement test
hwValidationMenuSetDac(self, &self->testItems->externalDAC->dac[2], HW_VALIDATION_MENU_DAC_MAX_VALUE / 4);
}
else if (self->menuItemSelected == MENU_TEST_DAC_CH_2_2V5 )
{
//TODO: Implement test
hwValidationMenuSetDac(self, &self->testItems->externalDAC->dac[2], HW_VALIDATION_MENU_DAC_MAX_VALUE / 2);
}
else if (self->menuItemSelected == MENU_TEST_DAC_CH_2_5V0 )
{
//TODO: Implement test
hwValidationMenuSetDac(self, &self->testItems->externalDAC->dac[2], HW_VALIDATION_MENU_DAC_MAX_VALUE);
}
else if (self->menuItemSelected == MENU_TEST_DAC_BACK)
{
@@ -854,24 +879,24 @@ static void hwValidationMenuSM(struct HwValidationMenu* self, Button_Pressed_t b
if( self->menuItemSelected == MENU_TEST_INTERLOCK_1)
{
if( GPIO_getValue(self->testItems->interlock1, &value) == SUCCESS ){
outputBufferLength = sprintf(outputBuffer, "Interlock: %d\r\n", value);
outputBufferLength = sprintf(self->outputBuffer, "Interlock: %d\r\n", value);
}
else
{
outputBufferLength = sprintf(outputBuffer, "Interlock: Failure\r\n");
outputBufferLength = sprintf(self->outputBuffer, "Interlock: Failure\r\n");
}
IODevice_write(self->ioDevice, outputBuffer, outputBufferLength);
IODevice_write(self->ioDevice, self->outputBuffer, outputBufferLength);
}
else if (self->menuItemSelected == MENU_TEST_INTERLOCK_2 )
{
if( GPIO_getValue(self->testItems->interlock2, &value) == SUCCESS ){
outputBufferLength = sprintf(outputBuffer, "Interlock: %d\r\n", value);
outputBufferLength = sprintf(self->outputBuffer, "Interlock: %d\r\n", value);
}
else
{
outputBufferLength = sprintf(outputBuffer, "Interlock: Failure\r\n");
outputBufferLength = sprintf(self->outputBuffer, "Interlock: Failure\r\n");
}
IODevice_write(self->ioDevice, outputBuffer, outputBufferLength);
IODevice_write(self->ioDevice, self->outputBuffer, outputBufferLength);
}
else if (self->menuItemSelected == MENU_TEST_INTERLOCK_BACK )
{
@@ -913,18 +938,18 @@ static void hwValidationMenuSM(struct HwValidationMenu* self, Button_Pressed_t b
value = !value;
if( GPIO_setValue(self->testItems->interlock1, value) == SUCCESS)
{
outputBufferLength = sprintf(outputBuffer, "Solenoid: Toggled\r\n");
outputBufferLength = sprintf(self->outputBuffer, "Solenoid: Toggled\r\n");
}
else
{
outputBufferLength = sprintf(outputBuffer, "Solenoid: Failed to set value\r\n");
outputBufferLength = sprintf(self->outputBuffer, "Solenoid: Failed to set value\r\n");
}
}
else
{
outputBufferLength = sprintf(outputBuffer, "Solenoid: Failed to get value\r\n");
outputBufferLength = sprintf(self->outputBuffer, "Solenoid: Failed to get value\r\n");
}
IODevice_write(self->ioDevice, outputBuffer, outputBufferLength);
IODevice_write(self->ioDevice, self->outputBuffer, outputBufferLength);
}
else if (self->menuItemSelected == MENU_TEST_SOLENOID_BACK )
{
@@ -959,33 +984,59 @@ static void hwValidationMenuSM(struct HwValidationMenu* self, Button_Pressed_t b
{
struct Gpio* relay = NULL;
bool value = false;
if( (self->menuItemSelected >= MENU_TEST_RELAYS_TOGGLE_1) && (self->menuItemSelected <= MENU_TEST_RELAYS_TOGGLE_6) )
{
switch(self->menuItemSelected)
{
case MENU_TEST_RELAYS_TOGGLE_1:
relay = self->testItems->mcp0Relay;
break;
case MENU_TEST_RELAYS_TOGGLE_2:
relay = self->testItems->mcp1Relay;
break;
case MENU_TEST_RELAYS_TOGGLE_3:
relay = self->testItems->mcp2Relay;
break;
case MENU_TEST_RELAYS_TOGGLE_4:
relay = self->testItems->cat0Relay;
break;
case MENU_TEST_RELAYS_TOGGLE_5:
relay = self->testItems->cat1Relay;
break;
case MENU_TEST_RELAYS_TOGGLE_6:
relay = self->testItems->cat1Relay;
break;
default:
relay = NULL;
break;
}
if( GPIO_getValue(relay, &value) == SUCCESS )
{
value = !value;
if(GPIO_setValue(relay, value) == SUCCESS)
{
outputBufferLength = sprintf(self->outputBuffer, "Relay: set value to: %d\r\n", value);
}
else
{
outputBufferLength = sprintf(self->outputBuffer, "Relay: Failed to set value\r\n");
}
}
else
{
outputBufferLength = sprintf(self->outputBuffer, "Relay: Failed to get current value\r\n");
}
else if( self->menuItemSelected == MENU_TEST_RELAYS_CLEAR_ALL)
{
//TODO: Implement test
IODevice_write(self->ioDevice, self->outputBuffer, outputBufferLength);
}
else if (self->menuItemSelected == MENU_TEST_RELAYS_BACK )
{
@@ -997,14 +1048,74 @@ static void hwValidationMenuSM(struct HwValidationMenu* self, Button_Pressed_t b
}
break;
case CONSOLE_TEST_PCB_VARIANT:
// No sub test
//TODO: implement test
break;
// case CONSOLE_TEST_PCB_VARIANT:
case CONSOLE_TEST_EEPROM:
// No sub test
//TODO: implement test
// if(self->testItems->pcba)
// {
// const struct Pcba* pcba = self->testItems->pcba;
// outputBufferLength = sprintf(self->outputBuffer, "PCBA: %d - %s\r\n", (int)pcba->pcba, pcba->name);
// }
// IODevice_write(self->ioDevice, self->outputBuffer, outputBufferLength);
// break;
// case CONSOLE_TEST_EEPROM:
// // No sub test
// //TODO: implement test
// outputBufferLength = sprintf(self->outputBuffer, "[TODO] EEPROM TEST\r\n");
// IODevice_write(self->ioDevice, self->outputBuffer, outputBufferLength);
// break;
case CONSOLE_TEST_GENERIC:
if( button == BUTTON_UP )
{
if( self->menuItemSelected == 0 )
self->menuItemSelected = (MENU_TEST_GENERIC_LAST- 1);
else
self->menuItemSelected--;
hwValidationMenuDisplay(self, DISPLAY_MENU_GENERIC );
}
else if( button == BUTTON_DOWN )
{
if( self->menuItemSelected == (MENU_TEST_GENERIC_LAST - 1) )
self->menuItemSelected = 0;
else
self->menuItemSelected++;
hwValidationMenuDisplay(self, DISPLAY_MENU_GENERIC );
}
else if( button == BUTTON_ENTER )
{
bool value = false;
if( self->menuItemSelected == MENU_TEST_GENERIC_KEYPAD)
{
outputBufferLength = sprintf(self->outputBuffer, "[TODO] KEYPAD TEST\r\n");
IODevice_write(self->ioDevice, self->outputBuffer, outputBufferLength);
}
else if( self->menuItemSelected == MENU_TEST_GENERIC_EEPROM)
{
outputBufferLength = sprintf(self->outputBuffer, "[TODO] EEPROM TEST\r\n");
IODevice_write(self->ioDevice, self->outputBuffer, outputBufferLength);
}
else if( self->menuItemSelected == MENU_TEST_GENERIC_PCB_VARIANT)
{
if(self->testItems->pcba)
{
const struct Pcba* pcba = self->testItems->pcba;
outputBufferLength = sprintf(self->outputBuffer, "PCBA: %d - %s\r\n", (int)pcba->pcba, pcba->name);
}
IODevice_write(self->ioDevice, self->outputBuffer, outputBufferLength);
}
else if (self->menuItemSelected == MENU_TEST_GENERIC_BACK )
{
// Back to main menu
self->menuItemSelected = 0;
menuState = CONSOLE_MAIN_MENU;
hwValidationMenuDisplay(self, DISPLAY_MENU_MAIN );
}
}
break;
default:
@@ -1037,14 +1148,12 @@ static void hwValidationMenuDisplay(struct HwValidationMenu* self, Display_State
menu_length = sprintf( menuBuffer, conInfMainMenu,
menuItems[MENU_MAIN_POWER],
menuItems[MENU_MAIN_DISPLAY],
menuItems[MENU_MAIN_KEYPAD],
menuItems[MENU_MAIN_ADC],
menuItems[MENU_MAIN_DAC],
menuItems[MENU_MAIN_INTERLOCK],
menuItems[MENU_MAIN_SOLENOID],
menuItems[MENU_MAIN_RELAY],
menuItems[MENU_MAIN_PCB_VARIANT],
menuItems[MENU_MAIN_EEPROM]
menuItems[MENU_MAIN_GENERIC]
);
// Write message to debout interface
@@ -1094,9 +1203,6 @@ static void hwValidationMenuDisplay(struct HwValidationMenu* self, Display_State
break;
//case DISPLAY_MENU_KEYPAD:
//break;
case DISPLAY_MENU_ADC:
// Put an asterisk (*) at the selected item in the menu
for( menuIndex = 0; menuIndex < MENU_TEST_ADC_LAST; menuIndex++ )
@@ -1201,7 +1307,6 @@ static void hwValidationMenuDisplay(struct HwValidationMenu* self, Display_State
menuItems[MENU_TEST_RELAYS_TOGGLE_4],
menuItems[MENU_TEST_RELAYS_TOGGLE_5],
menuItems[MENU_TEST_RELAYS_TOGGLE_6],
menuItems[MENU_TEST_RELAYS_CLEAR_ALL],
menuItems[MENU_TEST_RELAYS_BACK]
);
@@ -1209,11 +1314,36 @@ static void hwValidationMenuDisplay(struct HwValidationMenu* self, Display_State
IODevice_write(self->ioDevice, relayMenuBuffer, menu_length);
break;
//case DISPLAY_MENU_PCB_VARIANT:
//break;
//case DISPLAY_MENU_EEPROM:
//break;
// case DISPLAY_MENU_KEYPAD:
// break;
// case DISPLAY_MENU_PCB_VARIANT:
// break;
// case DISPLAY_MENU_EEPROM:
// break;
case DISPLAY_MENU_GENERIC:
// Put an asterisk (*) at the selected item in the menu
for( menuIndex = 0; menuIndex < MENU_TEST_GENERIC_LAST; menuIndex++ )
{
MENU_DRAW_SELECTED(menuIndex);
}
// Fill buffer with menu items
char genericMenuBuffer[ sizeof( conTestGeneric) ];
menu_length = sprintf( genericMenuBuffer, conTestGeneric,
menuItems[MENU_TEST_GENERIC_KEYPAD],
menuItems[MENU_TEST_GENERIC_EEPROM],
menuItems[MENU_TEST_GENERIC_PCB_VARIANT],
menuItems[MENU_TEST_GENERIC_BACK]
);
// Write message to debout interface
IODevice_write(self->ioDevice, genericMenuBuffer, menu_length);
break;
default:
//Do nothing
@@ -1241,7 +1371,30 @@ static ErrorStatus hwValidationMenuReceiveMessage(struct HwValidationMenu* self,
returnValue = ERROR;
break;
}
vTaskDelay(1);
}
return returnValue;
}
static ErrorStatus hwValidationMenuSetDac(struct HwValidationMenu* self, struct MAX5715_DAC* dac, uint16_t value)
{
int outputBufferLength = 0;
ErrorStatus returnValue = SUCCESS;
if( MAX5715Channel_setValue(dac, value) == SUCCESS)
{
outputBufferLength = sprintf(self->outputBuffer, "DAC: Set to %d\r\n", value);
}
else
{
outputBufferLength = sprintf(self->outputBuffer, "DAC: Failed to set\r\n");
returnValue = ERROR;
}
IODevice_write(self->ioDevice, self->outputBuffer, outputBufferLength);
return returnValue;
}