Browse Source

HAL_Linux: add export gpio during direction set if not exported during initialisation

mission-4.1.18
bugobliterator 11 years ago committed by Andrew Tridgell
parent
commit
85d10e2ce3
  1. 17
      libraries/AP_HAL_Linux/GPIO.cpp

17
libraries/AP_HAL_Linux/GPIO.cpp

@ -60,14 +60,27 @@ void LinuxGPIO::init() @@ -60,14 +60,27 @@ void LinuxGPIO::init()
void LinuxGPIO::pinMode(uint8_t pin, uint8_t output)
{
int fd;
int fd,len;
char buf[64];
snprintf(buf, sizeof(buf), SYSFS_GPIO_DIR "/gpio%d/direction", pin);
fd = ::open(buf, O_WRONLY);
if (fd < 0) {
perror("LinuxGPIO::direction");
fd = open(SYSFS_GPIO_DIR "/export", O_WRONLY); //try exporting GPIO pin
if (fd < 0) {
perror("LinuxGPIO::direction");
}
len = snprintf(buf, sizeof(buf), "%d", pin);
::write(fd, buf, len);
close(fd);
snprintf(buf, sizeof(buf), SYSFS_GPIO_DIR "/gpio%d/direction", pin); //retry writing direction
fd = ::open(buf, O_WRONLY);
if (fd < 0) {
perror("LinuxGPIO::direction"); //report faillure
}
}
if (output == GPIO_OUTPUT)

Loading…
Cancel
Save