Tetsuro Tatsuoka
/
BH1792GLC_Eval
Measuring plethysmogram with BH1792GLC (Rohm Semiconductor) and calculating pulse rate
Diff: main.cpp
- Revision:
- 0:18d735a66926
- Child:
- 1:90f70c146a26
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Feb 05 20:22:14 2018 +0000 @@ -0,0 +1,59 @@ +/** + * @file main.cpp + * @brief Measuring plethysmogram and pulse rate with BH1792GLC + * @date 2018.02.03 + * @version 1.0.0 + */ +#include "mbed.h" +#include "USBSerial.h" +#include "PulseRate.h" + +#define PACKET_HEADER (0xAA) +#define PULSE_RATE_ID (0xBB) +#define BYTE_MASK (0xFF) + +USBSerial serial; +#ifdef _OP_MODE_INT_AD +PulseRate pr(p20, LED1, p26); /* Sensor, LED, Beep */ +#elif defined _OP_MODE_BH1792GLC +PulseRate pr(p28, p27, p20, LED1, p26); /* SDA, SCL, INT, LED, Beep */ +#endif + +/** Send data packet + * @param second_val Byte data at packet address 0x01 + * @param data_val Short data at packet address 0x02, 0x03 + */ +bool send_packet(int second_val, int data_val) +{ + if(serial.writeable()) { + serial.putc(PACKET_HEADER); + serial.putc(second_val & BYTE_MASK); + serial.putc((data_val >> 8 ) & BYTE_MASK); + serial.putc(data_val & BYTE_MASK); + return true; + } else { + return false; + } +} + +/** Main function + */ +int main() +{ + uint32_t num; + int32_t wave; + uint32_t rate; + + pr.start_sampling(); /* start procedure */ + + while(1) { + /* Pulse waveform */ + if(pr.get_wave(num, wave)) { + send_packet(num, wave); + } + /* Pulse rate */ + if(pr.get_pr_val(rate)) { + send_packet(PULSE_RATE_ID, rate); + } + } +}