OneWireSensor.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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 {
  16. //Порт подключения датчика
  17. const GPIO* gpio;
  18. //Количество устройств на шине
  19. //Обновляется при ручном добавлении датчика на эту шину
  20. uint8_t device_count;
  21. //Режим питания датчиков на шине
  22. PowerMode powerMode;
  23. } OneWireBus;
  24. typedef struct OneWireSensor {
  25. //Указатель на шину OneWire
  26. OneWireBus* bus;
  27. //Текущий адрес устройства на шине OneWire
  28. uint8_t deviceID[8];
  29. //Код семейства устройств
  30. DallasFamilyCode familyCode;
  31. } OneWireSensor;
  32. /**
  33. * @brief Выделение памяти для датчика на шине OneWire
  34. *
  35. * @param sensor Указатель на датчик
  36. * @param st Тип датчика
  37. * @return Истина если всё ок
  38. */
  39. bool unitemp_OneWire_sensor_alloc(Sensor* sensor, uint8_t* anotherValues);
  40. /**
  41. * @brief Высвобождение памяти инстанса датчика
  42. *
  43. * @param sensor Указатель на датчик
  44. */
  45. bool unitemp_OneWire_sensor_free(Sensor* sensor);
  46. /**
  47. * @brief Инициализации датчика на шине One Wire
  48. *
  49. * @param sensor Указатель на датчик (тип Sensor)
  50. * @return Истина если инициализация упспешная
  51. */
  52. bool unitemp_OneWire_sensor_init(Sensor* sensor);
  53. /**
  54. * @brief Деинициализация датчика
  55. *
  56. * @param sensor Указатель на датчик (тип Sensor)
  57. */
  58. bool unitemp_OneWire_sensor_deinit(Sensor* sensor);
  59. /**
  60. * @brief Обновить значение с датчка
  61. *
  62. * @param sensor Указатель на датчик (тип Sensor)
  63. * @return Статус обновления
  64. */
  65. UnitempStatus unitemp_OneWire_sensor_update(Sensor* sensor);
  66. /**
  67. * @brief Запуск общения с датчиком
  68. *
  69. * @param sensor Указатель на датчик
  70. * @return Истина если датчик отозвался
  71. */
  72. bool unitemp_oneWire_sensor_start(OneWireSensor* instance);
  73. extern const SensorType DS18x2x;
  74. #endif