Example Host software for integration of MAX3266x chips (, MAX32664GWEB) equipped with Heart Rate from Wrist Algorithm. This is “stand-alone” software that runs on the MAX32630 low-power microcontroller to display heart rate on the display of the MAXREFDES101 reference design. It is intended provide a simple example of how to initialize and communicate with the sensor hub. Windows and Android communications are not supported.
Dependencies: Maxim_Sensor_Hub_Communications BMI160 whrmDemoUI max32630hsp3
Fork of Host_Software_MAX32664GWEB_HR_wrist by
SHComm/SHComm.h@0:ddc2fef69ef9, 2018-12-17 (annotated)
- Committer:
- gmehmet
- Date:
- Mon Dec 17 10:34:32 2018 +0300
- Revision:
- 0:ddc2fef69ef9
First Commit New Repo name
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| gmehmet | 0:ddc2fef69ef9 | 1 | /******************************************************************************* |
| gmehmet | 0:ddc2fef69ef9 | 2 | * Copyright (C) 2018 Maxim Integrated Products, Inc., All Rights Reserved. |
| gmehmet | 0:ddc2fef69ef9 | 3 | * |
| gmehmet | 0:ddc2fef69ef9 | 4 | * Permission is hereby granted, free of charge, to any person obtaining a |
| gmehmet | 0:ddc2fef69ef9 | 5 | * copy of this software and associated documentation files (the "Software"), |
| gmehmet | 0:ddc2fef69ef9 | 6 | * to deal in the Software without restriction, including without limitation |
| gmehmet | 0:ddc2fef69ef9 | 7 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, |
| gmehmet | 0:ddc2fef69ef9 | 8 | * and/or sell copies of the Software, and to permit persons to whom the |
| gmehmet | 0:ddc2fef69ef9 | 9 | * Software is furnished to do so, subject to the following conditions: |
| gmehmet | 0:ddc2fef69ef9 | 10 | * |
| gmehmet | 0:ddc2fef69ef9 | 11 | * The above copyright notice and this permission notice shall be included |
| gmehmet | 0:ddc2fef69ef9 | 12 | * in all copies or substantial portions of the Software. |
| gmehmet | 0:ddc2fef69ef9 | 13 | * |
| gmehmet | 0:ddc2fef69ef9 | 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
| gmehmet | 0:ddc2fef69ef9 | 15 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
| gmehmet | 0:ddc2fef69ef9 | 16 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. |
| gmehmet | 0:ddc2fef69ef9 | 17 | * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES |
| gmehmet | 0:ddc2fef69ef9 | 18 | * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, |
| gmehmet | 0:ddc2fef69ef9 | 19 | * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
| gmehmet | 0:ddc2fef69ef9 | 20 | * OTHER DEALINGS IN THE SOFTWARE. |
| gmehmet | 0:ddc2fef69ef9 | 21 | * |
| gmehmet | 0:ddc2fef69ef9 | 22 | * Except as contained in this notice, the name of Maxim Integrated |
| gmehmet | 0:ddc2fef69ef9 | 23 | * Products, Inc. shall not be used except as stated in the Maxim Integrated |
| gmehmet | 0:ddc2fef69ef9 | 24 | * Products, Inc. Branding Policy. |
| gmehmet | 0:ddc2fef69ef9 | 25 | * |
| gmehmet | 0:ddc2fef69ef9 | 26 | * The mere transfer of this software does not imply any licenses |
| gmehmet | 0:ddc2fef69ef9 | 27 | * of trade secrets, proprietary technology, copyrights, patents, |
| gmehmet | 0:ddc2fef69ef9 | 28 | * trademarks, maskwork rights, or any other form of intellectual |
| gmehmet | 0:ddc2fef69ef9 | 29 | * property whatsoever. Maxim Integrated Products, Inc. retains all |
| gmehmet | 0:ddc2fef69ef9 | 30 | * ownership rights. |
| gmehmet | 0:ddc2fef69ef9 | 31 | ******************************************************************************* |
| gmehmet | 0:ddc2fef69ef9 | 32 | */ |
| gmehmet | 0:ddc2fef69ef9 | 33 | |
| gmehmet | 0:ddc2fef69ef9 | 34 | #ifndef SOURCE_SHCOMM_H_ |
| gmehmet | 0:ddc2fef69ef9 | 35 | #define SOURCE_SHCOMM_H_ |
| gmehmet | 0:ddc2fef69ef9 | 36 | |
| gmehmet | 0:ddc2fef69ef9 | 37 | /* |
| gmehmet | 0:ddc2fef69ef9 | 38 | #ifdef __cplusplus |
| gmehmet | 0:ddc2fef69ef9 | 39 | extern "C" { |
| gmehmet | 0:ddc2fef69ef9 | 40 | #endif |
| gmehmet | 0:ddc2fef69ef9 | 41 | */ |
| gmehmet | 0:ddc2fef69ef9 | 42 | |
| gmehmet | 0:ddc2fef69ef9 | 43 | // Sensor/Algo indicies |
| gmehmet | 0:ddc2fef69ef9 | 44 | #define SH_SENSORIDX_MAX8614X 0x00 |
| gmehmet | 0:ddc2fef69ef9 | 45 | #define SH_SENSORIDX_MAX30205 0x01 |
| gmehmet | 0:ddc2fef69ef9 | 46 | #define SH_SENSORIDX_MAX30001 0x02 |
| gmehmet | 0:ddc2fef69ef9 | 47 | #define SH_SENSORIDX_MAX30101 0x03 |
| gmehmet | 0:ddc2fef69ef9 | 48 | #define SH_SENSORIDX_ACCEL 0x04 |
| gmehmet | 0:ddc2fef69ef9 | 49 | #define SH_NUM_CURRENT_SENSORS 5 |
| gmehmet | 0:ddc2fef69ef9 | 50 | |
| gmehmet | 0:ddc2fef69ef9 | 51 | #define SH_ALGOIDX_AGC 0x00 |
| gmehmet | 0:ddc2fef69ef9 | 52 | #define SH_ALGOIDX_AEC 0x01 |
| gmehmet | 0:ddc2fef69ef9 | 53 | #define SH_ALGOIDX_WHRM 0x02 |
| gmehmet | 0:ddc2fef69ef9 | 54 | #define SH_ALGOIDX_ECG 0x03 |
| gmehmet | 0:ddc2fef69ef9 | 55 | #define SH_ALGOIDX_BPT 0x04 |
| gmehmet | 0:ddc2fef69ef9 | 56 | #define SH_ALGOIDX_WSPO2 0x05 |
| gmehmet | 0:ddc2fef69ef9 | 57 | #define SH_NUM_CURRENT_ALGOS 6 |
| gmehmet | 0:ddc2fef69ef9 | 58 | |
| gmehmet | 0:ddc2fef69ef9 | 59 | #define PADDING_BYTE (0xEE) |
| gmehmet | 0:ddc2fef69ef9 | 60 | #define DATA_BYTE (0xED) |
| gmehmet | 0:ddc2fef69ef9 | 61 | |
| gmehmet | 0:ddc2fef69ef9 | 62 | |
| gmehmet | 0:ddc2fef69ef9 | 63 | #define SS_I2C_8BIT_SLAVE_ADDR 0xAA |
| gmehmet | 0:ddc2fef69ef9 | 64 | #define SS_DEFAULT_CMD_SLEEP_MS 2 |
| gmehmet | 0:ddc2fef69ef9 | 65 | #define SS_DUMP_REG_SLEEP_MS 100 |
| gmehmet | 0:ddc2fef69ef9 | 66 | #define SS_ENABLE_SENSOR_SLEEP_MS 20 |
| gmehmet | 0:ddc2fef69ef9 | 67 | |
| gmehmet | 0:ddc2fef69ef9 | 68 | #define SH_INPUT_DATA_DIRECT_SENSOR 0x00 |
| gmehmet | 0:ddc2fef69ef9 | 69 | #define SH_INPUT_DATA_FROM_HOST 0x01 |
| gmehmet | 0:ddc2fef69ef9 | 70 | |
| gmehmet | 0:ddc2fef69ef9 | 71 | #define SS_FAM_R_STATUS 0x00 |
| gmehmet | 0:ddc2fef69ef9 | 72 | #define SS_CMDIDX_STATUS 0x00 |
| gmehmet | 0:ddc2fef69ef9 | 73 | #define SS_SHIFT_STATUS_ERR 0 |
| gmehmet | 0:ddc2fef69ef9 | 74 | #define SS_MASK_STATUS_ERR (0x07 << SS_SHIFT_STATUS_ERR) |
| gmehmet | 0:ddc2fef69ef9 | 75 | #define SS_SHIFT_STATUS_DATA_RDY 3 |
| gmehmet | 0:ddc2fef69ef9 | 76 | #define SS_MASK_STATUS_DATA_RDY (1 << SS_SHIFT_STATUS_DATA_RDY) |
| gmehmet | 0:ddc2fef69ef9 | 77 | #define SS_SHIFT_STATUS_FIFO_OUT_OVR 4 |
| gmehmet | 0:ddc2fef69ef9 | 78 | #define SS_MASK_STATUS_FIFO_OUT_OVR (1 << SS_SHIFT_STATUS_FIFO_OUT_OVR) |
| gmehmet | 0:ddc2fef69ef9 | 79 | #define SS_SHIFT_STATUS_FIFO_IN_OVR 5 |
| gmehmet | 0:ddc2fef69ef9 | 80 | #define SS_MASK_STATUS_FIFO_IN_OVR (1 << SS_SHIFT_STATUS_FIFO_IN_OVR) |
| gmehmet | 0:ddc2fef69ef9 | 81 | |
| gmehmet | 0:ddc2fef69ef9 | 82 | #define SS_SHIFT_STATUS_LOG_OVR 6 |
| gmehmet | 0:ddc2fef69ef9 | 83 | #define SS_MASK_STATUS_LOG_OVR (1 << SS_SHIFT_STATUS_LOG_OVR) |
| gmehmet | 0:ddc2fef69ef9 | 84 | |
| gmehmet | 0:ddc2fef69ef9 | 85 | #define SS_SHIFT_STATUS_LOG_RDY 7 |
| gmehmet | 0:ddc2fef69ef9 | 86 | #define SS_MASK_STATUS_LOG_RDY (1 << SS_SHIFT_STATUS_LOG_RDY) |
| gmehmet | 0:ddc2fef69ef9 | 87 | |
| gmehmet | 0:ddc2fef69ef9 | 88 | |
| gmehmet | 0:ddc2fef69ef9 | 89 | |
| gmehmet | 0:ddc2fef69ef9 | 90 | #define SS_FAM_W_MODE 0x01 |
| gmehmet | 0:ddc2fef69ef9 | 91 | #define SS_FAM_R_MODE 0x02 |
| gmehmet | 0:ddc2fef69ef9 | 92 | #define SS_CMDIDX_MODE 0x00 |
| gmehmet | 0:ddc2fef69ef9 | 93 | #define SS_SHIFT_MODE_SHDN 0 |
| gmehmet | 0:ddc2fef69ef9 | 94 | #define SS_MASK_MODE_SHDN (1 << SS_SHIFT_MODE_SHDN) |
| gmehmet | 0:ddc2fef69ef9 | 95 | #define SS_SHIFT_MODE_RESET 1 |
| gmehmet | 0:ddc2fef69ef9 | 96 | #define SS_MASK_MODE_RESET (1 << SS_SHIFT_MODE_RESET) |
| gmehmet | 0:ddc2fef69ef9 | 97 | #define SS_SHIFT_MODE_FIFORESET 2 |
| gmehmet | 0:ddc2fef69ef9 | 98 | #define SS_MASK_MODE_FIFORESET (1 << SS_SHIFT_MODE_FIFORESET) |
| gmehmet | 0:ddc2fef69ef9 | 99 | #define SS_SHIFT_MODE_BOOTLDR 3 |
| gmehmet | 0:ddc2fef69ef9 | 100 | #define SS_MASK_MODE_BOOTLDR (1 << SS_SHIFT_MODE_BOOTLDR) |
| gmehmet | 0:ddc2fef69ef9 | 101 | |
| gmehmet | 0:ddc2fef69ef9 | 102 | /*MYG*/ |
| gmehmet | 0:ddc2fef69ef9 | 103 | #define SH_MODE_REQUEST_RET_BYTES (2) |
| gmehmet | 0:ddc2fef69ef9 | 104 | #define SH_MODE_REQUEST_DELAY (2) |
| gmehmet | 0:ddc2fef69ef9 | 105 | #define SH_STATUS_REQUEST_RET_BYTES (2) |
| gmehmet | 0:ddc2fef69ef9 | 106 | #define SH_STATUS_REQUEST_DELAY (2) |
| gmehmet | 0:ddc2fef69ef9 | 107 | |
| gmehmet | 0:ddc2fef69ef9 | 108 | |
| gmehmet | 0:ddc2fef69ef9 | 109 | |
| gmehmet | 0:ddc2fef69ef9 | 110 | #define SS_I2C_READ 0x03 |
| gmehmet | 0:ddc2fef69ef9 | 111 | |
| gmehmet | 0:ddc2fef69ef9 | 112 | #define SS_FAM_W_COMMCHAN 0x10 |
| gmehmet | 0:ddc2fef69ef9 | 113 | #define SS_FAM_R_COMMCHAN 0x11 |
| gmehmet | 0:ddc2fef69ef9 | 114 | #define SS_CMDIDX_OUTPUTMODE 0x00 |
| gmehmet | 0:ddc2fef69ef9 | 115 | #define SS_SHIFT_OUTPUTMODE_DATATYPE 0 |
| gmehmet | 0:ddc2fef69ef9 | 116 | #define SS_MASK_OUTPUTMODE_DATATYPE (0x03 << SS_SHIFT_OUTPUTMODE_DATATYPE) |
| gmehmet | 0:ddc2fef69ef9 | 117 | #define SS_DATATYPE_PAUSE 0 |
| gmehmet | 0:ddc2fef69ef9 | 118 | #define SS_DATATYPE_RAW 1 |
| gmehmet | 0:ddc2fef69ef9 | 119 | #define SS_DATATYPE_ALGO 2 |
| gmehmet | 0:ddc2fef69ef9 | 120 | #define SS_DATATYPE_BOTH 3 |
| gmehmet | 0:ddc2fef69ef9 | 121 | #define SS_SHIFT_OUTPUTMODE_SC_EN 2 |
| gmehmet | 0:ddc2fef69ef9 | 122 | #define SS_MASK_OUTPUTMODE_SC_EN (1 << SS_SHIFT_OUTPUTMODE_SC_EN) |
| gmehmet | 0:ddc2fef69ef9 | 123 | #define SS_CMDIDX_FIFOAFULL 0x01 |
| gmehmet | 0:ddc2fef69ef9 | 124 | |
| gmehmet | 0:ddc2fef69ef9 | 125 | #define SS_FAM_R_OUTPUTFIFO 0x12 |
| gmehmet | 0:ddc2fef69ef9 | 126 | #define SS_CMDIDX_OUT_NUMSAMPLES 0x00 |
| gmehmet | 0:ddc2fef69ef9 | 127 | #define SS_CMDIDX_READFIFO 0x01 |
| gmehmet | 0:ddc2fef69ef9 | 128 | |
| gmehmet | 0:ddc2fef69ef9 | 129 | #define SS_FAM_R_INPUTFIFO 0x13 |
| gmehmet | 0:ddc2fef69ef9 | 130 | #define SS_CMDIDX_SAMPLE_SIZE 0x00 |
| gmehmet | 0:ddc2fef69ef9 | 131 | #define SS_CMDIDX_INPUT_FIFO_SIZE 0x01 |
| gmehmet | 0:ddc2fef69ef9 | 132 | #define SS_CMDIDX_SENSOR_FIFO_SIZE 0x02 |
| gmehmet | 0:ddc2fef69ef9 | 133 | #define SS_CMDIDX_NUM_SAMPLES_SENSOR_FIFO 0x03 |
| gmehmet | 0:ddc2fef69ef9 | 134 | #define SS_CMDIDX_NUM_SAMPLES_INPUT_FIFO 0x04 |
| gmehmet | 0:ddc2fef69ef9 | 135 | |
| gmehmet | 0:ddc2fef69ef9 | 136 | #define SS_FAM_W_INPUTFIFO 0x14 |
| gmehmet | 0:ddc2fef69ef9 | 137 | #define SS_CMDIDN_WRITEFIFO 0x00 |
| gmehmet | 0:ddc2fef69ef9 | 138 | #define SS_CMDIDX_WRITE_FIFO 0x00 |
| gmehmet | 0:ddc2fef69ef9 | 139 | |
| gmehmet | 0:ddc2fef69ef9 | 140 | #define SS_FAM_W_WRITEREG 0x40 |
| gmehmet | 0:ddc2fef69ef9 | 141 | #define SS_FAM_R_READREG 0x41 |
| gmehmet | 0:ddc2fef69ef9 | 142 | #define SS_FAM_R_REGATTRIBS 0x42 |
| gmehmet | 0:ddc2fef69ef9 | 143 | #define SS_FAM_R_DUMPREG 0x43 |
| gmehmet | 0:ddc2fef69ef9 | 144 | |
| gmehmet | 0:ddc2fef69ef9 | 145 | #define SS_FAM_W_SENSORMODE 0x44 |
| gmehmet | 0:ddc2fef69ef9 | 146 | #define SS_FAM_R_SENSORMODE 0x45 |
| gmehmet | 0:ddc2fef69ef9 | 147 | |
| gmehmet | 0:ddc2fef69ef9 | 148 | //TODO: Fill in known configuration parameters |
| gmehmet | 0:ddc2fef69ef9 | 149 | #define SS_FAM_W_ALGOCONFIG 0x50 |
| gmehmet | 0:ddc2fef69ef9 | 150 | #define SS_FAM_R_ALGOCONFIG 0x51 |
| gmehmet | 0:ddc2fef69ef9 | 151 | #define SS_CFGIDX_AGC_TARGET 0x00 |
| gmehmet | 0:ddc2fef69ef9 | 152 | #define SS_CFGIDX_AGC_CORR_COEFF 0x01 |
| gmehmet | 0:ddc2fef69ef9 | 153 | #define SS_CFGIDX_AGC_SENSITIVITY 0x02 |
| gmehmet | 0:ddc2fef69ef9 | 154 | #define SS_CFGIDX_AGC_SMP_AVG 0x03 |
| gmehmet | 0:ddc2fef69ef9 | 155 | |
| gmehmet | 0:ddc2fef69ef9 | 156 | #define SS_CFGIDX_WHRM_SR 0x00 |
| gmehmet | 0:ddc2fef69ef9 | 157 | #define SS_CFGIDX_WHRM_MAX_HEIGHT 0x01 |
| gmehmet | 0:ddc2fef69ef9 | 158 | #define SS_CFGIDX_WHRM_MAX_WEIGHT 0x02 |
| gmehmet | 0:ddc2fef69ef9 | 159 | #define SS_CFGIDX_WHRM_MAX_AGE 0x03 |
| gmehmet | 0:ddc2fef69ef9 | 160 | #define SS_CFGIDX_WHRM_MIN_HEIGHT 0x04 |
| gmehmet | 0:ddc2fef69ef9 | 161 | #define SS_CFGIDX_WHRM_MIN_WEIGHT 0x05 |
| gmehmet | 0:ddc2fef69ef9 | 162 | #define SS_CFGIDX_WHRM_MIN_AGE 0x06 |
| gmehmet | 0:ddc2fef69ef9 | 163 | #define SS_CFGIDX_WHRM_DEF_HEIGHT 0x07 |
| gmehmet | 0:ddc2fef69ef9 | 164 | #define SS_CFGIDX_WHRM_DEF_WEIGHT 0x08 |
| gmehmet | 0:ddc2fef69ef9 | 165 | #define SS_CFGIDX_WHRM_DEF_AGE 0x09 |
| gmehmet | 0:ddc2fef69ef9 | 166 | #define SS_CFGIDX_WHRM_INIT_HR 0x0A |
| gmehmet | 0:ddc2fef69ef9 | 167 | |
| gmehmet | 0:ddc2fef69ef9 | 168 | #define SS_CFGIDX_BP_USE_MED 0x00 |
| gmehmet | 0:ddc2fef69ef9 | 169 | #define SS_CFGIDX_BP_SYS_BP_CAL 0x01 |
| gmehmet | 0:ddc2fef69ef9 | 170 | #define SS_CFGIDX_BP_DIA_BP_CAL 0x02 |
| gmehmet | 0:ddc2fef69ef9 | 171 | #define SS_CFGIDX_BP_CAL_DATA 0x03 |
| gmehmet | 0:ddc2fef69ef9 | 172 | #define SS_CFGIDX_BP_EST_DATE 0x04 |
| gmehmet | 0:ddc2fef69ef9 | 173 | #define SS_CFGIDX_BP_EST_NONREST 0x05 |
| gmehmet | 0:ddc2fef69ef9 | 174 | |
| gmehmet | 0:ddc2fef69ef9 | 175 | #define SS_FAM_W_ALGOMODE 0x52 |
| gmehmet | 0:ddc2fef69ef9 | 176 | #define SS_FAM_R_ALGOMODE 0x53 |
| gmehmet | 0:ddc2fef69ef9 | 177 | |
| gmehmet | 0:ddc2fef69ef9 | 178 | #define SS_FAM_W_EXTERNSENSORMODE 0x60 |
| gmehmet | 0:ddc2fef69ef9 | 179 | #define SS_FAM_R_EXTERNSENSORMODE 0x61 |
| gmehmet | 0:ddc2fef69ef9 | 180 | |
| gmehmet | 0:ddc2fef69ef9 | 181 | #define SS_FAM_R_SELFTEST 0x70 |
| gmehmet | 0:ddc2fef69ef9 | 182 | |
| gmehmet | 0:ddc2fef69ef9 | 183 | #define SS_FAM_W_BOOTLOADER 0x80 |
| gmehmet | 0:ddc2fef69ef9 | 184 | #define SS_CMDIDX_SETIV 0x00 |
| gmehmet | 0:ddc2fef69ef9 | 185 | #define SS_CMDIDX_SETAUTH 0x01 |
| gmehmet | 0:ddc2fef69ef9 | 186 | #define SS_CMDIDX_SETNUMPAGES 0x02 |
| gmehmet | 0:ddc2fef69ef9 | 187 | #define SS_CMDIDX_ERASE 0x03 |
| gmehmet | 0:ddc2fef69ef9 | 188 | #define SS_CMDIDX_SENDPAGE 0x04 |
| gmehmet | 0:ddc2fef69ef9 | 189 | #define SS_CMDIDX_ERASE_PAGE 0x05 |
| gmehmet | 0:ddc2fef69ef9 | 190 | #define SS_FAM_R_BOOTLOADER 0x81 |
| gmehmet | 0:ddc2fef69ef9 | 191 | #define SS_CMDIDX_BOOTFWVERSION 0x00 |
| gmehmet | 0:ddc2fef69ef9 | 192 | #define SS_CMDIDX_PAGESIZE 0x01 |
| gmehmet | 0:ddc2fef69ef9 | 193 | |
| gmehmet | 0:ddc2fef69ef9 | 194 | #define SS_FAM_W_BOOTLOADER_CFG 0x82 |
| gmehmet | 0:ddc2fef69ef9 | 195 | #define SS_FAM_R_BOOTLOADER_CFG 0x83 |
| gmehmet | 0:ddc2fef69ef9 | 196 | #define SS_CMDIDX_BL_SAVE 0x00 |
| gmehmet | 0:ddc2fef69ef9 | 197 | #define SS_CMDIDX_BL_ENTRY 0x01 |
| gmehmet | 0:ddc2fef69ef9 | 198 | #define SS_BL_CFG_ENTER_BL_MODE 0x00 |
| gmehmet | 0:ddc2fef69ef9 | 199 | #define SS_BL_CFG_EBL_PIN 0x01 |
| gmehmet | 0:ddc2fef69ef9 | 200 | #define SS_BL_CFG_EBL_POL 0x02 |
| gmehmet | 0:ddc2fef69ef9 | 201 | #define SS_CMDIDX_BL_EXIT 0x02 |
| gmehmet | 0:ddc2fef69ef9 | 202 | #define SS_BL_CFG_EXIT_BL_MODE 0x00 |
| gmehmet | 0:ddc2fef69ef9 | 203 | #define SS_BL_CFG_TIMEOUT 0x01 |
| gmehmet | 0:ddc2fef69ef9 | 204 | |
| gmehmet | 0:ddc2fef69ef9 | 205 | /* Enable logging/debugging */ |
| gmehmet | 0:ddc2fef69ef9 | 206 | #define SS_FAM_R_LOG 0x90 |
| gmehmet | 0:ddc2fef69ef9 | 207 | #define SS_CMDIDX_R_LOG_DATA 0x00 |
| gmehmet | 0:ddc2fef69ef9 | 208 | #define SS_CMDIDX_R_LOG_LEN 0x01 |
| gmehmet | 0:ddc2fef69ef9 | 209 | |
| gmehmet | 0:ddc2fef69ef9 | 210 | #define SS_CMDIDX_R_LOG_LEVEL 0x02 |
| gmehmet | 0:ddc2fef69ef9 | 211 | #define SS_LOG_DISABLE 0x00 |
| gmehmet | 0:ddc2fef69ef9 | 212 | #define SS_LOG_CRITICAL 0x01 |
| gmehmet | 0:ddc2fef69ef9 | 213 | #define SS_LOG_ERROR 0x02 |
| gmehmet | 0:ddc2fef69ef9 | 214 | #define SS_LOG_INFO 0x04 |
| gmehmet | 0:ddc2fef69ef9 | 215 | #define SS_LOG_DEBUG 0x08 |
| gmehmet | 0:ddc2fef69ef9 | 216 | |
| gmehmet | 0:ddc2fef69ef9 | 217 | #define SS_FAM_W_LOG_CFG 0x91 |
| gmehmet | 0:ddc2fef69ef9 | 218 | #define SS_CMDIDX_LOG_GET_LEVEL 0x00 |
| gmehmet | 0:ddc2fef69ef9 | 219 | #define SS_CMDIDX_LOG_SET_LEVEL 0x01 |
| gmehmet | 0:ddc2fef69ef9 | 220 | |
| gmehmet | 0:ddc2fef69ef9 | 221 | #define SS_FAM_R_IDENTITY 0xFF |
| gmehmet | 0:ddc2fef69ef9 | 222 | #define SS_CMDIDX_PLATTYPE 0x00 |
| gmehmet | 0:ddc2fef69ef9 | 223 | #define SS_CMDIDX_PARTID 0x01 |
| gmehmet | 0:ddc2fef69ef9 | 224 | #define SS_CMDIDX_REVID 0x02 |
| gmehmet | 0:ddc2fef69ef9 | 225 | #define SS_CMDIDX_FWVERSION 0x03 |
| gmehmet | 0:ddc2fef69ef9 | 226 | #define SS_CMDIDX_AVAILSENSORS 0x04 |
| gmehmet | 0:ddc2fef69ef9 | 227 | #define SS_CMDIDX_DRIVERVER 0x05 |
| gmehmet | 0:ddc2fef69ef9 | 228 | #define SS_CMDIDX_AVAILALGOS 0x06 |
| gmehmet | 0:ddc2fef69ef9 | 229 | #define SS_CMDIDX_ALGOVER 0x07 |
| gmehmet | 0:ddc2fef69ef9 | 230 | |
| gmehmet | 0:ddc2fef69ef9 | 231 | |
| gmehmet | 0:ddc2fef69ef9 | 232 | /* Newly added ones; checko for collosion or repeats with the ones above */ |
| gmehmet | 0:ddc2fef69ef9 | 233 | #define SS_RESET_TIME 10 |
| gmehmet | 0:ddc2fef69ef9 | 234 | #define SS_STARTUP_TO_BTLDR_TIME 20 |
| gmehmet | 0:ddc2fef69ef9 | 235 | #define SS_STARTUP_TO_MAIN_APP_TIME 1000 |
| gmehmet | 0:ddc2fef69ef9 | 236 | |
| gmehmet | 0:ddc2fef69ef9 | 237 | #define SS_MAX_SUPPORTED_SENSOR_NUM 0xFE |
| gmehmet | 0:ddc2fef69ef9 | 238 | #define SS_MAX_SUPPORTED_ALGO_NUM 0xFE |
| gmehmet | 0:ddc2fef69ef9 | 239 | |
| gmehmet | 0:ddc2fef69ef9 | 240 | #define SS_APPPLICATION_MODE 0x00 |
| gmehmet | 0:ddc2fef69ef9 | 241 | #define SS_BOOTLOADER_MODE 0x08 |
| gmehmet | 0:ddc2fef69ef9 | 242 | |
| gmehmet | 0:ddc2fef69ef9 | 243 | typedef enum { |
| gmehmet | 0:ddc2fef69ef9 | 244 | SS_SUCCESS =0x00, |
| gmehmet | 0:ddc2fef69ef9 | 245 | SS_ERR_COMMAND =0x01, |
| gmehmet | 0:ddc2fef69ef9 | 246 | SS_ERR_UNAVAILABLE =0x02, |
| gmehmet | 0:ddc2fef69ef9 | 247 | SS_ERR_DATA_FORMAT =0x03, |
| gmehmet | 0:ddc2fef69ef9 | 248 | SS_ERR_INPUT_VALUE =0x04, |
| gmehmet | 0:ddc2fef69ef9 | 249 | SS_ERR_BTLDR_GENERAL =0x80, |
| gmehmet | 0:ddc2fef69ef9 | 250 | SS_ERR_BTLDR_CHECKSUM =0x81, |
| gmehmet | 0:ddc2fef69ef9 | 251 | SS_ERR_TRY_AGAIN =0xFE, |
| gmehmet | 0:ddc2fef69ef9 | 252 | SS_ERR_UNKNOWN =0xFF, |
| gmehmet | 0:ddc2fef69ef9 | 253 | |
| gmehmet | 0:ddc2fef69ef9 | 254 | } SS_STATUS; |
| gmehmet | 0:ddc2fef69ef9 | 255 | |
| gmehmet | 0:ddc2fef69ef9 | 256 | |
| gmehmet | 0:ddc2fef69ef9 | 257 | |
| gmehmet | 0:ddc2fef69ef9 | 258 | /* ***************************************************************************************** * |
| gmehmet | 0:ddc2fef69ef9 | 259 | * * |
| gmehmet | 0:ddc2fef69ef9 | 260 | * SENSOR HUB COMMUNICATION INTERFACE ( Defined in MAX32664 User Guide ) API FUNCTIONS * |
| gmehmet | 0:ddc2fef69ef9 | 261 | * * |
| gmehmet | 0:ddc2fef69ef9 | 262 | * * |
| gmehmet | 0:ddc2fef69ef9 | 263 | * ***************************************************************************************** */ |
| gmehmet | 0:ddc2fef69ef9 | 264 | |
| gmehmet | 0:ddc2fef69ef9 | 265 | |
| gmehmet | 0:ddc2fef69ef9 | 266 | /** |
| gmehmet | 0:ddc2fef69ef9 | 267 | * @brief Func to write to sensor hub via sending generic command byte sequences |
| gmehmet | 0:ddc2fef69ef9 | 268 | * |
| gmehmet | 0:ddc2fef69ef9 | 269 | * @param[in] tx_buf - command byte sequence |
| gmehmet | 0:ddc2fef69ef9 | 270 | * @param[in] tx_len - command byte sequence length in bytes |
| gmehmet | 0:ddc2fef69ef9 | 271 | * @param[in] sleep_ms - time to wait for sensor hub to report statuss |
| gmehmet | 0:ddc2fef69ef9 | 272 | * |
| gmehmet | 0:ddc2fef69ef9 | 273 | * @return 1 byte status: 0x00 (SS_SUCCESS) on success |
| gmehmet | 0:ddc2fef69ef9 | 274 | */ |
| gmehmet | 0:ddc2fef69ef9 | 275 | int sh_write_cmd( uint8_t *tx_buf, |
| gmehmet | 0:ddc2fef69ef9 | 276 | int tx_len, |
| gmehmet | 0:ddc2fef69ef9 | 277 | int sleep_ms ); |
| gmehmet | 0:ddc2fef69ef9 | 278 | |
| gmehmet | 0:ddc2fef69ef9 | 279 | |
| gmehmet | 0:ddc2fef69ef9 | 280 | /** |
| gmehmet | 0:ddc2fef69ef9 | 281 | * @brief Func to write to sensor hub via sending generic command byte sequences and data bytes |
| gmehmet | 0:ddc2fef69ef9 | 282 | * |
| gmehmet | 0:ddc2fef69ef9 | 283 | * @param[in] cmd_bytes - command byte sequence |
| gmehmet | 0:ddc2fef69ef9 | 284 | * @param[in] cmd_bytes_len - command byte sequence length in bytes |
| gmehmet | 0:ddc2fef69ef9 | 285 | * @param[in] data - data byte array to be sent following cmd bytes |
| gmehmet | 0:ddc2fef69ef9 | 286 | * @param[in] data_len - data array size in bytes |
| gmehmet | 0:ddc2fef69ef9 | 287 | * @param[in] cmd_delay_ms - time to wait for sensor hub to report status |
| gmehmet | 0:ddc2fef69ef9 | 288 | * |
| gmehmet | 0:ddc2fef69ef9 | 289 | * @return 1 byte status: 0x00 (SS_SUCCESS) on success |
| gmehmet | 0:ddc2fef69ef9 | 290 | */ |
| gmehmet | 0:ddc2fef69ef9 | 291 | int sh_write_cmd_with_data(uint8_t *cmd_bytes, |
| gmehmet | 0:ddc2fef69ef9 | 292 | int cmd_bytes_len, |
| gmehmet | 0:ddc2fef69ef9 | 293 | uint8_t *data, |
| gmehmet | 0:ddc2fef69ef9 | 294 | int data_len, |
| gmehmet | 0:ddc2fef69ef9 | 295 | int cmd_delay_ms); |
| gmehmet | 0:ddc2fef69ef9 | 296 | |
| gmehmet | 0:ddc2fef69ef9 | 297 | |
| gmehmet | 0:ddc2fef69ef9 | 298 | /** |
| gmehmet | 0:ddc2fef69ef9 | 299 | * @brief Func to read from sensor hub via sending generic command byte sequences |
| gmehmet | 0:ddc2fef69ef9 | 300 | * |
| gmehmet | 0:ddc2fef69ef9 | 301 | * @param[in] cmd_bytes - command byte sequence |
| gmehmet | 0:ddc2fef69ef9 | 302 | * @param[in] cmd_bytes_len - command byte sequence length in bytes |
| gmehmet | 0:ddc2fef69ef9 | 303 | * @param[in] data - data byte array to be sent following cmd bytes |
| gmehmet | 0:ddc2fef69ef9 | 304 | * @param[in] data_len - data array size in bytes |
| gmehmet | 0:ddc2fef69ef9 | 305 | * @param[out] rxbuf - byte buffer to store incoming data (including status byte) |
| gmehmet | 0:ddc2fef69ef9 | 306 | * @param[in] rxbuf_sz - incoming data buffer size in bytes ( to prevent overflow) |
| gmehmet | 0:ddc2fef69ef9 | 307 | * @param[in] cmd_delay_ms - time to wait for sensor hub to report status |
| gmehmet | 0:ddc2fef69ef9 | 308 | * |
| gmehmet | 0:ddc2fef69ef9 | 309 | * @return 1 byte status: 0x00 (SS_SUCCESS) on success |
| gmehmet | 0:ddc2fef69ef9 | 310 | */ |
| gmehmet | 0:ddc2fef69ef9 | 311 | int sh_read_cmd( uint8_t *cmd_bytes, |
| gmehmet | 0:ddc2fef69ef9 | 312 | int cmd_bytes_len, |
| gmehmet | 0:ddc2fef69ef9 | 313 | uint8_t *data, |
| gmehmet | 0:ddc2fef69ef9 | 314 | int data_len, |
| gmehmet | 0:ddc2fef69ef9 | 315 | uint8_t *rxbuf, |
| gmehmet | 0:ddc2fef69ef9 | 316 | int rxbuf_sz, |
| gmehmet | 0:ddc2fef69ef9 | 317 | int sleep_ms ); |
| gmehmet | 0:ddc2fef69ef9 | 318 | |
| gmehmet | 0:ddc2fef69ef9 | 319 | |
| gmehmet | 0:ddc2fef69ef9 | 320 | /** |
| gmehmet | 0:ddc2fef69ef9 | 321 | * @brief func to read sensor hub status |
| gmehmet | 0:ddc2fef69ef9 | 322 | * @param[out] hubStatus - pointer to output byte sesnor hub status will be written |
| gmehmet | 0:ddc2fef69ef9 | 323 | * @details ensor hub status byte: [2:0] -> 0 : no Err , 1: comm failure with sensor |
| gmehmet | 0:ddc2fef69ef9 | 324 | * [3] -> 0 : FIFO below threshold; 1: FIFO filled to threshold or above. |
| gmehmet | 0:ddc2fef69ef9 | 325 | * [4] -> 0 : No FIFO overflow; 1: Sensor Hub Output FIFO overflowed, data lost. |
| gmehmet | 0:ddc2fef69ef9 | 326 | * [5] -> 0 : No FIFO overflow; 1: Sensor Hub Input FIFO overflowed, data lost. |
| gmehmet | 0:ddc2fef69ef9 | 327 | * [6] -> 0 : Sensor Hub ready; 1: Sensor Hub is busy processing. |
| gmehmet | 0:ddc2fef69ef9 | 328 | * [6] -> reserved. |
| gmehmet | 0:ddc2fef69ef9 | 329 | * |
| gmehmet | 0:ddc2fef69ef9 | 330 | * @return 1 byte status: 0x00 (SS_SUCCESS) on success |
| gmehmet | 0:ddc2fef69ef9 | 331 | */ |
| gmehmet | 0:ddc2fef69ef9 | 332 | int sh_get_sensorhub_status(uint8_t *hubStatus); |
| gmehmet | 0:ddc2fef69ef9 | 333 | |
| gmehmet | 0:ddc2fef69ef9 | 334 | |
| gmehmet | 0:ddc2fef69ef9 | 335 | /** |
| gmehmet | 0:ddc2fef69ef9 | 336 | * @brief func to read sensor operating mode |
| gmehmet | 0:ddc2fef69ef9 | 337 | * |
| gmehmet | 0:ddc2fef69ef9 | 338 | * @param[in] hubMode - pointer to output byte mode will be written |
| gmehmet | 0:ddc2fef69ef9 | 339 | * @details 0x00: application operating mode |
| gmehmet | 0:ddc2fef69ef9 | 340 | * 0x08: bootloader operating mode |
| gmehmet | 0:ddc2fef69ef9 | 341 | * |
| gmehmet | 0:ddc2fef69ef9 | 342 | * @return 1 byte status: 0x00 (SS_SUCCESS) on success |
| gmehmet | 0:ddc2fef69ef9 | 343 | */ |
| gmehmet | 0:ddc2fef69ef9 | 344 | int sh_get_sensorhub_operating_mode(uint8_t *hubMode); |
| gmehmet | 0:ddc2fef69ef9 | 345 | |
| gmehmet | 0:ddc2fef69ef9 | 346 | |
| gmehmet | 0:ddc2fef69ef9 | 347 | /** |
| gmehmet | 0:ddc2fef69ef9 | 348 | * @brief func to set sensor hub operating mode |
| gmehmet | 0:ddc2fef69ef9 | 349 | * |
| gmehmet | 0:ddc2fef69ef9 | 350 | * @param[out] hubMode - pointer to output byte mode will be written |
| gmehmet | 0:ddc2fef69ef9 | 351 | * @details 0x00: application operating mode |
| gmehmet | 0:ddc2fef69ef9 | 352 | * 0x02: soft reset |
| gmehmet | 0:ddc2fef69ef9 | 353 | * 0x08: bootloader operating mode |
| gmehmet | 0:ddc2fef69ef9 | 354 | * |
| gmehmet | 0:ddc2fef69ef9 | 355 | * @return 1 byte status: 0x00 (SS_SUCCESS) on success |
| gmehmet | 0:ddc2fef69ef9 | 356 | */ |
| gmehmet | 0:ddc2fef69ef9 | 357 | int sh_set_sensorhub_operating_mode(uint8_t hubMode); |
| gmehmet | 0:ddc2fef69ef9 | 358 | |
| gmehmet | 0:ddc2fef69ef9 | 359 | |
| gmehmet | 0:ddc2fef69ef9 | 360 | /** |
| gmehmet | 0:ddc2fef69ef9 | 361 | * @brief func to set sensorhub data output mode |
| gmehmet | 0:ddc2fef69ef9 | 362 | * |
| gmehmet | 0:ddc2fef69ef9 | 363 | * @param[in] data_type : 1 byte output format |
| gmehmet | 0:ddc2fef69ef9 | 364 | * @details outpur format 0x00 : no data |
| gmehmet | 0:ddc2fef69ef9 | 365 | * 0x01 : sensor data SS_DATATYPE_RAW |
| gmehmet | 0:ddc2fef69ef9 | 366 | * 0x02 : algo data SS_DATATYPE_ALGO |
| gmehmet | 0:ddc2fef69ef9 | 367 | * 0x03 : algo+sensor SS_DATATYPE_BOTH |
| gmehmet | 0:ddc2fef69ef9 | 368 | * |
| gmehmet | 0:ddc2fef69ef9 | 369 | * @return 1 byte status: 0x00 (SS_SUCCESS) on success |
| gmehmet | 0:ddc2fef69ef9 | 370 | */ |
| gmehmet | 0:ddc2fef69ef9 | 371 | int sh_set_data_type(int data_type, bool sc_en); |
| gmehmet | 0:ddc2fef69ef9 | 372 | |
| gmehmet | 0:ddc2fef69ef9 | 373 | |
| gmehmet | 0:ddc2fef69ef9 | 374 | /** |
| gmehmet | 0:ddc2fef69ef9 | 375 | * @brief func to get sensorhub data output mode |
| gmehmet | 0:ddc2fef69ef9 | 376 | * |
| gmehmet | 0:ddc2fef69ef9 | 377 | * @param[out] data_type - pointer to byte, output format will be written to. |
| gmehmet | 0:ddc2fef69ef9 | 378 | * |
| gmehmet | 0:ddc2fef69ef9 | 379 | * @param[out] sc_en - pointer to boolean, sample count enable/disable status format will be written to. |
| gmehmet | 0:ddc2fef69ef9 | 380 | * If true, SmartSensor is prepending data with 1 byte sample count. |
| gmehmet | 0:ddc2fef69ef9 | 381 | * |
| gmehmet | 0:ddc2fef69ef9 | 382 | * @details output format 0x00 : only algorithm data |
| gmehmet | 0:ddc2fef69ef9 | 383 | * 0x01 : only raw sensor data |
| gmehmet | 0:ddc2fef69ef9 | 384 | * 0x02 : algo + raw sensor data |
| gmehmet | 0:ddc2fef69ef9 | 385 | * 0x03 : no data |
| gmehmet | 0:ddc2fef69ef9 | 386 | * |
| gmehmet | 0:ddc2fef69ef9 | 387 | * @return 1 byte status: 0x00 (SS_SUCCESS) on success |
| gmehmet | 0:ddc2fef69ef9 | 388 | */ |
| gmehmet | 0:ddc2fef69ef9 | 389 | int sh_get_data_type(int *data_type, bool *sc_en); |
| gmehmet | 0:ddc2fef69ef9 | 390 | |
| gmehmet | 0:ddc2fef69ef9 | 391 | |
| gmehmet | 0:ddc2fef69ef9 | 392 | /** |
| gmehmet | 0:ddc2fef69ef9 | 393 | * @brief func to set the number of samples for the SmartSensor to collect |
| gmehmet | 0:ddc2fef69ef9 | 394 | * before issuing an mfio event reporting interrupt |
| gmehmet | 0:ddc2fef69ef9 | 395 | * |
| gmehmet | 0:ddc2fef69ef9 | 396 | * @param[in] thresh - Number of samples (1-255) to collect before interrupt |
| gmehmet | 0:ddc2fef69ef9 | 397 | * |
| gmehmet | 0:ddc2fef69ef9 | 398 | * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success |
| gmehmet | 0:ddc2fef69ef9 | 399 | */ |
| gmehmet | 0:ddc2fef69ef9 | 400 | int sh_set_fifo_thresh( int threshold ); |
| gmehmet | 0:ddc2fef69ef9 | 401 | |
| gmehmet | 0:ddc2fef69ef9 | 402 | |
| gmehmet | 0:ddc2fef69ef9 | 403 | /** |
| gmehmet | 0:ddc2fef69ef9 | 404 | * @brief func to get the number of samples the SmartSensor will collect |
| gmehmet | 0:ddc2fef69ef9 | 405 | * before issuing an mfio event reporting interrupt |
| gmehmet | 0:ddc2fef69ef9 | 406 | * |
| gmehmet | 0:ddc2fef69ef9 | 407 | * @param[out] thresh - Number of samples (1-255) collected before interrupt |
| gmehmet | 0:ddc2fef69ef9 | 408 | * |
| gmehmet | 0:ddc2fef69ef9 | 409 | * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success |
| gmehmet | 0:ddc2fef69ef9 | 410 | */ |
| gmehmet | 0:ddc2fef69ef9 | 411 | int sh_get_fifo_thresh(int *thresh); |
| gmehmet | 0:ddc2fef69ef9 | 412 | |
| gmehmet | 0:ddc2fef69ef9 | 413 | |
| gmehmet | 0:ddc2fef69ef9 | 414 | /** |
| gmehmet | 0:ddc2fef69ef9 | 415 | * @brief func to check that the SmartSensor is connected |
| gmehmet | 0:ddc2fef69ef9 | 416 | * |
| gmehmet | 0:ddc2fef69ef9 | 417 | * @return 1 byte connection status 0x00: on connection |
| gmehmet | 0:ddc2fef69ef9 | 418 | */ |
| gmehmet | 0:ddc2fef69ef9 | 419 | int sh_ss_comm_check(void); |
| gmehmet | 0:ddc2fef69ef9 | 420 | |
| gmehmet | 0:ddc2fef69ef9 | 421 | |
| gmehmet | 0:ddc2fef69ef9 | 422 | /** |
| gmehmet | 0:ddc2fef69ef9 | 423 | * @brief func to get the number of available samples in SmartSensor output FIFO |
| gmehmet | 0:ddc2fef69ef9 | 424 | * |
| gmehmet | 0:ddc2fef69ef9 | 425 | * @param[out] numSamples - number of data struct samples (1-255) |
| gmehmet | 0:ddc2fef69ef9 | 426 | * |
| gmehmet | 0:ddc2fef69ef9 | 427 | * @return 1 byte status: 0x00 (SS_SUCCESS) on success |
| gmehmet | 0:ddc2fef69ef9 | 428 | */ |
| gmehmet | 0:ddc2fef69ef9 | 429 | int sh_num_avail_samples(int *numSamples); |
| gmehmet | 0:ddc2fef69ef9 | 430 | |
| gmehmet | 0:ddc2fef69ef9 | 431 | |
| gmehmet | 0:ddc2fef69ef9 | 432 | /** |
| gmehmet | 0:ddc2fef69ef9 | 433 | * @brief func to pull samples from SmartSensor output FIFO |
| gmehmet | 0:ddc2fef69ef9 | 434 | * |
| gmehmet | 0:ddc2fef69ef9 | 435 | * @param[in] numSamples - number of data struct samples to be pulled |
| gmehmet | 0:ddc2fef69ef9 | 436 | * @param[in] sampleSize - size of cumulative data sample struct (based on enabled sesnors+algorithms) in bytes |
| gmehmet | 0:ddc2fef69ef9 | 437 | * @param[out] databuf - buffer samples be written |
| gmehmet | 0:ddc2fef69ef9 | 438 | * @param[in] databufSize - size of provided buffer size samples to be written |
| gmehmet | 0:ddc2fef69ef9 | 439 | * |
| gmehmet | 0:ddc2fef69ef9 | 440 | * @return 1 byte status: 0x00 (SS_SUCCESS) on success |
| gmehmet | 0:ddc2fef69ef9 | 441 | */ |
| gmehmet | 0:ddc2fef69ef9 | 442 | int sh_read_fifo_data( int numSamples, int sampleSize, uint8_t* databuf, int databufSz); |
| gmehmet | 0:ddc2fef69ef9 | 443 | |
| gmehmet | 0:ddc2fef69ef9 | 444 | |
| gmehmet | 0:ddc2fef69ef9 | 445 | /** |
| gmehmet | 0:ddc2fef69ef9 | 446 | * @brief func to set register of a device onboard SmartSensor |
| gmehmet | 0:ddc2fef69ef9 | 447 | * |
| gmehmet | 0:ddc2fef69ef9 | 448 | * @param[in] idx - Index of device to read |
| gmehmet | 0:ddc2fef69ef9 | 449 | * @param[in] addr - Register address |
| gmehmet | 0:ddc2fef69ef9 | 450 | * @param[in] val - Register value |
| gmehmet | 0:ddc2fef69ef9 | 451 | * @param[in] regSz - Size of sensor device register in bytes |
| gmehmet | 0:ddc2fef69ef9 | 452 | * |
| gmehmet | 0:ddc2fef69ef9 | 453 | * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success |
| gmehmet | 0:ddc2fef69ef9 | 454 | */ |
| gmehmet | 0:ddc2fef69ef9 | 455 | int sh_set_reg(int idx, uint8_t addr, uint32_t val, int regSz); |
| gmehmet | 0:ddc2fef69ef9 | 456 | |
| gmehmet | 0:ddc2fef69ef9 | 457 | |
| gmehmet | 0:ddc2fef69ef9 | 458 | /** |
| gmehmet | 0:ddc2fef69ef9 | 459 | * @brief func to read register from a device onboard SmartSensor |
| gmehmet | 0:ddc2fef69ef9 | 460 | * |
| gmehmet | 0:ddc2fef69ef9 | 461 | * @param[in] idx - Index of device to read |
| gmehmet | 0:ddc2fef69ef9 | 462 | * @param[in] addr - Register address |
| gmehmet | 0:ddc2fef69ef9 | 463 | * @param[out] val - Register value |
| gmehmet | 0:ddc2fef69ef9 | 464 | * |
| gmehmet | 0:ddc2fef69ef9 | 465 | * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success |
| gmehmet | 0:ddc2fef69ef9 | 466 | */ |
| gmehmet | 0:ddc2fef69ef9 | 467 | int sh_get_reg(int idx, uint8_t addr, uint32_t *val); |
| gmehmet | 0:ddc2fef69ef9 | 468 | |
| gmehmet | 0:ddc2fef69ef9 | 469 | |
| gmehmet | 0:ddc2fef69ef9 | 470 | // depricated: int sh_sensor_enable( int idx , int sensorSampleSz); |
| gmehmet | 0:ddc2fef69ef9 | 471 | /** |
| gmehmet | 0:ddc2fef69ef9 | 472 | * @brief func to enable a sensor device onboard SmartSensor |
| gmehmet | 0:ddc2fef69ef9 | 473 | * |
| gmehmet | 0:ddc2fef69ef9 | 474 | * @param[in] idx - index of sensor device( i.e max8614x) to enable |
| gmehmet | 0:ddc2fef69ef9 | 475 | * @param[in] sensorSampleSz - sample size of sensor device( i.e max8614x) to enable |
| gmehmet | 0:ddc2fef69ef9 | 476 | * @param[in] ext_mode - enable extermal data input to Sensot Hub, ie accelerometer data for WHRM+WSPo2 |
| gmehmet | 0:ddc2fef69ef9 | 477 | * |
| gmehmet | 0:ddc2fef69ef9 | 478 | * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success |
| gmehmet | 0:ddc2fef69ef9 | 479 | */ |
| gmehmet | 0:ddc2fef69ef9 | 480 | int sh_sensor_enable( int idx , int sensorSampleSz , uint8_t ext_mode ); |
| gmehmet | 0:ddc2fef69ef9 | 481 | |
| gmehmet | 0:ddc2fef69ef9 | 482 | |
| gmehmet | 0:ddc2fef69ef9 | 483 | /** |
| gmehmet | 0:ddc2fef69ef9 | 484 | * @brief func to disable a device on the SmartSensor |
| gmehmet | 0:ddc2fef69ef9 | 485 | * |
| gmehmet | 0:ddc2fef69ef9 | 486 | * @param[in] idx - Index of device |
| gmehmet | 0:ddc2fef69ef9 | 487 | * |
| gmehmet | 0:ddc2fef69ef9 | 488 | * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success |
| gmehmet | 0:ddc2fef69ef9 | 489 | */ |
| gmehmet | 0:ddc2fef69ef9 | 490 | int sh_sensor_disable( int idx ); |
| gmehmet | 0:ddc2fef69ef9 | 491 | |
| gmehmet | 0:ddc2fef69ef9 | 492 | |
| gmehmet | 0:ddc2fef69ef9 | 493 | /** |
| gmehmet | 0:ddc2fef69ef9 | 494 | * @brief func to get the total number of samples the input FIFO can hold |
| gmehmet | 0:ddc2fef69ef9 | 495 | * |
| gmehmet | 0:ddc2fef69ef9 | 496 | * @param[in] fifo_size - intger input FIFO capacity will be written to. |
| gmehmet | 0:ddc2fef69ef9 | 497 | * |
| gmehmet | 0:ddc2fef69ef9 | 498 | * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success |
| gmehmet | 0:ddc2fef69ef9 | 499 | */ |
| gmehmet | 0:ddc2fef69ef9 | 500 | int sh_get_input_fifo_size(int *fifo_size); |
| gmehmet | 0:ddc2fef69ef9 | 501 | |
| gmehmet | 0:ddc2fef69ef9 | 502 | |
| gmehmet | 0:ddc2fef69ef9 | 503 | /** |
| gmehmet | 0:ddc2fef69ef9 | 504 | * @brief func to send ass external sensor data (accelerometer) to sensor hub's input FIFO |
| gmehmet | 0:ddc2fef69ef9 | 505 | * |
| gmehmet | 0:ddc2fef69ef9 | 506 | * @param[in] tx_buf - host sample data to be send to sensor hub input FIFO |
| gmehmet | 0:ddc2fef69ef9 | 507 | * @param[in] tx_buf_sz - number of bytes of tx_buf |
| gmehmet | 0:ddc2fef69ef9 | 508 | * @param[out] nb_written - number of samples succesfully written to sensor hub's input FIFO |
| gmehmet | 0:ddc2fef69ef9 | 509 | * |
| gmehmet | 0:ddc2fef69ef9 | 510 | * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success |
| gmehmet | 0:ddc2fef69ef9 | 511 | */ |
| gmehmet | 0:ddc2fef69ef9 | 512 | int sh_feed_to_input_fifo(uint8_t *tx_buf, int tx_buf_sz, int *nb_written); |
| gmehmet | 0:ddc2fef69ef9 | 513 | |
| gmehmet | 0:ddc2fef69ef9 | 514 | |
| gmehmet | 0:ddc2fef69ef9 | 515 | /** |
| gmehmet | 0:ddc2fef69ef9 | 516 | * @brief func to get the total number of bytes in the sensor hub's input FIFO |
| gmehmet | 0:ddc2fef69ef9 | 517 | * |
| gmehmet | 0:ddc2fef69ef9 | 518 | * @param[in] fifo_size - total number of sample bytes available in input FIFO |
| gmehmet | 0:ddc2fef69ef9 | 519 | * |
| gmehmet | 0:ddc2fef69ef9 | 520 | * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success |
| gmehmet | 0:ddc2fef69ef9 | 521 | */ |
| gmehmet | 0:ddc2fef69ef9 | 522 | int sh_get_num_bytes_in_input_fifo(int *fifo_size); |
| gmehmet | 0:ddc2fef69ef9 | 523 | |
| gmehmet | 0:ddc2fef69ef9 | 524 | |
| gmehmet | 0:ddc2fef69ef9 | 525 | /** |
| gmehmet | 0:ddc2fef69ef9 | 526 | * @brief func to enable an algorithm on SmartSensor |
| gmehmet | 0:ddc2fef69ef9 | 527 | * |
| gmehmet | 0:ddc2fef69ef9 | 528 | * @param[in] idx - index of algorithm to enable |
| gmehmet | 0:ddc2fef69ef9 | 529 | * @param[in] sensorSampleSz - sample size of algorithm to enable |
| gmehmet | 0:ddc2fef69ef9 | 530 | * |
| gmehmet | 0:ddc2fef69ef9 | 531 | * @details idx - 0x00 : AGC |
| gmehmet | 0:ddc2fef69ef9 | 532 | * 0x01 : AEC |
| gmehmet | 0:ddc2fef69ef9 | 533 | * 0x02 : WHRM/Maximfast |
| gmehmet | 0:ddc2fef69ef9 | 534 | * 0x03 : ECG |
| gmehmet | 0:ddc2fef69ef9 | 535 | * 0x04 : BPT |
| gmehmet | 0:ddc2fef69ef9 | 536 | * 0x05 : SPo2 |
| gmehmet | 0:ddc2fef69ef9 | 537 | * 0x06 : HRM/Maximfast finger |
| gmehmet | 0:ddc2fef69ef9 | 538 | * |
| gmehmet | 0:ddc2fef69ef9 | 539 | * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success |
| gmehmet | 0:ddc2fef69ef9 | 540 | */ |
| gmehmet | 0:ddc2fef69ef9 | 541 | int sh_enable_algo(int idx , int algoSampleSz); |
| gmehmet | 0:ddc2fef69ef9 | 542 | |
| gmehmet | 0:ddc2fef69ef9 | 543 | |
| gmehmet | 0:ddc2fef69ef9 | 544 | /** |
| gmehmet | 0:ddc2fef69ef9 | 545 | * @brief func to disable an algorithm on the SmartSensor |
| gmehmet | 0:ddc2fef69ef9 | 546 | * |
| gmehmet | 0:ddc2fef69ef9 | 547 | * @param[in] idx - index of algorithm to disable |
| gmehmet | 0:ddc2fef69ef9 | 548 | * |
| gmehmet | 0:ddc2fef69ef9 | 549 | * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success |
| gmehmet | 0:ddc2fef69ef9 | 550 | */ |
| gmehmet | 0:ddc2fef69ef9 | 551 | int sh_disable_algo(int idx); |
| gmehmet | 0:ddc2fef69ef9 | 552 | |
| gmehmet | 0:ddc2fef69ef9 | 553 | |
| gmehmet | 0:ddc2fef69ef9 | 554 | /** |
| gmehmet | 0:ddc2fef69ef9 | 555 | * @brief func to set the value of an algorithm configuration parameter |
| gmehmet | 0:ddc2fef69ef9 | 556 | * |
| gmehmet | 0:ddc2fef69ef9 | 557 | * @param[in] algo_idx - index of algorithm |
| gmehmet | 0:ddc2fef69ef9 | 558 | * @param[in] cfg_idx - index of configuration parameter |
| gmehmet | 0:ddc2fef69ef9 | 559 | * @param[in] cfg Array - byte array of configuration |
| gmehmet | 0:ddc2fef69ef9 | 560 | * @param[in] cfg_sz - size of cfg array |
| gmehmet | 0:ddc2fef69ef9 | 561 | * |
| gmehmet | 0:ddc2fef69ef9 | 562 | * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success |
| gmehmet | 0:ddc2fef69ef9 | 563 | */ |
| gmehmet | 0:ddc2fef69ef9 | 564 | int sh_set_algo_cfg(int algo_idx, int cfg_idx, uint8_t *cfg, int cfg_sz); |
| gmehmet | 0:ddc2fef69ef9 | 565 | |
| gmehmet | 0:ddc2fef69ef9 | 566 | |
| gmehmet | 0:ddc2fef69ef9 | 567 | /** |
| gmehmet | 0:ddc2fef69ef9 | 568 | * @brief func to get the value of an algorithm configuration parameter |
| gmehmet | 0:ddc2fef69ef9 | 569 | * |
| gmehmet | 0:ddc2fef69ef9 | 570 | * @param[in] algo_idx - index of algorithm |
| gmehmet | 0:ddc2fef69ef9 | 571 | * @param[in] cfg_idx - index of configuration parameter |
| gmehmet | 0:ddc2fef69ef9 | 572 | * @param[out] cfg - array of configuration bytes to be filled in |
| gmehmet | 0:ddc2fef69ef9 | 573 | * @param[in] cfg_sz - number of configuration parameter bytes to be read |
| gmehmet | 0:ddc2fef69ef9 | 574 | * |
| gmehmet | 0:ddc2fef69ef9 | 575 | * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success |
| gmehmet | 0:ddc2fef69ef9 | 576 | */ |
| gmehmet | 0:ddc2fef69ef9 | 577 | int sh_get_algo_cfg(int algo_idx, int cfg_idx, uint8_t *cfg, int cfg_sz); |
| gmehmet | 0:ddc2fef69ef9 | 578 | |
| gmehmet | 0:ddc2fef69ef9 | 579 | /** |
| gmehmet | 0:ddc2fef69ef9 | 580 | * @brief func to pull sensor, algo data sample bytes from sensor hub. outpur buffer, Content of the buffer depends on |
| gmehmet | 0:ddc2fef69ef9 | 581 | * enabled sensors, algorithms and their sample sizes. |
| gmehmet | 0:ddc2fef69ef9 | 582 | * |
| gmehmet | 0:ddc2fef69ef9 | 583 | * @param[out] databuf - byte buffer to hold pulled samples |
| gmehmet | 0:ddc2fef69ef9 | 584 | * @param[in] databufLen - size of provided databuf in bytes |
| gmehmet | 0:ddc2fef69ef9 | 585 | * @param[out] nSamplesRea - number of pulled samples in databuf |
| gmehmet | 0:ddc2fef69ef9 | 586 | * |
| gmehmet | 0:ddc2fef69ef9 | 587 | * @return N/A |
| gmehmet | 0:ddc2fef69ef9 | 588 | */ |
| gmehmet | 0:ddc2fef69ef9 | 589 | void sh_ss_execute_once( uint8_t *databuf , int databufLen , int *nSamplesRead); |
| gmehmet | 0:ddc2fef69ef9 | 590 | |
| gmehmet | 0:ddc2fef69ef9 | 591 | |
| gmehmet | 0:ddc2fef69ef9 | 592 | |
| gmehmet | 0:ddc2fef69ef9 | 593 | |
| gmehmet | 0:ddc2fef69ef9 | 594 | |
| gmehmet | 0:ddc2fef69ef9 | 595 | |
| gmehmet | 0:ddc2fef69ef9 | 596 | |
| gmehmet | 0:ddc2fef69ef9 | 597 | /* *************************************************************************************** * |
| gmehmet | 0:ddc2fef69ef9 | 598 | * DEMO SPECIFIC DECLERATIONS, NOT RELATED TO SENSOR HUB INTERFACE API. * |
| gmehmet | 0:ddc2fef69ef9 | 599 | * * |
| gmehmet | 0:ddc2fef69ef9 | 600 | * * * |
| gmehmet | 0:ddc2fef69ef9 | 601 | ******************************************************************************************/ |
| gmehmet | 0:ddc2fef69ef9 | 602 | |
| gmehmet | 0:ddc2fef69ef9 | 603 | void sh_init_hwcomm_interface(); |
| gmehmet | 0:ddc2fef69ef9 | 604 | bool sh_has_mfio_event(void); |
| gmehmet | 0:ddc2fef69ef9 | 605 | void sh_enable_irq_mfioevent(void); |
| gmehmet | 0:ddc2fef69ef9 | 606 | void sh_disable_irq_mfioevent(void); |
| gmehmet | 0:ddc2fef69ef9 | 607 | void sh_clear_mfio_event_flag(void); |
| gmehmet | 0:ddc2fef69ef9 | 608 | int sh_hard_reset(int wakeupMode); |
| gmehmet | 0:ddc2fef69ef9 | 609 | |
| gmehmet | 0:ddc2fef69ef9 | 610 | extern uint8_t sh_write_buf[]; |
| gmehmet | 0:ddc2fef69ef9 | 611 | |
| gmehmet | 0:ddc2fef69ef9 | 612 | /* |
| gmehmet | 0:ddc2fef69ef9 | 613 | #ifdef __cplusplus |
| gmehmet | 0:ddc2fef69ef9 | 614 | } |
| gmehmet | 0:ddc2fef69ef9 | 615 | #endif |
| gmehmet | 0:ddc2fef69ef9 | 616 | */ |
| gmehmet | 0:ddc2fef69ef9 | 617 | |
| gmehmet | 0:ddc2fef69ef9 | 618 | |
| gmehmet | 0:ddc2fef69ef9 | 619 | |
| gmehmet | 0:ddc2fef69ef9 | 620 | #endif /* _SENSOR_HUB_H */ |
| gmehmet | 0:ddc2fef69ef9 | 621 | |
| gmehmet | 0:ddc2fef69ef9 | 622 | |
| gmehmet | 0:ddc2fef69ef9 | 623 | |
| gmehmet | 0:ddc2fef69ef9 | 624 | |
| gmehmet | 0:ddc2fef69ef9 | 625 |

Health Sensor Board Embedded Heart Rate Algorithm Sensor Hub + ECG, Wearables Ev Kit MAXREFDES101#