chore: rm code of unused versions

This commit is contained in:
surtur 2020-12-11 20:41:28 +01:00
parent a59d8db636
commit fd26be83e5
Signed by: wanderer
GPG Key ID: 19CE1EC1D9E0486D

220
main.cpp

@ -19,14 +19,8 @@ using namespace std;
//#include "drv_systick.h" //#include "drv_systick.h"
#include <stdbool.h> // kvuli typu bool #include <stdbool.h> // kvuli typu bool
// Vyber verze kodu.
// 1. stav blikani a nesviti; kontrola tlacitka vzdy az po bliknuti vsech LED.
// 2. kontrola tlacitka po bliknuti kazde LED.
// 3. nepouziva se delay - polling casu.
// 4. rozdeleni kodu na ulohy - tasky.
#define VERSION 1
// Spolecne definice
#define SWITCH_PRESSED (1) #define SWITCH_PRESSED (1)
#define SWITCH_NOT_PRESSED (0) #define SWITCH_NOT_PRESSED (0)
@ -42,211 +36,6 @@ int switch1_read(void);
void delay_debounce(void); void delay_debounce(void);
void LED_control(bool d1, bool d2, bool d3); void LED_control(bool d1, bool d2, bool d3);
///////////////////////////////////////////////////////////////////////////////////////
// Kod programu v nekolika verzich.
// Aktivni verze se vybere pomoci #define VERSION nahore.
#if VERSION == 1
// Verze 1
// Odezva je spatna, protoze stav tlacitka se testuje az po bliknuti vsech LED.
// Pri uvolneni tlacitka program zareaguje az na konci celeho efektu, kdyz zhasne
// treti LED a prvni uz se nerozsviti.
// Stavy programu
#define ST_EFFECT 1
#define ST_OFF 2
int state = ST_OFF;
int main(void) {
// inicializace ovladace pinu a delay
init();
while (1) {
if (switch1_read() == SWITCH_PRESSED)
state = ST_EFFECT;
else
state = ST_OFF;
switch (state) {
case ST_OFF:
LED_control(false, false, false);
break;
case ST_EFFECT:
LED_control(true, false, false);
SYSTICK_delay_ms(BLINK_DELAY);
LED_control(false, true, false);
SYSTICK_delay_ms(BLINK_DELAY);
LED_control(false, false, true);
SYSTICK_delay_ms(BLINK_DELAY);
break;
} // switch
} // while
/* Never leave main */
return 0;
}
//////////////////////////////////////////////////////////////////////////////////
#elif VERSION == 2
// Verze 2
// Odezva je vylepsena tim, ze kontrola tlacitka probiha po bliknuti kazde LED.
// Po uvolneni tlacitka pak LED sice "dosviti" svou dobu svitu,
// ale dalsi LED uz se nerozsviti.
// Stavy programu
#define ST_LED1_ON 1
#define ST_LED2_ON 2
#define ST_LED3_ON 3
#define ST_OFF 4
int state = ST_OFF;
int main(void) {
// inicializace ovladace pinu a delay
init();
while (1) {
if (switch1_read() == SWITCH_PRESSED) {
// Jen pokud je stisknuto tlacitko a soucasny stav je vypnuto,
// prejdeme na stav rozsviceni prvni LED, jinak uz nektera LED
// sviti a stavy se meni ve switch.
if ( state == ST_OFF )
state = ST_LED1_ON;
}
else
state = ST_OFF;
switch (state) {
case ST_OFF:
LED_control(false, false, false);
break;
case ST_LED1_ON:
// Bliknout LED1 a prejit na stav dalsi LED2
LED_control(true, false, false);
SYSTICK_delay_ms(BLINK_DELAY);
state = ST_LED2_ON;
break;
case ST_LED2_ON:
LED_control(false, true, false);
SYSTICK_delay_ms(BLINK_DELAY);
state = ST_LED3_ON;
break;
case ST_LED3_ON:
LED_control(false, false, true);
SYSTICK_delay_ms(BLINK_DELAY);
state = ST_LED1_ON;
break;
} // switch
} // while
/* Never leave main */
return 0;
}
//////////////////////////////////////////////////////////////////////////////////
#elif VERSION == 3
// Verze 3
// Odezva je vylepsena tim, ze se nepouziva cekani (busy waiting) ale zjistuje se
// zda uz ubehl potrebny cas - jde o tzv. polling - dotazovani.
// Diky tomu LED zhasne okamzite po uvolneni tlacitka.
// Stavy programu
#define ST_LED1_ON 1
#define ST_LED2_ON 2
#define ST_LED3_ON 3
#define ST_OFF 4
#define ST_LED1_WAIT 5
#define ST_LED2_WAIT 6
#define ST_LED3_WAIT 7
int state = ST_OFF;
int main(void) {
// inicializace ovladace pinu a delay
init();
uint32_t waitStart; // cas, kdy se rozvitila LED
uint32_t currentTime; // aktualni cas, pomocna promenna
while (1) {
if (switch1_read() == SWITCH_PRESSED) {
// Jen pokud je stisknuto tlacitko a soucasny stav je vypnuto,
// prejdeme na stav rozsviceni prvni LED, jinak uz nektera LED
// sviti a stavy se meni ve switch.
if ( state == ST_OFF )
state = ST_LED1_ON;
}
else
state = ST_OFF;
switch (state) {
case ST_OFF:
LED_control(false, false, false);
break;
case ST_LED1_ON:
// Rozsvitit LED, ulozit aktualni cas a prejit do stavu cekani na
// uplynuti casu svitu teto LED.
LED_control(true, false, false);
waitStart = SYSTICK_millis();
state = ST_LED1_WAIT;
break;
case ST_LED1_WAIT:
// Kontrola jestli uz ubehlo dost casu abychom rozsvitili dalsi LED
// a pokud ano, prechod na dalsi stav
currentTime = SYSTICK_millis();
if ( currentTime - waitStart >= BLINK_DELAY )
state = ST_LED2_ON;
break;
case ST_LED2_ON:
LED_control(false, true, false);
waitStart = SYSTICK_millis();
state = ST_LED2_WAIT;
break;
case ST_LED2_WAIT:
currentTime = SYSTICK_millis();
if ( currentTime - waitStart >= BLINK_DELAY )
state = ST_LED3_ON;
break;
case ST_LED3_ON:
LED_control(false, false, true);
waitStart = SYSTICK_millis();
state = ST_LED3_WAIT;
break;
case ST_LED3_WAIT:
currentTime = SYSTICK_millis();
if ( currentTime - waitStart >= BLINK_DELAY )
state = ST_LED1_ON;
break;
} // switch
} // while
/* Never leave main */
return 0;
}
//////////////////////////////////////////////////////////////////////////////////
#elif VERSION == 4
// Verze 4 // Verze 4
// Program je vylepsen rozdelenim na jednotlive ulohy - tasky. // Program je vylepsen rozdelenim na jednotlive ulohy - tasky.
// Z pohledu odezvy je chovani stejne jako u verze 3, ale struktura programu je // Z pohledu odezvy je chovani stejne jako u verze 3, ale struktura programu je
@ -409,12 +198,7 @@ void TaskGreenLed() {
} }
} }
// Pomocne funkce
//////////////////////////////////////////////////////////////////////////////////
#endif /* VERSION == 4*/
/////////////////////////////////////////////////////////
// Pomocne funkce spolecne pro vsechny verze
// inicializace // inicializace
void init() void init()