Human body temp sensor library
Dependents: MAX30205_Human_Body_Temperature_Example_Program_Hello_World MAX32630HSP3_IMU_Hello_World MAX30205_Human_Body_Temperature_Sensor MAX30205_Human_Body_Temperature_IoT ... more
Diff: MAX30205.h
- Revision:
- 1:d4271ef9f37f
- Parent:
- 0:cdad7a9ef486
- Child:
- 3:939090042b32
--- a/MAX30205.h Mon Apr 03 23:11:58 2017 +0000 +++ b/MAX30205.h Thu Apr 06 00:05:03 2017 +0000 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved. + * Copyright (C) 2017 Maxim Integrated Products, Inc., All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -64,6 +64,22 @@ THYST = 0x02, TOS = 0x03 }; + + ///MAX30205 Configuration register bitfields + union Config + { + uint8_t all; + struct BitField + { + uint8_t shutdown : 1; + uint8_t comp_int : 1; + uint8_t os_polarity : 1; + uint8_t fault_queue : 2; + uint8_t data_format : 1; + uint8_t timeout : 1; + uint8_t one_shot : 1; + }bits; + }; /** * @brief Constructor using I2C PinNames @@ -71,69 +87,66 @@ * @param scl - Pinname for scl * @param slaveAddress - 7-bit I2C address */ - MAX30205(PinName sda, PinName scl, uint8_t slaveAddress); + MAX30205(PinName sda, PinName scl, uint8_t slaveAddress, PinName os = NC); /** * @brief Constructor using reference to I2C object * @param i2c - Reference to I2C object * @param slaveAddress - 7-bit I2C address */ - MAX30205(I2C& i2c, uint8_t slaveAddress); + MAX30205(I2C &i2c, uint8_t slaveAddress, PinName os = NC); /** @brief Destructor */ ~MAX30205(void); - /** @brief Write register of device at slave address - * @param reg - Register address - * @param value - Value to write - * @return 0 on success, non-zero on failure - */ - int32_t reg_write(Registers reg, uint8_t value); - - /** - * @brief Read register of device at slave address - * @param reg - Register address - * @param[out] value - Read data on success - * @return 0 on success, non-zero on failure - */ - int32_t reg_read(Registers reg, uint8_t& value); - - /** - * @brief Write a 16-bit value into device at slave address - * @param reg - Register address - * @param value - 16-bit value to write - * @return 0 on success, non-zero on failure - */ - int32_t reg_write16(Registers reg, uint16_t value); - - /** - * @brief Read a 16-bit value from a device at a slave address - * @param reg - Register address - * @param[out] value - Read data on success - * @return 0 on success, non-zero on failure - */ - int32_t reg_read16(Registers reg, uint16_t& value); - /** * @brief Read the temperature from the device into a 16 bit value * @param[out] value - Raw temperature data on success * @return 0 on success, non-zero on failure */ - int32_t readTemperature(uint16_t& value); + int32_t readTemperature(uint16_t &value); + + /** + * @brief Read the configuration register + * @param config - Reference to Configuration type + * @return 0 on success, non-zero on failure + */ + int32_t readConfiguration(Config &config); + + /** + * @brief Write the configuration register with given configuration + * @param config - Configuration to write + * @return 0 on success, non-zero on failure + */ + int32_t writeConfiguration(const Config config); /** * @brief Read the THYST value from a specified device instance * @param[out] value - THYST register value on success * @return 0 on success, non-zero on failure */ - int32_t reg_THYST_Read(uint16_t& value); + int32_t readTHYST(uint16_t &value); /** * @brief Write the THYST to a device instance * @param value - 16-bit value to write * @return 0 on success, non-zero on failure */ - int32_t reg_THYST_Write(uint16_t value); + int32_t writeTHYST(const uint16_t value); + + /** + * @brief Read the TOS value from device + * @param[out] value - TOS register value on success + * @return 0 on success, non-zero on failure + */ + int32_t readTOS(uint16_t &value); + + /** + * @brief Write the TOS register + * @param value - 16-bit value to write + * @return 0 on success, non-zero on failure + */ + int32_t writeTOS(const uint16_t value); /** * @brief Convert a raw temperature value into a float @@ -148,12 +161,32 @@ * @returns Returns the converted Fahrenheit value */ float toFahrenheit(float temperatureC); + +protected: + + /** + * @brief Write register of device at slave address + * @param reg - Register address + * @param value - Value to write + * @return 0 on success, non-zero on failure + */ + int32_t writeRegister(Registers reg, uint16_t value); + + /** + * @brief Read register of device at slave address + * @param reg - Register address + * @param[out] value - Read data on success + * @return 0 on success, non-zero on failure + */ + int32_t readRegister(Registers reg, uint16_t &value); private: /// I2C object I2C m_i2c; /// Device slave address uint8_t m_writeAddress, m_readAddress; + /// Over temperature shutdown interrupt pin + DigitalIn m_os; }; #endif /* __MAX30205_H_ */