Acc g scaling with DSP
[inav.git] / src / main / drivers / io_impl.h
blobfe499d0dc10a5e23dca929a7ab1492a7eb004704
1 #pragma once
3 // TODO - GPIO_TypeDef include
4 #include "drivers/io.h"
5 #include "platform.h"
7 typedef struct ioDef_s {
8 ioTag_t tag;
9 } ioDef_t;
11 #if defined(AT32F43x)
12 typedef struct ioRec_s {
13 gpio_type *gpio;
14 uint16_t pin;
15 resourceOwner_e owner;
16 resourceType_e resource;
17 uint8_t index;
18 } ioRec_t;
19 gpio_type* IO_GPIO(IO_t io);
20 #else
21 typedef struct ioRec_s {
22 GPIO_TypeDef *gpio;
23 uint16_t pin;
24 resourceOwner_e owner;
25 resourceType_e resource;
26 uint8_t index;
27 } ioRec_t;
28 GPIO_TypeDef* IO_GPIO(IO_t io);
30 #endif
32 extern ioRec_t ioRecs[DEFIO_IO_USED_COUNT];
34 int IO_GPIOPortIdx(IO_t io);
35 int IO_GPIOPinIdx(IO_t io);
37 int IO_GPIO_PinSource(IO_t io);
38 int IO_GPIO_PortSource(IO_t io);
40 #if defined(STM32F4) || defined(AT32F43x)
41 int IO_EXTI_PortSourceGPIO(IO_t io);
42 int IO_EXTI_PinSource(IO_t io);
43 #endif
46 uint16_t IO_Pin(IO_t io);
48 #define IO_GPIOBYTAG(tag) IO_GPIO(IOGetByTag(tag))
49 #define IO_PINBYTAG(tag) IO_Pin(IOGetByTag(tag))
51 uint32_t IO_EXTI_Line(IO_t io);
52 ioRec_t *IO_Rec(IO_t io);