Arslan Test
Dependencies: AMS_ENS210_temp_humid_sensor
Diff: AMS_CCS811.h
- Revision:
- 2:e394671ef5f6
- Parent:
- 1:acfca1d3256d
- Child:
- 4:a6b8881eae87
diff -r acfca1d3256d -r e394671ef5f6 AMS_CCS811.h --- a/AMS_CCS811.h Thu Jan 19 12:46:58 2017 +0000 +++ b/AMS_CCS811.h Thu Jan 19 13:23:21 2017 +0000 @@ -14,6 +14,7 @@ #define CONFIG_OP_MODE TEN_SECOND // Every 10 seconds #define CONFIG_INTR 0 // Interupt off #define CONFIG_ADDR_DIR 0 // ADDR n_wake_pin pulled low +#define CONFIG_ENS210_POLL 3000 // ENS210 is polled every 3 seconds /* Library Constants */ #define SLAVE_ADDR_RAW_H 0x5B @@ -43,7 +44,8 @@ SECOND, /**< Measurement every second */ TEN_SECOND, /**< Measurement every 10 seconds */ SIXTY_SECOND, /**< Measurement every 60 seconds */ - CONSTANT /**< Measurement every 250ms - Only raw data available */ + CONSTANT, /**< Measurement every 250ms - Only raw data available */ + INVALID /**< Invalid bit configuration */ }; /** Data collection status. @@ -98,7 +100,7 @@ * * @return The current OP_MODES mode */ - OP_MODES mode(); + AMS_CCS811::OP_MODES mode(); /** Set the ADDR mode \n * @@ -154,7 +156,7 @@ * * @return Current collection state */ - DATA_STATUS has_new_data(); + AMS_CCS811::DATA_STATUS has_new_data(); /** Get the most recent CO2 measurement. * Must call has_new_data() first when when interupts are disabled otherwise the same data will be returned @@ -194,10 +196,7 @@ */ bool attach(void (*func_ptr)(void), PinName pin) { _isr_data_fp.attach(func_ptr); - _int_data_active = true; - _int_data(pin); - _int_data.fall(this, &AMS_CCS811::_isr_data()); - + interrupt_pin(pin); return enable_interupt(true); } @@ -212,11 +211,8 @@ */ template<typename T> bool attach(T *type_ptr, void (T::*mem_ptr)(void), PinName pin) { - _isr_data_fp.attach(type_ptr, mem_ptr); - //_int_data_active = true; - //_int_data(pin); - //_int_data.fall(this, &AMS_CCS811::_isr_data()); - + _isr_data_fp.attach(callback(type_ptr, mem_ptr)); + interrupt_pin(pin); return enable_interupt(true); } @@ -254,11 +250,17 @@ private: I2C* _i2c; + I2C* _ens210_i2c; + bool _addr_dir; int slave_addr; - I2C* _ens210_i2c; + void update_slave_addr(); + bool _ens210_enable; + int _ens210_poll_split; + OP_MODES _mode; + bool set_defaults(); DigitalOut *_n_wake_out; @@ -275,8 +277,12 @@ struct read_config_result { bool success; uint8_t byte; - } + read_config_result() : success(false), byte(0) {} + }; read_config_result read_config(); + + int i2c_read(char reg_addr, char* output, int len); + int i2c_write(char reg_addr, char* input, int len); };