Paparazzi UAS  v5.0.5_stable-7-g4b8bbb7
Paparazzi is a free software Unmanned Aircraft System.
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
spi_slave_hs_arch.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2008-2009 Antoine Drouin <poinix@gmail.com>
3  *
4  * This file is part of paparazzi.
5  *
6  * paparazzi is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2, or (at your option)
9  * any later version.
10  *
11  * paparazzi is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with paparazzi; see the file COPYING. If not, write to
18  * the Free Software Foundation, 59 Temple Place - Suite 330,
19  * Boston, MA 02111-1307, USA.
20  */
21 
31 #ifndef SPI_SLAVE_HS_ARCH_H
32 #define SPI_SLAVE_HS_ARCH_H
33 
34 #include "std.h"
35 
36 
37 #define SpiEnable() { \
38  SetBit(SSPCR1, SSE); \
39  }
40 
41 #define SpiDisable() { \
42  ClearBit(SSPCR1, SSE); \
43  }
44 
45 
46 #define SPI_SLAVE_HS_RX_BUFFER_SIZE 256
47 
50 
51 #define SpiSlaveChAvailable() (spi_slave_hs_rx_insert_idx != spi_slave_hs_rx_extract_idx)
52 
53 #define SpiSlaveGetch() ({\
54  uint8_t ret = spi_slave_hs_rx_buffer[spi_slave_hs_rx_extract_idx]; \
55  spi_slave_hs_rx_extract_idx = (spi_slave_hs_rx_extract_idx + 1)%SPI_SLAVE_HS_RX_BUFFER_SIZE; \
56  ret; \
57 })
58 
59 #define SPI_SLAVE_HS_TX_BUFFER_SIZE 64
60 
63 
64 #define SpiSlaveTransmit(data) {\
65  uint8_t temp = (spi_slave_hs_tx_insert_idx + 1) % SPI_SLAVE_HS_TX_BUFFER_SIZE; \
66  if (temp != spi_slave_hs_tx_extract_idx) /* there is room left */ \
67  { \
68  spi_slave_hs_tx_buffer[spi_slave_hs_tx_insert_idx] = (uint8_t)data; \
69  spi_slave_hs_tx_insert_idx = temp; \
70  } \
71 }
72 
73 
74 
75 
76 #endif
unsigned short uint16_t
Definition: types.h:16
uint16_t spi_slave_hs_rx_insert_idx
uint8_t spi_slave_hs_tx_buffer[SPI_SLAVE_HS_TX_BUFFER_SIZE]
#define SPI_SLAVE_HS_TX_BUFFER_SIZE
uint16_t spi_slave_hs_rx_extract_idx
#define SPI_SLAVE_HS_RX_BUFFER_SIZE
unsigned char uint8_t
Definition: types.h:14
uint8_t spi_slave_hs_tx_extract_idx
uint8_t spi_slave_hs_tx_insert_idx
uint8_t spi_slave_hs_rx_buffer[SPI_SLAVE_HS_RX_BUFFER_SIZE]