OneWireSensor.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #ifndef UNITEMP_OneWire
  2. #define UNITEMP_OneWire
  3. #include "../unitemp.h"
  4. //Коды семейства устройств
  5. typedef enum DallasFamilyCode {
  6. FC_DS18S20 = 0x10,
  7. FC_DS1822 = 0x22,
  8. FC_DS18B20 = 0x28,
  9. } DallasFamilyCode;
  10. //Режим питания датчка
  11. typedef enum PowerMode {
  12. PWR_PASSIVE, //Питание от линии данных
  13. PWR_ACTIVE //Питание от источника питания
  14. } PowerMode;
  15. typedef struct OneWireSensor {
  16. //Порт подключения датчика
  17. const GPIO* gpio;
  18. //Текущий адрес устройства на шине OneWire
  19. uint8_t deviceID[8];
  20. //Код семейства устройств
  21. DallasFamilyCode familyCode;
  22. //Режим питания датчка
  23. PowerMode powerMode;
  24. } OneWireSensor;
  25. /**
  26. * @brief Выделение памяти для датчика на шине OneWire
  27. *
  28. * @param sensor Указатель на датчик
  29. * @param st Тип датчика
  30. * @return Истина если всё ок
  31. */
  32. bool unitemp_OneWire_alloc(void* s, uint16_t* anotherValues);
  33. /**
  34. * @brief Высвобождение памяти инстанса датчика
  35. *
  36. * @param sensor Указатель на датчик
  37. */
  38. bool unitemp_OneWire_free(void* sensor);
  39. /**
  40. * @brief Инициализации датчика на шине One Wire
  41. *
  42. * @param sensor Указатель на датчик (тип Sensor)
  43. * @return Истина если инициализация упспешная
  44. */
  45. bool unitemp_OneWire_init(void* sensor);
  46. /**
  47. * @brief Деинициализация датчика
  48. *
  49. * @param sensor Указатель на датчик (тип Sensor)
  50. */
  51. bool unitemp_OneWire_deinit(void* s);
  52. /**
  53. * @brief Обновить значение с датчка
  54. *
  55. * @param sensor Указатель на датчик (тип Sensor)
  56. * @return Статус обновления
  57. */
  58. UnitempStatus unitemp_OneWire_update(void* sensor);
  59. extern const SensorType DS18x2x;
  60. #endif