/* * Si7210.cpp * * Created on: 5 Oct. 2020 * Author: Ralim */ #include #include "Si7210_defines.h" #include "I2C_Wrapper.hpp" bool Si7210::detect() { return FRToSI2C::probe(SI7210_ADDRESS); } bool Si7210::init() { //Turn on auto increment and sanity check ID uint8_t temp; if (FRToSI2C::Mem_Read(SI7210_ADDRESS, SI7210_REG_ID, &temp, 1)) { // We don't really care what model it is etc, just probing to check its probably this iC if (temp != 0x00 && temp != 0xFF) { temp = 0x01; //turn on auto increment if (FRToSI2C::Mem_Write(SI7210_ADDRESS, SI7210_REG_INCR, &temp, 1)) { return true; } } } return false; } int16_t Si7210::read() { //Read the two regs int16_t temp = 0; FRToSI2C::Mem_Read(SI7210_ADDRESS, SI7210_REG_DATAH,(uint8_t*) &temp, 2); return __builtin_bswap16(temp); }