add return enum for update function

This commit is contained in:
interfisch 2023-02-11 17:31:49 +01:00
parent 5b344a6b4e
commit 9ff297bd6c
3 changed files with 15 additions and 10 deletions

View File

@ -12,6 +12,13 @@
#define UPDATE_INTERVAL 5 //TODO: remove this #define UPDATE_INTERVAL 5 //TODO: remove this
enum UpdateReturn {
wait,
finished,
nochange,
updating
};
class Image class Image
{ {
@ -39,7 +46,7 @@ public:
Image(); Image();
void init(); void init();
bool updateByColumn(bool direction, bool clearFirst, bool optimizeClear, bool optimizeSet); UpdateReturn updateByColumn(bool direction, bool clearFirst, bool optimizeClear, bool optimizeSet);
uint8_t getW(); //returns Columns uint8_t getW(); //returns Columns
uint8_t getH(); //returns Rows uint8_t getH(); //returns Rows

View File

@ -56,15 +56,15 @@ void Image::setBuffer_random(uint8_t randomness)
} }
bool Image::updateByColumn(bool direction, bool clearFirst, bool optimizeClear, bool optimizeSet) UpdateReturn Image::updateByColumn(bool direction, bool clearFirst, bool optimizeClear, bool optimizeSet)
{ {
if (!flag_updating) { if (!flag_updating) {
return 1; //finished return nochange; //finished
} }
if (millis()-lastUpdateMillis<updateInterval){ //too early if (millis()-lastUpdateMillis<updateInterval){ //too early
return 0; //not finished return wait; //not finished
} }
@ -97,9 +97,9 @@ bool Image::updateByColumn(bool direction, bool clearFirst, bool optimizeClear,
if (update_counter/2>=getW()) { //reached last column if (update_counter/2>=getW()) { //reached last column
flag_updating=false; flag_updating=false;
update_counter=0; update_counter=0;
return 1; //finished return finished; //finished
} }
return 0; //not finished return updating; //not finished
} }

View File

@ -42,16 +42,14 @@ void loop() {
} }
static bool last_result; UpdateReturn result=flip.updateByColumn(0,0,0,0); //0=not finished, 1=finished
bool result=flip.updateByColumn(0,0,0,0); //0=not finished, 1=finished if (result == finished) //just finished
if (result && !last_result) //just finished
{ {
unsigned long duration=millis()-last_change; unsigned long duration=millis()-last_change;
Serial.print("Last Change took "); Serial.print(duration); Serial.println(" ms"); Serial.print("Last Change took "); Serial.print(duration); Serial.println(" ms");
Serial.print("Update max took "); Serial.print(flip.updateDuration); Serial.println(" ms"); Serial.print("Update max took "); Serial.print(flip.updateDuration); Serial.println(" ms");
flip.updateDuration=0; //reset flip.updateDuration=0; //reset
} }
last_result=result;
/* /*