/* 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 . * */ /** library for 1-wire protocol as slave (API) * @file onewire_slave.h * @author King Kévin * @date 2017 * @note peripherals used: timer @ref onewire_slave_timer, GPIO @ref onewire_slave_gpio * @note overdrive mode is not supported */ #pragma once /** set when a function command code has been received * @note needs to be cleared by user */ extern volatile bool onewire_slave_function_code_received; /** last function command code received */ extern volatile uint8_t onewire_slave_function_code; /** set when data read/write transfer has been completed * @note needs to be cleared by user */ extern volatile bool onewire_slave_transfer_complete; /** setup 1-wire peripheral * @param[in] family family code for slave ROM code (8 bits) * @param[in] serial serial number for slave ROM code (48 bits) */ void onewire_slave_setup(uint8_t family, uint64_t serial); /** read data from master * @param[out] data buffer to save read bits * @param[in] size number of bytes to read * @return if transfer initialization succeeded * @note onewire_slave_transfer_complete is set when transfer is completed */ bool onewire_slave_function_read(uint8_t* data, size_t size); /** write data to master * @param[in] data data to write * @param[in] size number of bytes to write * @return if transfer initialization succeeded * @note onewire_slave_transfer_complete is set when transfer is completed */ bool onewire_slave_function_write(const uint8_t* data, size_t size);