diff --git a/src/main/drivers/bus_spi_hal.c b/src/main/drivers/bus_spi_hal.c index 7cebdf9d66..4da26ffb6a 100644 --- a/src/main/drivers/bus_spi_hal.c +++ b/src/main/drivers/bus_spi_hal.c @@ -141,8 +141,14 @@ void spiInitDevice(SPIDevice device) #ifdef SDCARD_SPI_INSTANCE - if (spi->dev == SDCARD_SPI_INSTANCE) - spi->sdcard = true; + if (spi->dev == SDCARD_SPI_INSTANCE) { + spi->leadingEdge = true; + } +#endif +#ifdef RX_SPI_INSTANCE + if (spi->dev == RX_SPI_INSTANCE) { + spi->leadingEdge = true; + } #endif // Enable SPI clock @@ -157,15 +163,19 @@ void spiInitDevice(SPIDevice device) IOConfigGPIOAF(IOGetByTag(spi->sck), SPI_IO_AF_CFG, spi->af); IOConfigGPIOAF(IOGetByTag(spi->miso), SPI_IO_AF_CFG, spi->af); IOConfigGPIOAF(IOGetByTag(spi->mosi), SPI_IO_AF_CFG, spi->af); - if (spi->nss) + + if (spi->nss) { IOConfigGPIOAF(IOGetByTag(spi->nss), SPI_IO_CS_CFG, spi->af); + } #endif #if defined(STM32F10X) IOConfigGPIO(IOGetByTag(spi->sck), SPI_IO_AF_SCK_CFG); IOConfigGPIO(IOGetByTag(spi->miso), SPI_IO_AF_MISO_CFG); IOConfigGPIO(IOGetByTag(spi->mosi), SPI_IO_AF_MOSI_CFG); - if (spi->nss) + + if (spi->nss) { IOConfigGPIO(IOGetByTag(spi->nss), SPI_IO_CS_CFG); + } #endif SPI_HandleTypeDef Handle; Handle.Instance = spi->dev; @@ -182,7 +192,7 @@ void spiInitDevice(SPIDevice device) spiInit.CRCCalculation = SPI_CRCCALCULATION_DISABLE; spiInit.TIMode = SPI_TIMODE_DISABLED; - if (spi->sdcard) { + if (spi->leadingEdge) { spiInit.CLKPolarity = SPI_POLARITY_LOW; spiInit.CLKPhase = SPI_PHASE_1EDGE; } @@ -200,8 +210,9 @@ void spiInitDevice(SPIDevice device) if (HAL_SPI_Init(&Handle) == HAL_OK) { spiHandle[device].Handle = Handle; - if (spi->nss) + if (spi->nss) { IOHi(IOGetByTag(spi->nss)); + } } } diff --git a/src/main/drivers/serial_uart_hal.c b/src/main/drivers/serial_uart_hal.c index fa7f5709d6..1bcd84e64d 100644 --- a/src/main/drivers/serial_uart_hal.c +++ b/src/main/drivers/serial_uart_hal.c @@ -262,7 +262,7 @@ void uartStartTxDMA(uartPort_t *s) s->txDMAEmpty = false; } -uint32_t uartTotalRxBytesWaiting(serialPort_t *instance) +uint32_t uartTotalRxBytesWaiting(const serialPort_t *instance) { uartPort_t *s = (uartPort_t*)instance; @@ -283,7 +283,7 @@ uint32_t uartTotalRxBytesWaiting(serialPort_t *instance) } } -uint32_t uartTotalTxBytesFree(serialPort_t *instance) +uint32_t uartTotalTxBytesFree(const serialPort_t *instance) { uartPort_t *s = (uartPort_t*)instance; @@ -318,7 +318,7 @@ uint32_t uartTotalTxBytesFree(serialPort_t *instance) return (s->port.txBufferSize - 1) - bytesUsed; } -bool isUartTransmitBufferEmpty(serialPort_t *instance) +bool isUartTransmitBufferEmpty(const serialPort_t *instance) { uartPort_t *s = (uartPort_t *)instance; if (s->txDMAStream) @@ -371,13 +371,13 @@ void uartWrite(serialPort_t *instance, uint8_t ch) const struct serialPortVTable uartVTable[] = { { - uartWrite, - uartTotalRxBytesWaiting, - uartTotalTxBytesFree, - uartRead, - uartSetBaudRate, - isUartTransmitBufferEmpty, - uartSetMode, + .serialWrite = uartWrite, + .serialTotalRxWaiting = uartTotalRxBytesWaiting, + .serialTotalTxFree = uartTotalTxBytesFree, + .serialRead = uartRead, + .serialSetBaudRate = uartSetBaudRate, + .isSerialTransmitBufferEmpty = isUartTransmitBufferEmpty, + .setMode = uartSetMode, .writeBuf = NULL, .beginWrite = NULL, .endWrite = NULL, diff --git a/src/main/drivers/serial_usb_vcp_hal.c b/src/main/drivers/serial_usb_vcp_hal.c index 4ca91167ec..e81e1bcc19 100644 --- a/src/main/drivers/serial_usb_vcp_hal.c +++ b/src/main/drivers/serial_usb_vcp_hal.c @@ -54,13 +54,13 @@ static void usbVcpSetMode(serialPort_t *instance, portMode_t mode) // TODO implement } -static bool isUsbVcpTransmitBufferEmpty(serialPort_t *instance) +static bool isUsbVcpTransmitBufferEmpty(const serialPort_t *instance) { UNUSED(instance); return true; } -static uint32_t usbVcpAvailable(serialPort_t *instance) +static uint32_t usbVcpAvailable(const serialPort_t *instance) { UNUSED(instance); uint32_t receiveLength = vcpAvailable(); @@ -73,7 +73,7 @@ static uint8_t usbVcpRead(serialPort_t *instance) return vcpRead(); } -static void usbVcpWriteBuf(serialPort_t *instance, void *data, int count) +static void usbVcpWriteBuf(serialPort_t *instance, const void *data, int count) { UNUSED(instance); @@ -83,7 +83,7 @@ static void usbVcpWriteBuf(serialPort_t *instance, void *data, int count) } uint32_t start = millis(); - uint8_t *p = data; + const uint8_t *p = data; while (count > 0) { uint32_t txed = vcpWrite(p, count); count -= txed; diff --git a/src/main/vcp_hal/usbd_cdc_interface.c b/src/main/vcp_hal/usbd_cdc_interface.c index f341c25560..a141965cc3 100644 --- a/src/main/vcp_hal/usbd_cdc_interface.c +++ b/src/main/vcp_hal/usbd_cdc_interface.c @@ -357,7 +357,7 @@ uint32_t CDC_Send_FreeBytes(void) * @param Len: Number of data to be sent (in bytes) * @retval Result of the opeartion: USBD_OK if all operations are OK else VCP_FAIL */ -uint32_t vcpWrite(uint8_t* Buf, uint32_t Len) +uint32_t vcpWrite(const uint8_t* Buf, uint32_t Len) { uint32_t ptr_head = UserTxBufPtrIn; uint32_t ptr_tail = UserTxBufPtrOut; diff --git a/src/main/vcp_hal/usbd_cdc_interface.h b/src/main/vcp_hal/usbd_cdc_interface.h index c880e0c71e..18c35408e5 100644 --- a/src/main/vcp_hal/usbd_cdc_interface.h +++ b/src/main/vcp_hal/usbd_cdc_interface.h @@ -69,7 +69,7 @@ extern USBD_CDC_ItfTypeDef USBD_CDC_fops; uint8_t vcpRead(); uint8_t vcpAvailable(); -uint32_t vcpWrite(uint8_t* Buf, uint32_t Len); +uint32_t vcpWrite(const uint8_t* Buf, uint32_t Len); uint32_t vcpBaudrate(); uint8_t vcpIsConnected(); uint32_t CDC_Send_FreeBytes(void);