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.
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 Tue Jul 12 2022 21:52:37 by
1.7.2