Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed MAX14720 MAX30205 USBDevice
DataLogModel.cs
00001 /******************************************************************************* 00002 * Copyright (C) 2016 Maxim Integrated Products, Inc., All rights Reserved. 00003 * 00004 * This software is protected by copyright laws of the United States and 00005 * of foreign countries. This material may also be protected by patent laws 00006 * and technology transfer regulations of the United States and of foreign 00007 * countries. This software is furnished under a license agreement and/or a 00008 * nondisclosure agreement and may only be used or reproduced in accordance 00009 * with the terms of those agreements. Dissemination of this information to 00010 * any party or parties not specified in the license agreement and/or 00011 * nondisclosure agreement is expressly prohibited. 00012 * 00013 * The above copyright notice and this permission notice shall be included 00014 * in all copies or substantial portions of the Software. 00015 * 00016 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 00017 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 00018 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 00019 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES 00020 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 00021 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 00022 * OTHER DEALINGS IN THE SOFTWARE. 00023 * 00024 * Except as contained in this notice, the name of Maxim Integrated 00025 * Products, Inc. shall not be used except as stated in the Maxim Integrated 00026 * Products, Inc. Branding Policy. 00027 * 00028 * The mere transfer of this software does not imply any licenses 00029 * of trade secrets, proprietary technology, copyrights, patents, 00030 * trademarks, maskwork rights, or any other form of intellectual 00031 * property whatsoever. Maxim Integrated Products, Inc. retains all 00032 * ownership rights. 00033 ******************************************************************************* 00034 */ 00035 00036 using System; 00037 using System.Collections.Generic; 00038 using System.Linq; 00039 using System.Text; 00040 00041 using RPCSupport; 00042 using RPCSupport.Streaming; 00043 using RPCSupport.DataLogging; 00044 00045 namespace HealthSensorPlatform.Model 00046 { 00047 class DataLogModel : IDataLogModel 00048 { 00049 RPCClient rpcClient; 00050 StreamDataLog streamDataLog; 00051 EventHandler<PartialArrayIntAvailableEventArgs> onStreamDataHandler; 00052 00053 Mission missionSettings; 00054 00055 public DataLogModel(RPCClient rpcClient) 00056 { 00057 this.rpcClient = rpcClient; 00058 } 00059 00060 public Mission MissionSettings 00061 { 00062 get 00063 { 00064 return missionSettings; 00065 } 00066 } 00067 00068 public event EventHandler<EventArgs> LogStreamDone; 00069 public event EventHandler<PartialArrayIntAvailableEventArgs> LogData; 00070 00071 public void Start() 00072 { 00073 onStreamDataHandler = new EventHandler<PartialArrayIntAvailableEventArgs>(OnStreamData); 00074 rpcClient.streaming.PartialArrayIntAvailable += onStreamDataHandler; 00075 streamDataLog = new StreamDataLog(rpcClient); 00076 00077 streamDataLog.Start(); 00078 } 00079 00080 public void EraseWrittenSectors() 00081 { 00082 ((SerialWrapPipeline)rpcClient.Pipeline).ReadTimeout = 180000; 00083 rpcClient.DataLogging.EraseWrittenSectors(); 00084 ((SerialWrapPipeline)rpcClient.Pipeline).ReadTimeout = 1000; 00085 } 00086 00087 public void MissionStartDefinition() 00088 { 00089 rpcClient.DataLogging.MissionStartDefinition(); 00090 } 00091 00092 public void MissionWrite() 00093 { 00094 rpcClient.DataLogging.MissionWrite(); 00095 } 00096 00097 public void MissionErase() 00098 { 00099 rpcClient.DataLogging.EraseMission(); 00100 } 00101 00102 public void MissionRead() 00103 { 00104 rpcClient.DataLogging.MissionRead(); 00105 00106 missionSettings = new Mission(); 00107 // pre cmd 00108 missionSettings.PreCommand = rpcClient.DataLogging.PreCommand.cmdString; 00109 // ecg 00110 missionSettings.EnableEcg = rpcClient.DataLogging.MAX30001_Ecg.IsExistsInDeviceMission(); 00111 if (missionSettings.EnableEcg) 00112 missionSettings.EcgArgs = rpcClient.DataLogging.MAX30001_Ecg.ToIntArray(); 00113 // pace 00114 missionSettings.EnablePace = rpcClient.DataLogging.MAX30001_Pace.IsExistsInDeviceMission(); 00115 if (missionSettings.EnablePace) 00116 missionSettings.PaceArgs = rpcClient.DataLogging.MAX30001_Pace.ToIntArray(); 00117 // bioz 00118 missionSettings.EnableBioZ = rpcClient.DataLogging.MAX30001_Bioz.IsExistsInDeviceMission(); 00119 if (missionSettings.EnableBioZ) 00120 missionSettings.BioZArgs = rpcClient.DataLogging.MAX30001_Bioz.ToIntArray(); 00121 // RtoR 00122 missionSettings.EnableRToR = rpcClient.DataLogging.MAX30001_RtoR.IsExistsInDeviceMission(); 00123 if (missionSettings.EnableRToR) 00124 missionSettings.RToRArgs = rpcClient.DataLogging.MAX30001_RtoR.ToIntArray(); 00125 // Rbias, FMSTR 00126 //missionSettings.EnableRBias = rpcClient.DataLogging.MAX30001_Rbias.IsExistsInDeviceMission(); 00127 missionSettings.EnableRBias = missionSettings.EnableRBias | missionSettings.EnableEcg | missionSettings.EnableBioZ | missionSettings.EnableRToR | missionSettings.EnablePace; 00128 if (missionSettings.EnableRBias) 00129 missionSettings.RBiasArgs = rpcClient.DataLogging.MAX30001_Rbias_Fmstr.ToIntArray(); 00130 // SpO2 00131 missionSettings.EnableOpticalSpO2 = rpcClient.DataLogging.MAX30101_SpO2.IsExistsInDeviceMission(); 00132 if (missionSettings.EnableOpticalSpO2) 00133 missionSettings.SpO2HRModeArgs = rpcClient.DataLogging.MAX30101_SpO2.ToIntArray(); 00134 // HR 00135 missionSettings.EnableOpticalHR = rpcClient.DataLogging.MAX30101_HR.IsExistsInDeviceMission(); 00136 if (missionSettings.EnableOpticalHR) 00137 missionSettings.HRModeArgs = rpcClient.DataLogging.MAX30101_HR.ToIntArray(); 00138 // Multi 00139 missionSettings.EnableOpticalMulti = rpcClient.DataLogging.MAX30101_Multi.IsExistsInDeviceMission(); 00140 if (missionSettings.EnableOpticalMulti) 00141 missionSettings.MultiModeArgs = rpcClient.DataLogging.MAX30101_Multi.ToIntArray(); 00142 00143 // Temp1 00144 missionSettings.EnableTemperature1 = rpcClient.DataLogging.MAX31725_1.IsExistsInDeviceMission(); 00145 if (missionSettings.EnableTemperature1) 00146 missionSettings.Temperature1Parameters = rpcClient.DataLogging.MAX31725_1.ToIntArray(); 00147 // Temp2 00148 missionSettings.EnableTemperature2 = rpcClient.DataLogging.MAX31725_2.IsExistsInDeviceMission(); 00149 if (missionSettings.EnableTemperature2) 00150 missionSettings.Temperature2Parameters = rpcClient.DataLogging.MAX31725_2.ToIntArray(); 00151 // Accel 00152 missionSettings.EnableAccelerometer = rpcClient.DataLogging.LIS2DH.IsExistsInDeviceMission(); 00153 if (missionSettings.EnableAccelerometer) 00154 missionSettings.AccelerometerParameters = rpcClient.DataLogging.LIS2DH.ToIntArray(); 00155 // Pressure 00156 missionSettings.EnablePressure = rpcClient.DataLogging.BMP280.IsExistsInDeviceMission(); 00157 if (missionSettings.EnablePressure) 00158 missionSettings.PressureParameters = rpcClient.DataLogging.BMP280.ToIntArray(); 00159 00160 00161 // post cmd 00162 missionSettings.PostCommand = rpcClient.DataLogging.PostCommand.cmdString; 00163 00164 } 00165 00166 public string[] MissionString() 00167 { 00168 string[] missionStrings = rpcClient.DataLogging.MissionStrings(); 00169 00170 List<string> stringList = new List<string>(missionStrings); 00171 00172 if (stringList[0] == "null") 00173 stringList.RemoveAt(0); 00174 00175 if (stringList.Count > 0 && stringList[stringList.Count - 1] == "null") 00176 { 00177 stringList.RemoveAt(stringList.Count - 1); 00178 } 00179 00180 return stringList.ToArray(); 00181 } 00182 00183 public void OnStreamData(object sender, PartialArrayIntAvailableEventArgs e) 00184 { 00185 if (e.reportID == PartialArrayIntAvailableEventArgs.PACKET_END_OF_STREAM) 00186 { 00187 if (LogStreamDone != null) 00188 LogStreamDone(this, e); 00189 00190 rpcClient.streaming.PartialArrayIntAvailable -= onStreamDataHandler; 00191 00192 } 00193 00194 if (LogData != null) 00195 LogData(this, e); 00196 } 00197 } 00198 00199 public class Mission 00200 { 00201 public string PreCommand; 00202 public bool EnableEcg; 00203 public int[] EcgArgs; 00204 00205 public bool EnablePace; 00206 public int[] PaceArgs; 00207 00208 public bool EnableBioZ; 00209 public int[] BioZArgs; 00210 00211 public bool EnableRToR; 00212 public int[] RToRArgs; 00213 00214 public bool EnableRBias; 00215 public int[] RBiasArgs; 00216 00217 public bool EnableOpticalSpO2; 00218 public int[] SpO2HRModeArgs; 00219 00220 public bool EnableOpticalHR; 00221 public int[] HRModeArgs; 00222 00223 public bool EnableOpticalMulti; 00224 public int[] MultiModeArgs; 00225 00226 public bool EnableTemperature1; 00227 public int[] Temperature1Parameters; 00228 00229 public bool EnableTemperature2; 00230 public int[] Temperature2Parameters; 00231 00232 public bool EnablePressure; 00233 public int[] PressureParameters; 00234 00235 public bool EnableAccelerometer; 00236 public int[] AccelerometerParameters; 00237 00238 public string PostCommand; 00239 00240 public bool Enable 00241 { 00242 get 00243 { 00244 return EnableEcg | EnablePace | EnableBioZ | EnableRToR | EnableRBias 00245 | EnableOpticalSpO2 | EnableOpticalHR | EnableOpticalMulti 00246 | EnableTemperature1 | EnableTemperature2 | EnablePressure | EnableAccelerometer; 00247 } 00248 } 00249 } 00250 }
Generated on Thu Jul 28 2022 18:07:13 by
1.7.2