From 0e69a815707251cb69e344622592261d9a403011 Mon Sep 17 00:00:00 2001 From: swo Date: Fri, 6 Oct 2017 13:37:21 +0000 Subject: [PATCH] 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 --- .../0 - Code/hsb-mrts/inc/hwValidationMenu.h | 4 +- .../0 - Code/hsb-mrts/src/hwValidationMenu.c | 411 ++++++++++++------ 2 files changed, 285 insertions(+), 130 deletions(-) diff --git a/S - Software/0 - HSB MRTS Kathode-MCP/3 - Implementation/0 - Code/hsb-mrts/inc/hwValidationMenu.h b/S - Software/0 - HSB MRTS Kathode-MCP/3 - Implementation/0 - Code/hsb-mrts/inc/hwValidationMenu.h index d9e9374..a3f86e2 100644 --- a/S - Software/0 - HSB MRTS Kathode-MCP/3 - Implementation/0 - Code/hsb-mrts/inc/hwValidationMenu.h +++ b/S - Software/0 - HSB MRTS Kathode-MCP/3 - Implementation/0 - Code/hsb-mrts/inc/hwValidationMenu.h @@ -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]; }; diff --git a/S - Software/0 - HSB MRTS Kathode-MCP/3 - Implementation/0 - Code/hsb-mrts/src/hwValidationMenu.c b/S - Software/0 - HSB MRTS Kathode-MCP/3 - Implementation/0 - Code/hsb-mrts/src/hwValidationMenu.c index b2cdec4..d5dbf51 100644 --- a/S - Software/0 - HSB MRTS Kathode-MCP/3 - Implementation/0 - Code/hsb-mrts/src/hwValidationMenu.c +++ b/S - Software/0 - HSB MRTS Kathode-MCP/3 - Implementation/0 - Code/hsb-mrts/src/hwValidationMenu.c @@ -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; } - } - else if( self->menuItemSelected == MENU_TEST_RELAYS_CLEAR_ALL) - { - //TODO: Implement test + + 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"); + } + + 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 @@ -1240,8 +1370,31 @@ 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; + +} \ No newline at end of file