diff options
| author | Bdale Garbee <bdale@gag.com> | 2016-09-05 21:01:35 -0600 | 
|---|---|---|
| committer | Bdale Garbee <bdale@gag.com> | 2016-09-05 21:01:35 -0600 | 
| commit | 6af87e5cf98e644d2455faf6526a9f11880686f5 (patch) | |
| tree | d23017ea0a0fd693cbef18979c35cfca7ce1db69 /src/stmf0/ao_arch_funcs.h | |
| parent | 6ec9f2a78aa8c99d48006b14c936c59edd08addf (diff) | |
| parent | 168c39a37415b1bdc09aa00bbaaafb5d879ce8bd (diff) | |
Merge branch 'branch-1.6' into debian
Diffstat (limited to 'src/stmf0/ao_arch_funcs.h')
| -rw-r--r-- | src/stmf0/ao_arch_funcs.h | 55 | 
1 files changed, 53 insertions, 2 deletions
| diff --git a/src/stmf0/ao_arch_funcs.h b/src/stmf0/ao_arch_funcs.h index 64311b23..8b6234c4 100644 --- a/src/stmf0/ao_arch_funcs.h +++ b/src/stmf0/ao_arch_funcs.h @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of @@ -82,7 +83,57 @@ void  ao_spi_send_fixed(uint8_t value, uint16_t len, uint8_t spi_index);  void -ao_spi_send_sync(void *block, uint16_t len, uint8_t spi_index); +ao_spi_send_sync(const void *block, uint16_t len, uint8_t spi_index); + +void +ao_spi_start_bytes(uint8_t spi_index); + +void +ao_spi_stop_bytes(uint8_t spi_index); + +static inline void +ao_spi_send_byte(uint8_t byte, uint8_t spi_index) +{ +	struct stm_spi	*stm_spi; + +	switch (AO_SPI_INDEX(spi_index)) { +	case 0: +		stm_spi = &stm_spi1; +		break; +	case 1: +		stm_spi = &stm_spi2; +		break; +	} + +	while (!(stm_spi->sr & (1 << STM_SPI_SR_TXE))) +		; +	stm_spi->dr = byte; +	while (!(stm_spi->sr & (1 << STM_SPI_SR_RXNE))) +		; +	(void) stm_spi->dr; +} + +static inline uint8_t +ao_spi_recv_byte(uint8_t spi_index) +{ +	struct stm_spi	*stm_spi; + +	switch (AO_SPI_INDEX(spi_index)) { +	case 0: +		stm_spi = &stm_spi1; +		break; +	case 1: +		stm_spi = &stm_spi2; +		break; +	} + +	while (!(stm_spi->sr & (1 << STM_SPI_SR_TXE))) +		; +	stm_spi->dr = 0xff; +	while (!(stm_spi->sr & (1 << STM_SPI_SR_RXNE))) +		; +	return stm_spi->dr; +}  void  ao_spi_recv(void *block, uint16_t len, uint8_t spi_index); | 
