u8g2port.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #ifndef U8G2LIB_H
  2. #define U8G2LIB_H
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. #include <u8g2.h>
  7. #include "gpio.h"
  8. #include "i2c.h"
  9. #include "spi.h"
  10. #include <time.h>
  11. #include <stdio.h>
  12. #include <stdlib.h>
  13. #define MAX_I2C_HANDLES 8
  14. #define MAX_SPI_HANDLES 256
  15. /*
  16. * User data passed in user_ptr of u8x8_struct.
  17. */
  18. struct user_data_struct {
  19. // GPIO chip /dev/gpiochip%d
  20. uint8_t gpio_chip;
  21. // c-periphery GPIO handles
  22. gpio_t *pins[U8X8_PIN_CNT];
  23. // For I2C /dev/i2c-%d and for SPI /dev/spidev%d.%d using high and low 4 bits
  24. uint8_t bus;
  25. // Index into buffer
  26. uint8_t index;
  27. // Callback buffer, I2C should send 32 bytes max and SPI 128 bytes max
  28. uint8_t buffer[256]; // issue 2666
  29. // Nanosecond delay for U8X8_MSG_DELAY_I2C
  30. unsigned long delay;
  31. // SPI mode
  32. unsigned int spi_mode;
  33. // SPI max speed
  34. uint32_t max_speed;
  35. // Internal buffer
  36. uint8_t *int_buf;
  37. };
  38. typedef struct user_data_struct user_data_t;
  39. void sleep_ms(unsigned long milliseconds);
  40. void sleep_us(unsigned long microseconds);
  41. void sleep_ns(unsigned long nanoseconds);
  42. user_data_t *init_user_data(u8g2_t *u8g2);
  43. void init_i2c_hw(u8g2_t *u8g2, uint8_t bus);
  44. void init_i2c_sw(u8g2_t *u8g2, uint8_t gpio_chip, uint8_t scl, uint8_t sda,
  45. uint8_t res, unsigned long delay);
  46. void init_spi_hw_advanced(u8g2_t *u8g2, uint8_t gpio_chip, uint8_t bus, uint8_t dc,
  47. uint8_t res, uint8_t cs, unsigned int spi_mode, uint32_t max_speed);
  48. void init_spi_hw(u8g2_t *u8g2, uint8_t gpio_chip, uint8_t bus, uint8_t dc,
  49. uint8_t res, uint8_t cs);
  50. void init_spi_sw(u8g2_t *u8g2, uint8_t gpio_chip, uint8_t dc, uint8_t res,
  51. uint8_t mosi, uint8_t sck, uint8_t cs, unsigned long delay);
  52. void done_user_data(u8g2_t *u8g2);
  53. void init_pin(u8x8_t *u8x8, uint8_t pin);
  54. void write_pin(u8x8_t *u8x8, uint8_t pin, uint8_t value);
  55. void init_i2c(u8x8_t *u8x8);
  56. void done_i2c();
  57. void init_spi(u8x8_t *u8x8);
  58. void done_spi();
  59. uint8_t u8x8_arm_linux_gpio_and_delay(u8x8_t *u8x8, uint8_t msg,
  60. uint8_t arg_int, void *arg_ptr);
  61. uint8_t u8x8_byte_arm_linux_hw_i2c(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int,
  62. void *arg_ptr);
  63. uint8_t u8x8_byte_arm_linux_hw_spi(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int,
  64. void *arg_ptr);
  65. #ifdef __cplusplus
  66. }
  67. #endif
  68. #endif