113 lines
3.3 KiB
C
113 lines
3.3 KiB
C
/**
|
|
* @file
|
|
* Header file for the zh_onewire component.
|
|
*
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "stdio.h"
|
|
#include "freertos/FreeRTOS.h"
|
|
#include "freertos/task.h"
|
|
#include "driver/gpio.h"
|
|
#include "rom/ets_sys.h"
|
|
#include "esp_err.h"
|
|
#include "esp_log.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
/**
|
|
* @brief Initialize 1-Wire interface.
|
|
*
|
|
* @param[in] pin 1-Wire bus gpio connection.
|
|
*
|
|
* @return
|
|
* - ESP_OK if initialization was successful
|
|
* - ESP_ERR_INVALID_ARG if select incorrect gpio number
|
|
*/
|
|
esp_err_t zh_onewire_init(const uint8_t pin);
|
|
|
|
/**
|
|
* @brief Reset command for all 1-Wire devices on bus.
|
|
*
|
|
* @return
|
|
* - ESP_OK if reset was successful
|
|
* - ESP_ERR_INVALID_RESPONSE if the bus is busy
|
|
* - ESP_ERR_TIMEOUT if there are no 1-Wire devices available on the bus or the devices are not responding
|
|
*/
|
|
esp_err_t zh_onewire_reset(void);
|
|
|
|
/**
|
|
* @brief Send one byte to 1-Wire device.
|
|
*
|
|
* @param[in] byte Byte value.
|
|
*
|
|
*/
|
|
void zh_onewire_send_byte(uint8_t byte);
|
|
|
|
/**
|
|
* @brief Read one byte from 1-Wire device.
|
|
*
|
|
* @return
|
|
* - Byte value
|
|
*/
|
|
uint8_t zh_onewire_read_byte(void);
|
|
|
|
/**
|
|
* @brief Initializes the bus master to address all 1-Wire devices on the bus.
|
|
*
|
|
* @return
|
|
* - ESP_OK if initialization was successful
|
|
* - ESP_FAIL if there are no 1-Wire devices available on the bus or the devices are not responding
|
|
*/
|
|
esp_err_t zh_onewire_skip_rom(void);
|
|
|
|
/**
|
|
* @brief Read rom value if only one 1-Wire device is present on the bus.
|
|
*
|
|
* @param[out] buf Pointer to a buffer containing an eight-byte rom value.
|
|
*
|
|
* @return
|
|
* - ESP_OK if read was successful
|
|
* - ESP_FAIL if there are no 1-Wire devices available on the bus or the devices are not responding
|
|
* - ESP_ERR_INVALID_CRC if more than one 1-Wire device is present on the bus
|
|
*/
|
|
esp_err_t zh_onewire_read_rom(uint8_t *buf);
|
|
|
|
/**
|
|
* @brief Initialize the bus master to address a specific 1-Wire device on bus.
|
|
*
|
|
* @param[in] data Pointer to a buffer containing an eight-byte rom value.
|
|
*
|
|
* @return
|
|
* - ESP_OK if initialization was successful
|
|
* - ESP_FAIL if there are no 1-Wire devices available on the bus or the devices are not responding
|
|
*/
|
|
esp_err_t zh_onewire_match_rom(const uint8_t *data);
|
|
|
|
/**
|
|
* @brief Initialize search 1-Wire devices on bus.
|
|
*
|
|
* @return
|
|
* - ESP_OK if initialization was successful
|
|
*/
|
|
esp_err_t zh_onewire_search_rom_init(void);
|
|
|
|
/**
|
|
* @brief Search next 1-Wire device on bus.
|
|
*
|
|
* @attention Initialize search 1-Wire devices on bus must be initialized first. @code zh_onewire_search_rom_init() @endcode
|
|
*
|
|
* @return
|
|
* - Pointer to a buffer containing an eight-byte rom value
|
|
* - NULL if the search is terminated or if there are no 1-Wire devices available on the bus or the devices are not responding
|
|
*/
|
|
uint8_t *zh_onewire_search_rom_next(void);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|