This is a mbed 5.2 Release

Dependencies:   USBDevice

Fork of mbed-os-test by Jerry Bradshaw

Committer:
jbradshaw
Date:
Tue Oct 25 15:22:11 2016 +0000
Revision:
0:e4a10ed6eb92
tewt

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jbradshaw 0:e4a10ed6eb92 1 /*******************************************************************************
jbradshaw 0:e4a10ed6eb92 2 * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
jbradshaw 0:e4a10ed6eb92 3 *
jbradshaw 0:e4a10ed6eb92 4 * Permission is hereby granted, free of charge, to any person obtaining a
jbradshaw 0:e4a10ed6eb92 5 * copy of this software and associated documentation files (the "Software"),
jbradshaw 0:e4a10ed6eb92 6 * to deal in the Software without restriction, including without limitation
jbradshaw 0:e4a10ed6eb92 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
jbradshaw 0:e4a10ed6eb92 8 * and/or sell copies of the Software, and to permit persons to whom the
jbradshaw 0:e4a10ed6eb92 9 * Software is furnished to do so, subject to the following conditions:
jbradshaw 0:e4a10ed6eb92 10 *
jbradshaw 0:e4a10ed6eb92 11 * The above copyright notice and this permission notice shall be included
jbradshaw 0:e4a10ed6eb92 12 * in all copies or substantial portions of the Software.
jbradshaw 0:e4a10ed6eb92 13 *
jbradshaw 0:e4a10ed6eb92 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
jbradshaw 0:e4a10ed6eb92 15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
jbradshaw 0:e4a10ed6eb92 16 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
jbradshaw 0:e4a10ed6eb92 17 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
jbradshaw 0:e4a10ed6eb92 18 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
jbradshaw 0:e4a10ed6eb92 19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
jbradshaw 0:e4a10ed6eb92 20 * OTHER DEALINGS IN THE SOFTWARE.
jbradshaw 0:e4a10ed6eb92 21 *
jbradshaw 0:e4a10ed6eb92 22 * Except as contained in this notice, the name of Maxim Integrated
jbradshaw 0:e4a10ed6eb92 23 * Products, Inc. shall not be used except as stated in the Maxim Integrated
jbradshaw 0:e4a10ed6eb92 24 * Products, Inc. Branding Policy.
jbradshaw 0:e4a10ed6eb92 25 *
jbradshaw 0:e4a10ed6eb92 26 * The mere transfer of this software does not imply any licenses
jbradshaw 0:e4a10ed6eb92 27 * of trade secrets, proprietary technology, copyrights, patents,
jbradshaw 0:e4a10ed6eb92 28 * trademarks, maskwork rights, or any other form of intellectual
jbradshaw 0:e4a10ed6eb92 29 * property whatsoever. Maxim Integrated Products, Inc. retains all
jbradshaw 0:e4a10ed6eb92 30 * ownership rights.
jbradshaw 0:e4a10ed6eb92 31 *******************************************************************************
jbradshaw 0:e4a10ed6eb92 32 */
jbradshaw 0:e4a10ed6eb92 33
jbradshaw 0:e4a10ed6eb92 34 #include <stdio.h>
jbradshaw 0:e4a10ed6eb92 35 #include "StringHelper.h"
jbradshaw 0:e4a10ed6eb92 36 #include "MAX30001.h"
jbradshaw 0:e4a10ed6eb92 37 #include "Streaming.h"
jbradshaw 0:e4a10ed6eb92 38 #include "StringInOut.h"
jbradshaw 0:e4a10ed6eb92 39 #include "MAX30001_helper.h"
jbradshaw 0:e4a10ed6eb92 40 #include "RpcFifo.h"
jbradshaw 0:e4a10ed6eb92 41 #include "RpcServer.h"
jbradshaw 0:e4a10ed6eb92 42 #include "Peripherals.h"
jbradshaw 0:e4a10ed6eb92 43 #include "DataLoggingService.h"
jbradshaw 0:e4a10ed6eb92 44
jbradshaw 0:e4a10ed6eb92 45 /*static int startedEcg = 0;
jbradshaw 0:e4a10ed6eb92 46 static int startedBioz = 0;
jbradshaw 0:e4a10ed6eb92 47 static int startedCal = 0;
jbradshaw 0:e4a10ed6eb92 48 static int startedPace = 0;
jbradshaw 0:e4a10ed6eb92 49 static int startedRtor = 0;
jbradshaw 0:e4a10ed6eb92 50 static void StopAll();
jbradshaw 0:e4a10ed6eb92 51 */
jbradshaw 0:e4a10ed6eb92 52
jbradshaw 0:e4a10ed6eb92 53 extern int highDataRate;
jbradshaw 0:e4a10ed6eb92 54
jbradshaw 0:e4a10ed6eb92 55 uint32_t max30001_RegRead(MAX30001::MAX30001_REG_map_t addr) {
jbradshaw 0:e4a10ed6eb92 56 uint32_t data;
jbradshaw 0:e4a10ed6eb92 57 Peripherals::max30001()->max30001_reg_read(addr, &data);
jbradshaw 0:e4a10ed6eb92 58 return data;
jbradshaw 0:e4a10ed6eb92 59 }
jbradshaw 0:e4a10ed6eb92 60
jbradshaw 0:e4a10ed6eb92 61 void max30001_RegWrite(MAX30001::MAX30001_REG_map_t addr, uint32_t data) {
jbradshaw 0:e4a10ed6eb92 62 Peripherals::max30001()->max30001_reg_write(addr, data);
jbradshaw 0:e4a10ed6eb92 63 }
jbradshaw 0:e4a10ed6eb92 64
jbradshaw 0:e4a10ed6eb92 65 int MAX30001_WriteReg(char argStrs[32][32], char replyStrs[32][32]) {
jbradshaw 0:e4a10ed6eb92 66 uint32_t args[2];
jbradshaw 0:e4a10ed6eb92 67 uint32_t reply[1];
jbradshaw 0:e4a10ed6eb92 68 uint32_t value;
jbradshaw 0:e4a10ed6eb92 69 ProcessArgs32(argStrs, args, sizeof(args) / sizeof(uint32_t));
jbradshaw 0:e4a10ed6eb92 70
jbradshaw 0:e4a10ed6eb92 71 max30001_RegWrite((MAX30001::MAX30001_REG_map_t)args[0], args[1]);
jbradshaw 0:e4a10ed6eb92 72 reply[0] = 0x80;
jbradshaw 0:e4a10ed6eb92 73 FormatReply32(reply, sizeof(reply) / sizeof(uint32_t), replyStrs);
jbradshaw 0:e4a10ed6eb92 74 return 0;
jbradshaw 0:e4a10ed6eb92 75 }
jbradshaw 0:e4a10ed6eb92 76
jbradshaw 0:e4a10ed6eb92 77 int MAX30001_ReadReg(char argStrs[32][32], char replyStrs[32][32]) {
jbradshaw 0:e4a10ed6eb92 78 uint32_t args[1];
jbradshaw 0:e4a10ed6eb92 79 uint32_t reply[1];
jbradshaw 0:e4a10ed6eb92 80 uint32_t value;
jbradshaw 0:e4a10ed6eb92 81 ProcessArgs32(argStrs, args, sizeof(args) / sizeof(uint32_t));
jbradshaw 0:e4a10ed6eb92 82 value = max30001_RegRead((MAX30001::MAX30001_REG_map_t)args[0]);
jbradshaw 0:e4a10ed6eb92 83 reply[0] = value;
jbradshaw 0:e4a10ed6eb92 84 FormatReply32(reply, sizeof(reply) / sizeof(uint32_t), replyStrs);
jbradshaw 0:e4a10ed6eb92 85 return 0;
jbradshaw 0:e4a10ed6eb92 86 }
jbradshaw 0:e4a10ed6eb92 87
jbradshaw 0:e4a10ed6eb92 88 int MAX30001_Rbias_FMSTR_Init(char argStrs[32][32], char replyStrs[32][32]) {
jbradshaw 0:e4a10ed6eb92 89 uint32_t args[5];
jbradshaw 0:e4a10ed6eb92 90 uint32_t reply[1];
jbradshaw 0:e4a10ed6eb92 91 uint32_t value;
jbradshaw 0:e4a10ed6eb92 92 ProcessArgs32(argStrs, args, sizeof(args) / sizeof(uint32_t));
jbradshaw 0:e4a10ed6eb92 93
jbradshaw 0:e4a10ed6eb92 94 value = Peripherals::max30001()->max30001_Rbias_FMSTR_Init(args[0], // En_rbias
jbradshaw 0:e4a10ed6eb92 95 args[1], // Rbiasv
jbradshaw 0:e4a10ed6eb92 96 args[2], // Rbiasp
jbradshaw 0:e4a10ed6eb92 97 args[3], // Rbiasn
jbradshaw 0:e4a10ed6eb92 98 args[4]); // Fmstr
jbradshaw 0:e4a10ed6eb92 99
jbradshaw 0:e4a10ed6eb92 100 reply[0] = value;
jbradshaw 0:e4a10ed6eb92 101 FormatReply32(reply, sizeof(reply) / sizeof(uint32_t), replyStrs);
jbradshaw 0:e4a10ed6eb92 102 return 0;
jbradshaw 0:e4a10ed6eb92 103 }
jbradshaw 0:e4a10ed6eb92 104
jbradshaw 0:e4a10ed6eb92 105 int MAX30001_CAL_InitStart(char argStrs[32][32], char replyStrs[32][32]) {
jbradshaw 0:e4a10ed6eb92 106 uint32_t args[6];
jbradshaw 0:e4a10ed6eb92 107 uint32_t reply[1];
jbradshaw 0:e4a10ed6eb92 108 uint32_t value;
jbradshaw 0:e4a10ed6eb92 109 ProcessArgs32(argStrs, args, sizeof(args) / sizeof(uint32_t));
jbradshaw 0:e4a10ed6eb92 110
jbradshaw 0:e4a10ed6eb92 111 // Peripherals::serial()->printf("MAX30001_CAL_InitStart 0 ");
jbradshaw 0:e4a10ed6eb92 112 value = Peripherals::max30001()->max30001_CAL_InitStart(args[0], // En_Vcal
jbradshaw 0:e4a10ed6eb92 113 args[1], // Vmag
jbradshaw 0:e4a10ed6eb92 114 args[2], // Fcal
jbradshaw 0:e4a10ed6eb92 115 args[3], // Thigh
jbradshaw 0:e4a10ed6eb92 116 args[4], // Fifty
jbradshaw 0:e4a10ed6eb92 117 args[5]); // Vmode
jbradshaw 0:e4a10ed6eb92 118
jbradshaw 0:e4a10ed6eb92 119 reply[0] = value;
jbradshaw 0:e4a10ed6eb92 120 FormatReply32(reply, sizeof(reply) / sizeof(uint32_t), replyStrs);
jbradshaw 0:e4a10ed6eb92 121 return 0;
jbradshaw 0:e4a10ed6eb92 122 }
jbradshaw 0:e4a10ed6eb92 123
jbradshaw 0:e4a10ed6eb92 124 int MAX30001_ECG_InitStart(char argStrs[32][32], char replyStrs[32][32]) {
jbradshaw 0:e4a10ed6eb92 125 uint32_t args[11];
jbradshaw 0:e4a10ed6eb92 126 uint32_t reply[1];
jbradshaw 0:e4a10ed6eb92 127 uint32_t value;
jbradshaw 0:e4a10ed6eb92 128 ProcessArgs32(argStrs, args, sizeof(args) / sizeof(uint32_t));
jbradshaw 0:e4a10ed6eb92 129
jbradshaw 0:e4a10ed6eb92 130 // Peripherals::serial()->printf("MAX30001_ECG_InitStart 0 ");
jbradshaw 0:e4a10ed6eb92 131 value = Peripherals::max30001()->max30001_ECG_InitStart(args[0], // En_ecg
jbradshaw 0:e4a10ed6eb92 132 args[1], // Openp
jbradshaw 0:e4a10ed6eb92 133 args[2], // Openn
jbradshaw 0:e4a10ed6eb92 134 args[3], // Pol
jbradshaw 0:e4a10ed6eb92 135 args[4], // Calp_sel
jbradshaw 0:e4a10ed6eb92 136 args[5], // Caln_sel
jbradshaw 0:e4a10ed6eb92 137 args[6], // E_fit
jbradshaw 0:e4a10ed6eb92 138 args[7], // Rate
jbradshaw 0:e4a10ed6eb92 139 args[8], // Gain
jbradshaw 0:e4a10ed6eb92 140 args[9], // Dhpf
jbradshaw 0:e4a10ed6eb92 141 args[10]); // Dlpf
jbradshaw 0:e4a10ed6eb92 142 // Peripherals::serial()->printf("MAX30001_ECG_InitStart 1 ");
jbradshaw 0:e4a10ed6eb92 143 MAX30001_Helper_SetStreamingFlag(eStreaming_ECG, 1);
jbradshaw 0:e4a10ed6eb92 144 reply[0] = value;
jbradshaw 0:e4a10ed6eb92 145 FormatReply32(reply, sizeof(reply) / sizeof(uint32_t), replyStrs);
jbradshaw 0:e4a10ed6eb92 146 return 0;
jbradshaw 0:e4a10ed6eb92 147 }
jbradshaw 0:e4a10ed6eb92 148
jbradshaw 0:e4a10ed6eb92 149 int MAX30001_ECGFast_Init(char argStrs[32][32], char replyStrs[32][32]) {
jbradshaw 0:e4a10ed6eb92 150 uint32_t args[3];
jbradshaw 0:e4a10ed6eb92 151 uint32_t reply[1];
jbradshaw 0:e4a10ed6eb92 152 uint32_t value;
jbradshaw 0:e4a10ed6eb92 153 ProcessArgs32(argStrs, args, sizeof(args) / sizeof(uint32_t));
jbradshaw 0:e4a10ed6eb92 154
jbradshaw 0:e4a10ed6eb92 155 value = Peripherals::max30001()->max30001_ECGFast_Init(args[0], // Clr_Fast
jbradshaw 0:e4a10ed6eb92 156 args[1], // Fast
jbradshaw 0:e4a10ed6eb92 157 args[2]); // Fast_Th
jbradshaw 0:e4a10ed6eb92 158
jbradshaw 0:e4a10ed6eb92 159 reply[0] = value;
jbradshaw 0:e4a10ed6eb92 160 FormatReply32(reply, sizeof(reply) / sizeof(uint32_t), replyStrs);
jbradshaw 0:e4a10ed6eb92 161 return 0;
jbradshaw 0:e4a10ed6eb92 162 }
jbradshaw 0:e4a10ed6eb92 163
jbradshaw 0:e4a10ed6eb92 164 int MAX30001_PACE_InitStart(char argStrs[32][32], char replyStrs[32][32]) {
jbradshaw 0:e4a10ed6eb92 165 uint32_t args[9];
jbradshaw 0:e4a10ed6eb92 166 uint32_t reply[1];
jbradshaw 0:e4a10ed6eb92 167 uint32_t value;
jbradshaw 0:e4a10ed6eb92 168 ProcessArgs32(argStrs, args, sizeof(args) / sizeof(uint32_t));
jbradshaw 0:e4a10ed6eb92 169
jbradshaw 0:e4a10ed6eb92 170 value =
jbradshaw 0:e4a10ed6eb92 171 Peripherals::max30001()->max30001_PACE_InitStart(args[0], // En_pace
jbradshaw 0:e4a10ed6eb92 172 args[1], // Clr_pedge
jbradshaw 0:e4a10ed6eb92 173 args[2], // Pol
jbradshaw 0:e4a10ed6eb92 174 args[3], // Gn_diff_off
jbradshaw 0:e4a10ed6eb92 175 args[4], // Gain
jbradshaw 0:e4a10ed6eb92 176 args[5], // Aout_lbw
jbradshaw 0:e4a10ed6eb92 177 args[6], // Aout
jbradshaw 0:e4a10ed6eb92 178 args[7], // Dacp
jbradshaw 0:e4a10ed6eb92 179 args[8]); // Dacn
jbradshaw 0:e4a10ed6eb92 180
jbradshaw 0:e4a10ed6eb92 181 MAX30001_Helper_SetStreamingFlag(eStreaming_PACE, 1);
jbradshaw 0:e4a10ed6eb92 182 reply[0] = value;
jbradshaw 0:e4a10ed6eb92 183 FormatReply32(reply, sizeof(reply) / sizeof(uint32_t), replyStrs);
jbradshaw 0:e4a10ed6eb92 184 return 0;
jbradshaw 0:e4a10ed6eb92 185 }
jbradshaw 0:e4a10ed6eb92 186
jbradshaw 0:e4a10ed6eb92 187 int MAX30001_BIOZ_InitStart(char argStrs[32][32], char replyStrs[32][32]) {
jbradshaw 0:e4a10ed6eb92 188 uint32_t args[17];
jbradshaw 0:e4a10ed6eb92 189 uint32_t reply[1];
jbradshaw 0:e4a10ed6eb92 190 uint32_t value;
jbradshaw 0:e4a10ed6eb92 191 ProcessArgs32(argStrs, args, sizeof(args) / sizeof(uint32_t));
jbradshaw 0:e4a10ed6eb92 192
jbradshaw 0:e4a10ed6eb92 193 value = Peripherals::max30001()->max30001_BIOZ_InitStart(args[0], // En_bioz
jbradshaw 0:e4a10ed6eb92 194 args[1], // Openp
jbradshaw 0:e4a10ed6eb92 195 args[2], // Openn
jbradshaw 0:e4a10ed6eb92 196 args[3], // Calp_sel
jbradshaw 0:e4a10ed6eb92 197 args[4], // Caln_sel
jbradshaw 0:e4a10ed6eb92 198 args[5], // CG_mode
jbradshaw 0:e4a10ed6eb92 199 args[6], // B_fit
jbradshaw 0:e4a10ed6eb92 200 args[7], // Rate
jbradshaw 0:e4a10ed6eb92 201 args[8], // Ahpf
jbradshaw 0:e4a10ed6eb92 202 args[9], // Ext_rbias
jbradshaw 0:e4a10ed6eb92 203 args[10], // Gain
jbradshaw 0:e4a10ed6eb92 204 args[11], // Dhpf
jbradshaw 0:e4a10ed6eb92 205 args[12], // Dlpf
jbradshaw 0:e4a10ed6eb92 206 args[13], // Fcgen
jbradshaw 0:e4a10ed6eb92 207 args[14], // Cgmon
jbradshaw 0:e4a10ed6eb92 208 args[15], // Cgmag
jbradshaw 0:e4a10ed6eb92 209 args[16]); // Phoff
jbradshaw 0:e4a10ed6eb92 210
jbradshaw 0:e4a10ed6eb92 211 MAX30001_Helper_SetStreamingFlag(eStreaming_BIOZ, 1);
jbradshaw 0:e4a10ed6eb92 212 reply[0] = value;
jbradshaw 0:e4a10ed6eb92 213 FormatReply32(reply, sizeof(reply) / sizeof(uint32_t), replyStrs);
jbradshaw 0:e4a10ed6eb92 214 return 0;
jbradshaw 0:e4a10ed6eb92 215 }
jbradshaw 0:e4a10ed6eb92 216
jbradshaw 0:e4a10ed6eb92 217 int MAX30001_RtoR_InitStart(char argStrs[32][32], char replyStrs[32][32]) {
jbradshaw 0:e4a10ed6eb92 218 uint32_t args[9];
jbradshaw 0:e4a10ed6eb92 219 uint32_t reply[1];
jbradshaw 0:e4a10ed6eb92 220 uint32_t value;
jbradshaw 0:e4a10ed6eb92 221 ProcessArgs32(argStrs, args, sizeof(args) / sizeof(uint32_t));
jbradshaw 0:e4a10ed6eb92 222
jbradshaw 0:e4a10ed6eb92 223 value = Peripherals::max30001()->max30001_RtoR_InitStart(args[0], // En_rtor
jbradshaw 0:e4a10ed6eb92 224 args[1], // Wndw
jbradshaw 0:e4a10ed6eb92 225 args[2], // Gain
jbradshaw 0:e4a10ed6eb92 226 args[3], // Pavg
jbradshaw 0:e4a10ed6eb92 227 args[4], // Ptsf
jbradshaw 0:e4a10ed6eb92 228 args[5], // Hoff
jbradshaw 0:e4a10ed6eb92 229 args[6], // Ravg
jbradshaw 0:e4a10ed6eb92 230 args[7], // Rhsf
jbradshaw 0:e4a10ed6eb92 231 args[8]); // Clr_rrint
jbradshaw 0:e4a10ed6eb92 232
jbradshaw 0:e4a10ed6eb92 233 MAX30001_Helper_SetStreamingFlag(eStreaming_RtoR, 1);
jbradshaw 0:e4a10ed6eb92 234 reply[0] = value;
jbradshaw 0:e4a10ed6eb92 235 FormatReply32(reply, sizeof(reply) / sizeof(uint32_t), replyStrs);
jbradshaw 0:e4a10ed6eb92 236 return 0;
jbradshaw 0:e4a10ed6eb92 237 }
jbradshaw 0:e4a10ed6eb92 238
jbradshaw 0:e4a10ed6eb92 239 int MAX30001_Stop_ECG(char argStrs[32][32], char replyStrs[32][32]) {
jbradshaw 0:e4a10ed6eb92 240 uint32_t reply[1];
jbradshaw 0:e4a10ed6eb92 241 Peripherals::max30001()->max30001_Stop_ECG();
jbradshaw 0:e4a10ed6eb92 242 reply[0] = 0x80;
jbradshaw 0:e4a10ed6eb92 243 FormatReply32(reply, sizeof(reply) / sizeof(uint32_t), replyStrs);
jbradshaw 0:e4a10ed6eb92 244 return 0;
jbradshaw 0:e4a10ed6eb92 245 }
jbradshaw 0:e4a10ed6eb92 246 int MAX30001_Stop_PACE(char argStrs[32][32], char replyStrs[32][32]) {
jbradshaw 0:e4a10ed6eb92 247 uint32_t reply[1];
jbradshaw 0:e4a10ed6eb92 248 Peripherals::max30001()->max30001_Stop_PACE();
jbradshaw 0:e4a10ed6eb92 249 reply[0] = 0x80;
jbradshaw 0:e4a10ed6eb92 250 FormatReply32(reply, sizeof(reply) / sizeof(uint32_t), replyStrs);
jbradshaw 0:e4a10ed6eb92 251 return 0;
jbradshaw 0:e4a10ed6eb92 252 }
jbradshaw 0:e4a10ed6eb92 253 int MAX30001_Stop_BIOZ(char argStrs[32][32], char replyStrs[32][32]) {
jbradshaw 0:e4a10ed6eb92 254 uint32_t reply[1];
jbradshaw 0:e4a10ed6eb92 255 Peripherals::max30001()->max30001_Stop_BIOZ();
jbradshaw 0:e4a10ed6eb92 256 reply[0] = 0x80;
jbradshaw 0:e4a10ed6eb92 257 FormatReply32(reply, sizeof(reply) / sizeof(uint32_t), replyStrs);
jbradshaw 0:e4a10ed6eb92 258 return 0;
jbradshaw 0:e4a10ed6eb92 259 }
jbradshaw 0:e4a10ed6eb92 260 int MAX30001_Stop_RtoR(char argStrs[32][32], char replyStrs[32][32]) {
jbradshaw 0:e4a10ed6eb92 261 uint32_t reply[1];
jbradshaw 0:e4a10ed6eb92 262 Peripherals::max30001()->max30001_Stop_RtoR();
jbradshaw 0:e4a10ed6eb92 263 reply[0] = 0x80;
jbradshaw 0:e4a10ed6eb92 264 FormatReply32(reply, sizeof(reply) / sizeof(uint32_t), replyStrs);
jbradshaw 0:e4a10ed6eb92 265 return 0;
jbradshaw 0:e4a10ed6eb92 266 }
jbradshaw 0:e4a10ed6eb92 267 int MAX30001_Stop_Cal(char argStrs[32][32], char replyStrs[32][32]) {
jbradshaw 0:e4a10ed6eb92 268 uint32_t reply[1];
jbradshaw 0:e4a10ed6eb92 269 // max30001_Stop_Cal();
jbradshaw 0:e4a10ed6eb92 270 reply[0] = 0x80;
jbradshaw 0:e4a10ed6eb92 271 FormatReply32(reply, sizeof(reply) / sizeof(uint32_t), replyStrs);
jbradshaw 0:e4a10ed6eb92 272 return 0;
jbradshaw 0:e4a10ed6eb92 273 }
jbradshaw 0:e4a10ed6eb92 274
jbradshaw 0:e4a10ed6eb92 275 void max30001_ServiceStreaming() {
jbradshaw 0:e4a10ed6eb92 276 char ch;
jbradshaw 0:e4a10ed6eb92 277 uint32_t val;
jbradshaw 0:e4a10ed6eb92 278 USBSerial *usbSerial = Peripherals::usbSerial();
jbradshaw 0:e4a10ed6eb92 279
jbradshaw 0:e4a10ed6eb92 280 fifo_clear(GetStreamOutFifo());
jbradshaw 0:e4a10ed6eb92 281
jbradshaw 0:e4a10ed6eb92 282 SetStreaming(TRUE);
jbradshaw 0:e4a10ed6eb92 283 clearOutReadFifo();
jbradshaw 0:e4a10ed6eb92 284 while (IsStreaming() == TRUE) {
jbradshaw 0:e4a10ed6eb92 285
jbradshaw 0:e4a10ed6eb92 286 if (fifo_empty(GetStreamOutFifo()) == 0) {
jbradshaw 0:e4a10ed6eb92 287 fifo_get32(GetStreamOutFifo(), &val);
jbradshaw 0:e4a10ed6eb92 288
jbradshaw 0:e4a10ed6eb92 289 usbSerial->printf("%02X ", val);
jbradshaw 0:e4a10ed6eb92 290
jbradshaw 0:e4a10ed6eb92 291 }
jbradshaw 0:e4a10ed6eb92 292 if (usbSerial->available()) {
jbradshaw 0:e4a10ed6eb92 293 ch = usbSerial->_getc();
jbradshaw 0:e4a10ed6eb92 294
jbradshaw 0:e4a10ed6eb92 295 MAX30001_Helper_Stop();
jbradshaw 0:e4a10ed6eb92 296 SetStreaming(FALSE);
jbradshaw 0:e4a10ed6eb92 297 fifo_clear(GetUSBIncomingFifo()); // clear USB serial incoming fifo
jbradshaw 0:e4a10ed6eb92 298 fifo_clear(GetStreamOutFifo());
jbradshaw 0:e4a10ed6eb92 299 }
jbradshaw 0:e4a10ed6eb92 300
jbradshaw 0:e4a10ed6eb92 301 }
jbradshaw 0:e4a10ed6eb92 302 }
jbradshaw 0:e4a10ed6eb92 303
jbradshaw 0:e4a10ed6eb92 304 int MAX30001_Start(char argStrs[32][32], char replyStrs[32][32]) {
jbradshaw 0:e4a10ed6eb92 305 uint32_t reply[1];
jbradshaw 0:e4a10ed6eb92 306 uint32_t all;
jbradshaw 0:e4a10ed6eb92 307 fifo_clear(GetUSBIncomingFifo());
jbradshaw 0:e4a10ed6eb92 308 Peripherals::max30001()->max30001_synch();
jbradshaw 0:e4a10ed6eb92 309 // max30001_ServiceStreaming();
jbradshaw 0:e4a10ed6eb92 310 highDataRate = 0;
jbradshaw 0:e4a10ed6eb92 311 Peripherals::max30001()->max30001_reg_read(MAX30001::STATUS, &all);
jbradshaw 0:e4a10ed6eb92 312 LoggingService_StartLoggingUsb();
jbradshaw 0:e4a10ed6eb92 313
jbradshaw 0:e4a10ed6eb92 314 reply[0] = 0x80;
jbradshaw 0:e4a10ed6eb92 315 FormatReply32(reply, sizeof(reply) / sizeof(uint32_t), replyStrs);
jbradshaw 0:e4a10ed6eb92 316 return 0;
jbradshaw 0:e4a10ed6eb92 317 }
jbradshaw 0:e4a10ed6eb92 318
jbradshaw 0:e4a10ed6eb92 319 int MAX30001_Stop(char argStrs[32][32], char replyStrs[32][32]) {
jbradshaw 0:e4a10ed6eb92 320 /* uint32_t args[1];
jbradshaw 0:e4a10ed6eb92 321 uint32_t reply[1];
jbradshaw 0:e4a10ed6eb92 322 uint32_t value;
jbradshaw 0:e4a10ed6eb92 323 //ProcessArgs32(argStrs, args, sizeof(args) / sizeof(uint32_t));
jbradshaw 0:e4a10ed6eb92 324 max30001_StopTest();
jbradshaw 0:e4a10ed6eb92 325 reply[0] = 0x80;
jbradshaw 0:e4a10ed6eb92 326 FormatReply32(reply, sizeof(reply) / sizeof(uint32_t), replyStrs);*/
jbradshaw 0:e4a10ed6eb92 327 return 0;
jbradshaw 0:e4a10ed6eb92 328 }
jbradshaw 0:e4a10ed6eb92 329
jbradshaw 0:e4a10ed6eb92 330 int MAX30001_INT_assignment(char argStrs[32][32], char replyStrs[32][32]) {
jbradshaw 0:e4a10ed6eb92 331 uint32_t args[17];
jbradshaw 0:e4a10ed6eb92 332 uint32_t reply[1];
jbradshaw 0:e4a10ed6eb92 333 ProcessArgs32(argStrs, args, sizeof(args) / sizeof(uint32_t));
jbradshaw 0:e4a10ed6eb92 334 /*
jbradshaw 0:e4a10ed6eb92 335 printf("MAX30001_INT_assignment ");
jbradshaw 0:e4a10ed6eb92 336 printf("%d ",args[0]);
jbradshaw 0:e4a10ed6eb92 337 printf("%d ",args[1]);
jbradshaw 0:e4a10ed6eb92 338 printf("%d ",args[2]);
jbradshaw 0:e4a10ed6eb92 339 printf("%d ",args[3]);
jbradshaw 0:e4a10ed6eb92 340 printf("%d ",args[4]);
jbradshaw 0:e4a10ed6eb92 341 printf("%d ",args[5]);
jbradshaw 0:e4a10ed6eb92 342 printf("%d ",args[6]);
jbradshaw 0:e4a10ed6eb92 343 printf("%d ",args[7]);
jbradshaw 0:e4a10ed6eb92 344 printf("%d ",args[8]);
jbradshaw 0:e4a10ed6eb92 345 printf("%d ",args[9]);
jbradshaw 0:e4a10ed6eb92 346 printf("%d ",args[10]);
jbradshaw 0:e4a10ed6eb92 347 printf("%d ",args[11]);
jbradshaw 0:e4a10ed6eb92 348 printf("%d ",args[12]);
jbradshaw 0:e4a10ed6eb92 349 printf("%d ",args[13]);
jbradshaw 0:e4a10ed6eb92 350 printf("%d ",args[14]);
jbradshaw 0:e4a10ed6eb92 351 printf("%d ",args[15]);
jbradshaw 0:e4a10ed6eb92 352 printf("%d ",args[16]);
jbradshaw 0:e4a10ed6eb92 353 printf("\n");
jbradshaw 0:e4a10ed6eb92 354 fflush(stdout);
jbradshaw 0:e4a10ed6eb92 355 */
jbradshaw 0:e4a10ed6eb92 356
jbradshaw 0:e4a10ed6eb92 357 Peripherals::max30001()->max30001_INT_assignment(
jbradshaw 0:e4a10ed6eb92 358 (MAX30001::max30001_intrpt_Location_t)args[0],
jbradshaw 0:e4a10ed6eb92 359 (MAX30001::max30001_intrpt_Location_t)args[1],
jbradshaw 0:e4a10ed6eb92 360 (MAX30001::max30001_intrpt_Location_t)args[2],
jbradshaw 0:e4a10ed6eb92 361 (MAX30001::max30001_intrpt_Location_t)args[3],
jbradshaw 0:e4a10ed6eb92 362 (MAX30001::max30001_intrpt_Location_t)args[4],
jbradshaw 0:e4a10ed6eb92 363 (MAX30001::max30001_intrpt_Location_t)args[5],
jbradshaw 0:e4a10ed6eb92 364 (MAX30001::max30001_intrpt_Location_t)args[6],
jbradshaw 0:e4a10ed6eb92 365 (MAX30001::max30001_intrpt_Location_t)args[7],
jbradshaw 0:e4a10ed6eb92 366 (MAX30001::max30001_intrpt_Location_t)args[8],
jbradshaw 0:e4a10ed6eb92 367 (MAX30001::max30001_intrpt_Location_t)args[9],
jbradshaw 0:e4a10ed6eb92 368 (MAX30001::max30001_intrpt_Location_t)args[10],
jbradshaw 0:e4a10ed6eb92 369 (MAX30001::max30001_intrpt_Location_t)args[11],
jbradshaw 0:e4a10ed6eb92 370 (MAX30001::max30001_intrpt_Location_t)args[12],
jbradshaw 0:e4a10ed6eb92 371 (MAX30001::max30001_intrpt_Location_t)args[13],
jbradshaw 0:e4a10ed6eb92 372 (MAX30001::max30001_intrpt_Location_t)args[14],
jbradshaw 0:e4a10ed6eb92 373 (MAX30001::max30001_intrpt_type_t)args[15],
jbradshaw 0:e4a10ed6eb92 374 (MAX30001::max30001_intrpt_type_t)args[16]);
jbradshaw 0:e4a10ed6eb92 375 reply[0] = 0x80;
jbradshaw 0:e4a10ed6eb92 376 FormatReply32(reply, sizeof(reply) / sizeof(uint32_t), replyStrs);
jbradshaw 0:e4a10ed6eb92 377 return 0;
jbradshaw 0:e4a10ed6eb92 378 }
jbradshaw 0:e4a10ed6eb92 379
jbradshaw 0:e4a10ed6eb92 380 int MAX30001_StartTest(char argStrs[32][32], char replyStrs[32][32]) {
jbradshaw 0:e4a10ed6eb92 381 uint32_t reply[1];
jbradshaw 0:e4a10ed6eb92 382 // ProcessArgs32(argStrs, args, sizeof(args) / sizeof(uint32_t));
jbradshaw 0:e4a10ed6eb92 383
jbradshaw 0:e4a10ed6eb92 384 /*** Set FMSTR over here ****/
jbradshaw 0:e4a10ed6eb92 385
jbradshaw 0:e4a10ed6eb92 386 /*** Set and Start the VCAL input ***/
jbradshaw 0:e4a10ed6eb92 387 /* NOTE VCAL must be set first if VCAL is to be used */
jbradshaw 0:e4a10ed6eb92 388 Peripherals::max30001()->max30001_CAL_InitStart(0b1, 0b1, 0b1, 0b011, 0x7FF, 0b0);
jbradshaw 0:e4a10ed6eb92 389
jbradshaw 0:e4a10ed6eb92 390 /**** ECG Initialization ****/
jbradshaw 0:e4a10ed6eb92 391 Peripherals::max30001()->max30001_ECG_InitStart(0b1, 0b1, 0b1, 0b0, 0b10, 0b11, 31, 0b00, 0b00, 0b0, 0b01);
jbradshaw 0:e4a10ed6eb92 392
jbradshaw 0:e4a10ed6eb92 393 /***** PACE Initialization ***/
jbradshaw 0:e4a10ed6eb92 394 Peripherals::max30001()->max30001_PACE_InitStart(0b1, 0b0, 0b0, 0b1, 0b000, 0b0, 0b00, 0b0, 0b0);
jbradshaw 0:e4a10ed6eb92 395
jbradshaw 0:e4a10ed6eb92 396 /**** BIOZ Initialization ****/
jbradshaw 0:e4a10ed6eb92 397 Peripherals::max30001()->max30001_BIOZ_InitStart(
jbradshaw 0:e4a10ed6eb92 398 0b1, 0b1, 0b1, 0b10, 0b11, 0b00, 7, 0b0, 0b111, 0b0, 0b10, 0b00, 0b00, 0b0001, 0b0, 0b111, 0b0000);
jbradshaw 0:e4a10ed6eb92 399
jbradshaw 0:e4a10ed6eb92 400 /*** Set RtoR registers ***/
jbradshaw 0:e4a10ed6eb92 401 Peripherals::max30001()->max30001_RtoR_InitStart(
jbradshaw 0:e4a10ed6eb92 402 0b1, 0b0011, 0b1111, 0b00, 0b0011, 0b000001, 0b00, 0b000, 0b01);
jbradshaw 0:e4a10ed6eb92 403
jbradshaw 0:e4a10ed6eb92 404 /*** Set Rbias & FMSTR over here ****/
jbradshaw 0:e4a10ed6eb92 405 Peripherals::max30001()->max30001_Rbias_FMSTR_Init(0b01, 0b10, 0b1, 0b1, 0b00);
jbradshaw 0:e4a10ed6eb92 406
jbradshaw 0:e4a10ed6eb92 407 /**** Interrupt Setting ****/
jbradshaw 0:e4a10ed6eb92 408
jbradshaw 0:e4a10ed6eb92 409 /*** Set ECG Lead ON/OFF ***/
jbradshaw 0:e4a10ed6eb92 410 // max30001_ECG_LeadOnOff();
jbradshaw 0:e4a10ed6eb92 411
jbradshaw 0:e4a10ed6eb92 412 /*** Set BIOZ Lead ON/OFF ***/
jbradshaw 0:e4a10ed6eb92 413 // max30001_BIOZ_LeadOnOff(); Does not work yet...
jbradshaw 0:e4a10ed6eb92 414
jbradshaw 0:e4a10ed6eb92 415 /**** Do a Synch ****/
jbradshaw 0:e4a10ed6eb92 416 Peripherals::max30001()->max30001_synch();
jbradshaw 0:e4a10ed6eb92 417
jbradshaw 0:e4a10ed6eb92 418 fifo_clear(GetUSBIncomingFifo());
jbradshaw 0:e4a10ed6eb92 419 max30001_ServiceStreaming();
jbradshaw 0:e4a10ed6eb92 420
jbradshaw 0:e4a10ed6eb92 421 reply[0] = 0x80;
jbradshaw 0:e4a10ed6eb92 422 FormatReply32(reply, sizeof(reply) / sizeof(uint32_t), replyStrs);
jbradshaw 0:e4a10ed6eb92 423 return 0;
jbradshaw 0:e4a10ed6eb92 424 }
jbradshaw 0:e4a10ed6eb92 425 /*
jbradshaw 0:e4a10ed6eb92 426 static void StopAll() {
jbradshaw 0:e4a10ed6eb92 427 if (startedEcg == 1) {
jbradshaw 0:e4a10ed6eb92 428 max30001_Stop_ECG();
jbradshaw 0:e4a10ed6eb92 429 }
jbradshaw 0:e4a10ed6eb92 430 if (startedCal == 1) {
jbradshaw 0:e4a10ed6eb92 431 }
jbradshaw 0:e4a10ed6eb92 432 if (startedBioz == 1) {
jbradshaw 0:e4a10ed6eb92 433 max30001_Stop_BIOZ();
jbradshaw 0:e4a10ed6eb92 434 }
jbradshaw 0:e4a10ed6eb92 435 if (startedPace == 1) {
jbradshaw 0:e4a10ed6eb92 436 max30001_Stop_PACE();
jbradshaw 0:e4a10ed6eb92 437 }
jbradshaw 0:e4a10ed6eb92 438 if (startedRtor == 1) {
jbradshaw 0:e4a10ed6eb92 439 max30001_Stop_RtoR();
jbradshaw 0:e4a10ed6eb92 440 }
jbradshaw 0:e4a10ed6eb92 441 startedEcg = 0;
jbradshaw 0:e4a10ed6eb92 442 startedBioz = 0;
jbradshaw 0:e4a10ed6eb92 443 startedCal = 0;
jbradshaw 0:e4a10ed6eb92 444 startedPace = 0;
jbradshaw 0:e4a10ed6eb92 445 startedRtor = 0;
jbradshaw 0:e4a10ed6eb92 446 }
jbradshaw 0:e4a10ed6eb92 447 */
jbradshaw 0:e4a10ed6eb92 448 /*
jbradshaw 0:e4a10ed6eb92 449 // switch to ECG DC Lead ON
jbradshaw 0:e4a10ed6eb92 450 max30001_Enable_LeadON(0b01);
jbradshaw 0:e4a10ed6eb92 451 // switch to BIOZ DC Lead ON
jbradshaw 0:e4a10ed6eb92 452 max30001_Enable_LeadON(0b10);
jbradshaw 0:e4a10ed6eb92 453 */
jbradshaw 0:e4a10ed6eb92 454 int MAX30001_Enable_ECG_LeadON(char argStrs[32][32], char replyStrs[32][32]) {
jbradshaw 0:e4a10ed6eb92 455 uint32_t reply[1];
jbradshaw 0:e4a10ed6eb92 456 // switch to ECG DC Lead ON
jbradshaw 0:e4a10ed6eb92 457 Peripherals::max30001()->max30001_Enable_LeadON(0b01);
jbradshaw 0:e4a10ed6eb92 458 reply[0] = 0x80;
jbradshaw 0:e4a10ed6eb92 459 FormatReply32(reply, sizeof(reply) / sizeof(uint32_t), replyStrs);
jbradshaw 0:e4a10ed6eb92 460 return 0;
jbradshaw 0:e4a10ed6eb92 461 }
jbradshaw 0:e4a10ed6eb92 462 int MAX30001_Enable_BIOZ_LeadON(char argStrs[32][32], char replyStrs[32][32]) {
jbradshaw 0:e4a10ed6eb92 463 uint32_t reply[1];
jbradshaw 0:e4a10ed6eb92 464 // switch to BIOZ DC Lead ON
jbradshaw 0:e4a10ed6eb92 465 Peripherals::max30001()->max30001_Enable_LeadON(0b10);
jbradshaw 0:e4a10ed6eb92 466 reply[0] = 0x80;
jbradshaw 0:e4a10ed6eb92 467 FormatReply32(reply, sizeof(reply) / sizeof(uint32_t), replyStrs);
jbradshaw 0:e4a10ed6eb92 468 return 0;
jbradshaw 0:e4a10ed6eb92 469 }
jbradshaw 0:e4a10ed6eb92 470 // uint32_t max30001_LeadOn; // This holds the LeadOn data, BIT1 = BIOZ Lead ON, BIT0 = ECG Lead ON
jbradshaw 0:e4a10ed6eb92 471 int MAX30001_Read_LeadON(char argStrs[32][32], char replyStrs[32][32]) {
jbradshaw 0:e4a10ed6eb92 472 uint32_t reply[1];
jbradshaw 0:e4a10ed6eb92 473 // return the max30001_LeadOn var from the MAX30001 driver
jbradshaw 0:e4a10ed6eb92 474 reply[0] = Peripherals::max30001()->max30001_LeadOn;
jbradshaw 0:e4a10ed6eb92 475 FormatReply32(reply, sizeof(reply) / sizeof(uint32_t), replyStrs);
jbradshaw 0:e4a10ed6eb92 476 return 0;
jbradshaw 0:e4a10ed6eb92 477 }