Maxim Integrated / MAX30001EVSYSKIT
Committer:
Emre.Eken
Date:
Wed Jun 27 14:17:34 2018 +0300
Revision:
1:957e5bad16c2
first rev

Who changed what in which revision?

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