accessors.h 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /*
  2. This example code is in the Public Domain (or CC0 licensed, at your option.)
  3. Unless required by applicable law or agreed to in writing, this
  4. software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
  5. CONDITIONS OF ANY KIND, either express or implied.
  6. */
  7. #pragma once
  8. #include "esp_system.h"
  9. #include "driver/i2c.h"
  10. #include "driver/i2s.h"
  11. #include "driver/spi_master.h"
  12. #include "gpio_exp.h"
  13. #include "I2CBus.pb.h"
  14. #define ASSIGN_GPIO(pin, root, name, mandatory) config_set_gpio(&pin, &(root).name, (root).has_##name, #name, mandatory)
  15. #define ASSIGN_COND_VAL_1LVL(name, targetval) \
  16. ((targetval) = (platform && platform->has_##name ? &(platform->name) : NULL))
  17. #define ASSIGN_COND_VAL_2LVL(name1, name2, targetval) \
  18. ((targetval) = (platform && platform->has_##name1 && platform->name1.has_##name2 ? &(platform->name1.name2) : NULL))
  19. #define ASSIGN_COND_VAL_3LVL(name1, name2, name3, targetval) \
  20. ((targetval) = (platform && platform->has_##name1 && platform->name1.has_##name2 && platform->name1.name2.has_##name3 ? &(platform->name1.name2.name3) : NULL))
  21. #define ASSIGN_COND_VAL_4LVL(name1, name2, name3, name4, targetval) \
  22. ((targetval) = (platform && platform->has_##name1 && platform->name1.has_##name2 && platform->name1.name2.has_##name3 && platform->name1.name2.name3.has_##name4 ? &(platform->name1.name2.name3.name4) : NULL))
  23. #define ASSIGN_COND_VAL_5LVL(name1, name2, name3, name4, name5, targetval) \
  24. ((targetval) = (platform && platform->has_##name1 && platform->name1.has_##name2 && platform->name1.name2.has_##name3 && platform->name1.name2.name3.has_##name4 && platform->name1.name2.name3.name4.has_##name5 ? &(platform->name1.name2.name3.name4.name5) : NULL))
  25. #define SYS_NET(target) ASSIGN_COND_VAL_1LVL(net,target)
  26. #define SYS_DISPLAY(target) ASSIGN_COND_VAL_2LVL(dev,display,target)
  27. #define SYS_DEV_LEDSTRIP(target) ASSIGN_COND_VAL_2LVL(dev,led_strip,target)
  28. #define SYS_DEV(target) ASSIGN_COND_VAL_1LVL(dev,target)
  29. #define SYS_DEV_ROTARY(target) ASSIGN_COND_VAL_2LVL(dev,rotary,target)
  30. #define SYS_DEV_IR(target) ASSIGN_COND_VAL_2LVL(dev,ir,target)
  31. #define SYS_DISPLAY_COMMON(target) ASSIGN_COND_VAL_3LVL(dev,display,common,target)
  32. #define SYS_DISPLAY_SPI(target) ASSIGN_COND_VAL_3LVL(dev,display,spi,target)
  33. #define SYS_DISPLAY_I2C(target) ASSIGN_COND_VAL_3LVL(dev,display,i2c,target)
  34. #define SYS_GPIOS(target) ASSIGN_COND_VAL_2LVL(dev,gpios,target)
  35. #define SYS_ETH(target) ASSIGN_COND_VAL_2LVL(dev,eth,target)
  36. #define SYS_ETH_COMMON(target) ASSIGN_COND_VAL_3LVL(dev,eth,common,target)
  37. #define sys_i2c_bus(target) ASSIGN_COND_VAL_2LVL(dev,i2c,target)
  38. #define SYS_GPIOS_NAME(name,target) ASSIGN_COND_VAL_2LVL(gpios,name,target)
  39. #define sys_services_config(target) ASSIGN_COND_VAL_1LVL(services,target)
  40. #define sys_services_config_SPOTIFY(target) ASSIGN_COND_VAL_2LVL(services,cspot,target)
  41. #define sys_services_config_METADATA(target) ASSIGN_COND_VAL_2LVL(services,metadata,target)
  42. #define sys_services_config_AIRPLAY(target) ASSIGN_COND_VAL_2LVL(services,airplay,target)
  43. #define sys_services_config_SLEEP(target) ASSIGN_COND_VAL_2LVL(services,sleep,target)
  44. #define sys_services_config_EQUALIZER(target) ASSIGN_COND_VAL_2LVL(services,equalizer,target)
  45. #define sys_services_config_TELNET(target) ASSIGN_COND_VAL_2LVL(services,telnet,target)
  46. #define sys_services_config_BTSINK(target) ASSIGN_COND_VAL_2LVL(services,bt_sink,target)
  47. #define SYS_DEV_BATTERY(target) ASSIGN_COND_VAL_2LVL(dev,battery,target)
  48. const i2c_config_t * config_i2c_get(sys_i2c_bus * bus);
  49. const spi_bus_config_t * config_spi_get(spi_host_device_t * spi_host);
  50. const gpio_exp_config_t * config_gpio_exp_get(int index);
  51. const sys_i2c_bus* get_i2c_bus(i2c_port_t port);
  52. bool is_dac_config_locked();
  53. bool are_statistics_enabled();