Optimise autostart_stilltocheck variable

Make the variable static within the checkautostart function.
When the function is called for the first time autostart_stilltocheck
is set to true and will continue to live after the function is exited.
After it is set to false within checkautostart() it will continue to be
false forever.

Using static this way is more efficient than using a global variable

Saves 6 bytes of flash and 1 byte of SRAM
This commit is contained in:
Guðni Már Gilbert 2022-04-09 11:10:55 +00:00
parent 9bb8797b60
commit 15b41e7348
2 changed files with 4 additions and 4 deletions

View File

@ -30,7 +30,6 @@ CardReader::CardReader()
memset(workDirParents, 0, sizeof(workDirParents));
presort_flag = false;
autostart_stilltocheck=true; //the SD start is delayed, because otherwise the serial cannot answer fast enough to make contact with the host software.
lastnr=0;
//power to SD reader
#if SDPOWER > -1
@ -614,6 +613,9 @@ void CardReader::write_command_no_newline(char *buf)
void CardReader::checkautostart(bool force)
{
// The SD start is delayed because otherwise the serial cannot answer
// fast enough to make contact with the host software.
static bool autostart_stilltocheck = true;
if(!force)
{
if(!autostart_stilltocheck)
@ -621,7 +623,7 @@ void CardReader::checkautostart(bool force)
if(autostart_atmillis.expired(5000))
return;
}
autostart_stilltocheck=false;
autostart_stilltocheck = false;
if(!cardOK)
{
initsd();

View File

@ -133,8 +133,6 @@ private:
ShortTimer autostart_atmillis;
uint32_t sdpos ;
bool autostart_stilltocheck; //the sd start is delayed, because otherwise the serial cannot answer fast enought to make contact with the hostsoftware.
uint16_t nrFiles; //counter for the files in the current directory and recycled as position counter for getting the nrFiles'th name in the directory.
bool diveSubfolder (const char *&fileName);