46 #include <sys/types.h> 56 #include <arch/board/board.h> 59 #include <board_config.h> 61 #include <drivers/device/device.h> 70 virtual int init() = 0;
71 virtual int read(
unsigned offset,
void *data,
unsigned count = 1);
72 virtual int write(
unsigned address,
void *data,
unsigned count = 1);
113 px4_sem_t _bus_semaphore;
120 #if defined(CONFIG_STM32_STM32F10XX) || defined(CONFIG_STM32_STM32F4XXX) 123 #define PX4IO_INTERFACE_CLASS PX4IO_serial_f4 124 #define PX4IO_INTERFACE_F4 133 virtual int ioctl(
unsigned operation,
unsigned &arg);
148 static const unsigned _dma_status_inactive = 0x80000000;
149 static const unsigned _dma_status_waiting = 0x00000000;
150 volatile unsigned _rx_dma_status;
153 px4_sem_t _completion_semaphore;
158 static void _dma_callback(DMA_HANDLE handle, uint8_t status,
void *arg);
159 void _do_rx_dma_callback(
unsigned status);
164 static int _interrupt(
int vector,
void *context,
void *arg);
165 void _do_interrupt();
179 PX4IO_serial_f4(PX4IO_serial_f4 &);
180 PX4IO_serial_f4 &operator = (
const PX4IO_serial_f4 &);
188 #elif defined(CONFIG_ARCH_CHIP_STM32F7) 190 #define PX4IO_INTERFACE_CLASS PX4IO_serial_f7 191 #define PX4IO_INTERFACE_F7 193 #include <stm32_dma.h> 203 virtual int ioctl(
unsigned operation,
unsigned &arg);
218 static const unsigned _dma_status_inactive = 0x80000000;
219 static const unsigned _dma_status_waiting = 0x00000000;
220 volatile unsigned _rx_dma_status;
223 px4_sem_t _completion_semaphore;
228 static void _dma_callback(DMA_HANDLE handle, uint8_t status,
void *arg);
229 void _do_rx_dma_callback(
unsigned status);
234 static int _interrupt(
int vector,
void *context,
void *arg);
235 void _do_interrupt();
249 PX4IO_serial_f7(PX4IO_serial_f7 &);
250 PX4IO_serial_f7 &operator = (
const PX4IO_serial_f7 &);
255 static uint8_t _io_buffer_storage[];
259 #error "Interface not implemented for this chip" virtual int write(unsigned address, void *data, unsigned count=1)
Write directly to the device.
Definition: px4io_serial.cpp:108
perf_counter_t _pc_txns
Performance counters.
Definition: px4io_serial.h:90
virtual int ioctl(unsigned operation, unsigned &arg)
Perform a device-specific operation.
Definition: Device.hpp:117
virtual int init()=0
Initialise the driver and make it ready for use.
Configuration flags used in code.
Includes POSIX-like functions for virtual character devices.
PX4IO interface protocol.
virtual int _bus_exchange(IOPacket *_packet)=0
Start the transaction with IO and wait for it to complete.
Fundamental base class for all physical drivers (I2C, SPI).
Definition: Device.hpp:65
Definition: protocol.h:328
virtual int read(unsigned offset, void *data, unsigned count=1)
Read directly from the device.
Definition: px4io_serial.cpp:165
Definition: px4io_serial.h:64
Performance measuring tools.