TEST
Dependencies: max32630fthr Adafruit_FeatherOLED USBDevice
Utilities/WatchInterface.h
- Committer:
- gmehmet
- Date:
- 2019-04-10
- Revision:
- 1:f60eafbf009a
- Child:
- 3:2fe2ff1ca0dc
File content as of revision 1:f60eafbf009a:
/* * WatchInterface.h * * Created on: Aug 28, 2018 * Author: Gokhan.Bektas */ #define BATTERY_GAUGE_COUNT 50 #define BATTERY_CRITICAL_LEVEL 5 #ifndef UTILITIES_WATCHINTERFACE_H_ #define UTILITIES_WATCHINTERFACE_H_ #include "mbed.h" #include "LS013B7DH03.h" #include "version.h" #include "BLE_ICARUS.h" #include "MAX20303.h" #define DISPLAYMODE_TIME 0 #define DISPLAYMODE_PPG 1 #ifdef ENABLE_SPO2 #define DISPLAYMODE_SPO2_ONESHOT 2 #define DISPLAYMODE_SPO2_CONTINUOUS 3 #else #define DISPLAYMODE_TEMP 4 #endif #define DISPLAYMODE_INFO 5 #define DISPLAYMODE_ECG 6 #define DISPLAYMODE_TETHERED 7 #define DISPLAYMODE_TETHERED_USB 8 #define DISPLAYMODE_LOGO 9 #define DISPLAYMODE_RECORDING 10 #define DISPLAYMODE_RECORDING_STOP 11 #define DISPLAYMODE_AFTERBOOT 12 typedef enum { BUTTONEVENT_NONE, BUTTONEVENT_UP_PRE, BUTTONEVENT_DOWN_PRE, BUTTONEVENT_UP, BUTTONEVENT_DOWN } Button_Event; class WatchInterface { public: typedef enum { /** No activity, or very light activity. */ ACTD_REST_ACTIVITY = 0, /** Non-rhythmic activities that cannot be classified in the other categories. */ ACTD_OTHER_ACTIVITY = 1, /** Walking activity. */ ACTD_WALK_ACTIVITY = 2, /** Running activity. */ ACTD_RUN_ACTIVITY = 3, /** Biking activity. */ ACTD_BIKE_ACTIVITY = 4, /** Rhythmic activities that cannot be classified in the other categories. */ ACTD_OTHER_RYTHMIC_ACTIVITY = 5, } actd_ActivityClass_te; typedef enum { BUTTON_PRESSED = 1, BUTTON_RELEASED = 0 } ButtonStatus; typedef enum { BUTTON_POWER = 0, BUTTON_UP = 1, BUTTON_DOWN = 2 } hspButton; /** Create an Watch Interface controller * * @param buttonUp PinName UP button * @param buttonDown PinName DOWN button * @param buttonPower PinName POWER button */ WatchInterface(PinName buttonUp, PinName buttonDown, PinName buttonPower, PinName displayCS, PinName displayEXTCOM, PinName displayDISP, SPI* displaySPI); void updateDisplay(int batteryLevelToBeScaled); void execute(void); void displayOff(bool off); void DisplayStatus(); void DisplayModeUpdated(); static void refreshCallback(void); unsigned char connection_indicator; ButtonStatus getButtonStatus(hspButton button); uint16_t heartRate; uint16_t heartRateConfidence; volatile bool BLE_Interface_Exists, BLE_Interface_Exists_old; volatile bool USB_Interface_Exists, USB_Interface_Exists_old; volatile bool USB_Interface_MSD; volatile bool recording, recording_old; bool recordingStopFlag; volatile bool modeUpdated; unsigned char batteryLevel; volatile Button_Event buttonEvent_down; volatile Button_Event buttonEvent_up; unsigned char displayMode; unsigned char displayMode_old; bool isDisplayOff; volatile bool BLEWasActive; volatile bool USBWasActive; bool ecg_enabled; bool ppg_enabled; bool bootComplete; uint16_t last_good_hr; uint16_t instant_hr; uint16_t instant_hr_conf; uint8_t instant_hr_activityClass; float instant_temp_celsius; char m_mac_addr_[6]; MAX20303* m_max20303_; protected: private: //Ticker m_watchInterface_ticker_; InterruptIn btnUp; InterruptIn btnDown; DigitalIn btnPower; DigitalOut dispCS; PinName dispEXTCOM; DigitalOut dispDISP; PwmOut DisplayPWM; Timer interfaceTimer; volatile int buttonTimer; void isr_buttonup(); void isr_buttondown(); bool display_BLEMode_Active; bool display_USBMode_Active; silabs::LS013B7DH03 display; unsigned char ppg_lcd_count; //a variable used to print "MEASURING" while the ppg settling static bool refreshed; static const uint16_t kHeartRateUpperLimit = 240; static const uint16_t kHeartRateLowerLimit = 40; static const uint16_t ConfThresLevelRest = 50; static const uint16_t ConfThresLevelOther = 10; }; #endif