void xSerialPrintf_P(PGM_P format, ...) { va_list arg; va_start(arg, format); vsnprintf_P((char *)serialWorkBuffer, portSERIAL_BUFFER, format, arg); xSerialPrint((uint8_t *)serialWorkBuffer); va_end(arg); }
void hid_put_dump(const uint8_t *buffer, uint16_t cnt) { uint8_t i; for(i = 0; i < cnt; ++i) xSerialPrintf_P(PSTR(" %02X"), buffer[i]); xSerialPutChar( &xSerialPort, ' ' ); for(i = 0; i < cnt; ++i) { xSerialPutChar( &xSerialPort, (buffer[i] >= ' ' && buffer[i] <= '~') ? buffer[i] : '.' ); } xSerialPrint((uint8_t *)"\r\n"); vTaskDelay( 8 / portTICK_PERIOD_MS ); // Whoa... too fast. }
void xSerialPrintf_P(PGM_P format, ...) { va_list arg; va_start(arg, format); while(xSerialPort.serialWorkBufferInUse == ENGAGED ) taskYIELD(); xSerialPort.serialWorkBufferInUse = ENGAGED; vsnprintf_P((char *)(xSerialPort.serialWorkBuffer), xSerialPort.serialWorkBufferSize, format, arg); xSerialPrint((uint8_t *)(xSerialPort.serialWorkBuffer)); xSerialPort.serialWorkBufferInUse = VACANT; va_end(arg); }