Maxim Integrated's IoT development kit.
Dependencies: MAX30101 MAX30003 MAX113XX_Pixi MAX30205 max32630fthr USBDevice
max30205_app.cpp@16:503f8308e2db, 2018-07-19 (annotated)
- Committer:
- Mahir Ozturk
- Date:
- Thu Jul 19 18:27:45 2018 +0300
- Revision:
- 16:503f8308e2db
- Parent:
- 13:fba77a5d0fa0
Update mbed-os to fix the bug: Symbol __user_perthread_libspace multiply defined
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Mahir Ozturk |
13:fba77a5d0fa0 | 1 | /* |
Mahir Ozturk |
13:fba77a5d0fa0 | 2 | * max30205_app.c |
Mahir Ozturk |
13:fba77a5d0fa0 | 3 | * |
Mahir Ozturk |
13:fba77a5d0fa0 | 4 | * Created on: Jun 20, 2018 |
Mahir Ozturk |
13:fba77a5d0fa0 | 5 | * Author: Mahir.Ozturk |
Mahir Ozturk |
13:fba77a5d0fa0 | 6 | */ |
Mahir Ozturk |
13:fba77a5d0fa0 | 7 | #include <mbed.h> |
Mahir Ozturk |
13:fba77a5d0fa0 | 8 | #include "max30205_app.h" |
Mahir Ozturk |
13:fba77a5d0fa0 | 9 | #include "MAX30205.h" |
Mahir Ozturk |
13:fba77a5d0fa0 | 10 | |
Mahir Ozturk |
13:fba77a5d0fa0 | 11 | bool max30205_config(MAX30205 &temp_sensor){ |
Mahir Ozturk |
13:fba77a5d0fa0 | 12 | |
Mahir Ozturk |
13:fba77a5d0fa0 | 13 | int rc = 0; |
Mahir Ozturk |
13:fba77a5d0fa0 | 14 | |
Mahir Ozturk |
13:fba77a5d0fa0 | 15 | MAX30205::Configuration_u temp_cfg; |
Mahir Ozturk |
13:fba77a5d0fa0 | 16 | temp_cfg.all = 0; |
Mahir Ozturk |
13:fba77a5d0fa0 | 17 | temp_cfg.bits.shutdown = 1; // Shutdown mode |
Mahir Ozturk |
13:fba77a5d0fa0 | 18 | temp_cfg.bits.comp_int = 1; // Interrupt mode |
Mahir Ozturk |
13:fba77a5d0fa0 | 19 | temp_cfg.bits.os_polarity = 0; // Active low OS |
Mahir Ozturk |
13:fba77a5d0fa0 | 20 | temp_cfg.bits.fault_queue = 1; // Two faults for OS condition |
Mahir Ozturk |
13:fba77a5d0fa0 | 21 | temp_cfg.bits.data_format = 0; // Normal data format |
Mahir Ozturk |
13:fba77a5d0fa0 | 22 | temp_cfg.bits.timeout = 0; // I2C timeout reset enabled |
Mahir Ozturk |
13:fba77a5d0fa0 | 23 | temp_cfg.bits.one_shot = 0; // Start with one-shot = 0 |
Mahir Ozturk |
13:fba77a5d0fa0 | 24 | |
Mahir Ozturk |
13:fba77a5d0fa0 | 25 | rc = temp_sensor.writeConfiguration(temp_cfg); // Write config to MAX30205 |
Mahir Ozturk |
13:fba77a5d0fa0 | 26 | |
Mahir Ozturk |
13:fba77a5d0fa0 | 27 | return rc; |
Mahir Ozturk |
13:fba77a5d0fa0 | 28 | } |
Mahir Ozturk |
13:fba77a5d0fa0 | 29 | |
Mahir Ozturk |
13:fba77a5d0fa0 | 30 | void max30205_reader_task(struct max30205_reader_task_args *args) |
Mahir Ozturk |
13:fba77a5d0fa0 | 31 | { |
Mahir Ozturk |
13:fba77a5d0fa0 | 32 | MAX30205 max30205_temp_sensor(args->i2cBus, 0x48); /* New MAX30205 on i2cBus */ |
Mahir Ozturk |
13:fba77a5d0fa0 | 33 | |
Mahir Ozturk |
13:fba77a5d0fa0 | 34 | int rc = max30205_config(max30205_temp_sensor); // Configure sensor, return 0 on success |
Mahir Ozturk |
13:fba77a5d0fa0 | 35 | |
Mahir Ozturk |
13:fba77a5d0fa0 | 36 | MAX30205::Configuration_u temp_cfg; |
Mahir Ozturk |
13:fba77a5d0fa0 | 37 | uint16_t rawTemperatureRead; |
Mahir Ozturk |
13:fba77a5d0fa0 | 38 | float temperature; |
Mahir Ozturk |
13:fba77a5d0fa0 | 39 | |
Mahir Ozturk |
13:fba77a5d0fa0 | 40 | temp_cfg.all = 0; |
Mahir Ozturk |
13:fba77a5d0fa0 | 41 | |
Mahir Ozturk |
13:fba77a5d0fa0 | 42 | printf("Starting MAX30205 Temperature Demo Application...\r\n"); |
Mahir Ozturk |
13:fba77a5d0fa0 | 43 | |
Mahir Ozturk |
13:fba77a5d0fa0 | 44 | while (1) { |
Mahir Ozturk |
13:fba77a5d0fa0 | 45 | if (rc == 0) { |
Mahir Ozturk |
13:fba77a5d0fa0 | 46 | /* Send one-shot cmd to begin conversion */ |
Mahir Ozturk |
13:fba77a5d0fa0 | 47 | temp_cfg.bits.one_shot = 1; |
Mahir Ozturk |
13:fba77a5d0fa0 | 48 | rc = max30205_temp_sensor.writeConfiguration(temp_cfg); |
Mahir Ozturk |
13:fba77a5d0fa0 | 49 | |
Mahir Ozturk |
13:fba77a5d0fa0 | 50 | Thread::wait(50); |
Mahir Ozturk |
13:fba77a5d0fa0 | 51 | |
Mahir Ozturk |
13:fba77a5d0fa0 | 52 | /* Read the temperature data */ |
Mahir Ozturk |
13:fba77a5d0fa0 | 53 | rc = max30205_temp_sensor.readTemperature(rawTemperatureRead); |
Mahir Ozturk |
13:fba77a5d0fa0 | 54 | |
Mahir Ozturk |
13:fba77a5d0fa0 | 55 | /* Convert temp data to Celsius */ |
Mahir Ozturk |
13:fba77a5d0fa0 | 56 | temperature = max30205_temp_sensor.toCelsius(rawTemperatureRead); |
Mahir Ozturk |
13:fba77a5d0fa0 | 57 | |
Mahir Ozturk |
13:fba77a5d0fa0 | 58 | bleGattAttrWrite(args->gatt, (uint8_t *)&temperature, sizeof(temperature)); |
Mahir Ozturk |
13:fba77a5d0fa0 | 59 | printf("Temperature is %2.3f deg. C\r\n", temperature); |
Mahir Ozturk |
13:fba77a5d0fa0 | 60 | |
Mahir Ozturk |
13:fba77a5d0fa0 | 61 | Thread::wait(args->notify_period_sec * 1000); |
Mahir Ozturk |
13:fba77a5d0fa0 | 62 | |
Mahir Ozturk |
13:fba77a5d0fa0 | 63 | } else { |
Mahir Ozturk |
13:fba77a5d0fa0 | 64 | printf("Something went wrong, check the I2C bus and power connections...\r\n"); |
Mahir Ozturk |
13:fba77a5d0fa0 | 65 | |
Mahir Ozturk |
13:fba77a5d0fa0 | 66 | return; |
Mahir Ozturk |
13:fba77a5d0fa0 | 67 | } |
Mahir Ozturk |
13:fba77a5d0fa0 | 68 | } |
Mahir Ozturk |
13:fba77a5d0fa0 | 69 | } |
Mahir Ozturk |
13:fba77a5d0fa0 | 70 | |
Mahir Ozturk |
13:fba77a5d0fa0 | 71 |