Maxim Integrated / Mbed OS MAXREFDES220_HEART_RATE_MONITOR

Dependencies:   USBDevice max32630fthr

Fork of MAXREFDES220# by Maxim Integrated

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "USBSerial.h"
00003 #include "version.h"
00004 #include "DSInterface.h"
00005 #include "Peripherals.h"
00006 #include "max32630fthr.h"
00007 #include "SSInterface.h"
00008 #include "SSBootloaderComm.h"
00009 #include "SSMAX30101Comm.h"
00010 
00011 #ifndef MAXIM_PLATFORM_NAME
00012 #define MAXIM_PLATFORM_NAME "Pegasus"
00013 #endif
00014 
00015 #if ENABLE_LED_STATUS
00016 //Set yellow light during boot
00017 DigitalOut rLED(LED1, LED_ON);
00018 DigitalOut gLED(LED2, LED_ON);
00019 DigitalOut bLED(LED3, LED_OFF);
00020 #endif
00021 
00022 MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3);
00023 
00024 // Virtual serial port over USB
00025 USBSerial microUSB(0x1f00, 0x2012, 0x0001, false);
00026 // Hardware serial port over DAPLink
00027 Serial daplink(USBRX, USBTX, 115200);
00028 
00029 //GUI/Terminal Interface
00030 DSInterface dsInterface(&microUSB);
00031 
00032 //SmartSensor Interface
00033 I2C ssI2C(P3_4, P3_5);
00034 PinName ss_mfio(P5_4);
00035 PinName ss_reset(P5_6);
00036 SSInterface ssInterface(ssI2C, ss_mfio, ss_reset);
00037 
00038 SSBootloaderComm ssBoot(&microUSB, &ssInterface, &dsInterface);
00039 SSMAX30101Comm ssMAX30101(&microUSB, &ssInterface, &dsInterface);
00040 
00041 
00042 #ifdef ENABLE_LED_STATUS
00043 static int led_on_ms = 100;
00044 static int led_off_ms = 1900;
00045 static Timer blink_timer;
00046 static int current_state = 0;
00047 void update_led_state()
00048 {
00049     if (current_state == LED_ON) {
00050         if (blink_timer.read_ms() > led_on_ms) {
00051             gLED = LED_OFF;
00052             current_state = LED_OFF;
00053             blink_timer.reset();
00054         }
00055     }
00056     else
00057     {
00058         if (blink_timer.read_ms() > led_off_ms) {
00059             gLED = LED_ON;
00060             current_state = LED_ON;
00061             blink_timer.reset();
00062         }
00063     }
00064 }
00065 #endif
00066 
00067 void print_build_version()
00068 {
00069     printf("\n\nPegasus mBED EVKit\r\n");
00070     printf("Fw version: %s, mbed version: %d\r\n", FIRMWARE_VERSION, MBED_VERSION);
00071     printf("Build source: (%s)  %s\r\n", BUILD_SOURCE_BRANCH, BUILD_SOURCE_HASH);
00072     printf("Build time: %s  %s\r\n\n", __TIME__, __DATE__);
00073 }
00074 
00075 int main()
00076 {
00077     daplink.printf("Init NVIC Priorities...\r\n");
00078     fflush(stdout);
00079     NVIC_SetPriority(GPIO_P0_IRQn, 5);
00080     NVIC_SetPriority(GPIO_P1_IRQn, 5);
00081     NVIC_SetPriority(GPIO_P2_IRQn, 5);
00082     NVIC_SetPriority(GPIO_P3_IRQn, 5);
00083     NVIC_SetPriority(GPIO_P4_IRQn, 5);
00084     NVIC_SetPriority(GPIO_P5_IRQn, 5);
00085     NVIC_SetPriority(GPIO_P6_IRQn, 5);
00086     print_build_version();
00087     daplink.printf("daplink serial port\r\n");
00088     microUSB.printf("micro USB serial port\r\n");
00089 
00090     dsInterface.set_fw_version(FIRMWARE_VERSION);
00091     dsInterface.set_fw_platform(MAXIM_PLATFORM_NAME);
00092     Peripherals::setUSBSerial(&microUSB);
00093 
00094     ssI2C.frequency(400000);
00095     dsInterface.set_fw_platform(ssInterface.get_ss_platform_name());
00096     dsInterface.set_fw_version(ssInterface.get_ss_fw_version());
00097         dsInterface.add_sensor_comm(&ssBoot);
00098         dsInterface.add_sensor_comm(&ssMAX30101);
00099 
00100 #ifdef ENABLE_LED_STATUS
00101     //Indicate we're done with setup
00102     rLED = LED_OFF;
00103     gLED = LED_OFF;
00104     bLED = LED_OFF;
00105 
00106     blink_timer.start();
00107 #endif
00108 
00109     while(1) {
00110         USBSerial *serial = &microUSB;
00111         uint8_t ch;
00112         while (serial->readable()) {
00113             ch = serial->_getc();
00114             dsInterface.enable_console_interface();
00115             dsInterface.build_command(ch);
00116         }
00117 
00118         dsInterface.data_report_execute();
00119 #ifdef ENABLE_LED_STATUS
00120         update_led_state();
00121 #endif
00122     }
00123 }