save some CPU ticks if console is not ready (#730)

This commit is contained in:
dron0gus 2019-04-02 11:19:05 +03:00 committed by rusefi
parent 9d95127260
commit b0f0eec199
1 changed files with 9 additions and 4 deletions

View File

@ -198,6 +198,12 @@ static char header[16];
* this method should invoked on the main thread only * this method should invoked on the main thread only
*/ */
void printWithLength(char *line) { void printWithLength(char *line) {
int len;
char *p;
if (!isCommandLineConsoleReady())
return;
/** /**
* this is my way to detect serial port transmission errors * this is my way to detect serial port transmission errors
* following code is functionally identical to * following code is functionally identical to
@ -209,9 +215,10 @@ void printWithLength(char *line) {
*/ */
// todo: if needed we can probably know line length without calculating it, but seems like this is done not // todo: if needed we can probably know line length without calculating it, but seems like this is done not
// under a lock so not a problem? // under a lock so not a problem?
int len = efiStrlen(line);
len = efiStrlen(line);
strcpy(header, "line:"); strcpy(header, "line:");
char *p = header + efiStrlen(header); p = header + efiStrlen(header);
p = itoa10(p, len); p = itoa10(p, len);
*p++ = ':'; *p++ = ':';
*p++ = '\0'; *p++ = '\0';
@ -221,8 +228,6 @@ void printWithLength(char *line) {
*p++ = '\r'; *p++ = '\r';
*p++ = '\n'; *p++ = '\n';
if (!isCommandLineConsoleReady())
return;
consoleOutputBuffer((const uint8_t *) header, strlen(header)); consoleOutputBuffer((const uint8_t *) header, strlen(header));
consoleOutputBuffer((const uint8_t *) line, p - line); consoleOutputBuffer((const uint8_t *) line, p - line);
} }