api-hal-gpio.c 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include "api-hal-gpio.h"
  2. #include <stdio.h>
  3. // init GPIO
  4. void hal_gpio_init(GpioPin* gpio, GpioMode mode, GpioPull pull, GpioSpeed speed){
  5. // TODO more mode
  6. if(gpio->pin != 0) {
  7. switch(mode) {
  8. case GpioModeInput:
  9. printf("[GPIO] %s%d input\n", gpio->port, gpio->pin);
  10. break;
  11. case GpioModeOutputPushPull:
  12. printf("[GPIO] %s%d push pull\n", gpio->port, gpio->pin);
  13. break;
  14. case GpioModeOutputOpenDrain:
  15. printf("[GPIO] %s%d open drain\n", gpio->port, gpio->pin);
  16. break;
  17. default:
  18. printf("[GPIO] %s%d mode %d unsupported\n", gpio->port, gpio->pin, mode);
  19. break;
  20. }
  21. } else {
  22. printf("[GPIO] no pin\n");
  23. }
  24. }
  25. // write value to GPIO, false = LOW, true = HIGH
  26. void hal_gpio_write(GpioPin* gpio, bool state){
  27. if(gpio->pin != 0) {
  28. if(state) {
  29. printf("[GPIO] %s%d on\n", gpio->port, gpio->pin);
  30. } else {
  31. printf("[GPIO] %s%d off\n", gpio->port, gpio->pin);
  32. }
  33. } else {
  34. printf("[GPIO] no pin\n");
  35. }
  36. }
  37. // read value from GPIO, false = LOW, true = HIGH
  38. bool hal_gpio_read(const GpioPin* gpio){
  39. // TODO emulate pin state?
  40. return false;
  41. }