Generic Si7021 Temp/Hum sensor library

Dependents:   Turtle_RadioShuttle

HELIOS_Si7021.h

Committer:
Helmut64
Date:
2019-03-29
Revision:
0:19633f4a946b
Child:
1:5ea2d9a2ef8c

File content as of revision 0:19633f4a946b:

/*
 * Copyright (c) 2019 Helmut Tschemernjak
 * 30826 Garbsen (Hannover) Germany
 * Licensed under the Apache License, Version 2.0);
 */

#ifndef __HELIOS_Si7021_H__
#define __HELIOS_Si7021_H__

class HELIOS_Si7021 {
public:
	HELIOS_Si7021(PinName sda, PinName scl);
	~HELIOS_Si7021();

	void reset(void);
	void readSerialNumber(void);
	uint8_t getRevision(void) { return _revision; };
	bool hasSensor(void) { return _foundDevice; };
	
	float readTemperature(void);
	float readHumidity(void);
	
	enum sensorType {
		SI_Engineering_Samples,
		SI_7013,
		SI_7020,
		SI_7021,
		SI_unkown,
	};
	const char *getModelName(void);
	sensorType getModel(void);
	
private:
    I2C *_i2c;
	char _data[8];

	bool _foundDevice;
	void _readRevision(void);
	uint32_t sernum_a, sernum_b;
	sensorType _model;
	uint8_t _revision;
	uint8_t _readRegister8(uint8_t reg);
	uint16_t _readRegister16(uint8_t reg);
	void _writeRegister8(uint8_t reg, uint8_t value);
	const static u_int8_t _i2caddr = 0x40 << 1; // convert from 7 to 8 bit.
	const static int _TRANSACTION_TIMEOUT = 100; // Wire NAK/Busy timeout in ms
};

/**************************************************************************/

#endif // __HELIOS_Si7021_H__