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 /*******************************************************************************
darienf 20:6d2af70c92ab 3 * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
darienf 20:6d2af70c92ab 4 *
darienf 20:6d2af70c92ab 5 * Permission is hereby granted, free of charge, to any person obtaining a
darienf 20:6d2af70c92ab 6 * copy of this software and associated documentation files (the "Software"),
darienf 20:6d2af70c92ab 7 * to deal in the Software without restriction, including without limitation
darienf 20:6d2af70c92ab 8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
darienf 20:6d2af70c92ab 9 * and/or sell copies of the Software, and to permit persons to whom the
darienf 20:6d2af70c92ab 10 * Software is furnished to do so, subject to the following conditions:
darienf 20:6d2af70c92ab 11 *
darienf 20:6d2af70c92ab 12 * The above copyright notice and this permission notice shall be included
darienf 20:6d2af70c92ab 13 * in all copies or substantial portions of the Software.
darienf 20:6d2af70c92ab 14 *
darienf 20:6d2af70c92ab 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
darienf 20:6d2af70c92ab 16 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
darienf 20:6d2af70c92ab 17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
darienf 20:6d2af70c92ab 18 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
darienf 20:6d2af70c92ab 19 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
darienf 20:6d2af70c92ab 20 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
darienf 20:6d2af70c92ab 21 * OTHER DEALINGS IN THE SOFTWARE.
darienf 20:6d2af70c92ab 22 *
darienf 20:6d2af70c92ab 23 * Except as contained in this notice, the name of Maxim Integrated
darienf 20:6d2af70c92ab 24 * Products, Inc. shall not be used except as stated in the Maxim Integrated
darienf 20:6d2af70c92ab 25 * Products, Inc. Branding Policy.
darienf 20:6d2af70c92ab 26 *
darienf 20:6d2af70c92ab 27 * The mere transfer of this software does not imply any licenses
darienf 20:6d2af70c92ab 28 * of trade secrets, proprietary technology, copyrights, patents,
darienf 20:6d2af70c92ab 29 * trademarks, maskwork rights, or any other form of intellectual
darienf 20:6d2af70c92ab 30 * property whatsoever. Maxim Integrated Products, Inc. retains all
darienf 20:6d2af70c92ab 31 * ownership rights.
darienf 20:6d2af70c92ab 32 *******************************************************************************
darienf 20:6d2af70c92ab 33 */
darienf 20:6d2af70c92ab 34
darienf 20:6d2af70c92ab 35 #include "MAX30001_helper.h"
darienf 20:6d2af70c92ab 36 #include "MAX30001.h"
darienf 20:6d2af70c92ab 37 #include "StringInOut.h"
darienf 20:6d2af70c92ab 38 #include "Peripherals.h"
darienf 20:6d2af70c92ab 39
darienf 20:6d2af70c92ab 40 static uint8_t flags[4];
darienf 20:6d2af70c92ab 41
darienf 20:6d2af70c92ab 42 int MAX30001_Helper_IsStreaming(eFlags flag) {
darienf 20:6d2af70c92ab 43 return flags[(uint32_t)flag];
darienf 20:6d2af70c92ab 44 }
darienf 20:6d2af70c92ab 45
darienf 20:6d2af70c92ab 46 void MAX30001_Helper_SetStreamingFlag(eFlags flag, uint8_t state) {
darienf 20:6d2af70c92ab 47 flags[(uint32_t)flag] = state;
darienf 20:6d2af70c92ab 48 }
darienf 20:6d2af70c92ab 49
darienf 20:6d2af70c92ab 50 void MAX30001_Helper_Stop(void) {
darienf 20:6d2af70c92ab 51 if (flags[(uint32_t)eStreaming_ECG] == 1) {
darienf 20:6d2af70c92ab 52 Peripherals::max30001()->max30001_Stop_ECG();
darienf 20:6d2af70c92ab 53 }
darienf 20:6d2af70c92ab 54 if (flags[(uint32_t)eStreaming_PACE] == 1) {
darienf 20:6d2af70c92ab 55 Peripherals::max30001()->max30001_Stop_PACE();
darienf 20:6d2af70c92ab 56 }
darienf 20:6d2af70c92ab 57 if (flags[(uint32_t)eStreaming_BIOZ] == 1) {
darienf 20:6d2af70c92ab 58 Peripherals::max30001()->max30001_Stop_BIOZ();
darienf 20:6d2af70c92ab 59 }
darienf 20:6d2af70c92ab 60 if (flags[(uint32_t)eStreaming_RtoR] == 1) {
darienf 20:6d2af70c92ab 61 Peripherals::max30001()->max30001_Stop_RtoR();
darienf 20:6d2af70c92ab 62 }
darienf 20:6d2af70c92ab 63 MAX30001_Helper_ClearStreamingFlags();
darienf 20:6d2af70c92ab 64 }
darienf 20:6d2af70c92ab 65
darienf 20:6d2af70c92ab 66 int MAX30001_AnyStreamingSet(void) {
darienf 20:6d2af70c92ab 67 uint32_t i;
darienf 20:6d2af70c92ab 68 for (i = 0; i < 4; i++) {
darienf 20:6d2af70c92ab 69 if (flags[i] == 1) return 1;
darienf 20:6d2af70c92ab 70 }
darienf 20:6d2af70c92ab 71 return 0;
darienf 20:6d2af70c92ab 72 }
darienf 20:6d2af70c92ab 73
darienf 20:6d2af70c92ab 74 void MAX30001_Helper_StartSync(void) {
darienf 20:6d2af70c92ab 75 if (MAX30001_AnyStreamingSet() == 1) {
darienf 20:6d2af70c92ab 76 Peripherals::max30001()->max30001_synch();
darienf 20:6d2af70c92ab 77 }
darienf 20:6d2af70c92ab 78 }
darienf 20:6d2af70c92ab 79
darienf 20:6d2af70c92ab 80 void MAX30001_Helper_ClearStreamingFlags(void) {
darienf 20:6d2af70c92ab 81 uint32_t i;
darienf 20:6d2af70c92ab 82 for (i = 0; i < 4; i++) {
darienf 20:6d2af70c92ab 83 flags[i] = 0;
darienf 20:6d2af70c92ab 84 }
darienf 20:6d2af70c92ab 85 }
darienf 20:6d2af70c92ab 86
darienf 20:6d2af70c92ab 87 void MAX30001_Helper_Debug_ShowStreamFlags(void) {
darienf 20:6d2af70c92ab 88 putStr("\r\n");
darienf 20:6d2af70c92ab 89 if (flags[(uint32_t)eStreaming_ECG] == 1) {
darienf 20:6d2af70c92ab 90 putStr("eStreaming_ECG, ");
darienf 20:6d2af70c92ab 91 }
darienf 20:6d2af70c92ab 92 if (flags[(uint32_t)eStreaming_PACE] == 1) {
darienf 20:6d2af70c92ab 93 putStr("eStreaming_PACE, ");
darienf 20:6d2af70c92ab 94 }
darienf 20:6d2af70c92ab 95 if (flags[(uint32_t)eStreaming_BIOZ] == 1) {
darienf 20:6d2af70c92ab 96 putStr("eStreaming_BIOZ, ");
darienf 20:6d2af70c92ab 97 }
darienf 20:6d2af70c92ab 98 if (flags[(uint32_t)eStreaming_RtoR] == 1) {
darienf 20:6d2af70c92ab 99 putStr("eStreaming_RtoR, ");
darienf 20:6d2af70c92ab 100 }
darienf 20:6d2af70c92ab 101 putStr("\r\n");
darienf 20:6d2af70c92ab 102 }
darienf 20:6d2af70c92ab 103
darienf 20:6d2af70c92ab 104 void MAX30001_Helper_SetupInterrupts() {
darienf 20:6d2af70c92ab 105 Peripherals::max30001()->max30001_INT_assignment(MAX30001::MAX30001_INT_B, MAX30001::MAX30001_NO_INT, MAX30001::MAX30001_NO_INT, // en_enint_loc, en_eovf_loc, en_fstint_loc,
darienf 20:6d2af70c92ab 106 MAX30001::MAX30001_INT_2B, MAX30001::MAX30001_INT_2B, MAX30001::MAX30001_NO_INT, // en_dcloffint_loc, en_bint_loc, en_bovf_loc,
darienf 20:6d2af70c92ab 107 MAX30001::MAX30001_INT_2B, MAX30001::MAX30001_INT_2B, MAX30001::MAX30001_NO_INT, // en_bover_loc, en_bundr_loc, en_bcgmon_loc,
darienf 20:6d2af70c92ab 108 MAX30001::MAX30001_INT_B, MAX30001::MAX30001_NO_INT, MAX30001::MAX30001_NO_INT, // en_pint_loc, en_povf_loc, en_pedge_loc,
darienf 20:6d2af70c92ab 109 MAX30001::MAX30001_INT_2B, MAX30001::MAX30001_INT_B, MAX30001::MAX30001_NO_INT, // en_lonint_loc, en_rrint_loc, en_samp_loc,
darienf 20:6d2af70c92ab 110 MAX30001::MAX30001_INT_ODNR, MAX30001::MAX30001_INT_ODNR); // intb_Type, int2b_Type)
darienf 20:6d2af70c92ab 111 }
darienf 20:6d2af70c92ab 112
darienf 20:6d2af70c92ab 113
darienf 20:6d2af70c92ab 114
darienf 20:6d2af70c92ab 115 static uint8_t serialNumber[6];
darienf 20:6d2af70c92ab 116 uint8_t *MAX30001_Helper_getVersion(void) {
darienf 20:6d2af70c92ab 117 // read the id
darienf 20:6d2af70c92ab 118 Peripherals::max30001()->max30001_reg_read(MAX30001::INFO, (uint32_t *)serialNumber);
darienf 20:6d2af70c92ab 119 // read id twice because it needs to be read twice
darienf 20:6d2af70c92ab 120 Peripherals::max30001()->max30001_reg_read(MAX30001::INFO, (uint32_t *)serialNumber);
darienf 20:6d2af70c92ab 121 return serialNumber;
darienf 20:6d2af70c92ab 122 }