diff --git a/src/main/drivers/serial.c b/src/main/drivers/serial.c index cacfd1dd4..bb81d3dd8 100644 --- a/src/main/drivers/serial.c +++ b/src/main/drivers/serial.c @@ -40,12 +40,17 @@ void serialWrite(serialPort_t *instance, uint8_t ch) instance->vTable->serialWrite(instance, ch); } -void serialWriteBuf(serialPort_t *instance, void *data, int count) + +void serialWriteBuf(serialPort_t *instance, uint8_t *data, int count) { if (instance->vTable->writeBuf) { instance->vTable->writeBuf(instance, data, count); } else { for (uint8_t *p = data; count > 0; count--, p++) { + + while (!serialTxBytesFree(instance)) { + }; + serialWrite(instance, *p); } } @@ -81,7 +86,7 @@ void serialSetMode(serialPort_t *instance, portMode_t mode) instance->vTable->setMode(instance, mode); } -void serialWriteBufShim(void *instance, void *data, int count) +void serialWriteBufShim(void *instance, uint8_t *data, int count) { serialWriteBuf((serialPort_t *)instance, data, count); }