SENtral Simple Serial Host interface for PNI Sensor Corp SENtral-A2 motion coprocessor. For use with the RM3100RTI Arduino shield module on top of an STM4 serial mbed board. Will work with an PNI RM3100RTI module or M&M motion modules. Interaction with unit using built in USB serial serial port set for 115200 baud. Send '?' char for menu. Presently requires SENtral firmware to either be loaded in the RM3100RTI Arduino shield SD Card or preloaded in the RM3100RTI or M&M module's EEPROM. Firmware is typically preloaded on the module's EEPROM by PNI. PNI Sensor, 2019 www.pnicorp.com

Dependencies:   mbed SDFileSystemVSG

SENtral Simple Serial Host interface for PNI Sensor Corp SENtral-A2 motion coprocessor. For use with the RM3100RTI Arduino shield module on top of an STM4 serial mbed board. Will work with an PNI RM3100RTI module or M&M motion modules. Interaction with unit using built in USB serial serial port set for 115200 baud. Send '?' char for menu. Presently requires SENtral firmware to either be loaded in the RM3100RTI Arduino shield SD Card or preloaded in the RM3100RTI or M&M module's EEPROM. Firmware is typically preloaded on the module's EEPROM by PNI. PNI Sensor, 2019 www.pnicorp.com

Committer:
JoeMiller
Date:
Tue Oct 25 23:09:42 2016 +0000
Revision:
6:4ba3f9a8191f
Parent:
0:02c0c2cbc3df
Corrected the Mag Dynamic Range Constant from 2000uT to 1000uT; This fixes the incorrect scale of the displayed mag value.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JoeMiller 0:02c0c2cbc3df 1 #ifndef EM7186_TYPES_H
JoeMiller 0:02c0c2cbc3df 2 #define EM7186_TYPES_H
JoeMiller 0:02c0c2cbc3df 3
JoeMiller 0:02c0c2cbc3df 4 #include "main.h"
JoeMiller 0:02c0c2cbc3df 5
JoeMiller 0:02c0c2cbc3df 6 // Global data
JoeMiller 0:02c0c2cbc3df 7 typedef signed char s8;
JoeMiller 0:02c0c2cbc3df 8 typedef char u8;
JoeMiller 0:02c0c2cbc3df 9 typedef short s16;
JoeMiller 0:02c0c2cbc3df 10 typedef unsigned short u16;
JoeMiller 0:02c0c2cbc3df 11 typedef int s32;
JoeMiller 0:02c0c2cbc3df 12 typedef unsigned int u32;
JoeMiller 0:02c0c2cbc3df 13 typedef unsigned long u64;
JoeMiller 0:02c0c2cbc3df 14
JoeMiller 0:02c0c2cbc3df 15 typedef struct
JoeMiller 0:02c0c2cbc3df 16 {
JoeMiller 0:02c0c2cbc3df 17 u8 paramNo;
JoeMiller 0:02c0c2cbc3df 18 u8 size;
JoeMiller 0:02c0c2cbc3df 19 } ParamInfo;
JoeMiller 0:02c0c2cbc3df 20
JoeMiller 0:02c0c2cbc3df 21
JoeMiller 0:02c0c2cbc3df 22
JoeMiller 0:02c0c2cbc3df 23 #define M_PI (3.14159274101F)
JoeMiller 0:02c0c2cbc3df 24 #define TRUE 1
JoeMiller 0:02c0c2cbc3df 25 #define FALSE 0
JoeMiller 0:02c0c2cbc3df 26 //=========================================================================
JoeMiller 0:02c0c2cbc3df 27 // em7186 Defines
JoeMiller 0:02c0c2cbc3df 28 //=========================================================================
JoeMiller 0:02c0c2cbc3df 29 #define SENtral_ADDRESS 0x50 // Sentral 8-bit Address (MBED uses 8-bit version)
JoeMiller 0:02c0c2cbc3df 30
JoeMiller 0:02c0c2cbc3df 31 #define MAX_I2C_WRITE 32
JoeMiller 0:02c0c2cbc3df 32 #define I2C_MAX_READ 8
JoeMiller 0:02c0c2cbc3df 33 #define FIRMWARE_HEADER_SIZE 16
JoeMiller 0:02c0c2cbc3df 34 #define IMAGE_SIGNATURE_LSB 0x2A
JoeMiller 0:02c0c2cbc3df 35 #define IMAGE_SIGNATURE_MSG 0x65
JoeMiller 0:02c0c2cbc3df 36
JoeMiller 0:02c0c2cbc3df 37 // REGISTER MAP
JoeMiller 0:02c0c2cbc3df 38 #define FIFO_FLUSH_REG 0x32 // flush sensor data from fifo
JoeMiller 0:02c0c2cbc3df 39 #define CHIP_CONTROL_REG 0x34 // enable cpu
JoeMiller 0:02c0c2cbc3df 40 #define HOST_STATUS_REG 0x35 // host status
JoeMiller 0:02c0c2cbc3df 41 #define INT_STATUS_REG 0x36 // interrupt status
JoeMiller 0:02c0c2cbc3df 42 #define CHIP_STATUS_REG 0x37 // chip status
JoeMiller 0:02c0c2cbc3df 43 #define BYTES_REMANING_REG 0x38 // LSB of remaing bytes in FIFO
JoeMiller 0:02c0c2cbc3df 44 #define PARAM_ACK_REG 0x3A
JoeMiller 0:02c0c2cbc3df 45 #define PARAM_SAVE_REG 0x3B
JoeMiller 0:02c0c2cbc3df 46 #define ERR_REG 0x50 // error register
JoeMiller 0:02c0c2cbc3df 47 #define INT_STATE_REG 0x51 // interrupt state
JoeMiller 0:02c0c2cbc3df 48 #define DEBUG_VAL_REG 0x52 // debug value
JoeMiller 0:02c0c2cbc3df 49 #define DEBUG_STATE_REG 0x53 // debug state
JoeMiller 0:02c0c2cbc3df 50 #define PARAM_PAGE_SELECT_REG 0x54 // parameter page select (and transfer size)
JoeMiller 0:02c0c2cbc3df 51 #define HOST_INTERFACE_CTRL_REG 0x55
JoeMiller 0:02c0c2cbc3df 52 #define PARAM_LOAD_REG 0x5C
JoeMiller 0:02c0c2cbc3df 53 #define PARAM_REQUEST_REG 0x64
JoeMiller 0:02c0c2cbc3df 54 #define HOST_IRQ_TIME_REG 0x6C
JoeMiller 0:02c0c2cbc3df 55 #define ROM_VERSION_REG 0x70
JoeMiller 0:02c0c2cbc3df 56 #define PRODUCT_ID_REG 0x90 // Product ID
JoeMiller 0:02c0c2cbc3df 57 #define REVISION_ID_REG 0x91 // Product ID
JoeMiller 0:02c0c2cbc3df 58 #define SR_UPLOAD_DATA_REG 0x96 // Firmware upload address
JoeMiller 0:02c0c2cbc3df 59 #define HOST_CRC_REG 0x97 // Firmware upload CRC
JoeMiller 0:02c0c2cbc3df 60 #define RESET_REQ_REG 0x9B // Request system reset
JoeMiller 0:02c0c2cbc3df 61 #define PASS_THROUGH_RDY_REG 0x9E
JoeMiller 0:02c0c2cbc3df 62 #define SCL_LOW_CYCLES_REG 0x9F
JoeMiller 0:02c0c2cbc3df 63 #define PASS_THROUGH_CFG_REG 0xA0
JoeMiller 0:02c0c2cbc3df 64
JoeMiller 0:02c0c2cbc3df 65 // FIFO FLUSH
JoeMiller 0:02c0c2cbc3df 66 #define FIFO_FLUSH_DISCARD_NON_WAKE 0xFA
JoeMiller 0:02c0c2cbc3df 67 #define FIFO_FLUSH_DISCARD_WAKE 0xFB
JoeMiller 0:02c0c2cbc3df 68 #define FIFO_FLUSH_TRANSFER_NON_WAKE 0xFC
JoeMiller 0:02c0c2cbc3df 69 #define FIFO_FLUSH_TRANSFER_WAKE 0xFD
JoeMiller 0:02c0c2cbc3df 70 #define FIFO_FLUSH_DISCARD_ALL 0xFE
JoeMiller 0:02c0c2cbc3df 71 #define FIFO_FLUSH_TRANSFER_ALL 0xFF
JoeMiller 0:02c0c2cbc3df 72
JoeMiller 0:02c0c2cbc3df 73 // CHIP CONTROL
JoeMiller 0:02c0c2cbc3df 74 #define CHIP_CONTROL_CPU_STOP 0x00
JoeMiller 0:02c0c2cbc3df 75 #define CHIP_CONTROL_CPU_RUN 0x01
JoeMiller 0:02c0c2cbc3df 76 #define CHIP_CONTROL_HOST_UPLOAD 0x02
JoeMiller 0:02c0c2cbc3df 77
JoeMiller 0:02c0c2cbc3df 78 // HOST STATUS
JoeMiller 0:02c0c2cbc3df 79 #define HOST_STATUS_RESET 0X01
JoeMiller 0:02c0c2cbc3df 80 #define HOST_STATUS_ALGORITHM_STANDBY 0x02
JoeMiller 0:02c0c2cbc3df 81 #define HOST_STATUS_INTERFACE_BITS 0x1C
JoeMiller 0:02c0c2cbc3df 82 #define HOST_STATUS_INTERFACE_K 0x00
JoeMiller 0:02c0c2cbc3df 83 #define HOST_STATUS_INTERFACE_L 0x04
JoeMiller 0:02c0c2cbc3df 84 #define HOST_STATUS_INTERFACE_L_EXTENDED 0x08
JoeMiller 0:02c0c2cbc3df 85 #define HOST_STATUS_ALGORITHM_BITS 0xE0
JoeMiller 0:02c0c2cbc3df 86 #define HOST_STATUS_ALGORITHM_SPACEPOINT 0x20
JoeMiller 0:02c0c2cbc3df 87
JoeMiller 0:02c0c2cbc3df 88 // INT STATUS
JoeMiller 0:02c0c2cbc3df 89 #define INT_STATUS_HOST_INT 0x01
JoeMiller 0:02c0c2cbc3df 90 #define INT_STATUS_WAKE_WATERMARK 0x02
JoeMiller 0:02c0c2cbc3df 91 #define INT_STATUS_WAKE_LATENCY 0x04
JoeMiller 0:02c0c2cbc3df 92 #define INT_STATUS_WAKE_IMMEDIATE 0x08
JoeMiller 0:02c0c2cbc3df 93 #define INT_STATUS_NON_WAKE_WATERMARK 0x10
JoeMiller 0:02c0c2cbc3df 94 #define INT_STATUS_NON_WAKE_LATENCY 0x20
JoeMiller 0:02c0c2cbc3df 95 #define INT_STATUS_NON_WAKE_IMMEDIATE 0x40
JoeMiller 0:02c0c2cbc3df 96
JoeMiller 0:02c0c2cbc3df 97 // CHIP STATUS
JoeMiller 0:02c0c2cbc3df 98 #define CHIP_STATUS_EEPROM_DETECTED 0x01
JoeMiller 0:02c0c2cbc3df 99 #define CHIP_STATUS_EEPROM_UPLOAD_DONE 0x02
JoeMiller 0:02c0c2cbc3df 100 #define CHIP_STATUS_EEPROM_UPLOAD_ERROR 0x04
JoeMiller 0:02c0c2cbc3df 101 #define CHIP_STATUS_FIRMWARE_IDLE 0x08
JoeMiller 0:02c0c2cbc3df 102 #define CHIP_STATUS_NO_EEPROM 0x10
JoeMiller 0:02c0c2cbc3df 103
JoeMiller 0:02c0c2cbc3df 104 // HOST INTERFACE CONTROL
JoeMiller 0:02c0c2cbc3df 105 #define HOST_INTERFACE_CTRL_ALGORITHM_STANDBY 0x01
JoeMiller 0:02c0c2cbc3df 106 #define HOST_INTERFACE_CTRL_ABORT_TRANSFER 0x02
JoeMiller 0:02c0c2cbc3df 107 #define HOST_INTERFACE_CTRL_UPDATE_TRANSFER_CNT 0x04
JoeMiller 0:02c0c2cbc3df 108 #define HOST_INTERFACE_CTRL_WAKE_FIFO_INT_DISABLE 0x08
JoeMiller 0:02c0c2cbc3df 109 #define HOST_INTERFACE_CTRL_NED_COORDINATES 0x10
JoeMiller 0:02c0c2cbc3df 110 #define HOST_INTERFACE_CTRL_AP_SUSPEND 0x20
JoeMiller 0:02c0c2cbc3df 111 #define HOST_INTERFACE_CTRL_REQ_SENSOR_SELF_TEST 0x40
JoeMiller 0:02c0c2cbc3df 112 #define HOST_INTERFACE_CTRL_NON_WAKE_FIFO_INT_DISABLE 0x80
JoeMiller 0:02c0c2cbc3df 113
JoeMiller 0:02c0c2cbc3df 114 // ROM VERSION
JoeMiller 0:02c0c2cbc3df 115 #define ROM_VERSION_7180_DIO1 0x07A8
JoeMiller 0:02c0c2cbc3df 116 #define ROM_VERSION_7180_DIO2 0x09E6
JoeMiller 0:02c0c2cbc3df 117 #define ROM_VERSION_7184_DIO1 0x1F9D
JoeMiller 0:02c0c2cbc3df 118 #define ROM_VERSION_7186_DIO1 0xFFFF // TODO:update when available
JoeMiller 0:02c0c2cbc3df 119
JoeMiller 0:02c0c2cbc3df 120 // PRODUCT ID
JoeMiller 0:02c0c2cbc3df 121 #define PRODUCT_ID_7180 0x80
JoeMiller 0:02c0c2cbc3df 122 #define PRODUCT_ID_7184 0x84
JoeMiller 0:02c0c2cbc3df 123 #define PRODUCT_ID_7186 0x86
JoeMiller 0:02c0c2cbc3df 124
JoeMiller 0:02c0c2cbc3df 125 // REVISION ID
JoeMiller 0:02c0c2cbc3df 126 #define REVISION_ID_718X 1
JoeMiller 0:02c0c2cbc3df 127
JoeMiller 0:02c0c2cbc3df 128 // PARAM IO PAGES
JoeMiller 0:02c0c2cbc3df 129 #define PARAM_PAGE_SYSTEM 1
JoeMiller 0:02c0c2cbc3df 130 #define PARAM_PAGE_WARM_START 2
JoeMiller 0:02c0c2cbc3df 131 #define PARAM_PAGE_SENSOR_INFO 3
JoeMiller 0:02c0c2cbc3df 132 #define PARAM_PAGE_SENSOR_CONF 5
JoeMiller 0:02c0c2cbc3df 133 #define PARAM_PAGE_KNOBS 13
JoeMiller 0:02c0c2cbc3df 134
JoeMiller 0:02c0c2cbc3df 135 // PAGE 1 PARAMETERS
JoeMiller 0:02c0c2cbc3df 136 #define PARAM_META_EVENT_CONTROL 1
JoeMiller 0:02c0c2cbc3df 137 #define PARAM_FIFO_CONTROL 2
JoeMiller 0:02c0c2cbc3df 138 #define PARAM_SENSOR_STATUS_BANK_0 3
JoeMiller 0:02c0c2cbc3df 139 #define SENSORS_PER_STATUS_BANK 16
JoeMiller 0:02c0c2cbc3df 140 #define PARAM_WAKE_META_EVENT_CONTRAL 29
JoeMiller 0:02c0c2cbc3df 141 #define PARAM_HOST_IRQ_TIMESTAMP 30
JoeMiller 0:02c0c2cbc3df 142 #define PARAM_PHYSICAL_SENSOR_STATUS 31
JoeMiller 0:02c0c2cbc3df 143
JoeMiller 0:02c0c2cbc3df 144 #define SENSOR_TYPE_ACCELEROMETER 1
JoeMiller 0:02c0c2cbc3df 145 #define SENSOR_TYPE_MAGNETIC_FIELD 2
JoeMiller 0:02c0c2cbc3df 146 #define SENSOR_TYPE_ORIENTATION 3
JoeMiller 0:02c0c2cbc3df 147 #define SENSOR_TYPE_GYROSCOPE 4
JoeMiller 0:02c0c2cbc3df 148 #define SENSOR_TYPE_LIGHT 5
JoeMiller 0:02c0c2cbc3df 149 #define SENSOR_TYPE_PRESSURE 6
JoeMiller 0:02c0c2cbc3df 150 #define SENSOR_TYPE_TEMPERATURE 7
JoeMiller 0:02c0c2cbc3df 151 #define SENSOR_TYPE_PROXIMITY 8
JoeMiller 0:02c0c2cbc3df 152 #define SENSOR_TYPE_GRAVITY 9
JoeMiller 0:02c0c2cbc3df 153 #define SENSOR_TYPE_LINEAR_ACCELERATION 10
JoeMiller 0:02c0c2cbc3df 154 #define SENSOR_TYPE_ROTATION_VECTOR 11
JoeMiller 0:02c0c2cbc3df 155 #define SENSOR_TYPE_RELATIVE_HUMIDITY 12
JoeMiller 0:02c0c2cbc3df 156 #define SENSOR_TYPE_AMBIENT_TEMPERATURE 13
JoeMiller 0:02c0c2cbc3df 157 #define SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED 14
JoeMiller 0:02c0c2cbc3df 158 #define SENSOR_TYPE_GAME_ROTATION_VECTOR 15
JoeMiller 0:02c0c2cbc3df 159 #define SENSOR_TYPE_GYROSCOPE_UNCALIBRATED 16
JoeMiller 0:02c0c2cbc3df 160 #define SENSOR_TYPE_SIGNIFICANT_MOTION 17
JoeMiller 0:02c0c2cbc3df 161 #define SENSOR_TYPE_STEP_DETECTOR 18
JoeMiller 0:02c0c2cbc3df 162 #define SENSOR_TYPE_STEP_COUNTER 19
JoeMiller 0:02c0c2cbc3df 163 #define SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR 20
JoeMiller 0:02c0c2cbc3df 164 #define SENSOR_TYPE_HEART_RATE 21
JoeMiller 0:02c0c2cbc3df 165 #define SENSOR_TYPE_TILT_DETECTOR 22
JoeMiller 0:02c0c2cbc3df 166 #define SENSOR_TYPE_WAKE_GESTURE 23
JoeMiller 0:02c0c2cbc3df 167 #define SENSOR_TYPE_GLANCE_GESTURE 24
JoeMiller 0:02c0c2cbc3df 168 #define SENSOR_TYPE_PICK_UP_GESTURE 25
JoeMiller 0:02c0c2cbc3df 169 #define SENSOR_TYPE_PDR 26
JoeMiller 0:02c0c2cbc3df 170 #define SENSOR_TYPE_RAW_ACCEL 28 //jm
JoeMiller 0:02c0c2cbc3df 171 #define SENSOR_TYPE_RAW_MAG 29 //jm
JoeMiller 0:02c0c2cbc3df 172 #define SENSOR_TYPE_RAW_GYRO 30 //jm
JoeMiller 0:02c0c2cbc3df 173 #define SENSOR_TYPE_ACTIVITY 31
JoeMiller 0:02c0c2cbc3df 174 #define SENSOR_TYPE_CAR_MAG_DATA 32
JoeMiller 0:02c0c2cbc3df 175 #define SENSOR_TYPE_VISIBLE_END 63
JoeMiller 0:02c0c2cbc3df 176
JoeMiller 0:02c0c2cbc3df 177
JoeMiller 0:02c0c2cbc3df 178 #define SENSOR_TYPE_ACCELEROMETER_WAKE 65
JoeMiller 0:02c0c2cbc3df 179 #define SENSOR_TYPE_MAGNETIC_FIELD_WAKE 66
JoeMiller 0:02c0c2cbc3df 180 #define SENSOR_TYPE_ORIENTATION_WAKE 67
JoeMiller 0:02c0c2cbc3df 181 #define SENSOR_TYPE_GYROSCOPE_WAKE 68
JoeMiller 0:02c0c2cbc3df 182 #define SENSOR_TYPE_LIGHT_WAKE 69
JoeMiller 0:02c0c2cbc3df 183 #define SENSOR_TYPE_PRESSURE_WAKE 70
JoeMiller 0:02c0c2cbc3df 184 #define SENSOR_TYPE_TEMPERATURE_WAKE 71
JoeMiller 0:02c0c2cbc3df 185 #define SENSOR_TYPE_PROXIMITY_WAKE 72
JoeMiller 0:02c0c2cbc3df 186 #define SENSOR_TYPE_GRAVITY_WAKE 73
JoeMiller 0:02c0c2cbc3df 187 #define SENSOR_TYPE_LINEAR_ACCELERATION_WAKE 74
JoeMiller 0:02c0c2cbc3df 188 #define SENSOR_TYPE_ROTATION_VECTOR_WAKE 75
JoeMiller 0:02c0c2cbc3df 189 #define SENSOR_TYPE_RELATIVE_HUMIDITY_WAKE 76
JoeMiller 0:02c0c2cbc3df 190 #define SENSOR_TYPE_AMBIENT_TEMPERATURE_WAKE 77
JoeMiller 0:02c0c2cbc3df 191 #define SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED_WAKE 78
JoeMiller 0:02c0c2cbc3df 192 #define SENSOR_TYPE_GAME_ROTATION_VECTOR_WAKE 79
JoeMiller 0:02c0c2cbc3df 193 #define SENSOR_TYPE_GYROSCOPE_UNCALIBRATED_WAKE 80
JoeMiller 0:02c0c2cbc3df 194 #define SENSOR_TYPE_SIGNIFICANT_MOTION_WAKE 81
JoeMiller 0:02c0c2cbc3df 195 #define SENSOR_TYPE_STEP_DETECTOR_WAKE 82
JoeMiller 0:02c0c2cbc3df 196 #define SENSOR_TYPE_STEP_COUNTER_WAKE 83
JoeMiller 0:02c0c2cbc3df 197 #define SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR_WAKE 84
JoeMiller 0:02c0c2cbc3df 198 #define SENSOR_TYPE_HEART_RATE_WAKE 85
JoeMiller 0:02c0c2cbc3df 199 #define SENSOR_TYPE_TILT_DETECTOR_WAKE 86
JoeMiller 0:02c0c2cbc3df 200 #define SENSOR_TYPE_WAKE_GESTURE_WAKE 87
JoeMiller 0:02c0c2cbc3df 201 #define SENSOR_TYPE_GLANCE_GESTURE_WAKE 88
JoeMiller 0:02c0c2cbc3df 202 #define SENSOR_TYPE_PICK_UP_GESTURE_WAKE 89
JoeMiller 0:02c0c2cbc3df 203 #define SENSOR_TYPE_PDR_WAKE 90
JoeMiller 0:02c0c2cbc3df 204 #define SENSOR_TYPE_ACTIVITY_WAKE 95
JoeMiller 0:02c0c2cbc3df 205 #define SENSOR_TYPE_CAR_MAG_DATA_WAKE 96
JoeMiller 0:02c0c2cbc3df 206
JoeMiller 0:02c0c2cbc3df 207 /** System events - SENSOR_TYPE >= 0x40 */
JoeMiller 0:02c0c2cbc3df 208 #define SENSOR_TYPE_DEBUG 245 // 0xF5
JoeMiller 0:02c0c2cbc3df 209 #define SENSOR_TYPE_TIMESTAMP_WAKE 246 // 0xF6
JoeMiller 0:02c0c2cbc3df 210 #define SENSOR_TYPE_TIMESTAMP_OVERFLOW_WAKE 247 // 0xF7
JoeMiller 0:02c0c2cbc3df 211 #define SENSOR_TYPE_META_WAKE 248 // 0xF8
JoeMiller 0:02c0c2cbc3df 212 //#define SENSOR_TYPE_RAW_GYRO 249 // 0xF9
JoeMiller 0:02c0c2cbc3df 213 //#define SENSOR_TYPE_RAW_MAG 250 // 0xFA
JoeMiller 0:02c0c2cbc3df 214 //#define SENSOR_TYPE_RAW_ACCEL 251 // 0xFB
JoeMiller 0:02c0c2cbc3df 215 #define SENSOR_TYPE_TIMESTAMP 252 // 0xFC
JoeMiller 0:02c0c2cbc3df 216 #define SENSOR_TYPE_TIMESTAMP_OVERFLOW 253 // 0xFD
JoeMiller 0:02c0c2cbc3df 217 #define SENSOR_TYPE_META 254 // 0xFE
JoeMiller 0:02c0c2cbc3df 218
JoeMiller 0:02c0c2cbc3df 219 #define META_EVENT_FLUSH_COMPLETE 1
JoeMiller 0:02c0c2cbc3df 220 #define META_EVENT_SAMPLE_RATE_CHANGED 2
JoeMiller 0:02c0c2cbc3df 221 #define META_EVENT_POWER_MODE_CHANGED 3
JoeMiller 0:02c0c2cbc3df 222 #define META_EVENT_ERROR 4
JoeMiller 0:02c0c2cbc3df 223 #define META_EVENT_ALGORITHM_EVENT 5
JoeMiller 0:02c0c2cbc3df 224 #define META_EVENT_CAL_STATUS_CHANGED 6
JoeMiller 0:02c0c2cbc3df 225 #define META_EVENT_SENSOR_EVENT 11
JoeMiller 0:02c0c2cbc3df 226 #define META_EVENT_FIFO_OVERFLOW 12
JoeMiller 0:02c0c2cbc3df 227 #define META_EVENT_DYNAMIC_RANGE_CHANGED 13
JoeMiller 0:02c0c2cbc3df 228 #define META_EVENT_FIFO_WATERMARK 14
JoeMiller 0:02c0c2cbc3df 229 #define META_EVENT_SELF_TEST_RESULT 15
JoeMiller 0:02c0c2cbc3df 230 #define META_EVENT_INITIALIZED 16
JoeMiller 0:02c0c2cbc3df 231 #define META_EVENT_TRANSFER_CAUSE 17
JoeMiller 0:02c0c2cbc3df 232
JoeMiller 0:02c0c2cbc3df 233 //=========================================================================
JoeMiller 0:02c0c2cbc3df 234 // Parameter structures
JoeMiller 0:02c0c2cbc3df 235 //=========================================================================
JoeMiller 0:02c0c2cbc3df 236
JoeMiller 0:02c0c2cbc3df 237 typedef struct
JoeMiller 0:02c0c2cbc3df 238 {
JoeMiller 0:02c0c2cbc3df 239 u16 sampleRate;
JoeMiller 0:02c0c2cbc3df 240 u16 maxReportLatency;
JoeMiller 0:02c0c2cbc3df 241 u16 changeSensitivity;
JoeMiller 0:02c0c2cbc3df 242 u16 dynamicRange;
JoeMiller 0:02c0c2cbc3df 243 } SensorConfiguration;
JoeMiller 0:02c0c2cbc3df 244
JoeMiller 0:02c0c2cbc3df 245
JoeMiller 0:02c0c2cbc3df 246 typedef struct
JoeMiller 0:02c0c2cbc3df 247 {
JoeMiller 0:02c0c2cbc3df 248 u8 dataAvailable : 1;
JoeMiller 0:02c0c2cbc3df 249 u8 i2cNack : 1;
JoeMiller 0:02c0c2cbc3df 250 u8 deviceIdError : 1;
JoeMiller 0:02c0c2cbc3df 251 u8 transientError : 1;
JoeMiller 0:02c0c2cbc3df 252 u8 dataLost : 1;
JoeMiller 0:02c0c2cbc3df 253 u8 powerMode : 3;
JoeMiller 0:02c0c2cbc3df 254 } SensorStatus;
JoeMiller 0:02c0c2cbc3df 255
JoeMiller 0:02c0c2cbc3df 256 typedef struct
JoeMiller 0:02c0c2cbc3df 257 {
JoeMiller 0:02c0c2cbc3df 258 u16 sampleRate;
JoeMiller 0:02c0c2cbc3df 259 u16 dynamicRange;
JoeMiller 0:02c0c2cbc3df 260 SensorStatus status;
JoeMiller 0:02c0c2cbc3df 261 } PhysicalSensorStatus;
JoeMiller 0:02c0c2cbc3df 262
JoeMiller 0:02c0c2cbc3df 263 static struct
JoeMiller 0:02c0c2cbc3df 264 {
JoeMiller 0:02c0c2cbc3df 265 PhysicalSensorStatus mag;
JoeMiller 0:02c0c2cbc3df 266 PhysicalSensorStatus accel;
JoeMiller 0:02c0c2cbc3df 267 PhysicalSensorStatus gyro;
JoeMiller 0:02c0c2cbc3df 268 } physicalSensorStatus;
JoeMiller 0:02c0c2cbc3df 269
JoeMiller 0:02c0c2cbc3df 270 typedef struct
JoeMiller 0:02c0c2cbc3df 271 {
JoeMiller 0:02c0c2cbc3df 272 u8 sensorId;
JoeMiller 0:02c0c2cbc3df 273 u8 driverId;
JoeMiller 0:02c0c2cbc3df 274 u8 driverVersion;
JoeMiller 0:02c0c2cbc3df 275 u8 power;
JoeMiller 0:02c0c2cbc3df 276 u16 maxRange;
JoeMiller 0:02c0c2cbc3df 277 u16 resolution;
JoeMiller 0:02c0c2cbc3df 278 u16 maxRate;
JoeMiller 0:02c0c2cbc3df 279 u16 fifoReserved;
JoeMiller 0:02c0c2cbc3df 280 u16 fifoMax;
JoeMiller 0:02c0c2cbc3df 281 u8 eventSize;
JoeMiller 0:02c0c2cbc3df 282 u8 minRate;
JoeMiller 0:02c0c2cbc3df 283 } SensorDescriptor;
JoeMiller 0:02c0c2cbc3df 284
JoeMiller 0:02c0c2cbc3df 285
JoeMiller 0:02c0c2cbc3df 286 typedef struct
JoeMiller 0:02c0c2cbc3df 287 {
JoeMiller 0:02c0c2cbc3df 288 float dipAngle;
JoeMiller 0:02c0c2cbc3df 289 float magRadius;
JoeMiller 0:02c0c2cbc3df 290 u8 gBiasMode;
JoeMiller 0:02c0c2cbc3df 291 float gyroThresh[6];
JoeMiller 0:02c0c2cbc3df 292 float noiseLevls[9];
JoeMiller 0:02c0c2cbc3df 293 float mcalSIHI[6];
JoeMiller 0:02c0c2cbc3df 294 float accelScale[3];
JoeMiller 0:02c0c2cbc3df 295 float accelOffsets[3];
JoeMiller 0:02c0c2cbc3df 296 float gyroScale[3];
JoeMiller 0:02c0c2cbc3df 297 float gyroOffsets[3];
JoeMiller 0:02c0c2cbc3df 298 u8 mcalStatus;
JoeMiller 0:02c0c2cbc3df 299 u8 bgCalMode;
JoeMiller 0:02c0c2cbc3df 300 float calScore;
JoeMiller 0:02c0c2cbc3df 301 float amatrix[9];
JoeMiller 0:02c0c2cbc3df 302 float aoffsets[3];
JoeMiller 0:02c0c2cbc3df 303 } WarmStartParams;
JoeMiller 0:02c0c2cbc3df 304
JoeMiller 0:02c0c2cbc3df 305 static ParamInfo warmStartList[] =
JoeMiller 0:02c0c2cbc3df 306 {
JoeMiller 0:02c0c2cbc3df 307 { 1, 4 },
JoeMiller 0:02c0c2cbc3df 308 { 2, 4 },
JoeMiller 0:02c0c2cbc3df 309 { 3, 1 },
JoeMiller 0:02c0c2cbc3df 310 { 4, 8 },
JoeMiller 0:02c0c2cbc3df 311 { 5, 8 },
JoeMiller 0:02c0c2cbc3df 312 { 6, 8 },
JoeMiller 0:02c0c2cbc3df 313 { 7, 8 },
JoeMiller 0:02c0c2cbc3df 314 { 8, 8 },
JoeMiller 0:02c0c2cbc3df 315 { 9, 8 },
JoeMiller 0:02c0c2cbc3df 316 { 10, 8 },
JoeMiller 0:02c0c2cbc3df 317 { 11, 4 },
JoeMiller 0:02c0c2cbc3df 318 { 12, 8 },
JoeMiller 0:02c0c2cbc3df 319 { 13, 8 },
JoeMiller 0:02c0c2cbc3df 320 { 14, 8 },
JoeMiller 0:02c0c2cbc3df 321 { 15, 8 },
JoeMiller 0:02c0c2cbc3df 322 { 16, 8 },
JoeMiller 0:02c0c2cbc3df 323 { 17, 8 },
JoeMiller 0:02c0c2cbc3df 324 { 18, 8 },
JoeMiller 0:02c0c2cbc3df 325 { 19, 8 },
JoeMiller 0:02c0c2cbc3df 326 { 20, 8 },
JoeMiller 0:02c0c2cbc3df 327 { 27, 1 },
JoeMiller 0:02c0c2cbc3df 328 { 28, 1 },
JoeMiller 0:02c0c2cbc3df 329 { 29, 4 },
JoeMiller 0:02c0c2cbc3df 330 { 37, 8 },
JoeMiller 0:02c0c2cbc3df 331 { 38, 8 },
JoeMiller 0:02c0c2cbc3df 332 { 39, 8 },
JoeMiller 0:02c0c2cbc3df 333 { 40, 8 },
JoeMiller 0:02c0c2cbc3df 334 { 41, 4 },
JoeMiller 0:02c0c2cbc3df 335 { 42, 8 },
JoeMiller 0:02c0c2cbc3df 336 { 43, 4 }
JoeMiller 0:02c0c2cbc3df 337 };
JoeMiller 0:02c0c2cbc3df 338
JoeMiller 0:02c0c2cbc3df 339
JoeMiller 0:02c0c2cbc3df 340
JoeMiller 0:02c0c2cbc3df 341 typedef struct
JoeMiller 0:02c0c2cbc3df 342 {
JoeMiller 0:02c0c2cbc3df 343 s16 x;
JoeMiller 0:02c0c2cbc3df 344 s16 y;
JoeMiller 0:02c0c2cbc3df 345 s16 z;
JoeMiller 0:02c0c2cbc3df 346 u8 status;
JoeMiller 0:02c0c2cbc3df 347 } SensorData3AxisRaw;
JoeMiller 0:02c0c2cbc3df 348
JoeMiller 0:02c0c2cbc3df 349
JoeMiller 0:02c0c2cbc3df 350 typedef struct
JoeMiller 0:02c0c2cbc3df 351 {
JoeMiller 0:02c0c2cbc3df 352 float x;
JoeMiller 0:02c0c2cbc3df 353 float y;
JoeMiller 0:02c0c2cbc3df 354 float z;
JoeMiller 0:02c0c2cbc3df 355 float extra;
JoeMiller 0:02c0c2cbc3df 356 } SensorData3Axis;
JoeMiller 0:02c0c2cbc3df 357
JoeMiller 0:02c0c2cbc3df 358
JoeMiller 0:02c0c2cbc3df 359 typedef struct
JoeMiller 0:02c0c2cbc3df 360 {
JoeMiller 0:02c0c2cbc3df 361 s16 x;
JoeMiller 0:02c0c2cbc3df 362 s16 y;
JoeMiller 0:02c0c2cbc3df 363 s16 z;
JoeMiller 0:02c0c2cbc3df 364 s16 x_bias;
JoeMiller 0:02c0c2cbc3df 365 s16 y_bias;
JoeMiller 0:02c0c2cbc3df 366 s16 z_bias;
JoeMiller 0:02c0c2cbc3df 367 u8 status;
JoeMiller 0:02c0c2cbc3df 368 } SensorData3AxisUncalRaw;
JoeMiller 0:02c0c2cbc3df 369
JoeMiller 0:02c0c2cbc3df 370
JoeMiller 0:02c0c2cbc3df 371 typedef struct
JoeMiller 0:02c0c2cbc3df 372 {
JoeMiller 0:02c0c2cbc3df 373 float x;
JoeMiller 0:02c0c2cbc3df 374 float y;
JoeMiller 0:02c0c2cbc3df 375 float z;
JoeMiller 0:02c0c2cbc3df 376 float x_bias;
JoeMiller 0:02c0c2cbc3df 377 float y_bias;
JoeMiller 0:02c0c2cbc3df 378 float z_bias;
JoeMiller 0:02c0c2cbc3df 379 float extra;
JoeMiller 0:02c0c2cbc3df 380 } SensorData6Axis;
JoeMiller 0:02c0c2cbc3df 381
JoeMiller 0:02c0c2cbc3df 382
JoeMiller 0:02c0c2cbc3df 383 typedef struct
JoeMiller 0:02c0c2cbc3df 384 {
JoeMiller 0:02c0c2cbc3df 385 s16 x;
JoeMiller 0:02c0c2cbc3df 386 s16 y;
JoeMiller 0:02c0c2cbc3df 387 s16 z;
JoeMiller 0:02c0c2cbc3df 388 s16 w;
JoeMiller 0:02c0c2cbc3df 389 s16 accuracy;
JoeMiller 0:02c0c2cbc3df 390 } RotationVectorRaw;
JoeMiller 0:02c0c2cbc3df 391
JoeMiller 0:02c0c2cbc3df 392
JoeMiller 0:02c0c2cbc3df 393 typedef struct
JoeMiller 0:02c0c2cbc3df 394 {
JoeMiller 0:02c0c2cbc3df 395 float x;
JoeMiller 0:02c0c2cbc3df 396 float y;
JoeMiller 0:02c0c2cbc3df 397 float z;
JoeMiller 0:02c0c2cbc3df 398 float w;
JoeMiller 0:02c0c2cbc3df 399 float extra;
JoeMiller 0:02c0c2cbc3df 400 } SensorData4Axis;
JoeMiller 0:02c0c2cbc3df 401
JoeMiller 0:02c0c2cbc3df 402
JoeMiller 0:02c0c2cbc3df 403 typedef struct
JoeMiller 0:02c0c2cbc3df 404 {
JoeMiller 0:02c0c2cbc3df 405 s16 dataum;
JoeMiller 0:02c0c2cbc3df 406 } SensorDataS16Raw;
JoeMiller 0:02c0c2cbc3df 407
JoeMiller 0:02c0c2cbc3df 408 typedef struct
JoeMiller 0:02c0c2cbc3df 409 {
JoeMiller 0:02c0c2cbc3df 410 float datum;
JoeMiller 0:02c0c2cbc3df 411 } SensorDataS16;
JoeMiller 0:02c0c2cbc3df 412
JoeMiller 0:02c0c2cbc3df 413 typedef struct
JoeMiller 0:02c0c2cbc3df 414 {
JoeMiller 0:02c0c2cbc3df 415 u16 datum;
JoeMiller 0:02c0c2cbc3df 416 } SensorDataU16Raw;
JoeMiller 0:02c0c2cbc3df 417
JoeMiller 0:02c0c2cbc3df 418 typedef struct
JoeMiller 0:02c0c2cbc3df 419 {
JoeMiller 0:02c0c2cbc3df 420 float datum;
JoeMiller 0:02c0c2cbc3df 421 } SensorDataU16;
JoeMiller 0:02c0c2cbc3df 422
JoeMiller 0:02c0c2cbc3df 423 typedef struct
JoeMiller 0:02c0c2cbc3df 424 {
JoeMiller 0:02c0c2cbc3df 425 u16 datum;
JoeMiller 0:02c0c2cbc3df 426 } SensorDataCount;
JoeMiller 0:02c0c2cbc3df 427
JoeMiller 0:02c0c2cbc3df 428
JoeMiller 0:02c0c2cbc3df 429 typedef struct
JoeMiller 0:02c0c2cbc3df 430 {
JoeMiller 0:02c0c2cbc3df 431 u8 datum[3];
JoeMiller 0:02c0c2cbc3df 432 } SensorDataU24Raw;
JoeMiller 0:02c0c2cbc3df 433
JoeMiller 0:02c0c2cbc3df 434 typedef struct
JoeMiller 0:02c0c2cbc3df 435 {
JoeMiller 0:02c0c2cbc3df 436 float datum;
JoeMiller 0:02c0c2cbc3df 437 } SensorDataU24;
JoeMiller 0:02c0c2cbc3df 438
JoeMiller 0:02c0c2cbc3df 439 // Data Queue Structs
JoeMiller 0:02c0c2cbc3df 440
JoeMiller 0:02c0c2cbc3df 441 typedef struct
JoeMiller 0:02c0c2cbc3df 442 {
JoeMiller 0:02c0c2cbc3df 443 u8 ID;
JoeMiller 0:02c0c2cbc3df 444 u32 timestamp;
JoeMiller 0:02c0c2cbc3df 445 u8 size;
JoeMiller 0:02c0c2cbc3df 446 } DataPacket0Axis;
JoeMiller 0:02c0c2cbc3df 447
JoeMiller 0:02c0c2cbc3df 448
JoeMiller 0:02c0c2cbc3df 449 typedef struct
JoeMiller 0:02c0c2cbc3df 450 {
JoeMiller 0:02c0c2cbc3df 451 u8 ID;
JoeMiller 0:02c0c2cbc3df 452 u32 timestamp;
JoeMiller 0:02c0c2cbc3df 453 u8 size;
JoeMiller 0:02c0c2cbc3df 454 float x;
JoeMiller 0:02c0c2cbc3df 455 } DataPacket1Axis;
JoeMiller 0:02c0c2cbc3df 456
JoeMiller 0:02c0c2cbc3df 457
JoeMiller 0:02c0c2cbc3df 458 typedef struct
JoeMiller 0:02c0c2cbc3df 459 {
JoeMiller 0:02c0c2cbc3df 460 u8 ID;
JoeMiller 0:02c0c2cbc3df 461 u32 timestamp;
JoeMiller 0:02c0c2cbc3df 462 u8 size;
JoeMiller 0:02c0c2cbc3df 463 float x;
JoeMiller 0:02c0c2cbc3df 464 float y;
JoeMiller 0:02c0c2cbc3df 465 float z;
JoeMiller 0:02c0c2cbc3df 466 float extra;
JoeMiller 0:02c0c2cbc3df 467 } DataPacket3Axis;
JoeMiller 0:02c0c2cbc3df 468
JoeMiller 0:02c0c2cbc3df 469
JoeMiller 0:02c0c2cbc3df 470 typedef struct
JoeMiller 0:02c0c2cbc3df 471 {
JoeMiller 0:02c0c2cbc3df 472 u8 ID;
JoeMiller 0:02c0c2cbc3df 473 u32 timestamp;
JoeMiller 0:02c0c2cbc3df 474 u8 size;
JoeMiller 0:02c0c2cbc3df 475 float x;
JoeMiller 0:02c0c2cbc3df 476 float y;
JoeMiller 0:02c0c2cbc3df 477 float z;
JoeMiller 0:02c0c2cbc3df 478 float w;
JoeMiller 0:02c0c2cbc3df 479 float extra;
JoeMiller 0:02c0c2cbc3df 480 } DataPacket4Axis;
JoeMiller 0:02c0c2cbc3df 481
JoeMiller 0:02c0c2cbc3df 482
JoeMiller 0:02c0c2cbc3df 483 typedef struct
JoeMiller 0:02c0c2cbc3df 484 {
JoeMiller 0:02c0c2cbc3df 485 u8 ID;
JoeMiller 0:02c0c2cbc3df 486 u32 timestamp;
JoeMiller 0:02c0c2cbc3df 487 u8 size;
JoeMiller 0:02c0c2cbc3df 488 float x;
JoeMiller 0:02c0c2cbc3df 489 float y;
JoeMiller 0:02c0c2cbc3df 490 float z;
JoeMiller 0:02c0c2cbc3df 491 float x_bias;
JoeMiller 0:02c0c2cbc3df 492 float y_bias;
JoeMiller 0:02c0c2cbc3df 493 float z_bias;
JoeMiller 0:02c0c2cbc3df 494 float extra;
JoeMiller 0:02c0c2cbc3df 495 } DataPacket6Axis;
JoeMiller 0:02c0c2cbc3df 496
JoeMiller 0:02c0c2cbc3df 497
JoeMiller 0:02c0c2cbc3df 498
JoeMiller 0:02c0c2cbc3df 499 const static char *em7186_meta_event_name[18] =
JoeMiller 0:02c0c2cbc3df 500 {
JoeMiller 0:02c0c2cbc3df 501 "META EVENT NOOP", //0
JoeMiller 0:02c0c2cbc3df 502 "META_EVENT_FLUSH_COMPLETE", // 1
JoeMiller 0:02c0c2cbc3df 503 "META_EVENT_SAMPLE_RATE_CHANGED", // 2
JoeMiller 0:02c0c2cbc3df 504 "META_EVENT_POWER_MODE_CHANGED", // 3
JoeMiller 0:02c0c2cbc3df 505 "META_EVENT_ERROR", // 4
JoeMiller 0:02c0c2cbc3df 506 "META_EVENT_ALGORITHM_EVENT", // 5
JoeMiller 0:02c0c2cbc3df 507 "META_EVENT_CAL_STATUS_CHANGED", // 6
JoeMiller 0:02c0c2cbc3df 508 "Undefined Meta Event", // 7
JoeMiller 0:02c0c2cbc3df 509 "Undefined Meta Event", // 8
JoeMiller 0:02c0c2cbc3df 510 "Undefined Meta Event", // 9
JoeMiller 0:02c0c2cbc3df 511 "Undefined Meta Event", // 10
JoeMiller 0:02c0c2cbc3df 512 "META_EVENT_SENSOR_EVENT", // 11
JoeMiller 0:02c0c2cbc3df 513 "META_EVENT_FIFO_OVERFLOW", // 12
JoeMiller 0:02c0c2cbc3df 514 "META_EVENT_DYNAMIC_RANGE_CHANGED", // 13
JoeMiller 0:02c0c2cbc3df 515 "META_EVENT_FIFO_WATERMARK", // 14
JoeMiller 0:02c0c2cbc3df 516 "META_EVENT_SELF_TEST_RESULT", // 15
JoeMiller 0:02c0c2cbc3df 517 "META_EVENT_INITIALIZED", // 16
JoeMiller 0:02c0c2cbc3df 518 "META_EVENT_TRANSFER_CAUSE", // 17
JoeMiller 0:02c0c2cbc3df 519 };
JoeMiller 0:02c0c2cbc3df 520
JoeMiller 0:02c0c2cbc3df 521
JoeMiller 0:02c0c2cbc3df 522
JoeMiller 0:02c0c2cbc3df 523 const static char *em7186_sensor_name[128] =
JoeMiller 0:02c0c2cbc3df 524 {
JoeMiller 0:02c0c2cbc3df 525 "na", // 0
JoeMiller 0:02c0c2cbc3df 526 "accelerometer", // 1
JoeMiller 0:02c0c2cbc3df 527 "magnetic field", // 2
JoeMiller 0:02c0c2cbc3df 528 "Orientation", // 3
JoeMiller 0:02c0c2cbc3df 529 "gyroscope", // 4
JoeMiller 0:02c0c2cbc3df 530 "light", // 5
JoeMiller 0:02c0c2cbc3df 531 "pressure", // 6
JoeMiller 0:02c0c2cbc3df 532 "temperature", // 7
JoeMiller 0:02c0c2cbc3df 533 "proximity", // 8
JoeMiller 0:02c0c2cbc3df 534 "gravity", // 9
JoeMiller 0:02c0c2cbc3df 535 "linear acceleration", // 10
JoeMiller 0:02c0c2cbc3df 536 "rotation vector", // 11
JoeMiller 0:02c0c2cbc3df 537 "relative humidity", // 12
JoeMiller 0:02c0c2cbc3df 538 "ambient temperature", // 13
JoeMiller 0:02c0c2cbc3df 539 "magnetic field uncalibrated", // 14
JoeMiller 0:02c0c2cbc3df 540 "game rotation vector", // 15
JoeMiller 0:02c0c2cbc3df 541 "gyroscope uncalibrated", // 16
JoeMiller 0:02c0c2cbc3df 542 "significant motion", // 17
JoeMiller 0:02c0c2cbc3df 543 "step detector", // 18
JoeMiller 0:02c0c2cbc3df 544 "step counter", // 19
JoeMiller 0:02c0c2cbc3df 545 "geomagnetic rotation vector", // 20
JoeMiller 6:4ba3f9a8191f 546 "Heart rate -OR- Car Detector", // 21
JoeMiller 0:02c0c2cbc3df 547 "tilt detector", // 22
JoeMiller 0:02c0c2cbc3df 548 "wake gesture", // 23
JoeMiller 0:02c0c2cbc3df 549 "glance gesture", // 24
JoeMiller 0:02c0c2cbc3df 550 "pick up gesture", // 25
JoeMiller 0:02c0c2cbc3df 551 "custom_26", // 26
JoeMiller 0:02c0c2cbc3df 552 "custom_27", // 27
JoeMiller 0:02c0c2cbc3df 553 "Raw Accel", // 28
JoeMiller 0:02c0c2cbc3df 554 "Raw Mag", // 29
JoeMiller 0:02c0c2cbc3df 555 "Raw Gyro", // 30
JoeMiller 0:02c0c2cbc3df 556 "activity", // 31
JoeMiller 0:02c0c2cbc3df 557 "Car Detect Mag Data(uT)", // 32
JoeMiller 0:02c0c2cbc3df 558 "custom_33", // 33
JoeMiller 0:02c0c2cbc3df 559 "custom_34", // 34
JoeMiller 0:02c0c2cbc3df 560 "custom_35", // 35
JoeMiller 0:02c0c2cbc3df 561 "custom_36", // 36
JoeMiller 0:02c0c2cbc3df 562 "custom_37", // 37
JoeMiller 0:02c0c2cbc3df 563 "custom_38", // 38
JoeMiller 0:02c0c2cbc3df 564 "custom_39", // 39
JoeMiller 0:02c0c2cbc3df 565 "custom_40", // 40
JoeMiller 0:02c0c2cbc3df 566 "custom_41", // 41
JoeMiller 0:02c0c2cbc3df 567 "custom_42", // 42
JoeMiller 0:02c0c2cbc3df 568 "custom_43", // 43
JoeMiller 0:02c0c2cbc3df 569 "custom_44", // 44
JoeMiller 0:02c0c2cbc3df 570 "custom_45", // 45
JoeMiller 0:02c0c2cbc3df 571 "custom_46", // 46
JoeMiller 0:02c0c2cbc3df 572 "custom_47", // 47
JoeMiller 0:02c0c2cbc3df 573 "custom_48", // 48
JoeMiller 0:02c0c2cbc3df 574 "custom_49", // 49
JoeMiller 0:02c0c2cbc3df 575 "custom_50", // 50
JoeMiller 0:02c0c2cbc3df 576 "custom_51", // 51
JoeMiller 0:02c0c2cbc3df 577 "custom_52", // 52
JoeMiller 0:02c0c2cbc3df 578 "custom_53", // 53
JoeMiller 0:02c0c2cbc3df 579 "custom_54", // 54
JoeMiller 0:02c0c2cbc3df 580 "custom_55", // 55
JoeMiller 0:02c0c2cbc3df 581 "custom_56", // 56
JoeMiller 0:02c0c2cbc3df 582 "custom_57", // 57
JoeMiller 0:02c0c2cbc3df 583 "custom_58", // 58
JoeMiller 0:02c0c2cbc3df 584 "custom_59", // 59
JoeMiller 0:02c0c2cbc3df 585 "custom_60", // 60
JoeMiller 0:02c0c2cbc3df 586 "custom_61", // 61
JoeMiller 0:02c0c2cbc3df 587 "custom_62", // 62
JoeMiller 0:02c0c2cbc3df 588 "custom_63", // 63
JoeMiller 0:02c0c2cbc3df 589 "reserved", // 64
JoeMiller 0:02c0c2cbc3df 590 "accelerometer wake", // 65
JoeMiller 0:02c0c2cbc3df 591 "magnetic field wake", // 66
JoeMiller 0:02c0c2cbc3df 592 "orientation wake", // 67
JoeMiller 0:02c0c2cbc3df 593 "gyroscope wake", // 68
JoeMiller 0:02c0c2cbc3df 594 "light wake", // 69
JoeMiller 0:02c0c2cbc3df 595 "pressure wake", // 70
JoeMiller 0:02c0c2cbc3df 596 "temperature wake", // 71
JoeMiller 0:02c0c2cbc3df 597 "proximity wake", // 72
JoeMiller 0:02c0c2cbc3df 598 "gravity wake", // 73
JoeMiller 0:02c0c2cbc3df 599 "linear acceleration wake", // 74
JoeMiller 0:02c0c2cbc3df 600 "rotation vector wake", // 75
JoeMiller 0:02c0c2cbc3df 601 "relative humidity wake", // 76
JoeMiller 0:02c0c2cbc3df 602 "ambient temperature wake", // 77
JoeMiller 0:02c0c2cbc3df 603 "magnetic field uncalibrated wake", // 78
JoeMiller 0:02c0c2cbc3df 604 "game rotation vector wake", // 79
JoeMiller 0:02c0c2cbc3df 605 "gyroscope uncalibrated wake", // 80
JoeMiller 0:02c0c2cbc3df 606 "significant motion wake", // 81
JoeMiller 0:02c0c2cbc3df 607 "step detector wake.", // 82
JoeMiller 0:02c0c2cbc3df 608 "step counter wake", // 83
JoeMiller 0:02c0c2cbc3df 609 "geomagnetic rotation vector wake", // 84
JoeMiller 0:02c0c2cbc3df 610 "Car Detect wake", // 85
JoeMiller 0:02c0c2cbc3df 611 "tilt detector wake", // 86
JoeMiller 0:02c0c2cbc3df 612 "wake gesture wake", // 87
JoeMiller 0:02c0c2cbc3df 613 "glance gesture wake", // 88
JoeMiller 0:02c0c2cbc3df 614 "pick up gesture wake", // 89
JoeMiller 0:02c0c2cbc3df 615 "custom_26 wake", // 90
JoeMiller 0:02c0c2cbc3df 616 "custom_27 wake", // 91
JoeMiller 0:02c0c2cbc3df 617 "custom_28 wake", // 92
JoeMiller 0:02c0c2cbc3df 618 "Raw Mag wake", // 93
JoeMiller 0:02c0c2cbc3df 619 "custom_30 wake", // 94
JoeMiller 0:02c0c2cbc3df 620 "activity wake", // 95
JoeMiller 0:02c0c2cbc3df 621 "Car Detect Mag Data(uT) wake", // 96
JoeMiller 0:02c0c2cbc3df 622 "custom_33 wake", // 97
JoeMiller 0:02c0c2cbc3df 623 "custom_34 wake", // 98
JoeMiller 0:02c0c2cbc3df 624 "custom_35 wake", // 99
JoeMiller 0:02c0c2cbc3df 625 "custom_36 wake", // 100
JoeMiller 0:02c0c2cbc3df 626 "custom_37 wake", // 101
JoeMiller 0:02c0c2cbc3df 627 "custom_38 wake", // 102
JoeMiller 0:02c0c2cbc3df 628 "custom_39 wake", // 103
JoeMiller 0:02c0c2cbc3df 629 "custom_40 wake", // 104
JoeMiller 0:02c0c2cbc3df 630 "custom_41 wake", // 105
JoeMiller 0:02c0c2cbc3df 631 "custom_42 wake", // 106
JoeMiller 0:02c0c2cbc3df 632 "custom_43 wake", // 107
JoeMiller 0:02c0c2cbc3df 633 "custom_44 wake", // 108
JoeMiller 0:02c0c2cbc3df 634 "custom_45 wake", // 109
JoeMiller 0:02c0c2cbc3df 635 "custom_46 wake", // 110
JoeMiller 0:02c0c2cbc3df 636 "custom_47 wake", // 111
JoeMiller 0:02c0c2cbc3df 637 "custom_48 wake", // 112
JoeMiller 0:02c0c2cbc3df 638 "custom_49 wake", // 113
JoeMiller 0:02c0c2cbc3df 639 "custom_50 wake", // 114
JoeMiller 0:02c0c2cbc3df 640 "custom_51 wake", // 115
JoeMiller 0:02c0c2cbc3df 641 "custom_52 wake", // 116
JoeMiller 0:02c0c2cbc3df 642 "custom_53 wake", // 117
JoeMiller 0:02c0c2cbc3df 643 "custom_54 wake", // 118
JoeMiller 0:02c0c2cbc3df 644 "custom_55 wake", // 119
JoeMiller 0:02c0c2cbc3df 645 "custom_56 wake", // 120
JoeMiller 0:02c0c2cbc3df 646 "custom_57 wake", // 121
JoeMiller 0:02c0c2cbc3df 647 "custom_58 wake", // 122
JoeMiller 0:02c0c2cbc3df 648 "custom_59 wake", // 123
JoeMiller 0:02c0c2cbc3df 649 "custom_60 wake", // 124
JoeMiller 0:02c0c2cbc3df 650 "custom_61 wake", // 125
JoeMiller 0:02c0c2cbc3df 651 "custom_62 wake", // 126
JoeMiller 0:02c0c2cbc3df 652 "custom_63 wake" // 127
JoeMiller 0:02c0c2cbc3df 653 };
JoeMiller 0:02c0c2cbc3df 654
JoeMiller 0:02c0c2cbc3df 655
JoeMiller 0:02c0c2cbc3df 656
JoeMiller 0:02c0c2cbc3df 657 #endif