| 250 | } |
| 251 | |
| 252 | void GPIO::write(uint8_t pin, uint8_t value) |
| 253 | { |
| 254 | struct gpio_entry *g = gpio_by_pin_num(pin); |
| 255 | if (g) { |
| 256 | if (g->is_input) { |
| 257 | // control pullup/pulldown |
| 258 | g->mode = value==1?PAL_MODE_INPUT_PULLUP:PAL_MODE_INPUT_PULLDOWN; |
| 259 | palSetLineMode(g->pal_line, g->mode); |
| 260 | } else if (value == PAL_LOW) { |
| 261 | palClearLine(g->pal_line); |
| 262 | } else { |
| 263 | palSetLine(g->pal_line); |
| 264 | } |
| 265 | return; |
| 266 | } |
| 267 | #if HAL_WITH_IO_MCU |
| 268 | if (AP_BoardConfig::io_enabled() && iomcu.valid_GPIO_pin(pin)) { |
| 269 | iomcu.write_GPIO(pin, value); |
| 270 | } |
| 271 | #endif |
| 272 | } |
| 273 | |
| 274 | void GPIO::toggle(uint8_t pin) |
| 275 | { |
no test coverage detected