diff --git a/firmware/B15F.elf b/firmware/B15F.elf index b96caae..e8fd455 100755 Binary files a/firmware/B15F.elf and b/firmware/B15F.elf differ diff --git a/firmware/main.cpp b/firmware/main.cpp index 01701f7..6d9c5be 100644 --- a/firmware/main.cpp +++ b/firmware/main.cpp @@ -6,8 +6,7 @@ #include "selftest.h" #include "requests.h" - -void initAll() +int main() { // deactivate WDT ENTIRELY! MCUSR &= ~_BV(WDRF); @@ -28,84 +27,10 @@ void initAll() usart.init(); usart.initRX(); -} - -void handleRequest() -{ - const uint8_t req = usart.readByte(); - wdt_reset(); - switch(req) - { - case RQ_DISC: - break; - - case RQ_TEST: - rqTestConnection(); - break; - - case RQ_INFO: - rqBoardInfo(); - break; - - case RQ_INT: - rqTestIntConv(); - break; - - case RQ_ST: - rqSelfTest(); - break; - - case RQ_BA0: - rqDigitalWrite0(); - break; - - case RQ_BA1: - rqDigitalWrite1(); - break; - - case RQ_BE0: - rqDigitalRead0(); - break; - - case RQ_BE1: - rqDigitalRead1(); - break; - - case RQ_DSW: - rqReadDipSwitch(); - break; - - case RQ_AA0: - rqAnalogWrite0(); - break; - - case RQ_AA1: - rqAnalogWrite1(); - break; - - case RQ_ADC: - rqAnalogRead(); - break; - - case RQ_ADC_DAC_STROKE: - rqAdcDacStroke(); - break; - - default: - break; - } - usart.initRX(); - - wdt_disable(); -} - -int main() -{ - initAll(); - + // Hauptschleife, Verarbeitung der Requests while(1) { if(nextRequest) diff --git a/firmware/requests.cpp b/firmware/requests.cpp index 93c2e4f..8d068ff 100644 --- a/firmware/requests.cpp +++ b/firmware/requests.cpp @@ -1,5 +1,77 @@ #include "requests.h" +void handleRequest() +{ + const uint8_t req = usart.readByte(); + + wdt_reset(); + + switch(req) + { + case RQ_DISC: + break; + + case RQ_TEST: + rqTestConnection(); + break; + + case RQ_INFO: + rqBoardInfo(); + break; + + case RQ_INT: + rqTestIntConv(); + break; + + case RQ_ST: + rqSelfTest(); + break; + + case RQ_BA0: + rqDigitalWrite0(); + break; + + case RQ_BA1: + rqDigitalWrite1(); + break; + + case RQ_BE0: + rqDigitalRead0(); + break; + + case RQ_BE1: + rqDigitalRead1(); + break; + + case RQ_DSW: + rqReadDipSwitch(); + break; + + case RQ_AA0: + rqAnalogWrite0(); + break; + + case RQ_AA1: + rqAnalogWrite1(); + break; + + case RQ_ADC: + rqAnalogRead(); + break; + + case RQ_ADC_DAC_STROKE: + rqAdcDacStroke(); + break; + + default: + break; + } + + usart.initRX(); + + wdt_disable(); +} + void rqTestConnection() { usart.initTX(); diff --git a/firmware/requests.h b/firmware/requests.h index a59f95e..3910388 100644 --- a/firmware/requests.h +++ b/firmware/requests.h @@ -38,6 +38,12 @@ uint8_t const rq_len[] = { /* RQ_ADC_DAC_STROKE */ 9 }; +/** + * Hauptfunktion für die Verarbeitung einer neuen empfangen Request + */ +void handleRequest(void); + +// spezifische Funktion für jede Request void rqTestConnection(void); void rqBoardInfo(void); void rqTestIntConv(void);