lora sensnode

Dependencies:   libmDot mbed-rtos mbed

Fork of mDot_LoRa_Sensornode by Adrian Mitevski

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?

UserRevisionLine numberNew 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_ */