Arslan Test
Dependencies: AMS_ENS210_temp_humid_sensor
Diff: AMS_CCS811.cpp
- Revision:
- 4:a6b8881eae87
- Parent:
- 3:782a719f47a5
- Child:
- 5:41e97348e9e7
diff -r 782a719f47a5 -r a6b8881eae87 AMS_CCS811.cpp --- a/AMS_CCS811.cpp Thu Jan 19 13:25:08 2017 +0000 +++ b/AMS_CCS811.cpp Thu Jan 19 14:27:44 2017 +0000 @@ -4,18 +4,13 @@ AMS_CCS811::AMS_CCS811(I2C * i2c, PinName n_wake_pin) { _n_wake_out = new (std::nothrow) DigitalOut(n_wake_pin); - _i2c = i2c; - - set_defaults(); + _i2c = i2c; } AMS_CCS811::AMS_CCS811(I2C * i2c, PinName n_wake_pin, I2C * ens210_i2c) { _n_wake_out = new (std::nothrow) DigitalOut(n_wake_pin); _i2c = i2c; _ens210_i2c = ens210_i2c; - - set_defaults(); - } AMS_CCS811::~AMS_CCS811() { @@ -25,7 +20,39 @@ } bool AMS_CCS811::init() { - return true; + enable_ens210(true); + + return set_defaults(); +} + +void AMS_CCS811::i2c_interface(I2C * i2c) { + _i2c = i2c; +} + +void AMS_CCS811::ens210_i2c_interface(I2C * i2c) { + _ens210_i2c = i2c; +} + +bool AMS_CCS811::enable_ens210(bool enable) { + + _ens210_enabled = false; + if (_ens210_i2c != NULL) _ens210_enabled = enable; + update_ens210_timer(); + + return _ens210_enabled; +} + +bool AMS_CCS811::ens210_is_enabled() { + return _ens210_enabled; +} + +void AMS_CCS811::ens210_poll_interval(int poll_ms) { + _ens210_poll_split = poll_ms; + update_ens210_timer(); +} + +int AMS_CCS811::ens210_poll_interval() { + return _ens210_poll_split; } bool AMS_CCS811::mode(OP_MODES mode) { @@ -102,7 +129,7 @@ } const char * AMS_CCS811::last_error() { - return ""; + return "TODO"; } bool AMS_CCS811::enable_interupt(bool enable) { @@ -160,6 +187,15 @@ return write_config(); } +void AMS_CCS811::update_ens210_timer() { + _ens210_poll_t.detach(); + if (_ens210_enabled) + _ens210_poll_t.attach_us(callback(this, &AMS_CCS811::ens210_isr), _ens210_poll_split*1000); +} + +void AMS_CCS811::ens210_isr() { +} + void AMS_CCS811::update_slave_addr() { slave_addr = addr_mode() ? SLAVE_ADDR_RAW_H : SLAVE_ADDR_RAW_L; }