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