repo time

Dependencies:   mbed MAX14720 MAX30205 USBDevice

Committer:
darienf
Date:
Tue Apr 06 06:41:40 2021 +0000
Revision:
20:6d2af70c92ab
another repo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
darienf 20:6d2af70c92ab 1 //#define CES_DEMO
darienf 20:6d2af70c92ab 2 using System;
darienf 20:6d2af70c92ab 3 using System.Collections.Generic;
darienf 20:6d2af70c92ab 4 using System.Linq;
darienf 20:6d2af70c92ab 5 using System.Text;
darienf 20:6d2af70c92ab 6
darienf 20:6d2af70c92ab 7 using System.Runtime.InteropServices;
darienf 20:6d2af70c92ab 8
darienf 20:6d2af70c92ab 9 namespace HealthSensorPlatform
darienf 20:6d2af70c92ab 10 {
darienf 20:6d2af70c92ab 11 #if CES_DEMO
darienf 20:6d2af70c92ab 12 class AlgorithmMobileBU
darienf 20:6d2af70c92ab 13 {
darienf 20:6d2af70c92ab 14 // Algorithm from Mobile BU
darienf 20:6d2af70c92ab 15 public const string DllName = "algo_win.dll";
darienf 20:6d2af70c92ab 16
darienf 20:6d2af70c92ab 17 public struct AlgorithmOutput
darienf 20:6d2af70c92ab 18 {
darienf 20:6d2af70c92ab 19 public double version;
darienf 20:6d2af70c92ab 20 public double hr;
darienf 20:6d2af70c92ab 21 public double spo2;
darienf 20:6d2af70c92ab 22 public double sigQual;
darienf 20:6d2af70c92ab 23 public double irAC;
darienf 20:6d2af70c92ab 24 public double irDC;
darienf 20:6d2af70c92ab 25 public double redAC;
darienf 20:6d2af70c92ab 26 public double redDC;
darienf 20:6d2af70c92ab 27 //#ifdef _ELFI_
darienf 20:6d2af70c92ab 28 public double acLowPerfusion;
darienf 20:6d2af70c92ab 29 public double irLEDFlag;
darienf 20:6d2af70c92ab 30 public double redLEDFlag;
darienf 20:6d2af70c92ab 31 public double flagNoFinger; //Valid only at the first rest before motion
darienf 20:6d2af70c92ab 32 public double flagMotion; //is equal to 1 when there is motion
darienf 20:6d2af70c92ab 33 public double flagHrValid;
darienf 20:6d2af70c92ab 34 //#endif
darienf 20:6d2af70c92ab 35 public double hrUpdateFlag;
darienf 20:6d2af70c92ab 36 public double PA_R;
darienf 20:6d2af70c92ab 37 public double PA_IR;
darienf 20:6d2af70c92ab 38 public double PA_V;
darienf 20:6d2af70c92ab 39 public double ppg; // cetin
darienf 20:6d2af70c92ab 40 public double raw_without_ppg;
darienf 20:6d2af70c92ab 41 public double secondary_hr;
darienf 20:6d2af70c92ab 42 public double secondary_spo2;
darienf 20:6d2af70c92ab 43 public double source_is_secondary_flag;
darienf 20:6d2af70c92ab 44 public double raw_ir;
darienf 20:6d2af70c92ab 45 public double raw_red;
darienf 20:6d2af70c92ab 46 public double acceleration;
darienf 20:6d2af70c92ab 47
darienf 20:6d2af70c92ab 48 public double smoothed_ir;
darienf 20:6d2af70c92ab 49 public double smoothed_red;
darienf 20:6d2af70c92ab 50 public double v42Tr;
darienf 20:6d2af70c92ab 51 public double v60Tr;
darienf 20:6d2af70c92ab 52 public double R_HR;
darienf 20:6d2af70c92ab 53 public double IRHR;
darienf 20:6d2af70c92ab 54 public double R_FO;
darienf 20:6d2af70c92ab 55 public double IRFO;
darienf 20:6d2af70c92ab 56 public double Clock;
darienf 20:6d2af70c92ab 57 public double SysClk;
darienf 20:6d2af70c92ab 58 public double IR_hrupd;
darienf 20:6d2af70c92ab 59 public double R_hrupd;
darienf 20:6d2af70c92ab 60
darienf 20:6d2af70c92ab 61 public double pulse_average;
darienf 20:6d2af70c92ab 62 public double pulse_interval;
darienf 20:6d2af70c92ab 63 public double hrv;
darienf 20:6d2af70c92ab 64 public double resp_rate;
darienf 20:6d2af70c92ab 65 public double heartbeats_reported_in_this_touch;
darienf 20:6d2af70c92ab 66 public double last_reported_heartbeat_rate;
darienf 20:6d2af70c92ab 67 public double perfusion;
darienf 20:6d2af70c92ab 68 public double R; // R ratio from SpO2
darienf 20:6d2af70c92ab 69 };
darienf 20:6d2af70c92ab 70
darienf 20:6d2af70c92ab 71 public struct AlgorithmConfiguration
darienf 20:6d2af70c92ab 72 {
darienf 20:6d2af70c92ab 73 public sbyte snrNoFingerThreshold; // snr below that threshold will cause flagNoFingerRest to be equal to 1. Valid only at the first few secs rest
darienf 20:6d2af70c92ab 74 public double acLowPerfusionThreshold; // Threshold for output.acLowPerfusion// Above this threshold flagLowPerfusion == 1
darienf 20:6d2af70c92ab 75 public int isAGC;
darienf 20:6d2af70c92ab 76 };
darienf 20:6d2af70c92ab 77
darienf 20:6d2af70c92ab 78 /// <summary>
darienf 20:6d2af70c92ab 79 /// Heart Rate and Pulse Ox algorithm
darienf 20:6d2af70c92ab 80 /// </summary>
darienf 20:6d2af70c92ab 81 /// <param name="ir"></param>
darienf 20:6d2af70c92ab 82 /// <param name="r"></param>
darienf 20:6d2af70c92ab 83 /// <param name="led"></param>
darienf 20:6d2af70c92ab 84 /// <param name="acThresh"></param>
darienf 20:6d2af70c92ab 85 /// <param name="fs"></param>
darienf 20:6d2af70c92ab 86 /// <param name="isReset"></param>
darienf 20:6d2af70c92ab 87 /// <param name="accel_x"></param>
darienf 20:6d2af70c92ab 88 /// <param name="accel_y"></param>
darienf 20:6d2af70c92ab 89 /// <param name="accel_z"></param>
darienf 20:6d2af70c92ab 90 /// <param name="inputParameters"></param>
darienf 20:6d2af70c92ab 91 /// <param name="output"></param>
darienf 20:6d2af70c92ab 92 /// <returns></returns>
darienf 20:6d2af70c92ab 93 [DllImport(DllName)]
darienf 20:6d2af70c92ab 94 public static extern int runAlgorithm_win(int ir, int r, int led, int acThresh, int fs, int isReset,
darienf 20:6d2af70c92ab 95 float accel_x, float accel_y, float accel_z, ref AlgorithmConfiguration inputParameters, ref AlgorithmOutput output);
darienf 20:6d2af70c92ab 96 }
darienf 20:6d2af70c92ab 97 #endif
darienf 20:6d2af70c92ab 98 }