Sensors.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #ifndef UNITEMP_SENSORS
  2. #define UNITEMP_SENSORS
  3. #include <furi.h>
  4. #include <input/input.h>
  5. //Типы датчиков
  6. typedef enum {
  7. DHT11,
  8. DHT12_1W,
  9. DHT12_I2C,
  10. DHT20,
  11. DHT21, //AM2301
  12. DHT22, //AM2302
  13. AM2320_1W,
  14. AM2320_I2C,
  15. LM75,
  16. DS18B20,
  17. BMP180,
  18. BMP280,
  19. BME280,
  20. //Порядок сенсоров сверху не менять!
  21. SENSOR_TYPES_COUNT //Общее количество типов датчиков
  22. } SensorType;
  23. //Типы подключения датчиков
  24. typedef enum {
  25. ONE_WIRE, //Собственный однопроводной протокол датчиков DHTXX и AM23XX
  26. DALLAS, //Однопроводной протокол Dallas
  27. I2C,
  28. SPI,
  29. CONNECTION_TYPES_COUNT //Общее количество типов подключений
  30. } Interface;
  31. //Порт ввода/вывода Flipper Zero
  32. typedef struct {
  33. const uint8_t num;
  34. const char* name;
  35. const GpioPin* pin;
  36. } GPIO;
  37. //Датчик
  38. typedef struct {
  39. //Имя датчика
  40. char* name;
  41. //Температура
  42. float temp;
  43. //Относительная влажность
  44. float hum;
  45. //Тип датчика
  46. SensorType type;
  47. //Экземпляр датчика
  48. void* instance;
  49. } Sensor;
  50. /**
  51. * @brief Получить имя типа датчика
  52. *
  53. * @param st Тип датчика
  54. * @return Указатель на строку с именем типа датчика
  55. */
  56. const char* unitemp_getSensorTypeName(SensorType st);
  57. /**
  58. * @brief Конвертация номера порта на корпусе FZ в GPIO
  59. *
  60. * @param name Номер порта на корпусе FZ
  61. * @return Указатель на GPIO при успехе, NULL при ошибке
  62. */
  63. const GPIO* unitemp_getGPIOFormInt(uint8_t name);
  64. #endif