lora sensnode
Dependencies: libmDot mbed-rtos mbed
Fork of mDot_LoRa_Sensornode by
app/SI1143.h@1:e67174cc4953, 2016-08-10 (annotated)
- Committer:
- socie123
- Date:
- Wed Aug 10 12:54:10 2016 +0000
- Revision:
- 1:e67174cc4953
- Parent:
- 0:f2815503561f
lora sensnode
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mitea1 | 0:f2815503561f | 1 | /** |
mitea1 | 0:f2815503561f | 2 | * @file SI1143.h |
mitea1 | 0:f2815503561f | 3 | * |
mitea1 | 0:f2815503561f | 4 | * @author Adrian |
mitea1 | 0:f2815503561f | 5 | * @date 02.06.2016 |
mitea1 | 0:f2815503561f | 6 | * |
mitea1 | 0:f2815503561f | 7 | */ |
mitea1 | 0:f2815503561f | 8 | #ifndef SI1143_H_ |
mitea1 | 0:f2815503561f | 9 | #define SI1143_H_ |
mitea1 | 0:f2815503561f | 10 | |
mitea1 | 0:f2815503561f | 11 | #include "mbed.h" |
mitea1 | 0:f2815503561f | 12 | #include "I2C_RT.h" |
mitea1 | 0:f2815503561f | 13 | #include "SI1143Config.h" |
mitea1 | 0:f2815503561f | 14 | |
mitea1 | 0:f2815503561f | 15 | |
mitea1 | 0:f2815503561f | 16 | #define SI1143_IR_ADDRESS 0x5A |
mitea1 | 0:f2815503561f | 17 | #define SI1143_HW_KEY_VAL0 0x17 //Value to write into the HW Key register |
mitea1 | 0:f2815503561f | 18 | |
mitea1 | 0:f2815503561f | 19 | // Register Addresses |
mitea1 | 0:f2815503561f | 20 | |
mitea1 | 0:f2815503561f | 21 | #define SI1143_PART_ID 0x00 |
mitea1 | 0:f2815503561f | 22 | #define SI1143_REV_ID 0x01 |
mitea1 | 0:f2815503561f | 23 | #define SI1143_SEQ_ID 0x02 //Si114x-A11 (MAJOR_SEQ=1, MINOR_SEQ=1) |
mitea1 | 0:f2815503561f | 24 | #define SI1143_INT_CFG 0x03 |
mitea1 | 0:f2815503561f | 25 | #define SI1143_IRQ_ENABLE 0x04 |
mitea1 | 0:f2815503561f | 26 | #define SI1143_IRQ_MODE1 0x05 |
mitea1 | 0:f2815503561f | 27 | #define SI1143_IRQ_MODE2 0x06 |
mitea1 | 0:f2815503561f | 28 | #define SI1143_HW_KEY 0x07 |
mitea1 | 0:f2815503561f | 29 | |
mitea1 | 0:f2815503561f | 30 | #define SI1143_MEAS_RATE 0x08 |
mitea1 | 0:f2815503561f | 31 | #define SI1143_ALS_RATE 0x09 |
mitea1 | 0:f2815503561f | 32 | #define SI1143_PS_RATE 0x0A |
mitea1 | 0:f2815503561f | 33 | |
mitea1 | 0:f2815503561f | 34 | #define SI1143_ALS_LOW_TH0 0x0B |
mitea1 | 0:f2815503561f | 35 | #define SI1143_ALS_LOW_TH1 0x0C |
mitea1 | 0:f2815503561f | 36 | #define SI1143_ALS_HI_TH0 0x0D |
mitea1 | 0:f2815503561f | 37 | #define SI1143_ALS_HI_TH1 0x0E |
mitea1 | 0:f2815503561f | 38 | |
mitea1 | 0:f2815503561f | 39 | #define SI1143_PS_LED21 0x0F |
mitea1 | 0:f2815503561f | 40 | #define SI1143_PS_LED3 0x10 |
mitea1 | 0:f2815503561f | 41 | |
mitea1 | 0:f2815503561f | 42 | #define SI1143_PS1_TH0 0x11 |
mitea1 | 0:f2815503561f | 43 | #define SI1143_PS1_TH1 0x12 |
mitea1 | 0:f2815503561f | 44 | #define SI1143_PS2_TH0 0x13 |
mitea1 | 0:f2815503561f | 45 | #define SI1143_PS2_TH1 0x14 |
mitea1 | 0:f2815503561f | 46 | #define SI1143_PS3_TH0 0x15 |
mitea1 | 0:f2815503561f | 47 | |
mitea1 | 0:f2815503561f | 48 | #define SI1143_PS3_TH1 0x16 |
mitea1 | 0:f2815503561f | 49 | #define SI1143_PARAM_WR 0x17 |
mitea1 | 0:f2815503561f | 50 | #define SI1143_COMMAND 0x18 |
mitea1 | 0:f2815503561f | 51 | |
mitea1 | 0:f2815503561f | 52 | #define SI1143_RESPONSE 0x20 |
mitea1 | 0:f2815503561f | 53 | #define SI1143_IRQ_STATUS 0x21 |
mitea1 | 0:f2815503561f | 54 | |
mitea1 | 0:f2815503561f | 55 | #define SI1143_ALS_VIS_DATA0 0x22 |
mitea1 | 0:f2815503561f | 56 | #define SI1143_ALS_VIS_DATA1 0x23 |
mitea1 | 0:f2815503561f | 57 | #define SI1143_ALS_IR_DATA0 0x24 |
mitea1 | 0:f2815503561f | 58 | #define SI1143_ALS_IR_DATA1 0x25 |
mitea1 | 0:f2815503561f | 59 | |
mitea1 | 0:f2815503561f | 60 | #define SI1143_PS1_DATA0 0x26 |
mitea1 | 0:f2815503561f | 61 | #define SI1143_PS1_DATA1 0x27 |
mitea1 | 0:f2815503561f | 62 | #define SI1143_PS2_DATA0 0x28 |
mitea1 | 0:f2815503561f | 63 | #define SI1143_PS2_DATA1 0x29 |
mitea1 | 0:f2815503561f | 64 | #define SI1143_PS3_DATA0 0x2A |
mitea1 | 0:f2815503561f | 65 | #define SI1143_PS3_DATA1 0x2B |
mitea1 | 0:f2815503561f | 66 | |
mitea1 | 0:f2815503561f | 67 | |
mitea1 | 0:f2815503561f | 68 | #define SI1143_AUX_DATA0 0x2C |
mitea1 | 0:f2815503561f | 69 | #define SI1143_AUX_DATA1 0x2D |
mitea1 | 0:f2815503561f | 70 | |
mitea1 | 0:f2815503561f | 71 | #define SI1143_PARAM_RD 0x2E |
mitea1 | 0:f2815503561f | 72 | #define SI1143_CHIP_STAT 0x30 |
mitea1 | 0:f2815503561f | 73 | #define SI1143_ANA_IN_KEY 0x3B |
mitea1 | 0:f2815503561f | 74 | |
mitea1 | 0:f2815503561f | 75 | // Command Register Values |
mitea1 | 0:f2815503561f | 76 | |
mitea1 | 0:f2815503561f | 77 | #define SI1143_PARAM_QUERY 0x80 //Value is ORed with Parameter Offset |
mitea1 | 0:f2815503561f | 78 | #define SI1143_PARAM_SET 0xA0 //Value is ORed with Parameter Offset |
mitea1 | 0:f2815503561f | 79 | #define SI1143_PARAM_AND 0xC0 //Value is ORed with Parameter Offset |
mitea1 | 0:f2815503561f | 80 | #define SI1143_PARAM_OR 0xE0 //Value is ORed with Parameter Offset |
mitea1 | 0:f2815503561f | 81 | #define SI1143_NOP 0x00 |
mitea1 | 0:f2815503561f | 82 | #define SI1143_RESET 0x01 |
mitea1 | 0:f2815503561f | 83 | #define SI1143_BUSADDR 0x02 |
mitea1 | 0:f2815503561f | 84 | #define SI1143_PS_FORCE 0x05 |
mitea1 | 0:f2815503561f | 85 | #define SI1143_ALS_FORCE 0x06 |
mitea1 | 0:f2815503561f | 86 | #define SI1143_PSALS_FORCE 0x07 |
mitea1 | 0:f2815503561f | 87 | #define SI1143_PS_PAUSE 0x09 |
mitea1 | 0:f2815503561f | 88 | #define SI1143_ALS_PAUSE 0x0A |
mitea1 | 0:f2815503561f | 89 | #define SI1143_PSALS_PAUSE 0x0B |
mitea1 | 0:f2815503561f | 90 | #define SI1143_PS_AUTO 0x0D |
mitea1 | 0:f2815503561f | 91 | #define SI1143_ALS_AUTO 0x0E |
mitea1 | 0:f2815503561f | 92 | #define SI1143_PSALS_AUTO 0x0F |
mitea1 | 0:f2815503561f | 93 | |
mitea1 | 0:f2815503561f | 94 | // Ram Addresses |
mitea1 | 0:f2815503561f | 95 | |
mitea1 | 0:f2815503561f | 96 | #define SI1143_I2C_ADDR 0x00 |
mitea1 | 0:f2815503561f | 97 | #define SI1143_CHLIST 0x01 |
mitea1 | 0:f2815503561f | 98 | #define SI1143_PSLED12_SELECT 0x02 |
mitea1 | 0:f2815503561f | 99 | #define SI1143_PSLED3_SELECT 0x03 |
mitea1 | 0:f2815503561f | 100 | #define SI1143_FILTER_EN 0x04 |
mitea1 | 0:f2815503561f | 101 | #define SI1143_PS_ENCODING 0x05 |
mitea1 | 0:f2815503561f | 102 | #define SI1143_ALS_ENCODING 0x06 |
mitea1 | 0:f2815503561f | 103 | #define SI1143_PS1_ADCMUX 0x07 |
mitea1 | 0:f2815503561f | 104 | #define SI1143_PS2_ADCMUX 0x08 |
mitea1 | 0:f2815503561f | 105 | #define SI1143_PS3_ADCMUX 0x09 |
mitea1 | 0:f2815503561f | 106 | #define SI1143_PS_ADC_COUNTER 0x0A |
mitea1 | 0:f2815503561f | 107 | #define SI1143_PS_ADC_GAIN 0x0B |
mitea1 | 0:f2815503561f | 108 | #define SI1143_PS_ADC_MISC 0x0C |
mitea1 | 0:f2815503561f | 109 | #define SI1143_ALS1_ADCMUX 0x0D |
mitea1 | 0:f2815503561f | 110 | #define SI1143_ALS2_ADCMUX 0x0E |
mitea1 | 0:f2815503561f | 111 | #define SI1143_ALS3_ADCMUX 0x0F |
mitea1 | 0:f2815503561f | 112 | #define SI1143_ALS_VIS_ADC_COUNTER 0x10 |
mitea1 | 0:f2815503561f | 113 | #define SI1143_ALS_VIS_ADC_GAIN 0x11 |
mitea1 | 0:f2815503561f | 114 | #define SI1143_ALS_VIS_ADC_MISC 0x12 |
mitea1 | 0:f2815503561f | 115 | #define SI1143_ALS_HYST 0x16 |
mitea1 | 0:f2815503561f | 116 | #define SI1143_PS_HYST 0x17 |
mitea1 | 0:f2815503561f | 117 | #define SI1143_PS_HISTORY 0x18 |
mitea1 | 0:f2815503561f | 118 | #define SI1143_ALS_HISTORY 0x19 |
mitea1 | 0:f2815503561f | 119 | #define SI1143_ADC_OFFSET 0x1A |
mitea1 | 0:f2815503561f | 120 | #define SI1143_SLEEP_CTRL 0x1B |
mitea1 | 0:f2815503561f | 121 | #define SI1143_LED_REC 0x1C |
mitea1 | 0:f2815503561f | 122 | #define SI1143_ALS_IR_ADC_COUNTER 0x1D |
mitea1 | 0:f2815503561f | 123 | #define SI1143_ALS_IR_ADC_GAIN 0x1E |
mitea1 | 0:f2815503561f | 124 | #define SI1143_ALS_IR_ADC_MISC 0x1F |
mitea1 | 0:f2815503561f | 125 | |
mitea1 | 0:f2815503561f | 126 | // Measurement Channel List |
mitea1 | 0:f2815503561f | 127 | |
mitea1 | 0:f2815503561f | 128 | #define SI1143_PS1_TASK 0x01 |
mitea1 | 0:f2815503561f | 129 | #define SI1143_PS2_TASK 0x02 |
mitea1 | 0:f2815503561f | 130 | #define SI1143_PS3_TASK 0x04 |
mitea1 | 0:f2815503561f | 131 | #define SI1143_ALS_VIS_TASK 0x10 |
mitea1 | 0:f2815503561f | 132 | #define SI1143_ALS_IR_TASK 0x20 |
mitea1 | 0:f2815503561f | 133 | #define SI1143_AUX_TASK 0x40 |
mitea1 | 0:f2815503561f | 134 | |
mitea1 | 0:f2815503561f | 135 | |
mitea1 | 0:f2815503561f | 136 | /** |
mitea1 | 0:f2815503561f | 137 | * @class SI1143 |
mitea1 | 0:f2815503561f | 138 | * @brief Provides Functionality to control the SI1143 Sensor on the Sensbert |
mitea1 | 0:f2815503561f | 139 | */ |
mitea1 | 0:f2815503561f | 140 | |
mitea1 | 0:f2815503561f | 141 | class SI1143 |
mitea1 | 0:f2815503561f | 142 | { |
mitea1 | 0:f2815503561f | 143 | public: |
mitea1 | 0:f2815503561f | 144 | SI1143(I2C_RT*); |
mitea1 | 0:f2815503561f | 145 | |
mitea1 | 0:f2815503561f | 146 | |
mitea1 | 0:f2815503561f | 147 | /** |
mitea1 | 0:f2815503561f | 148 | * @brief Initializes the SI1143 according to the desired SI1143_MODE |
mitea1 | 0:f2815503561f | 149 | * @param desiredMode the desired Mode depending on which the SI1143 has |
mitea1 | 0:f2815503561f | 150 | * to be configured |
mitea1 | 0:f2815503561f | 151 | */ |
mitea1 | 0:f2815503561f | 152 | void init(SI1143_MODE desiredMode); |
mitea1 | 0:f2815503561f | 153 | /** |
mitea1 | 0:f2815503561f | 154 | * @brief Restarts the Sensor and its functionality |
mitea1 | 0:f2815503561f | 155 | */ |
mitea1 | 0:f2815503561f | 156 | void restart(void); |
mitea1 | 0:f2815503561f | 157 | |
mitea1 | 0:f2815503561f | 158 | |
mitea1 | 0:f2815503561f | 159 | /** |
mitea1 | 0:f2815503561f | 160 | * @brief Get the actual proximity that has been measured |
mitea1 | 0:f2815503561f | 161 | * @param repeat how many time the measurement has been taken to get an average |
mitea1 | 0:f2815503561f | 162 | * proximity value |
mitea1 | 0:f2815503561f | 163 | * @return |
mitea1 | 0:f2815503561f | 164 | */ |
mitea1 | 0:f2815503561f | 165 | int getProximity(int repeat); |
mitea1 | 0:f2815503561f | 166 | |
mitea1 | 0:f2815503561f | 167 | /** |
mitea1 | 0:f2815503561f | 168 | * @brief Get the actual ambient light that has been measured |
mitea1 | 0:f2815503561f | 169 | * @param repeat how many time the measurement has been taken to get an average |
mitea1 | 0:f2815503561f | 170 | * ambient light value |
mitea1 | 0:f2815503561f | 171 | * @return |
mitea1 | 0:f2815503561f | 172 | */ |
mitea1 | 0:f2815503561f | 173 | int getAmbientLight(int repeat); |
mitea1 | 0:f2815503561f | 174 | |
mitea1 | 0:f2815503561f | 175 | /** |
mitea1 | 0:f2815503561f | 176 | * @brief Get the actual infrared light that has been measured |
mitea1 | 0:f2815503561f | 177 | * @param repeat how many time the measurement has been taken to get an average |
mitea1 | 0:f2815503561f | 178 | * infrared light value |
mitea1 | 0:f2815503561f | 179 | * @return |
mitea1 | 0:f2815503561f | 180 | */ |
mitea1 | 0:f2815503561f | 181 | int getInfraRedLight(int repeat); |
mitea1 | 0:f2815503561f | 182 | |
mitea1 | 0:f2815503561f | 183 | |
mitea1 | 0:f2815503561f | 184 | private: |
mitea1 | 0:f2815503561f | 185 | |
mitea1 | 0:f2815503561f | 186 | I2C* i2c_; |
mitea1 | 0:f2815503561f | 187 | I2C_RT* i2c; |
mitea1 | 0:f2815503561f | 188 | int bias1,bias2,bias3; |
mitea1 | 0:f2815503561f | 189 | |
mitea1 | 0:f2815503561f | 190 | SI1143Config* config; |
mitea1 | 0:f2815503561f | 191 | |
mitea1 | 0:f2815503561f | 192 | /** |
mitea1 | 0:f2815503561f | 193 | * @brief Sends commands via i2c to the command register. |
mitea1 | 0:f2815503561f | 194 | * Is used to control the Sensor |
mitea1 | 0:f2815503561f | 195 | * @param cmd command to be sent to the command register |
mitea1 | 0:f2815503561f | 196 | */ |
mitea1 | 0:f2815503561f | 197 | void command(uint8_t cmd); |
mitea1 | 0:f2815503561f | 198 | |
mitea1 | 0:f2815503561f | 199 | /** |
mitea1 | 0:f2815503561f | 200 | * @brief Configure SI1143 Interrupts internally |
mitea1 | 0:f2815503561f | 201 | * according to its SI1143Config |
mitea1 | 0:f2815503561f | 202 | */ |
mitea1 | 0:f2815503561f | 203 | void configureInterrupts(); |
mitea1 | 0:f2815503561f | 204 | |
mitea1 | 0:f2815503561f | 205 | /** |
mitea1 | 0:f2815503561f | 206 | * @brief Sets the proximity sensing threshold of led 1 |
mitea1 | 0:f2815503561f | 207 | * according to its SI1143Config |
mitea1 | 0:f2815503561f | 208 | */ |
mitea1 | 0:f2815503561f | 209 | void setProximitySensing1Threshold(); |
mitea1 | 0:f2815503561f | 210 | |
mitea1 | 0:f2815503561f | 211 | }; |
mitea1 | 0:f2815503561f | 212 | |
mitea1 | 0:f2815503561f | 213 | #endif /* SI1143_H_ */ |