APM:Libraries
GPIO_RPI.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <stdint.h>
4 #include "AP_HAL_Linux.h"
5 
6 #define LOW 0
7 #define HIGH 1
8 
9 #define PAGE_SIZE (4*1024)
10 #define BLOCK_SIZE (4*1024)
11 
12 // Raspberry Pi GPIO mapping
13 #define RPI_GPIO_2 2 // Pin 3
14 #define RPI_GPIO_3 3 // Pin 5
15 #define RPI_GPIO_4 4 // Pin 7
16 #define RPI_GPIO_5 5 // Pin 29
17 #define RPI_GPIO_6 6 // Pin 31
18 #define RPI_GPIO_7 7 // Pin 26
19 #define RPI_GPIO_8 8 // Pin 24
20 #define RPI_GPIO_9 9 // Pin 21
21 #define RPI_GPIO_10 10 // Pin 19
22 #define RPI_GPIO_11 11 // Pin 23
23 #define RPI_GPIO_12 12 // Pin 32
24 #define RPI_GPIO_13 13 // Pin 33
25 #define RPI_GPIO_14 14 // Pin 8
26 #define RPI_GPIO_15 15 // Pin 10
27 #define RPI_GPIO_16 16 // Pin 36
28 #define RPI_GPIO_17 17 // Pin 11
29 #define RPI_GPIO_18 18 // Pin 12
30 #define RPI_GPIO_19 19 // Pin 35
31 #define RPI_GPIO_20 20 // Pin 38
32 #define RPI_GPIO_21 21 // Pin 40
33 #define RPI_GPIO_22 22 // Pin 15
34 #define RPI_GPIO_23 23 // Pin 16
35 #define RPI_GPIO_24 24 // Pin 18
36 #define RPI_GPIO_25 25 // Pin 22
37 #define RPI_GPIO_26 26 // Pin 37
38 #define RPI_GPIO_27 27 // Pin 13
39 #define RPI_GPIO_28 28 // Pin 3
40 #define RPI_GPIO_29 29 // Pin 4
41 #define RPI_GPIO_30 30 // Pin 5
42 #define RPI_GPIO_31 31 // Pin 6
43 
44 namespace Linux {
45 
46 class GPIO_RPI : public AP_HAL::GPIO {
47 public:
48  GPIO_RPI();
49  void init();
50  void pinMode(uint8_t pin, uint8_t output);
51  void pinMode(uint8_t pin, uint8_t output, uint8_t alt);
52  int8_t analogPinToDigitalPin(uint8_t pin);
53  uint8_t read(uint8_t pin);
54  void write(uint8_t pin, uint8_t value);
55  void toggle(uint8_t pin);
56 
57  /* Alternative interface: */
58  AP_HAL::DigitalSource* channel(uint16_t n);
59 
60  /* Interrupt interface: */
61  bool attach_interrupt(uint8_t interrupt_num, AP_HAL::Proc p,
62  uint8_t mode);
63 
64  /* return true if USB cable is connected */
65  bool usb_connected(void);
66 
67 private:
68  volatile uint32_t *_gpio;
69 };
70 
71 }
bool usb_connected(void)
Definition: GPIO_RPI.cpp:131
void(* Proc)(void)
AP_HAL::DigitalSource * channel(uint16_t n)
Definition: GPIO_RPI.cpp:120
bool attach_interrupt(uint8_t interrupt_num, AP_HAL::Proc p, uint8_t mode)
Definition: GPIO_RPI.cpp:126
void pinMode(uint8_t pin, uint8_t output)
Definition: GPIO_RPI.cpp:71
int8_t analogPinToDigitalPin(uint8_t pin)
Definition: GPIO_RPI.cpp:94
void toggle(uint8_t pin)
Definition: GPIO_RPI.cpp:114
void write(uint8_t pin, uint8_t value)
Definition: GPIO_RPI.cpp:105
float value
volatile uint32_t * _gpio
Definition: GPIO_RPI.h:68
static int8_t pin
Definition: AnalogIn.cpp:15
uint8_t read(uint8_t pin)
Definition: GPIO_RPI.cpp:99