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.Linq;
darienf 20:6d2af70c92ab 39 using System.Text;
darienf 20:6d2af70c92ab 40 using Maxim.CustomControls;
darienf 20:6d2af70c92ab 41 using HealthSensorPlatform.DeviceDescriptions;
darienf 20:6d2af70c92ab 42 using RPCSupport.DeviceSupport;
darienf 20:6d2af70c92ab 43
darienf 20:6d2af70c92ab 44 namespace Maxim.CustomControls
darienf 20:6d2af70c92ab 45 {
darienf 20:6d2af70c92ab 46 public class MAX30101Info : Device
darienf 20:6d2af70c92ab 47 {
darienf 20:6d2af70c92ab 48
darienf 20:6d2af70c92ab 49 public MAX30101Info()
darienf 20:6d2af70c92ab 50 {
darienf 20:6d2af70c92ab 51 deviceDetails = new DeviceDetails();
darienf 20:6d2af70c92ab 52 deviceDetails.InitI2c(2, 0xAE);
darienf 20:6d2af70c92ab 53
darienf 20:6d2af70c92ab 54 Info = new RegisterInfo[] {
darienf 20:6d2af70c92ab 55 new RegisterInfo("Interrupt Status 1",0x00),
darienf 20:6d2af70c92ab 56 new RegisterInfo("Interrupt Status 2",0x01),
darienf 20:6d2af70c92ab 57 new RegisterInfo("Interrupt Enable 1",0x02),
darienf 20:6d2af70c92ab 58 new RegisterInfo("Interrupt Enable 2",0x03),
darienf 20:6d2af70c92ab 59 new RegisterInfo("FIFO Write Pointer",0x04),
darienf 20:6d2af70c92ab 60 new RegisterInfo("Over Flow Counter",0x05),
darienf 20:6d2af70c92ab 61 new RegisterInfo("FIFO Read Pointer",0x06),
darienf 20:6d2af70c92ab 62 new RegisterInfo("FIFO Data Register",0x07),
darienf 20:6d2af70c92ab 63 new RegisterInfo("FIFO Configuration",0x08),
darienf 20:6d2af70c92ab 64 new RegisterInfo("Mode Configuration",0x09),
darienf 20:6d2af70c92ab 65 new RegisterInfo("SPO2 Configuration",0x0A),
darienf 20:6d2af70c92ab 66 new RegisterInfo("LED1 Pulse Amplitude (Red)",0x0C),
darienf 20:6d2af70c92ab 67 new RegisterInfo("LED2 Pulse Amplitude (IR)",0x0D),
darienf 20:6d2af70c92ab 68 new RegisterInfo("LED3 Pulse Amplitude (Green)",0x0E),
darienf 20:6d2af70c92ab 69 new RegisterInfo("LED4 Pulse Amplitude (Green)",0x0F),
darienf 20:6d2af70c92ab 70 new RegisterInfo("Proximity Mode LED Pulse Amplitude",0x10),
darienf 20:6d2af70c92ab 71 new RegisterInfo("Multi-LED Mode Control Register timeslot 1 and 2",0x11),
darienf 20:6d2af70c92ab 72 new RegisterInfo("Multi-LED Mode Control Register timeslot 3 and 4",0x12),
darienf 20:6d2af70c92ab 73 new RegisterInfo("Die Temperature integer",0x1F),
darienf 20:6d2af70c92ab 74 new RegisterInfo("Die Temperature fraction",0x20),
darienf 20:6d2af70c92ab 75 new RegisterInfo("Die Temperature Config",0x21),
darienf 20:6d2af70c92ab 76 new RegisterInfo("Proximity Interrupt Threshold",0x30),
darienf 20:6d2af70c92ab 77 new RegisterInfo("Revision ID",0xFE),
darienf 20:6d2af70c92ab 78 new RegisterInfo("Part ID",0xFF)
darienf 20:6d2af70c92ab 79 };
darienf 20:6d2af70c92ab 80
darienf 20:6d2af70c92ab 81 // register 0x00
darienf 20:6d2af70c92ab 82 Descriptions(0x00).Add("Bit 7", "A_FULL", "FIFO Almost Full Flag");
darienf 20:6d2af70c92ab 83 Descriptions(0x00).Add("Bit 6", "PPG_RDY", "New FIFO Data Ready");
darienf 20:6d2af70c92ab 84 Descriptions(0x00).Add("Bit 5", "ALC_OVF", "Ambient Light Cancellation Overflow");
darienf 20:6d2af70c92ab 85 Descriptions(0x00).Add("Bit 4", "PROX_INT", "Proximity Threshold Triggered");
darienf 20:6d2af70c92ab 86 Descriptions(0x00).Add("Bit 0", "PWR_RDY", "Power Ready Flag");
darienf 20:6d2af70c92ab 87 // register 0x01
darienf 20:6d2af70c92ab 88 Descriptions(0x01).Add("Bit 1", "DIE_TEMP_RDY", "Internal Temperature Ready Flag");
darienf 20:6d2af70c92ab 89 // register 0x02
darienf 20:6d2af70c92ab 90 Descriptions(0x02).Add("Bit 7", "A_FULL_EN", "FIFO Almost Full Flag Enable");
darienf 20:6d2af70c92ab 91 Descriptions(0x02).Add("Bit 6", "PPG_RDY_EN", "New FIFO Data Ready Enable");
darienf 20:6d2af70c92ab 92 Descriptions(0x02).Add("Bit 5", "ALC_OVF_EN", "Ambient Light Cancellation Overflow Enable");
darienf 20:6d2af70c92ab 93 Descriptions(0x02).Add("Bit 4", "PROX_INT_EN", "Proximity Threshold Enable");
darienf 20:6d2af70c92ab 94 // register 0x03
darienf 20:6d2af70c92ab 95 Descriptions(0x03).Add("Bit 1", "DIE_TEMP_RDY_EN", "Internal Temperature Ready Flag Enable");
darienf 20:6d2af70c92ab 96 // register 0x04
darienf 20:6d2af70c92ab 97 Descriptions(0x04).Add("Bit [4:0]", "FIFO_WR_PTR[4:0]", "FIFO Write Pointer");
darienf 20:6d2af70c92ab 98 // register 0x05
darienf 20:6d2af70c92ab 99 Descriptions(0x05).Add("Bit [4:0]", "OVF_COUNTER[4:0]", "FIFO Overflow Counter");
darienf 20:6d2af70c92ab 100 // register 0x06
darienf 20:6d2af70c92ab 101 Descriptions(0x06).Add("Bit [4:0]", "FIFO_RD_PTR[4:0]", "FIFO Read Pointer");
darienf 20:6d2af70c92ab 102 // register 0x07
darienf 20:6d2af70c92ab 103 Descriptions(0x07).Add("Bit [7:0]", "FIFO_DATA[7:0]", "FIFO Data Register");
darienf 20:6d2af70c92ab 104 // register 0x08
darienf 20:6d2af70c92ab 105 Descriptions(0x08).Add("Bit [7:5]", "SMP_AVE[2:0]", "Sample Averaging");
darienf 20:6d2af70c92ab 106 Descriptions(0x08).Add("Bit 4", "FIFO_ROLLOVER_EN", "FIFO Rolls on Full");
darienf 20:6d2af70c92ab 107 Descriptions(0x08).Add("Bit [3:0]", "FIFO_A_FULL[3:0]", "FIFO Almost Full Value");
darienf 20:6d2af70c92ab 108 // register 0x09
darienf 20:6d2af70c92ab 109 Descriptions(0x09).Add("Bit 7", "SHDN", "Shutdown Control");
darienf 20:6d2af70c92ab 110 Descriptions(0x09).Add("Bit 6", "RESET", "Reset Control");
darienf 20:6d2af70c92ab 111 Descriptions(0x09).Add("Bit [2:0]", "MODE[2:0]", "Mode Control");
darienf 20:6d2af70c92ab 112 // register 0x0a
darienf 20:6d2af70c92ab 113 Descriptions(0x0a).Add("Bit [6:5]", "SPO2_ADC_RGE[1:0]", "SP02 ADC Range Control");
darienf 20:6d2af70c92ab 114 Descriptions(0x0a).Add("Bit [4:2]", "SPO2_SR[2:0]", "SP02 Sample Rate Control");
darienf 20:6d2af70c92ab 115 Descriptions(0x0a).Add("Bit [1:0]", "LED_PW[1:0]", "LED Pulse Width Control and ADC Resolution");
darienf 20:6d2af70c92ab 116 // register 0x0c
darienf 20:6d2af70c92ab 117 Descriptions(0x0c).Add("Bit [7:0]", "LED1_PA[7:0]", "LED1 Pulse Amplitude (RED)");
darienf 20:6d2af70c92ab 118 Descriptions(0x0d).Add("Bit [7:0]", "LED2_PA[7:0]", "LED2 Pulse Amplitude (IR)");
darienf 20:6d2af70c92ab 119 // register 0x0f
darienf 20:6d2af70c92ab 120 Descriptions(0x0f).Add("Bit [7:0]", "LED4_PA[7:0]", "LED4 Pulse Amplitude (Green)");
darienf 20:6d2af70c92ab 121 // register 0x10
darienf 20:6d2af70c92ab 122 Descriptions(0x10).Add("Bit [7:0]", "PILOT_PA[7:0]", "Proximity Mode LED Pulse Amplitude");
darienf 20:6d2af70c92ab 123 // register 0x11
darienf 20:6d2af70c92ab 124 Descriptions(0x11).Add("Bit [6:4]", "SLOT2[2:0]", "Time slot 2");
darienf 20:6d2af70c92ab 125 Descriptions(0x11).Add("Bit [2:0]", "SLOT1[2:0]", "Time slot 1");
darienf 20:6d2af70c92ab 126 // register 0x12
darienf 20:6d2af70c92ab 127 Descriptions(0x12).Add("Bit [6:4]", "SLOT4[2:0]", "Time slot 4");
darienf 20:6d2af70c92ab 128 Descriptions(0x12).Add("Bit [2:0]", "SLOT3[2:0]", "Time slot 3");
darienf 20:6d2af70c92ab 129 // register 0x1f
darienf 20:6d2af70c92ab 130 Descriptions(0x1f).Add("Bit [7:0]", "TINT[7:0]", "Temperature Integer");
darienf 20:6d2af70c92ab 131 // register 0x20
darienf 20:6d2af70c92ab 132 Descriptions(0x20).Add("Bit [7:0]", "TFRAC[3:0]", "Temperature Fraction");
darienf 20:6d2af70c92ab 133 // register 0x21
darienf 20:6d2af70c92ab 134 Descriptions(0x21).Add("Bit 0", "TEMP_EN", "Temperature Enable");
darienf 20:6d2af70c92ab 135 // register 0x30
darienf 20:6d2af70c92ab 136 Descriptions(0x30).Add("Bit [7:0]", "PROX_INT_THRESH[7:0]", "Proximity Mode Interrupt Threshold");
darienf 20:6d2af70c92ab 137 // register 0xfe
darienf 20:6d2af70c92ab 138 Descriptions(0xfe).Add("Bit [7:0]", "REV_ID[7:0]", "Revision ID");
darienf 20:6d2af70c92ab 139 // register 0xff
darienf 20:6d2af70c92ab 140 Descriptions(0xff).Add("Bit [7:0]", "PART_ID[7:0]", "Part ID");
darienf 20:6d2af70c92ab 141 }
darienf 20:6d2af70c92ab 142 }
darienf 20:6d2af70c92ab 143 }