/* This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */
/** library to query measurements from Aosong DHT11 temperature and relative humidity sensor (API)
 *  @file sensor_dht11.h
 *  @author King Kévin <kingkevin@cuvoodoo.info>
 *  @date 2017
 *  @note peripherals used: timer channel @ref sensor_dht11_timer (add external pull-up resistor)
 */
#pragma once

/** a measurement response has been received */
extern volatile bool sensor_dht11_measurement_received;

/** measurement returned by sensor */
struct sensor_dht11_measurement_t {
	uint8_t humidity; /**< relative humidity in %RH (20-95) */
	uint8_t temperature; /**< temperature in °C (0-50) */
};

/** setup peripherals to communicate with sensor */
void sensor_dht11_setup(void);
/** request measurement from sensor
 *  @return request started successfully
 */
bool sensor_dht11_measurement_request(void);
/** decode received measurement
 *  @return decoded measurement (0xff,0xff if invalid)
 */
struct sensor_dht11_measurement_t sensor_dht11_measurement_decode(void);
