diff options
author | Dominik Sliwa <dominik.sliwa@toradex.com> | 2017-04-10 13:41:28 +0200 |
---|---|---|
committer | Dominik Sliwa <dominik.sliwa@toradex.com> | 2017-04-10 13:41:28 +0200 |
commit | d0e5a94a55334b0a27652959fba5066f56128135 (patch) | |
tree | 058987518e64691297b4409d5b06d65e9b335167 /source/com_task.c | |
parent | b3bc06bef795fdc57254729c74c04e2732a6092d (diff) |
CAN and communication updates
Diffstat (limited to 'source/com_task.c')
-rw-r--r-- | source/com_task.c | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/source/com_task.c b/source/com_task.c index 457066c..01796d8 100644 --- a/source/com_task.c +++ b/source/com_task.c @@ -8,8 +8,8 @@ const uint32_t __attribute__((section(".FwVersion"))) fw_version = APALIS_TK1_K20_FW_VER; static dspi_slave_handle_t spi_handle; -static uint8_t slaveRxData[APALIS_TK1_K20_MAX_BULK] = {0U}; -static uint8_t slaveTxData[APALIS_TK1_K20_MAX_BULK] = {0U}; +static uint8_t slaveRxData[APALIS_TK1_K20_MAX_BULK + APALIS_TK1_K20_HEADER] = {0U}; +static uint8_t slaveTxData[APALIS_TK1_K20_MAX_BULK + APALIS_TK1_K20_HEADER] = {0U}; void generate_irq(uint8_t irq) { gen_regs.irq = gen_regs.irq | BIT(irq); @@ -67,7 +67,10 @@ void set_irq_reg(uint8_t value) } -inline int general_registers(uint8_t *rx_buf, uint8_t * tx_buf) { +inline int general_registers(dspi_transfer_t *spi_transfer) +{ + uint8_t *rx_buf = spi_transfer->rxData; + uint8_t *tx_buf = &spi_transfer->txData[1]; if (rx_buf[0] == APALIS_TK1_K20_READ_INST) { switch (rx_buf[1]) { @@ -172,23 +175,23 @@ void spi_task(void *pvParameters) { DSPI_SlaveTransferNonBlocking(SPI2, &spi_handle, &slaveXfer); xSemaphoreTake(cb_msg.sem, portMAX_DELAY); if (slaveRxData[1] <= 0x05) { - ret = general_registers(slaveRxData, &slaveTxData[1]); + ret = general_registers(&slaveXfer); } else if ((slaveRxData[1] >= APALIS_TK1_K20_CANREG + APALIS_TK1_K20_CAN_DEV_OFFSET(0)) - && (slaveRxData[1] <= APALIS_TK1_K20_CAN_OUT_FIF0_END + APALIS_TK1_K20_CAN_DEV_OFFSET(0))) { - ret = can0_registers(slaveRxData, &slaveTxData[1]); + && (slaveRxData[1] <= APALIS_TK1_K20_CAN_OUT_BUF_END + APALIS_TK1_K20_CAN_DEV_OFFSET(0))) { + ret = can0_registers(&slaveXfer); } else if ((slaveRxData[1] >= APALIS_TK1_K20_CANREG + APALIS_TK1_K20_CAN_DEV_OFFSET(1)) - && (slaveRxData[1] <= APALIS_TK1_K20_CAN_OUT_FIF0_END + APALIS_TK1_K20_CAN_DEV_OFFSET(1))) { - ret = can1_registers(slaveRxData, &slaveTxData[1]); + && (slaveRxData[1] <= APALIS_TK1_K20_CAN_OUT_BUF_END + APALIS_TK1_K20_CAN_DEV_OFFSET(1))) { + ret = can1_registers(&slaveXfer); #ifdef BOARD_USES_ADC } else if ((slaveRxData[1] >= APALIS_TK1_K20_ADCREG) && (slaveRxData[1] <= APALIS_TK1_K20_ADC_CH3H)) { - ret = adc_registers(slaveRxData, &slaveTxData[1]); + ret = adc_registers(&slaveXfer); } else if ((slaveRxData[1] >= APALIS_TK1_K20_TSCREG) && (slaveRxData[1] <= APALIS_TK1_K20_TSC_YPH)) { - ret = tsc_registers(slaveRxData, &slaveTxData[1]); + ret = tsc_registers(&slaveXfer); #endif } else if ((slaveRxData[1] >= APALIS_TK1_K20_GPIOREG) && (slaveRxData[1] <= APALIS_TK1_K20_GPIO_STA)) { - ret = gpio_registers(slaveRxData, &slaveTxData[1]); + ret = gpio_registers(&slaveXfer); } else { /* Register not defined */ |