Skip to content

Commit 5129470

Browse files
authored
Merge pull request #557 from Kainarx/feat/get_ds18b20_address
feat(ds18b20): add a interface to get device address (BSP-665)
2 parents 33d7fad + 0a1db96 commit 5129470

File tree

3 files changed

+23
-3
lines changed

3 files changed

+23
-3
lines changed

components/ds18b20/examples/ds18b20-read/main/ds18b20-read.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,11 @@ static void sensor_detect(void)
4343
search_result = onewire_device_iter_get_next(iter, &next_onewire_device);
4444
if (search_result == ESP_OK) { // found a new device, let's check if we can upgrade it to a DS18B20
4545
ds18b20_config_t ds_cfg = {};
46+
onewire_device_address_t address;
4647
// check if the device is a DS18B20, if so, return the ds18b20 handle
4748
if (ds18b20_new_device(&next_onewire_device, &ds_cfg, &s_ds18b20s[s_ds18b20_device_num]) == ESP_OK) {
48-
ESP_LOGI(TAG, "Found a DS18B20[%d], address: %016llX", s_ds18b20_device_num, next_onewire_device.address);
49+
ds18b20_get_device_address(s_ds18b20s[s_ds18b20_device_num], &address);
50+
ESP_LOGI(TAG, "Found a DS18B20[%d], address: %016llX", s_ds18b20_device_num, address);
4951
s_ds18b20_device_num++;
5052
} else {
5153
ESP_LOGI(TAG, "Found an unknown device, address: %016llX", next_onewire_device.address);
@@ -58,10 +60,10 @@ static void sensor_detect(void)
5860

5961
void sensor_read(void)
6062
{
61-
for (int i = 0; i < s_ds18b20_device_num; i ++) {
63+
for (int i = 0; i < s_ds18b20_device_num; i++) {
6264
ESP_ERROR_CHECK(ds18b20_trigger_temperature_conversion(s_ds18b20s[i]));
6365
ESP_ERROR_CHECK(ds18b20_get_temperature(s_ds18b20s[i], &s_temperature));
64-
ESP_LOGI(TAG, "temperature read from DS18B20[%d]: %.2fC", i, s_temperature);
66+
ESP_LOGI(TAG, "Temperature read from DS18B20[%d]: %.2fC", i, s_temperature);
6567
}
6668
}
6769

components/ds18b20/include/ds18b20.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,17 @@ esp_err_t ds18b20_trigger_temperature_conversion(ds18b20_device_handle_t ds18b20
107107
*/
108108
esp_err_t ds18b20_get_temperature(ds18b20_device_handle_t ds18b20, float *temperature);
109109

110+
/**
111+
* @brief Get the address of the DS18B20 device
112+
*
113+
* @param[in] ds18b20 DS18B20 device handle returned by `ds18b20_new_device`
114+
* @param[out] ret_address Pointer to store the device address
115+
* @return
116+
* - ESP_OK: Get device address successfully
117+
* - ESP_ERR_INVALID_ARG: Get device address failed due to invalid argument
118+
*/
119+
esp_err_t ds18b20_get_device_address(ds18b20_device_handle_t ds18b20, onewire_device_address_t *ret_address);
120+
110121
#ifdef __cplusplus
111122
}
112123
#endif

components/ds18b20/src/ds18b20.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,3 +163,10 @@ esp_err_t ds18b20_get_temperature(ds18b20_device_handle_t ds18b20, float *ret_te
163163

164164
return ESP_OK;
165165
}
166+
167+
esp_err_t ds18b20_get_device_address(ds18b20_device_handle_t ds18b20, onewire_device_address_t *ret_address)
168+
{
169+
ESP_RETURN_ON_FALSE(ds18b20 && ret_address, ESP_ERR_INVALID_ARG, TAG, "invalid argument");
170+
*ret_address = ds18b20->addr;
171+
return ESP_OK;
172+
}

0 commit comments

Comments
 (0)