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 /*******************************************************************************
darienf 20:6d2af70c92ab 2 * Copyright (C) 2016 Maxim Integrated Products, Inc., All rights Reserved.
darienf 20:6d2af70c92ab 3 *
darienf 20:6d2af70c92ab 4 * This software is protected by copyright laws of the United States and
darienf 20:6d2af70c92ab 5 * of foreign countries. This material may also be protected by patent laws
darienf 20:6d2af70c92ab 6 * and technology transfer regulations of the United States and of foreign
darienf 20:6d2af70c92ab 7 * countries. This software is furnished under a license agreement and/or a
darienf 20:6d2af70c92ab 8 * nondisclosure agreement and may only be used or reproduced in accordance
darienf 20:6d2af70c92ab 9 * with the terms of those agreements. Dissemination of this information to
darienf 20:6d2af70c92ab 10 * any party or parties not specified in the license agreement and/or
darienf 20:6d2af70c92ab 11 * nondisclosure agreement is expressly prohibited.
darienf 20:6d2af70c92ab 12 *
darienf 20:6d2af70c92ab 13 * The above copyright notice and this permission notice shall be included
darienf 20:6d2af70c92ab 14 * in all copies or substantial portions of the Software.
darienf 20:6d2af70c92ab 15 *
darienf 20:6d2af70c92ab 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
darienf 20:6d2af70c92ab 17 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
darienf 20:6d2af70c92ab 18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
darienf 20:6d2af70c92ab 19 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
darienf 20:6d2af70c92ab 20 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
darienf 20:6d2af70c92ab 21 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
darienf 20:6d2af70c92ab 22 * OTHER DEALINGS IN THE SOFTWARE.
darienf 20:6d2af70c92ab 23 *
darienf 20:6d2af70c92ab 24 * Except as contained in this notice, the name of Maxim Integrated
darienf 20:6d2af70c92ab 25 * Products, Inc. shall not be used except as stated in the Maxim Integrated
darienf 20:6d2af70c92ab 26 * Products, Inc. Branding Policy.
darienf 20:6d2af70c92ab 27 *
darienf 20:6d2af70c92ab 28 * The mere transfer of this software does not imply any licenses
darienf 20:6d2af70c92ab 29 * of trade secrets, proprietary technology, copyrights, patents,
darienf 20:6d2af70c92ab 30 * trademarks, maskwork rights, or any other form of intellectual
darienf 20:6d2af70c92ab 31 * property whatsoever. Maxim Integrated Products, Inc. retains all
darienf 20:6d2af70c92ab 32 * ownership rights.
darienf 20:6d2af70c92ab 33 *******************************************************************************
darienf 20:6d2af70c92ab 34 */
darienf 20:6d2af70c92ab 35
darienf 20:6d2af70c92ab 36 using System;
darienf 20:6d2af70c92ab 37 using System.Collections.Generic;
darienf 20:6d2af70c92ab 38 using System.ComponentModel;
darienf 20:6d2af70c92ab 39 using System.Data;
darienf 20:6d2af70c92ab 40 using System.Drawing;
darienf 20:6d2af70c92ab 41 using System.Linq;
darienf 20:6d2af70c92ab 42 using System.Text;
darienf 20:6d2af70c92ab 43 using System.Windows.Forms;
darienf 20:6d2af70c92ab 44
darienf 20:6d2af70c92ab 45 namespace HealthSensorPlatform
darienf 20:6d2af70c92ab 46 {
darienf 20:6d2af70c92ab 47 // Code for ECG Configuration Tab
darienf 20:6d2af70c92ab 48 public partial class HspForm
darienf 20:6d2af70c92ab 49 {
darienf 20:6d2af70c92ab 50 List<RegisterField> ecgChannelField = new List<RegisterField>();
darienf 20:6d2af70c92ab 51 List<RegisterField> ecgGlobalField = new List<RegisterField>();
darienf 20:6d2af70c92ab 52 List<RegisterField> rToRField = new List<RegisterField>();
darienf 20:6d2af70c92ab 53
darienf 20:6d2af70c92ab 54 List<RegisterField> channelEnableField = new List<RegisterField>();
darienf 20:6d2af70c92ab 55
darienf 20:6d2af70c92ab 56 // Needed for dynamic changing of options
darienf 20:6d2af70c92ab 57 RegisterField ecgSampleRateField;
darienf 20:6d2af70c92ab 58 RegisterField ecgDlpfField;
darienf 20:6d2af70c92ab 59
darienf 20:6d2af70c92ab 60 string[][] ecgSampleRateOptions = new string[][]
darienf 20:6d2af70c92ab 61 {
darienf 20:6d2af70c92ab 62 new string[] { "512 sps", "256 sps", "128 sps*" },
darienf 20:6d2af70c92ab 63 new string[] { "500 sps", "250 sps", "125 sps*" },
darienf 20:6d2af70c92ab 64 new string[] { "N/A", "N/A", "200 sps*" },
darienf 20:6d2af70c92ab 65 new string[] { "N/A", "N/A", "199.8 sps*" }
darienf 20:6d2af70c92ab 66 };
darienf 20:6d2af70c92ab 67
darienf 20:6d2af70c92ab 68 double[][] ecgSampleRates = new double[][]
darienf 20:6d2af70c92ab 69 {
darienf 20:6d2af70c92ab 70 new double[] {512, 256, 128, 128},
darienf 20:6d2af70c92ab 71 new double[] {500, 250, 125, 125},
darienf 20:6d2af70c92ab 72 new double[] {200, 200, 200, 200},
darienf 20:6d2af70c92ab 73 new double[] {199.8, 199.8, 199.8, 199.8} // using 200, the error is 0.1%
darienf 20:6d2af70c92ab 74 };
darienf 20:6d2af70c92ab 75
darienf 20:6d2af70c92ab 76 string[][][] ecgDlpfOptions;
darienf 20:6d2af70c92ab 77
darienf 20:6d2af70c92ab 78
darienf 20:6d2af70c92ab 79 void initalizeECGConfigFields()
darienf 20:6d2af70c92ab 80 {
darienf 20:6d2af70c92ab 81 ecgDlpfOptions = new string[4][][];
darienf 20:6d2af70c92ab 82
darienf 20:6d2af70c92ab 83 for (int i = 0; i < 4; i++)
darienf 20:6d2af70c92ab 84 {
darienf 20:6d2af70c92ab 85 ecgDlpfOptions[i] = new string[4][];
darienf 20:6d2af70c92ab 86 }
darienf 20:6d2af70c92ab 87
darienf 20:6d2af70c92ab 88 // 32768 Hz
darienf 20:6d2af70c92ab 89 ecgDlpfOptions[0][0] = new string[] {"Bypass (00)", "40.96 Hz (01)*", "102.4 Hz (10)", "153.6 Hz (11)"};
darienf 20:6d2af70c92ab 90 ecgDlpfOptions[0][1] = new string[] {"Bypass (00)", "40.96 Hz (01)*", "102.4 Hz (10)"};//, "40.96 Hz (11)"};
darienf 20:6d2af70c92ab 91 ecgDlpfOptions[0][2] = new string[] {"Bypass (00)", "40.96 Hz (01)*"}; //, "40.96 Hz (10)", "40.96 Hz (11)"};
darienf 20:6d2af70c92ab 92 ecgDlpfOptions[0][3] = new string[] {"Bypass (00)", "40.96 Hz (01)*"}; //, "40.96 Hz (10)", "40.96 Hz (11)"};
darienf 20:6d2af70c92ab 93 // 32000 Hz
darienf 20:6d2af70c92ab 94 ecgDlpfOptions[1][0] = new string[] { "Bypass (00)", "40.00 Hz (01)*", "100.0 Hz (10)", "150.0 Hz (11)"};
darienf 20:6d2af70c92ab 95 ecgDlpfOptions[1][1] = new string[] {"Bypass (00)", "40.00 Hz (01)*", "100.0 Hz (10)"}; //, "40.00 Hz (11)"};
darienf 20:6d2af70c92ab 96 ecgDlpfOptions[1][2] = new string[] {"Bypass (00)", "40.00 Hz (01)*"}; //, "40.00 Hz (10)", "40.00 Hz (11)"};
darienf 20:6d2af70c92ab 97 ecgDlpfOptions[1][3] = new string[] {"Bypass (00)", "40.00 Hz (01)*"}; //, "40.00 Hz (10)", "40.00 Hz (11)"};
darienf 20:6d2af70c92ab 98 //32000 Hz
darienf 20:6d2af70c92ab 99 ecgDlpfOptions[2][0] = new string[] { "Bypass", "40.00 Hz"}; //, "40.00 Hz", "40.00 Hz" };
darienf 20:6d2af70c92ab 100 ecgDlpfOptions[2][1] = new string[] { "Bypass", "40.00 Hz"}; //, "40.00 Hz", "40.00 Hz" };
darienf 20:6d2af70c92ab 101 ecgDlpfOptions[2][2] = new string[] { "Bypass", "40.00 Hz"}; //, "40.00 Hz", "40.00 Hz" };
darienf 20:6d2af70c92ab 102 ecgDlpfOptions[2][3] = new string[] { "Bypass", "40.00 Hz"}; //, "40.00 Hz", "40.00 Hz" };
darienf 20:6d2af70c92ab 103 // 31968 Hz
darienf 20:6d2af70c92ab 104 ecgDlpfOptions[3][0] = new string[] { "Bypass (00)", "39.96 Hz (01)" }; //, "39.96 Hz (10)", "39.96 Hz (11)" };
darienf 20:6d2af70c92ab 105 ecgDlpfOptions[3][1] = new string[] { "Bypass", "39.96 Hz"}; //, "39.96 Hz", "39.96 Hz" };
darienf 20:6d2af70c92ab 106 ecgDlpfOptions[3][2] = new string[] { "Bypass", "39.96 Hz"};//, "39.96 Hz", "39.96 Hz" };
darienf 20:6d2af70c92ab 107 ecgDlpfOptions[3][3] = new string[] { "Bypass", "39.96 Hz"};//, "39.96 Hz", "39.96 Hz" };
darienf 20:6d2af70c92ab 108
darienf 20:6d2af70c92ab 109 string[] fastOptions = { "Normal*", "Manual Fast Recovery", "Automatic Fast Recovery" };
darienf 20:6d2af70c92ab 110 string[] fastThOptions = new string[64];
darienf 20:6d2af70c92ab 111 for (int i = 0; i < 64; i++)
darienf 20:6d2af70c92ab 112 {
darienf 20:6d2af70c92ab 113 fastThOptions[i] = i.ToString() + " * 2048 LSB";
darienf 20:6d2af70c92ab 114 }
darienf 20:6d2af70c92ab 115 fastThOptions[0x3F] += "*"; // Default option
darienf 20:6d2af70c92ab 116
darienf 20:6d2af70c92ab 117 string[] channelGainOptions = { "20 V/V*", "40 V/V", "80 V/V", "160 V/V" };
darienf 20:6d2af70c92ab 118
darienf 20:6d2af70c92ab 119 //string[] sampleRateOptions = { "512 sps", "256 sps", "128 sps*"}; // Assume FMSTR = 32768 Hz
darienf 20:6d2af70c92ab 120
darienf 20:6d2af70c92ab 121 string[] dlpfOptions = { "Bypass", "40.96 Hz*", "102.4 Hz", "153.6 Hz" };
darienf 20:6d2af70c92ab 122 string[] dhpfOptions = { "Bypass", "0.50 Hz*" };
darienf 20:6d2af70c92ab 123
darienf 20:6d2af70c92ab 124 RegisterField fastField = new RegisterField { Name = "FAST", Register = 5, Index = 22, Width = 2, Descriptions = fastOptions, Label = lblFast, Control = cboFast, Device = max30001};
darienf 20:6d2af70c92ab 125 RegisterField fastThField = new RegisterField { Name = "FAST_TH", Register = 5, Index = 16, Width = 6, Descriptions = fastThOptions, Label = lblFastTh, Control = cboFastTh, Device = max30001};
darienf 20:6d2af70c92ab 126 ecgChannelField.Add(fastField);
darienf 20:6d2af70c92ab 127 ecgChannelField.Add(fastThField);
darienf 20:6d2af70c92ab 128
darienf 20:6d2af70c92ab 129 RegisterField channelGainField = new RegisterField { Name = "ECG_GAIN", Register = 0x15, Index = 16, Width = 2, Descriptions = channelGainOptions, Label = lblChannelGain, Control = cboChannelGain, Device = max30001};
darienf 20:6d2af70c92ab 130 ecgChannelField.Add(channelGainField);
darienf 20:6d2af70c92ab 131
darienf 20:6d2af70c92ab 132 ecgSampleRateField = new RegisterField { Name = "ECG_RATE", Register = 0x15, Index = 22, Width = 2, Descriptions = ecgSampleRateOptions[0], Label = lblSampleRate, Control = cboSampleRate, Device = max30001};
darienf 20:6d2af70c92ab 133 ecgChannelField.Add(ecgSampleRateField);
darienf 20:6d2af70c92ab 134
darienf 20:6d2af70c92ab 135 ecgDlpfField = new RegisterField { Name = "ECG_DLPF", Register = 0x15, Index = 12, Width = 2, Descriptions = dlpfOptions, Label = lblDlpf, Control = cboDlpf, Device = max30001};
darienf 20:6d2af70c92ab 136 RegisterField dhpfField = new RegisterField { Name = "ECG_DHPF", Register = 0x15, Index = 14, Width = 1, Descriptions = dhpfOptions, Label = lblDhpf, Control = cboDhpf, Device = max30001};
darienf 20:6d2af70c92ab 137 ecgChannelField.Add(ecgDlpfField);
darienf 20:6d2af70c92ab 138 ecgChannelField.Add(dhpfField);
darienf 20:6d2af70c92ab 139 }
darienf 20:6d2af70c92ab 140
darienf 20:6d2af70c92ab 141 void initalizeECGGlobalControls()
darienf 20:6d2af70c92ab 142 {
darienf 20:6d2af70c92ab 143 string[] fmstrDescription = { "32768 Hz (00)*", "32000 Hz (01)", "32000 Hz (10)", "31968 Hz (11)" };
darienf 20:6d2af70c92ab 144 string[] enECGDescription = { "Disabled*", "Enabled" };
darienf 20:6d2af70c92ab 145
darienf 20:6d2af70c92ab 146 RegisterField fmstrField = new RegisterField { Name = "FMSTR", Register = 0x10, Index = 20, Width = 2, Descriptions = fmstrDescription, Control = cboMasterClock, Device = max30001};
darienf 20:6d2af70c92ab 147 ecgGlobalField.Add(fmstrField);
darienf 20:6d2af70c92ab 148
darienf 20:6d2af70c92ab 149 //RegisterField enECGField = new RegisterField { Name = "EN_ECG", Register = 0x10, Index = 19, Width = 1, Descriptions = enECGDescription, Label = lblECGChannelEnable };
darienf 20:6d2af70c92ab 150 //enECGField.Control = cboECGChannelEnable;
darienf 20:6d2af70c92ab 151 //ecgGlobalField.Add(enECGField);
darienf 20:6d2af70c92ab 152 RegisterField enECGField = new RegisterField { Name = "EN_ECG", Register = 0x10, Index = 19, Width = 1, Control = chkEnECG, Device = max30001};
darienf 20:6d2af70c92ab 153 RegisterField enBioZField = new RegisterField { Name = "EN_BIOZ", Register = 0x10, Index = 18, Width = 1, Control = chkEnBioZ, Device = max30001};
darienf 20:6d2af70c92ab 154 RegisterField enPaceField = new RegisterField { Name = "EN_PACE", Register = 0x10, Index = 17, Width = 1, Control = chkEnPace, Device = max30001};
darienf 20:6d2af70c92ab 155 RegisterField enRtorField = new RegisterField { Name = "EN_RTOR", Register = 0x1d, Index = 15, Width = 1, Control = chkEnRtor, Device = max30001};
darienf 20:6d2af70c92ab 156 channelEnableField.Add(enECGField);
darienf 20:6d2af70c92ab 157 channelEnableField.Add(enBioZField);
darienf 20:6d2af70c92ab 158 channelEnableField.Add(enPaceField);
darienf 20:6d2af70c92ab 159 channelEnableField.Add(enRtorField);
darienf 20:6d2af70c92ab 160 }
darienf 20:6d2af70c92ab 161
darienf 20:6d2af70c92ab 162 void initalizeRToRFields()
darienf 20:6d2af70c92ab 163 {
darienf 20:6d2af70c92ab 164 string[] wndwOptions = {"6 * 8ms", "8 * 8ms", "10 * 8ms", "12 * 8ms*", "14 * 8ms", "16 * 8ms", "18 * 8ms", "20 * 8ms",
darienf 20:6d2af70c92ab 165 "22 * 8ms", "24 * 8ms", "26 * 8ms", "28 * 8ms"};
darienf 20:6d2af70c92ab 166 string[] gainOptions = { "1", "2", "4", "8", "16", "32", "64", "128", "256", "512", "1024", "2048", "4096", "8192", "16384", "Auto-Scale*" };
darienf 20:6d2af70c92ab 167 string[] enableOptions = { "Disable*", "Enable" };
darienf 20:6d2af70c92ab 168 string[] pavgOptions = { "2", "4", "8*", "16" };
darienf 20:6d2af70c92ab 169 string[] ptsfOptions = { "1/16", "2/16", "3/16", "4/16*", "5/16", "6/16", "7/16", "8/16",
darienf 20:6d2af70c92ab 170 "9/16", "10/16", "11/16", "12/16", "13/16", "14/16", "15/16", "16/16"};
darienf 20:6d2af70c92ab 171 string[] hoffOptions = new string[64];
darienf 20:6d2af70c92ab 172 for(int i = 0; i < 64; i ++)
darienf 20:6d2af70c92ab 173 {
darienf 20:6d2af70c92ab 174 hoffOptions[i] = i.ToString();
darienf 20:6d2af70c92ab 175 if (i == 32)
darienf 20:6d2af70c92ab 176 hoffOptions[i] += "*";
darienf 20:6d2af70c92ab 177 }
darienf 20:6d2af70c92ab 178 string[] ravgOptions = { "2", "4", "8*", "16" };
darienf 20:6d2af70c92ab 179 string[] rhsfOptions = { "0/8", "1/8", "2/8", "3/8", "4/8*", "5/8", "6/8", "7/8" };
darienf 20:6d2af70c92ab 180
darienf 20:6d2af70c92ab 181 RegisterField wndwField = new RegisterField { Name = "RTOR_WNDW", Register = 0x1d, Index = 20, Width = 4, Descriptions = wndwOptions, Control = cboRRWndw, Label = lblRRWndw, Device = max30001 };
darienf 20:6d2af70c92ab 182 RegisterField gainField = new RegisterField { Name = "RTOR_GAIN", Register = 0x1d, Index = 16, Width = 4, Descriptions = gainOptions, Control = cboRRGain, Label = lblRRGain, Device = max30001 };
darienf 20:6d2af70c92ab 183 RegisterField enableField = new RegisterField { Name = "EN_RTOR", Register = 0x1d, Index = 15, Width = 1, Descriptions = enableOptions, Control = cboEnRToR, Label = lblEnRToR, Device = max30001 };
darienf 20:6d2af70c92ab 184 RegisterField pavgField = new RegisterField { Name = "RTOR_PAVG", Register = 0x1d, Index = 12, Width = 2, Descriptions = pavgOptions, Control = cboRRPavg, Label = lblRRPavg, Device = max30001 };
darienf 20:6d2af70c92ab 185 RegisterField ptsfField = new RegisterField { Name = "RTOR_PTSF", Register = 0x1d, Index = 8, Width = 4, Descriptions = ptsfOptions, Control = cboRRPtsf, Label = lblRRPtsf, Device = max30001};
darienf 20:6d2af70c92ab 186 RegisterField hoffField = new RegisterField { Name = "RTOR_HOFF", Register = 0x1e, Index = 16, Width = 6, Descriptions = hoffOptions, Control = cboRRHoff, Label = lblRRHoff, Device = max30001 };
darienf 20:6d2af70c92ab 187 RegisterField ravgField = new RegisterField { Name = "RTOR_RAVG", Register = 0x1e, Index = 12, Width = 2, Descriptions = ravgOptions, Control = cboRRRavg, Label = lblRRRavg, Device = max30001 };
darienf 20:6d2af70c92ab 188 RegisterField rhsfField = new RegisterField { Name = "RTOR_RHSF", Register = 0x1e, Index = 8, Width = 3, Descriptions = rhsfOptions, Control = cboRRRhsf, Label = lblRRRhsf, Device = max30001 };
darienf 20:6d2af70c92ab 189
darienf 20:6d2af70c92ab 190 rToRField.Add(wndwField);
darienf 20:6d2af70c92ab 191 rToRField.Add(gainField);
darienf 20:6d2af70c92ab 192 rToRField.Add(enableField);
darienf 20:6d2af70c92ab 193 rToRField.Add(pavgField);
darienf 20:6d2af70c92ab 194 rToRField.Add(ptsfField);
darienf 20:6d2af70c92ab 195 rToRField.Add(hoffField);
darienf 20:6d2af70c92ab 196 rToRField.Add(ravgField);
darienf 20:6d2af70c92ab 197 rToRField.Add(rhsfField);
darienf 20:6d2af70c92ab 198 }
darienf 20:6d2af70c92ab 199
darienf 20:6d2af70c92ab 200 /// <summary>
darienf 20:6d2af70c92ab 201 /// Read register values and update GUI accordingly
darienf 20:6d2af70c92ab 202 /// </summary>
darienf 20:6d2af70c92ab 203 void ECGChannelUpdateRegisters()
darienf 20:6d2af70c92ab 204 {
darienf 20:6d2af70c92ab 205 internalUpdate = true;
darienf 20:6d2af70c92ab 206 ReadComboBoxesRegisters(ecgChannelField);
darienf 20:6d2af70c92ab 207 ReadComboBoxesRegisters(rToRField);
darienf 20:6d2af70c92ab 208 internalUpdate = false;
darienf 20:6d2af70c92ab 209 }
darienf 20:6d2af70c92ab 210
darienf 20:6d2af70c92ab 211 /// <summary>
darienf 20:6d2af70c92ab 212 /// Read and update all the MAX30001 global GUI settings (enable bits and clock)
darienf 20:6d2af70c92ab 213 /// </summary>
darienf 20:6d2af70c92ab 214 void ECGGlobalUpdateRegisters()
darienf 20:6d2af70c92ab 215 {
darienf 20:6d2af70c92ab 216 internalUpdate = true;
darienf 20:6d2af70c92ab 217 ReadComboBoxesRegisters(ecgGlobalField);
darienf 20:6d2af70c92ab 218 ReadCheckBoxRegisters(channelEnableField);
darienf 20:6d2af70c92ab 219 channelEnableMask(chkEnECG);
darienf 20:6d2af70c92ab 220 internalUpdate = false;
darienf 20:6d2af70c92ab 221
darienf 20:6d2af70c92ab 222 // Update EcgView to maintain consistent state
darienf 20:6d2af70c92ab 223 ecgView1.EnableBioZ = chkEnBioZ.Checked;
darienf 20:6d2af70c92ab 224 ecgView1.EnableECG = chkEnECG.Checked;
darienf 20:6d2af70c92ab 225 ecgView1.EnablePace = chkEnPace.Checked;
darienf 20:6d2af70c92ab 226 ecgView1.EnableRToR = chkEnRtor.Checked;
darienf 20:6d2af70c92ab 227 }
darienf 20:6d2af70c92ab 228
darienf 20:6d2af70c92ab 229 /// <summary>
darienf 20:6d2af70c92ab 230 /// Mask enable bits for features which depend on EN_ECG = 1 and EN_BIOZ = 1
darienf 20:6d2af70c92ab 231 /// </summary>
darienf 20:6d2af70c92ab 232 /// <param name="enEcg">Checkbox representing EN_ECG bit</param>
darienf 20:6d2af70c92ab 233 void channelEnableMask(MaximStyle.MaximCheckBox enEcg)
darienf 20:6d2af70c92ab 234 {
darienf 20:6d2af70c92ab 235 if (enEcg.Checked == false)
darienf 20:6d2af70c92ab 236 {
darienf 20:6d2af70c92ab 237 chkEnRtor.Enabled = false;
darienf 20:6d2af70c92ab 238 chkEnPace.Enabled = false;
darienf 20:6d2af70c92ab 239 }
darienf 20:6d2af70c92ab 240 else
darienf 20:6d2af70c92ab 241 {
darienf 20:6d2af70c92ab 242 chkEnRtor.Enabled = true;
darienf 20:6d2af70c92ab 243 if (max30001Model.PartID == Model.MAX30001Model.Part.MAX30001)
darienf 20:6d2af70c92ab 244 chkEnPace.Enabled = true;
darienf 20:6d2af70c92ab 245 }
darienf 20:6d2af70c92ab 246
darienf 20:6d2af70c92ab 247 /*if (chkEnBioZ.Checked == false)
darienf 20:6d2af70c92ab 248 {
darienf 20:6d2af70c92ab 249 chkEnPace.Enabled = false;
darienf 20:6d2af70c92ab 250 }
darienf 20:6d2af70c92ab 251 else
darienf 20:6d2af70c92ab 252 {
darienf 20:6d2af70c92ab 253 chkEnPace.Enabled = true;
darienf 20:6d2af70c92ab 254 }*/
darienf 20:6d2af70c92ab 255
darienf 20:6d2af70c92ab 256 }
darienf 20:6d2af70c92ab 257
darienf 20:6d2af70c92ab 258 void ReadComboBoxesRegisters(List<RegisterField> fields)
darienf 20:6d2af70c92ab 259 {
darienf 20:6d2af70c92ab 260 int bitValue;
darienf 20:6d2af70c92ab 261 MaximStyle.MaximComboBox cbox;
darienf 20:6d2af70c92ab 262
darienf 20:6d2af70c92ab 263 foreach (RegisterField rf in fields)
darienf 20:6d2af70c92ab 264 {
darienf 20:6d2af70c92ab 265 cbox = (MaximStyle.MaximComboBox)rf.Control;
darienf 20:6d2af70c92ab 266
darienf 20:6d2af70c92ab 267 if (rf.AutoUpdate == true)
darienf 20:6d2af70c92ab 268 {
darienf 20:6d2af70c92ab 269 //for (int i = 0; i < 3; i++)
darienf 20:6d2af70c92ab 270 //{
darienf 20:6d2af70c92ab 271 // try
darienf 20:6d2af70c92ab 272 // {
darienf 20:6d2af70c92ab 273 bitValue = rf.ReadField();
darienf 20:6d2af70c92ab 274
darienf 20:6d2af70c92ab 275
darienf 20:6d2af70c92ab 276 if (bitValue < cbox.Items.Count && cbox.Items.Count != 0) // Bit setting matches combobox setting
darienf 20:6d2af70c92ab 277 {
darienf 20:6d2af70c92ab 278 cbox.SelectedItem = rf.Descriptions[bitValue];
darienf 20:6d2af70c92ab 279 }
darienf 20:6d2af70c92ab 280 else // Bit setting value outside of combobox item range
darienf 20:6d2af70c92ab 281 {
darienf 20:6d2af70c92ab 282 cbox.Text = "0b" + Convert.ToString(bitValue, 2);
darienf 20:6d2af70c92ab 283 }
darienf 20:6d2af70c92ab 284
darienf 20:6d2af70c92ab 285 // }
darienf 20:6d2af70c92ab 286 // catch (System.TimeoutException)
darienf 20:6d2af70c92ab 287 // {
darienf 20:6d2af70c92ab 288 // if (i == 2)
darienf 20:6d2af70c92ab 289 // throw;
darienf 20:6d2af70c92ab 290 // }
darienf 20:6d2af70c92ab 291 //}
darienf 20:6d2af70c92ab 292
darienf 20:6d2af70c92ab 293 }
darienf 20:6d2af70c92ab 294 }
darienf 20:6d2af70c92ab 295
darienf 20:6d2af70c92ab 296 }
darienf 20:6d2af70c92ab 297
darienf 20:6d2af70c92ab 298 void ReadComboBoxesRegister(RegisterField rf)
darienf 20:6d2af70c92ab 299 {
darienf 20:6d2af70c92ab 300 int bitValue;
darienf 20:6d2af70c92ab 301 MaximStyle.MaximComboBox cbox;
darienf 20:6d2af70c92ab 302
darienf 20:6d2af70c92ab 303 cbox = (MaximStyle.MaximComboBox)rf.Control;
darienf 20:6d2af70c92ab 304
darienf 20:6d2af70c92ab 305 if (rf.AutoUpdate == true)
darienf 20:6d2af70c92ab 306 {
darienf 20:6d2af70c92ab 307 bitValue = rf.ReadField();
darienf 20:6d2af70c92ab 308
darienf 20:6d2af70c92ab 309 if (bitValue < cbox.Items.Count && cbox.Items.Count != 0) // Bit setting matches combobox setting
darienf 20:6d2af70c92ab 310 {
darienf 20:6d2af70c92ab 311 cbox.SelectedItem = rf.Descriptions[bitValue];
darienf 20:6d2af70c92ab 312 }
darienf 20:6d2af70c92ab 313 else // Bit setting value outside of combobox item range
darienf 20:6d2af70c92ab 314 {
darienf 20:6d2af70c92ab 315 cbox.Text = "0b" + Convert.ToString(bitValue, 2);
darienf 20:6d2af70c92ab 316 }
darienf 20:6d2af70c92ab 317 }
darienf 20:6d2af70c92ab 318 }
darienf 20:6d2af70c92ab 319
darienf 20:6d2af70c92ab 320 void ReadCheckBoxRegisters(List<RegisterField> fields)
darienf 20:6d2af70c92ab 321 {
darienf 20:6d2af70c92ab 322 int bitValue;
darienf 20:6d2af70c92ab 323 MaximStyle.MaximCheckBox chk;
darienf 20:6d2af70c92ab 324
darienf 20:6d2af70c92ab 325 foreach (RegisterField rf in fields)
darienf 20:6d2af70c92ab 326 {
darienf 20:6d2af70c92ab 327 chk = (MaximStyle.MaximCheckBox)rf.Control;
darienf 20:6d2af70c92ab 328
darienf 20:6d2af70c92ab 329 if (rf.AutoUpdate == true)
darienf 20:6d2af70c92ab 330 {
darienf 20:6d2af70c92ab 331 bitValue = rf.ReadField();
darienf 20:6d2af70c92ab 332
darienf 20:6d2af70c92ab 333 if (bitValue == 0)
darienf 20:6d2af70c92ab 334 chk.Checked = false;
darienf 20:6d2af70c92ab 335 else
darienf 20:6d2af70c92ab 336 chk.Checked = true;
darienf 20:6d2af70c92ab 337 }
darienf 20:6d2af70c92ab 338 }
darienf 20:6d2af70c92ab 339 }
darienf 20:6d2af70c92ab 340
darienf 20:6d2af70c92ab 341 /// <summary>
darienf 20:6d2af70c92ab 342 /// Get bit value from register
darienf 20:6d2af70c92ab 343 /// </summary>
darienf 20:6d2af70c92ab 344 /// <param name="field"></param>
darienf 20:6d2af70c92ab 345 /// <returns></returns>
darienf 20:6d2af70c92ab 346 /*int BitValue(RegisterField field)
darienf 20:6d2af70c92ab 347 {
darienf 20:6d2af70c92ab 348 int registerData;
darienf 20:6d2af70c92ab 349
darienf 20:6d2af70c92ab 350 registerData = max30001.ReadReg((byte)field.Register);
darienf 20:6d2af70c92ab 351
darienf 20:6d2af70c92ab 352 return (registerData >> field.Index) & ((1 << field.Width) - 1);
darienf 20:6d2af70c92ab 353 }*/
darienf 20:6d2af70c92ab 354
darienf 20:6d2af70c92ab 355 /// <summary>
darienf 20:6d2af70c92ab 356 /// Add tool tips to combo boxes and event to write registers
darienf 20:6d2af70c92ab 357 /// </summary>
darienf 20:6d2af70c92ab 358 /// <param name="list"></param>
darienf 20:6d2af70c92ab 359 void initalizeToolTipEvents(List<RegisterField> list)
darienf 20:6d2af70c92ab 360 {
darienf 20:6d2af70c92ab 361 MaximStyle.MaximComboBox cbox;
darienf 20:6d2af70c92ab 362 Label lbl;
darienf 20:6d2af70c92ab 363 StringBuilder strBuilder = new StringBuilder();
darienf 20:6d2af70c92ab 364
darienf 20:6d2af70c92ab 365 foreach (RegisterField field in list)
darienf 20:6d2af70c92ab 366 {
darienf 20:6d2af70c92ab 367 cbox = (MaximStyle.MaximComboBox)field.Control;
darienf 20:6d2af70c92ab 368 lbl = field.Label;
darienf 20:6d2af70c92ab 369
darienf 20:6d2af70c92ab 370 // Tool Tip String
darienf 20:6d2af70c92ab 371 strBuilder.Append("Bit ");
darienf 20:6d2af70c92ab 372 strBuilder.Append(field.Name.Replace("\n", String.Empty));
darienf 20:6d2af70c92ab 373 strBuilder.Append(" in Register 0x");
darienf 20:6d2af70c92ab 374 strBuilder.Append(field.Register.ToString("X2"));
darienf 20:6d2af70c92ab 375 toolTip1.SetToolTip(cbox, strBuilder.ToString());
darienf 20:6d2af70c92ab 376 if (lbl != null)
darienf 20:6d2af70c92ab 377 toolTip1.SetToolTip(lbl, strBuilder.ToString());
darienf 20:6d2af70c92ab 378 strBuilder.Clear();
darienf 20:6d2af70c92ab 379
darienf 20:6d2af70c92ab 380 // Event to Write Registers
darienf 20:6d2af70c92ab 381 if (cbox != cboMasterClock && cbox != cboSampleRate && cbox != cboBioZSampleRate) // cboMasterClock has a special handler to support repopulation of comboboxes
darienf 20:6d2af70c92ab 382 cbox.SelectedIndexChanged += new System.EventHandler(cboECGChannel_SelectedIndexChanged);
darienf 20:6d2af70c92ab 383 }
darienf 20:6d2af70c92ab 384 }
darienf 20:6d2af70c92ab 385
darienf 20:6d2af70c92ab 386 /// <summary>
darienf 20:6d2af70c92ab 387 /// Write corresponding register of cbox
darienf 20:6d2af70c92ab 388 /// </summary>
darienf 20:6d2af70c92ab 389 /// <param name="cbox"></param>
darienf 20:6d2af70c92ab 390 void writeComboBox(MaximStyle.MaximComboBox cbox)
darienf 20:6d2af70c92ab 391 {
darienf 20:6d2af70c92ab 392 List<RegisterField>[] fieldLists = { ecgChannelField, ecgInputMuxField, ecgGlobalField, rToRField, bioZChannelField, bioZInputMuxField, bioZLoadField, paceChannelField};
darienf 20:6d2af70c92ab 393 RegisterField field = null;
darienf 20:6d2af70c92ab 394 //int val;
darienf 20:6d2af70c92ab 395
darienf 20:6d2af70c92ab 396 foreach (List<RegisterField> list in fieldLists)
darienf 20:6d2af70c92ab 397 {
darienf 20:6d2af70c92ab 398 foreach (RegisterField f in list)
darienf 20:6d2af70c92ab 399 {
darienf 20:6d2af70c92ab 400 if (f.Control == cbox)
darienf 20:6d2af70c92ab 401 {
darienf 20:6d2af70c92ab 402 field = f;
darienf 20:6d2af70c92ab 403 break;
darienf 20:6d2af70c92ab 404 }
darienf 20:6d2af70c92ab 405 }
darienf 20:6d2af70c92ab 406
darienf 20:6d2af70c92ab 407 if (field != null)
darienf 20:6d2af70c92ab 408 break;
darienf 20:6d2af70c92ab 409 }
darienf 20:6d2af70c92ab 410
darienf 20:6d2af70c92ab 411 field.WriteField((((MaximStyle.MaximComboBox)field.Control).SelectedIndex));
darienf 20:6d2af70c92ab 412 }
darienf 20:6d2af70c92ab 413
darienf 20:6d2af70c92ab 414 void writeCheckBox(MaximStyle.MaximCheckBox chk)
darienf 20:6d2af70c92ab 415 {
darienf 20:6d2af70c92ab 416 List<RegisterField>[] fieldLists = { channelEnableField };
darienf 20:6d2af70c92ab 417 RegisterField field = null;
darienf 20:6d2af70c92ab 418 //int val;
darienf 20:6d2af70c92ab 419
darienf 20:6d2af70c92ab 420 foreach (List<RegisterField> list in fieldLists)
darienf 20:6d2af70c92ab 421 {
darienf 20:6d2af70c92ab 422 foreach (RegisterField f in list)
darienf 20:6d2af70c92ab 423 {
darienf 20:6d2af70c92ab 424 if (f.Control == chk)
darienf 20:6d2af70c92ab 425 {
darienf 20:6d2af70c92ab 426 field = f;
darienf 20:6d2af70c92ab 427 break;
darienf 20:6d2af70c92ab 428 }
darienf 20:6d2af70c92ab 429 }
darienf 20:6d2af70c92ab 430
darienf 20:6d2af70c92ab 431 if (field != null)
darienf 20:6d2af70c92ab 432 break;
darienf 20:6d2af70c92ab 433 }
darienf 20:6d2af70c92ab 434
darienf 20:6d2af70c92ab 435 field.WriteField(((MaximStyle.MaximCheckBox)field.Control).Checked == true ? 1 : 0);
darienf 20:6d2af70c92ab 436 }
darienf 20:6d2af70c92ab 437
darienf 20:6d2af70c92ab 438 /// <summary>
darienf 20:6d2af70c92ab 439 /// Event to handle when a new item is selected in the comboboxes for ECG Channel tabs
darienf 20:6d2af70c92ab 440 /// </summary>
darienf 20:6d2af70c92ab 441 /// <param name="sender"></param>
darienf 20:6d2af70c92ab 442 /// <param name="e"></param>
darienf 20:6d2af70c92ab 443 private void cboECGChannel_SelectedIndexChanged(object sender, EventArgs e)
darienf 20:6d2af70c92ab 444 {
darienf 20:6d2af70c92ab 445 MaximStyle.MaximComboBox cbox = (MaximStyle.MaximComboBox)sender;
darienf 20:6d2af70c92ab 446
darienf 20:6d2af70c92ab 447 if (connected && !internalUpdate)
darienf 20:6d2af70c92ab 448 writeComboBox(cbox);
darienf 20:6d2af70c92ab 449 }
darienf 20:6d2af70c92ab 450
darienf 20:6d2af70c92ab 451 /// <summary>
darienf 20:6d2af70c92ab 452 /// Update sample rate for ECG View
darienf 20:6d2af70c92ab 453 /// </summary>
darienf 20:6d2af70c92ab 454 /// <param name="sender"></param>
darienf 20:6d2af70c92ab 455 /// <param name="e"></param>
darienf 20:6d2af70c92ab 456 private void cboSampleRate_SelectedIndexChanged(object sender, EventArgs e)
darienf 20:6d2af70c92ab 457 {
darienf 20:6d2af70c92ab 458 MaximStyle.MaximComboBox cbox = (MaximStyle.MaximComboBox)sender;
darienf 20:6d2af70c92ab 459
darienf 20:6d2af70c92ab 460 if (connected && !internalUpdate)
darienf 20:6d2af70c92ab 461 writeComboBox(cbox);
darienf 20:6d2af70c92ab 462
darienf 20:6d2af70c92ab 463 if (cboMasterClock.SelectedIndex > -1)
darienf 20:6d2af70c92ab 464 {
darienf 20:6d2af70c92ab 465 // Set sample rate based on clock
darienf 20:6d2af70c92ab 466 ecgView1.SampleRateEcg = ecgSampleRates[cboMasterClock.SelectedIndex][cbox.SelectedIndex];
darienf 20:6d2af70c92ab 467
darienf 20:6d2af70c92ab 468 // Set digital low pass filter
darienf 20:6d2af70c92ab 469 cboDlpf.Items.Clear();
darienf 20:6d2af70c92ab 470 ecgDlpfField.Descriptions = ecgDlpfOptions[cboMasterClock.SelectedIndex][cboSampleRate.SelectedIndex];
darienf 20:6d2af70c92ab 471 ecgDlpfField.Control = cboDlpf; // Trigger updating of descriptions
darienf 20:6d2af70c92ab 472
darienf 20:6d2af70c92ab 473 //internalUpdate = true;
darienf 20:6d2af70c92ab 474 if (connected)
darienf 20:6d2af70c92ab 475 cboDlpf.SelectedIndex = ecgDlpfField.ReadField();
darienf 20:6d2af70c92ab 476 //internalUpdate = false;
darienf 20:6d2af70c92ab 477 //ReadComboBoxesRegisters(cboDlpf);
darienf 20:6d2af70c92ab 478 }
darienf 20:6d2af70c92ab 479
darienf 20:6d2af70c92ab 480 }
darienf 20:6d2af70c92ab 481
darienf 20:6d2af70c92ab 482 private void cboChannelGain_SelectedIndexChanged(object sender, EventArgs e)
darienf 20:6d2af70c92ab 483 {
darienf 20:6d2af70c92ab 484 MaximStyle.MaximComboBox cbox = (MaximStyle.MaximComboBox)sender;
darienf 20:6d2af70c92ab 485
darienf 20:6d2af70c92ab 486 switch (cbox.SelectedIndex)
darienf 20:6d2af70c92ab 487 {
darienf 20:6d2af70c92ab 488 case 0:
darienf 20:6d2af70c92ab 489 ecgView1.GainECG = 20;
darienf 20:6d2af70c92ab 490 break;
darienf 20:6d2af70c92ab 491 case 1:
darienf 20:6d2af70c92ab 492 ecgView1.GainECG = 40;
darienf 20:6d2af70c92ab 493 break;
darienf 20:6d2af70c92ab 494 case 2:
darienf 20:6d2af70c92ab 495 ecgView1.GainECG = 80;
darienf 20:6d2af70c92ab 496 break;
darienf 20:6d2af70c92ab 497 case 3:
darienf 20:6d2af70c92ab 498 ecgView1.GainECG = 160;
darienf 20:6d2af70c92ab 499 break;
darienf 20:6d2af70c92ab 500 }
darienf 20:6d2af70c92ab 501 }
darienf 20:6d2af70c92ab 502
darienf 20:6d2af70c92ab 503 private void chkChannelEnable_CheckedChanged(object sender, EventArgs e)
darienf 20:6d2af70c92ab 504 {
darienf 20:6d2af70c92ab 505 MaximStyle.MaximCheckBox chk = (MaximStyle.MaximCheckBox)sender;
darienf 20:6d2af70c92ab 506
darienf 20:6d2af70c92ab 507 // Write bit
darienf 20:6d2af70c92ab 508 if (connected && !internalUpdate)
darienf 20:6d2af70c92ab 509 {
darienf 20:6d2af70c92ab 510 writeCheckBox(chk);
darienf 20:6d2af70c92ab 511
darienf 20:6d2af70c92ab 512 // Do not allow user to change masked enable bits
darienf 20:6d2af70c92ab 513 channelEnableMask(chkEnECG);
darienf 20:6d2af70c92ab 514
darienf 20:6d2af70c92ab 515 // Tell ECG View the status
darienf 20:6d2af70c92ab 516 if (chk == chkEnECG)
darienf 20:6d2af70c92ab 517 {
darienf 20:6d2af70c92ab 518 ecgView1.EnableECG = chk.Checked;
darienf 20:6d2af70c92ab 519 }
darienf 20:6d2af70c92ab 520 else if (chk == chkEnBioZ)
darienf 20:6d2af70c92ab 521 {
darienf 20:6d2af70c92ab 522 ecgView1.EnableBioZ = chk.Checked;
darienf 20:6d2af70c92ab 523 }
darienf 20:6d2af70c92ab 524 else if (chk == chkEnPace)
darienf 20:6d2af70c92ab 525 {
darienf 20:6d2af70c92ab 526 ecgView1.EnablePace = chk.Checked;
darienf 20:6d2af70c92ab 527 }
darienf 20:6d2af70c92ab 528 else if (chk == chkEnRtor)
darienf 20:6d2af70c92ab 529 {
darienf 20:6d2af70c92ab 530 ecgView1.EnableRToR = chk.Checked;
darienf 20:6d2af70c92ab 531 }
darienf 20:6d2af70c92ab 532
darienf 20:6d2af70c92ab 533 // Read all enable bits
darienf 20:6d2af70c92ab 534 internalUpdate = true;
darienf 20:6d2af70c92ab 535 ReadCheckBoxRegisters(channelEnableField);
darienf 20:6d2af70c92ab 536 internalUpdate = false;
darienf 20:6d2af70c92ab 537 }
darienf 20:6d2af70c92ab 538 }
darienf 20:6d2af70c92ab 539
darienf 20:6d2af70c92ab 540 private void cboMasterClock_SelectedIndexChanged(object sender, EventArgs e)
darienf 20:6d2af70c92ab 541 {
darienf 20:6d2af70c92ab 542 MaximStyle.MaximComboBox cbo = (MaximStyle.MaximComboBox)sender;
darienf 20:6d2af70c92ab 543 int[] clock = { 32768, 32000, 32000, 31968 };
darienf 20:6d2af70c92ab 544
darienf 20:6d2af70c92ab 545 if (connected && !internalUpdate)
darienf 20:6d2af70c92ab 546 writeComboBox(cbo);
darienf 20:6d2af70c92ab 547
darienf 20:6d2af70c92ab 548 ecgView1.FrequencyMasterField = cbo.SelectedIndex;
darienf 20:6d2af70c92ab 549 //ecgView1.TimeResolution = 1.0/(2*clock[cbo.SelectedIndex]);
darienf 20:6d2af70c92ab 550
darienf 20:6d2af70c92ab 551 ecgSampleRateField.Descriptions = ecgSampleRateOptions[cbo.SelectedIndex];
darienf 20:6d2af70c92ab 552 ecgSampleRateField.Control = cboSampleRate; // Trigger updating of descriptions
darienf 20:6d2af70c92ab 553
darienf 20:6d2af70c92ab 554 cboBioZSampleRate.Items.Clear();
darienf 20:6d2af70c92ab 555 bioZSampleRateField.Descriptions = bioZSampleRateOptions[cbo.SelectedIndex];
darienf 20:6d2af70c92ab 556 bioZSampleRateField.Control = cboBioZSampleRate; // Trigger updating of descriptions
darienf 20:6d2af70c92ab 557
darienf 20:6d2af70c92ab 558 // Trigger update of current selection to new description
darienf 20:6d2af70c92ab 559 internalUpdate = true;
darienf 20:6d2af70c92ab 560 if (connected)
darienf 20:6d2af70c92ab 561 {
darienf 20:6d2af70c92ab 562 cboSampleRate.SelectedIndex = ecgSampleRateField.ReadField();
darienf 20:6d2af70c92ab 563 cboDlpf.SelectedIndex = ecgDlpfField.ReadField();
darienf 20:6d2af70c92ab 564 cboBioZSampleRate.SelectedIndex = bioZSampleRateField.ReadField();
darienf 20:6d2af70c92ab 565 cboBioZDigitalLpf.SelectedIndex = bioZDlpfField.ReadField();
darienf 20:6d2af70c92ab 566 }
darienf 20:6d2af70c92ab 567 internalUpdate = false;
darienf 20:6d2af70c92ab 568 }
darienf 20:6d2af70c92ab 569
darienf 20:6d2af70c92ab 570 private void cboRRWndw_SelectedIndexChanged(object sender, EventArgs e)
darienf 20:6d2af70c92ab 571 {
darienf 20:6d2af70c92ab 572 MaximStyle.MaximComboBox cbo = (MaximStyle.MaximComboBox)sender;
darienf 20:6d2af70c92ab 573 ecgView1.RToRWindowField = cbo.SelectedIndex;
darienf 20:6d2af70c92ab 574 }
darienf 20:6d2af70c92ab 575
darienf 20:6d2af70c92ab 576 private CustomControls.InitArgs.RToRInitStart getRToRArgs()
darienf 20:6d2af70c92ab 577 {
darienf 20:6d2af70c92ab 578 CustomControls.InitArgs.RToRInitStart initArgs = new CustomControls.InitArgs.RToRInitStart();
darienf 20:6d2af70c92ab 579
darienf 20:6d2af70c92ab 580 initArgs.Wndw = cboRRWndw.SelectedIndex;
darienf 20:6d2af70c92ab 581 initArgs.Gain = cboRRGain.SelectedIndex;
darienf 20:6d2af70c92ab 582 initArgs.En_rtor = chkEnRtor.Checked == true ? 1 : 0;
darienf 20:6d2af70c92ab 583 initArgs.Pavg = cboRRPavg.SelectedIndex;
darienf 20:6d2af70c92ab 584 initArgs.Ptsf = cboRRPtsf.SelectedIndex;
darienf 20:6d2af70c92ab 585 initArgs.Hoff = cboRRHoff.SelectedIndex;
darienf 20:6d2af70c92ab 586 initArgs.Ravg = cboRRRavg.SelectedIndex;
darienf 20:6d2af70c92ab 587 initArgs.Rhsf = cboRRRhsf.SelectedIndex;
darienf 20:6d2af70c92ab 588 initArgs.Clr_rrint = 1; // Default from Jerry's GUI
darienf 20:6d2af70c92ab 589
darienf 20:6d2af70c92ab 590 return initArgs;
darienf 20:6d2af70c92ab 591 }
darienf 20:6d2af70c92ab 592
darienf 20:6d2af70c92ab 593 private void setRToRArgs(CustomControls.InitArgs.RToRInitStart initArgs)
darienf 20:6d2af70c92ab 594 {
darienf 20:6d2af70c92ab 595 cboRRWndw.SelectedIndex = initArgs.Wndw;
darienf 20:6d2af70c92ab 596 cboRRGain.SelectedIndex = initArgs.Gain;
darienf 20:6d2af70c92ab 597 //initArgs.En_rtor = chkEnRtor.Checked == true ? 1 : 0; //cboEnRToR.SelectedIndex;
darienf 20:6d2af70c92ab 598 cboRRPavg.SelectedIndex = initArgs.Pavg;
darienf 20:6d2af70c92ab 599 cboRRPtsf.SelectedIndex = initArgs.Ptsf;
darienf 20:6d2af70c92ab 600 cboRRHoff.SelectedIndex = initArgs.Hoff;
darienf 20:6d2af70c92ab 601 cboRRRavg.SelectedIndex = initArgs.Ravg;
darienf 20:6d2af70c92ab 602 cboRRRhsf.SelectedIndex = initArgs.Rhsf;
darienf 20:6d2af70c92ab 603 //initArgs.Clr_rrint = 2; // Default from Jerry's GUI
darienf 20:6d2af70c92ab 604 }
darienf 20:6d2af70c92ab 605
darienf 20:6d2af70c92ab 606 }
darienf 20:6d2af70c92ab 607 }