1
0
forked from me/IronOS
Files
IronOS/workspace/TS100/Core/Drivers/Si7210.cpp
2020-10-13 18:46:37 +11:00

36 lines
869 B
C++

/*
* Si7210.cpp
*
* Created on: 5 Oct. 2020
* Author: Ralim
*/
#include <Si7210.h>
#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);
}