i2c_slave.h (1593B)
1 /* Copyright (C) 2019 Elia Ritterbusch 2 + 3 * This program is free software: you can redistribute it and/or modify 4 * it under the terms of the GNU General Public License as published by 5 * the Free Software Foundation, either version 3 of the License, or 6 * (at your option) any later version. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU General Public License for more details. 12 * 13 * You should have received a copy of the GNU General Public License 14 * along with this program. If not, see <https://www.gnu.org/licenses/>. 15 */ 16 /* Library made by: g4lvanix 17 * GitHub repository: https://github.com/g4lvanix/I2C-slave-lib 18 19 Info: Inititate the library by giving the required address. 20 Read or write to the necessary buffer according to the opperation. 21 */ 22 23 #pragma once 24 25 #include "compiler_support.h" 26 27 #ifndef I2C_SLAVE_REG_COUNT 28 29 # if defined(USE_I2C) && defined(SPLIT_COMMON_TRANSACTIONS) 30 # include "transport.h" 31 # define I2C_SLAVE_REG_COUNT sizeof(split_shared_memory_t) 32 # else // defined(USE_I2C) && defined(SPLIT_COMMON_TRANSACTIONS) 33 # define I2C_SLAVE_REG_COUNT 30 34 # endif // defined(USE_I2C) && defined(SPLIT_COMMON_TRANSACTIONS) 35 36 #endif // I2C_SLAVE_REG_COUNT 37 38 STATIC_ASSERT(I2C_SLAVE_REG_COUNT < 256, "I2C target registers must be single byte"); 39 40 extern volatile uint8_t i2c_slave_reg[I2C_SLAVE_REG_COUNT]; 41 42 void i2c_slave_init(uint8_t address); 43 void i2c_slave_stop(void);