Maxim Integrated's IoT development kit

Dependencies:   MAX30101 MAX30003 MAX113XX_Pixi MAX30205 max32630fthr USBDevice

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?

UserRevisionLine numberNew 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