diff --git a/boards/iot-lab_M3/include/periph_conf.h b/boards/iot-lab_M3/include/periph_conf.h index 9c71cc2ad6..c6feaa7ebf 100644 --- a/boards/iot-lab_M3/include/periph_conf.h +++ b/boards/iot-lab_M3/include/periph_conf.h @@ -237,7 +237,7 @@ /** * @brief SPI configuration */ -#define SPI_NUM_OF 1 +#define SPI_NUMOF 1 #define SPI_0_EN 1 #define SPI_0_DEV SPI1 diff --git a/cpu/stm32f1/periph/spi.c b/cpu/stm32f1/periph/spi.c index 2b55d0acd5..2fd41d0ba0 100644 --- a/cpu/stm32f1/periph/spi.c +++ b/cpu/stm32f1/periph/spi.c @@ -20,7 +20,7 @@ #include "stm32f10x.h" #include "periph/gpio.h" -#include "spi.h" +#include "periph/spi.h" #include "periph_conf.h" #include "board.h" @@ -28,7 +28,7 @@ #include "debug.h" /* TODO: parse and use conf and speed parameter */ -int spi_init_master(spi_t dev, spi_conf_t conf, uint32_t speed) +int spi_init_master(spi_t dev, spi_conf_t conf, spi_speed_t speed) { SPI_TypeDef *SPIx; @@ -39,7 +39,6 @@ int spi_init_master(spi_t dev, spi_conf_t conf, uint32_t speed) SPI_0_CLKEN(); break; #endif - case SPI_UNDEFINED: default: return -1; } @@ -84,32 +83,32 @@ int spi_transfer_byte(spi_t dev, char out, char *in) SPI_dev = SPI_0_DEV; break; #endif - case SPI_UNDEFINED: default: return -1; } while ((SPI_dev->SR & SPI_SR_TXE) == RESET); SPI_dev->DR = out; - transfered += (out) ? 1 : 0; + transfered++; while ((SPI_dev->SR & SPI_SR_RXNE) == RESET); if (in != NULL) { *in = SPI_dev->DR; - transfered += (*in) ? 1 : 0; + transfered++; } else { SPI_dev->DR; } - while ((SPI_dev->SR & 0x80) == 1); + /* SPI busy */ + while ((SPI_dev->SR & 0x80)); DEBUG("\nout: %x in: %x transfered: %x\n", out, *in, transfered); return transfered; } -int spi_transfer_bytes(spi_t dev, char *out, char *in, int length) +int spi_transfer_bytes(spi_t dev, char *out, char *in, unsigned int length) { int transfered = 0; int ret = 0; @@ -139,19 +138,19 @@ int spi_transfer_bytes(spi_t dev, char *out, char *in, int length) return transfered; } -int spi_transfer_reg(spi_t dev, uint8_t reg, char *out, char *in) +int spi_transfer_reg(spi_t dev, uint8_t reg, char out, char *in) { spi_transfer_byte(dev, reg, NULL); - return spi_transfer_byte(dev, *out, in); + return spi_transfer_byte(dev, out, in); } -int spi_transfer_regs(spi_t dev, uint8_t reg, char *out, char *in, int length) +int spi_transfer_regs(spi_t dev, uint8_t reg, char *out, char *in, unsigned int length) { spi_transfer_byte(dev, reg, NULL); return spi_transfer_bytes(dev, out, in, length); } -int spi_poweron(spi_t dev) +void spi_poweron(spi_t dev) { switch(dev) { #ifdef SPI_0_EN @@ -160,14 +159,10 @@ int spi_poweron(spi_t dev) SPI_0_DEV->CR1 |= 0x0040; /* turn SPI peripheral on */ break; #endif - case SPI_UNDEFINED: - default: - return -1; } - return 0; } -int spi_poweroff(spi_t dev) +void spi_poweroff(spi_t dev) { switch(dev) { #ifdef SPI_0_EN @@ -176,9 +171,5 @@ int spi_poweroff(spi_t dev) SPI_0_DEV->CR1 &= ~(0x0040); /* turn SPI peripheral off */ break; #endif - case SPI_UNDEFINED: - default: - return -1; } - return 0; } diff --git a/cpu/stm32f1/periph/uart.c b/cpu/stm32f1/periph/uart.c index 03cabb43ec..9ffc58ba3c 100644 --- a/cpu/stm32f1/periph/uart.c +++ b/cpu/stm32f1/periph/uart.c @@ -305,7 +305,7 @@ static inline void irq_handler(uint8_t uartnum, USART_TypeDef *dev) uart0_notify_thread(); } #else - config[uartnum].rx_cb(data); + config[uartnum].rx_cb(config[uartnum].arg, data); #endif } else if (dev->SR & USART_SR_ORE) { @@ -316,7 +316,7 @@ static inline void irq_handler(uint8_t uartnum, USART_TypeDef *dev) #ifdef MODULE_UART0 dev->SR &= ~(USART_SR_TXE); #else - config[uartnum].tx_cb(); + config[uartnum].tx_cb(config[uartnum].arg); #endif } diff --git a/drivers/at86rf231/at86rf231.c b/drivers/at86rf231/at86rf231.c index 32eb5623e1..7129705ce4 100644 --- a/drivers/at86rf231/at86rf231.c +++ b/drivers/at86rf231/at86rf231.c @@ -110,6 +110,8 @@ void at86rf231_rx_irq(void) if (driver_state == AT_DRIVER_STATE_SENDING) { /* Read IRQ to clear it */ at86rf231_reg_read(AT86RF231_REG__IRQ_STATUS); + /* tx done, listen again */ + at86rf231_switch_to_rx(); /* clear internal state */ driver_state = AT_DRIVER_STATE_DEFAULT; return;