vlx lib

Committer:
vijaynvr
Date:
Sun Feb 08 14:26:51 2015 +0000
Revision:
0:bc9f26b5dadf
working

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vijaynvr 0:bc9f26b5dadf 1 /*******************************************************************************
vijaynvr 0:bc9f26b5dadf 2 ################################################################################
vijaynvr 0:bc9f26b5dadf 3 # (C) STMicroelectronics 2014
vijaynvr 0:bc9f26b5dadf 4 #
vijaynvr 0:bc9f26b5dadf 5 # This program is free software; you can redistribute it and/or modify it under
vijaynvr 0:bc9f26b5dadf 6 # the terms of the GNU General Public License version 2 and only version 2 as
vijaynvr 0:bc9f26b5dadf 7 # published by the Free Software Foundation.
vijaynvr 0:bc9f26b5dadf 8 #
vijaynvr 0:bc9f26b5dadf 9 # This program is distributed in the hope that it will be useful, but WITHOUT
vijaynvr 0:bc9f26b5dadf 10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
vijaynvr 0:bc9f26b5dadf 11 # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
vijaynvr 0:bc9f26b5dadf 12 # details.
vijaynvr 0:bc9f26b5dadf 13 #
vijaynvr 0:bc9f26b5dadf 14 # You should have received a copy of the GNU General Public License along with
vijaynvr 0:bc9f26b5dadf 15 # this program; if not, write to the Free Software Foundation, Inc.,
vijaynvr 0:bc9f26b5dadf 16 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
vijaynvr 0:bc9f26b5dadf 17 #
vijaynvr 0:bc9f26b5dadf 18 #------------------------------------------------------------------------------
vijaynvr 0:bc9f26b5dadf 19 # Imaging Division
vijaynvr 0:bc9f26b5dadf 20 ################################################################################
vijaynvr 0:bc9f26b5dadf 21 ********************************************************************************/
vijaynvr 0:bc9f26b5dadf 22
vijaynvr 0:bc9f26b5dadf 23 /*
vijaynvr 0:bc9f26b5dadf 24 '''
vijaynvr 0:bc9f26b5dadf 25 Application-level methods used for generic, system or identification operations.
vijaynvr 0:bc9f26b5dadf 26 '''
vijaynvr 0:bc9f26b5dadf 27 */
vijaynvr 0:bc9f26b5dadf 28
vijaynvr 0:bc9f26b5dadf 29 //-----------------------------------------------------------------------------
vijaynvr 0:bc9f26b5dadf 30 // module imports
vijaynvr 0:bc9f26b5dadf 31 //-----------------------------------------------------------------------------
vijaynvr 0:bc9f26b5dadf 32 #include "debug.h"
vijaynvr 0:bc9f26b5dadf 33 #include "common_driver.h"
vijaynvr 0:bc9f26b5dadf 34 #include "ranging_driver.h"
vijaynvr 0:bc9f26b5dadf 35
vijaynvr 0:bc9f26b5dadf 36 //-----------------------------------------------------------------------------
vijaynvr 0:bc9f26b5dadf 37 // global variable declarations
vijaynvr 0:bc9f26b5dadf 38 //-----------------------------------------------------------------------------
vijaynvr 0:bc9f26b5dadf 39
vijaynvr 0:bc9f26b5dadf 40 //-----------------------------------------------------------------------------
vijaynvr 0:bc9f26b5dadf 41 // method definitions
vijaynvr 0:bc9f26b5dadf 42 //-----------------------------------------------------------------------------
vijaynvr 0:bc9f26b5dadf 43
vijaynvr 0:bc9f26b5dadf 44 sensor_error common_initialise(uint8_t device_base_address)
vijaynvr 0:bc9f26b5dadf 45 {
vijaynvr 0:bc9f26b5dadf 46
vijaynvr 0:bc9f26b5dadf 47 LOG_FUNCTION_START((void*)&device_base_address);
vijaynvr 0:bc9f26b5dadf 48
vijaynvr 0:bc9f26b5dadf 49 i2c_initialise(device_base_address);
vijaynvr 0:bc9f26b5dadf 50
vijaynvr 0:bc9f26b5dadf 51 LOG_FUNCTION_END(NULL);
vijaynvr 0:bc9f26b5dadf 52
vijaynvr 0:bc9f26b5dadf 53 return SENSOR_ERROR_NONE;
vijaynvr 0:bc9f26b5dadf 54 }
vijaynvr 0:bc9f26b5dadf 55
vijaynvr 0:bc9f26b5dadf 56 sensor_error common_set_static_config(uint8_t device_base_address)
vijaynvr 0:bc9f26b5dadf 57 {
vijaynvr 0:bc9f26b5dadf 58 int8_t reset;
vijaynvr 0:bc9f26b5dadf 59
vijaynvr 0:bc9f26b5dadf 60 LOG_FUNCTION_START((void*)&device_base_address);
vijaynvr 0:bc9f26b5dadf 61 reset = i2c_read_byte(0x016, device_base_address);
vijaynvr 0:bc9f26b5dadf 62 if (reset==1)
vijaynvr 0:bc9f26b5dadf 63 {
vijaynvr 0:bc9f26b5dadf 64 // check to see has it be Initialised already
vijaynvr 0:bc9f26b5dadf 65 //REGISTER_TUNING_SR03_270514_CustomerView.txt
vijaynvr 0:bc9f26b5dadf 66
vijaynvr 0:bc9f26b5dadf 67 // Mandatory : private registers
vijaynvr 0:bc9f26b5dadf 68 i2c_write_byte(0x0207, 0x01, device_base_address);
vijaynvr 0:bc9f26b5dadf 69 i2c_write_byte(0x0208, 0x01, device_base_address);
vijaynvr 0:bc9f26b5dadf 70 i2c_write_byte(0x0096, 0x00, device_base_address);
vijaynvr 0:bc9f26b5dadf 71 i2c_write_byte(0x0097, 0xfd, device_base_address);
vijaynvr 0:bc9f26b5dadf 72 i2c_write_byte(0x00e3, 0x00, device_base_address);
vijaynvr 0:bc9f26b5dadf 73 i2c_write_byte(0x00e4, 0x04, device_base_address);
vijaynvr 0:bc9f26b5dadf 74 i2c_write_byte(0x00e5, 0x02, device_base_address);
vijaynvr 0:bc9f26b5dadf 75 i2c_write_byte(0x00e6, 0x01, device_base_address);
vijaynvr 0:bc9f26b5dadf 76 i2c_write_byte(0x00e7, 0x03, device_base_address);
vijaynvr 0:bc9f26b5dadf 77 i2c_write_byte(0x00f5, 0x02, device_base_address);
vijaynvr 0:bc9f26b5dadf 78 i2c_write_byte(0x00d9, 0x05, device_base_address);
vijaynvr 0:bc9f26b5dadf 79 i2c_write_byte(0x00db, 0xce, device_base_address);
vijaynvr 0:bc9f26b5dadf 80 i2c_write_byte(0x00dc, 0x03, device_base_address);
vijaynvr 0:bc9f26b5dadf 81 i2c_write_byte(0x00dd, 0xf8, device_base_address);
vijaynvr 0:bc9f26b5dadf 82 i2c_write_byte(0x009f, 0x00, device_base_address);
vijaynvr 0:bc9f26b5dadf 83 i2c_write_byte(0x00a3, 0x3c, device_base_address);
vijaynvr 0:bc9f26b5dadf 84 i2c_write_byte(0x00b7, 0x00, device_base_address);
vijaynvr 0:bc9f26b5dadf 85 i2c_write_byte(0x00bb, 0x3c, device_base_address);
vijaynvr 0:bc9f26b5dadf 86 i2c_write_byte(0x00b2, 0x09, device_base_address);
vijaynvr 0:bc9f26b5dadf 87 i2c_write_byte(0x00ca, 0x09, device_base_address);
vijaynvr 0:bc9f26b5dadf 88 i2c_write_byte(0x0198, 0x01, device_base_address);
vijaynvr 0:bc9f26b5dadf 89 i2c_write_byte(0x01b0, 0x17, device_base_address);
vijaynvr 0:bc9f26b5dadf 90 i2c_write_byte(0x01ad, 0x00, device_base_address);
vijaynvr 0:bc9f26b5dadf 91 i2c_write_byte(0x00ff, 0x05, device_base_address);
vijaynvr 0:bc9f26b5dadf 92 i2c_write_byte(0x0100, 0x05, device_base_address);
vijaynvr 0:bc9f26b5dadf 93 i2c_write_byte(0x0199, 0x05, device_base_address);
vijaynvr 0:bc9f26b5dadf 94 i2c_write_byte(0x01a6, 0x1b, device_base_address);
vijaynvr 0:bc9f26b5dadf 95 i2c_write_byte(0x01ac, 0x3e, device_base_address);
vijaynvr 0:bc9f26b5dadf 96 i2c_write_byte(0x01a7, 0x1f, device_base_address);
vijaynvr 0:bc9f26b5dadf 97 i2c_write_byte(0x0030, 0x00, device_base_address);
vijaynvr 0:bc9f26b5dadf 98
vijaynvr 0:bc9f26b5dadf 99 // Recommended : Public registers - See data sheet for more detail
vijaynvr 0:bc9f26b5dadf 100 i2c_write_byte(0x0011, 0x10, device_base_address); // Enables polling for ¡®New Sample ready¡¯ when measurement completes
vijaynvr 0:bc9f26b5dadf 101 i2c_write_byte(0x010a, 0x30, device_base_address); // Set the averaging sample period (compromise between lower noise and increased execution time)
vijaynvr 0:bc9f26b5dadf 102 i2c_write_byte(0x003f, 0x46, device_base_address); // Sets the light and dark gain (upper nibble). Dark gain should not be changed.
vijaynvr 0:bc9f26b5dadf 103 i2c_write_byte(0x0031, 0xFF, device_base_address); // sets the # of range measurements after which auto calibration of system is performed
vijaynvr 0:bc9f26b5dadf 104 i2c_write_byte(0x0040, 0x63, device_base_address); // Set ALS integration time to 100ms
vijaynvr 0:bc9f26b5dadf 105 i2c_write_byte(0x002e, 0x01, device_base_address); // perform a single temperature calibration of the ranging sensor
vijaynvr 0:bc9f26b5dadf 106
vijaynvr 0:bc9f26b5dadf 107 // Optional: Public registers - See data sheet for more detail
vijaynvr 0:bc9f26b5dadf 108 i2c_write_byte(0x001b, 0x09, device_base_address); // Set default ranging inter-measurement period to 100ms
vijaynvr 0:bc9f26b5dadf 109 i2c_write_byte(0x003e, 0x31, device_base_address); // Set default ALS inter-measurement period to 500ms
vijaynvr 0:bc9f26b5dadf 110 i2c_write_byte(0x0014, 0x24, device_base_address); // Configures interrupt on ¡®New sample ready¡¯
vijaynvr 0:bc9f26b5dadf 111
vijaynvr 0:bc9f26b5dadf 112 // extra stuff
vijaynvr 0:bc9f26b5dadf 113 i2c_write_byte(0x016, 0x00, device_base_address); // change fresh out of set status to 0
vijaynvr 0:bc9f26b5dadf 114
vijaynvr 0:bc9f26b5dadf 115 }
vijaynvr 0:bc9f26b5dadf 116
vijaynvr 0:bc9f26b5dadf 117 // VHV automatically run on parts that are NVM-programmed, ie customer parts!
vijaynvr 0:bc9f26b5dadf 118
vijaynvr 0:bc9f26b5dadf 119 range_set_max_convergence_time(device_base_address, 50); // Calculate ece value on initialisation (use max conv)
vijaynvr 0:bc9f26b5dadf 120 LOG_FUNCTION_END(NULL);
vijaynvr 0:bc9f26b5dadf 121
vijaynvr 0:bc9f26b5dadf 122 return SENSOR_ERROR_NONE;
vijaynvr 0:bc9f26b5dadf 123 }
vijaynvr 0:bc9f26b5dadf 124
vijaynvr 0:bc9f26b5dadf 125 sensor_error common_get_identification(uint8_t device_base_address)
vijaynvr 0:bc9f26b5dadf 126 {
vijaynvr 0:bc9f26b5dadf 127 /*
vijaynvr 0:bc9f26b5dadf 128 return_list = []
vijaynvr 0:bc9f26b5dadf 129
vijaynvr 0:bc9f26b5dadf 130 # I2C base address is 8-bit indexing
vijaynvr 0:bc9f26b5dadf 131 I2C_base_address = I2C_ReadReg_CCI(I2C_SLAVE_DEVICE_ADDRESS, I2C_ADDR);
vijaynvr 0:bc9f26b5dadf 132 I2C_base_address *= 2 # convert from 7-bit to 8-bit address
vijaynvr 0:bc9f26b5dadf 133
vijaynvr 0:bc9f26b5dadf 134 # reading from indices 0x00-0x0B
vijaynvr 0:bc9f26b5dadf 135 regs = Utilities.device.comms['read'](I2C_base_address, 0x00, 0x0C)
vijaynvr 0:bc9f26b5dadf 136
vijaynvr 0:bc9f26b5dadf 137 identification_model_id = regs[0x00]
vijaynvr 0:bc9f26b5dadf 138 identification_model_rev_major = regs[0x01]
vijaynvr 0:bc9f26b5dadf 139 identification_model_rev_minor = regs[0x02]
vijaynvr 0:bc9f26b5dadf 140 identification_module_rev_major = regs[0x03]
vijaynvr 0:bc9f26b5dadf 141 identification_module_rev_minor = regs[0x04]
vijaynvr 0:bc9f26b5dadf 142 identification_nvm_revision_id = regs[0x05] & 0x0F
vijaynvr 0:bc9f26b5dadf 143 identification_mask_revision_id = (regs[0x05] & 0xF0) >> 4
vijaynvr 0:bc9f26b5dadf 144 identification_month = regs[0x06] & 0x0F
vijaynvr 0:bc9f26b5dadf 145 identification_year = (regs[0x06] & 0xF0) >> 4
vijaynvr 0:bc9f26b5dadf 146 identification_phase = regs[0x07] & 0x0F
vijaynvr 0:bc9f26b5dadf 147 identification_day = (regs[0x07] & 0xF0) >> 4
vijaynvr 0:bc9f26b5dadf 148 identification_time = (regs[0x08] << 8) + regs[0x09]
vijaynvr 0:bc9f26b5dadf 149 identification_code = regs[0x0A]
vijaynvr 0:bc9f26b5dadf 150 firmware_revision_id = regs[0x0B]
vijaynvr 0:bc9f26b5dadf 151
vijaynvr 0:bc9f26b5dadf 152 return_list.append( identification_model_id )
vijaynvr 0:bc9f26b5dadf 153 return_list.append( identification_model_rev_major )
vijaynvr 0:bc9f26b5dadf 154 return_list.append( identification_model_rev_minor )
vijaynvr 0:bc9f26b5dadf 155 return_list.append( identification_module_rev_major )
vijaynvr 0:bc9f26b5dadf 156 return_list.append( identification_module_rev_minor )
vijaynvr 0:bc9f26b5dadf 157 return_list.append( identification_nvm_revision_id )
vijaynvr 0:bc9f26b5dadf 158 return_list.append( identification_mask_revision_id )
vijaynvr 0:bc9f26b5dadf 159 return_list.append( identification_month )
vijaynvr 0:bc9f26b5dadf 160 return_list.append( identification_year )
vijaynvr 0:bc9f26b5dadf 161 return_list.append( identification_phase )
vijaynvr 0:bc9f26b5dadf 162 return_list.append( identification_day )
vijaynvr 0:bc9f26b5dadf 163 return_list.append( identification_time )
vijaynvr 0:bc9f26b5dadf 164 return_list.append( identification_code )
vijaynvr 0:bc9f26b5dadf 165 return_list.append( firmware_revision_id )
vijaynvr 0:bc9f26b5dadf 166 return return_list
vijaynvr 0:bc9f26b5dadf 167 */
vijaynvr 0:bc9f26b5dadf 168 return SENSOR_ERROR_NONE;
vijaynvr 0:bc9f26b5dadf 169 }
vijaynvr 0:bc9f26b5dadf 170
vijaynvr 0:bc9f26b5dadf 171
vijaynvr 0:bc9f26b5dadf 172 sensor_error common_set_i2c_base_address(uint8_t device_base_address, uint32_t new_i2c_base_address)
vijaynvr 0:bc9f26b5dadf 173 {
vijaynvr 0:bc9f26b5dadf 174 //# reduce 8-bit address to a 7-bit address
vijaynvr 0:bc9f26b5dadf 175 LOG_FUNCTION_START((void*)&device_base_address,(void*)&new_i2c_base_address);
vijaynvr 0:bc9f26b5dadf 176
vijaynvr 0:bc9f26b5dadf 177 i2c_write_byte(I2C_SLAVE_DEVICE_ADDRESS, (new_i2c_base_address >> 1), device_base_address);
vijaynvr 0:bc9f26b5dadf 178
vijaynvr 0:bc9f26b5dadf 179 LOG_FUNCTION_END(NULL);
vijaynvr 0:bc9f26b5dadf 180
vijaynvr 0:bc9f26b5dadf 181 return SENSOR_ERROR_NONE;
vijaynvr 0:bc9f26b5dadf 182 }
vijaynvr 0:bc9f26b5dadf 183
vijaynvr 0:bc9f26b5dadf 184 sensor_error common_set_i2c_pad_voltage(uint8_t device_base_address, uint8_t pad_voltage)
vijaynvr 0:bc9f26b5dadf 185 {
vijaynvr 0:bc9f26b5dadf 186 uint8_t padConfigReg;
vijaynvr 0:bc9f26b5dadf 187
vijaynvr 0:bc9f26b5dadf 188 LOG_FUNCTION_START((void*)&device_base_address,(void*)&pad_voltage);
vijaynvr 0:bc9f26b5dadf 189
vijaynvr 0:bc9f26b5dadf 190 padConfigReg = i2c_read_byte(PAD_I2C_CONFIG, device_base_address);
vijaynvr 0:bc9f26b5dadf 191 if (pad_voltage == I2C_1v2_PAD_VOLTAGE)
vijaynvr 0:bc9f26b5dadf 192 {
vijaynvr 0:bc9f26b5dadf 193 i2c_write_byte(PAD_I2C_CONFIG, (padConfigReg & 0xFE), device_base_address); // clear bit 0
vijaynvr 0:bc9f26b5dadf 194 }
vijaynvr 0:bc9f26b5dadf 195
vijaynvr 0:bc9f26b5dadf 196 if (pad_voltage == I2C_2v8_PAD_VOLTAGE)
vijaynvr 0:bc9f26b5dadf 197 {
vijaynvr 0:bc9f26b5dadf 198 i2c_write_byte(PAD_I2C_CONFIG, (padConfigReg & 0x01), device_base_address); // set bit 0
vijaynvr 0:bc9f26b5dadf 199 }
vijaynvr 0:bc9f26b5dadf 200
vijaynvr 0:bc9f26b5dadf 201 LOG_FUNCTION_END(NULL);
vijaynvr 0:bc9f26b5dadf 202
vijaynvr 0:bc9f26b5dadf 203 return SENSOR_ERROR_NONE;
vijaynvr 0:bc9f26b5dadf 204 }
vijaynvr 0:bc9f26b5dadf 205
vijaynvr 0:bc9f26b5dadf 206 uint8_t common_get_i2c_pad_voltage(uint8_t device_base_address)
vijaynvr 0:bc9f26b5dadf 207 {
vijaynvr 0:bc9f26b5dadf 208 uint8_t ret=0;
vijaynvr 0:bc9f26b5dadf 209
vijaynvr 0:bc9f26b5dadf 210 LOG_FUNCTION_START((void*)&device_base_address);
vijaynvr 0:bc9f26b5dadf 211
vijaynvr 0:bc9f26b5dadf 212 if (!(i2c_read_byte(PAD_I2C_CONFIG, device_base_address) & 0xFE)) // test that bit 0 is clear!
vijaynvr 0:bc9f26b5dadf 213 {
vijaynvr 0:bc9f26b5dadf 214 ret = I2C_1v2_PAD_VOLTAGE;
vijaynvr 0:bc9f26b5dadf 215 }
vijaynvr 0:bc9f26b5dadf 216 else if (i2c_read_byte(PAD_I2C_CONFIG, device_base_address) & 0x01) // test that bit 0 is set!
vijaynvr 0:bc9f26b5dadf 217 {
vijaynvr 0:bc9f26b5dadf 218 ret = I2C_2v8_PAD_VOLTAGE;
vijaynvr 0:bc9f26b5dadf 219 }
vijaynvr 0:bc9f26b5dadf 220
vijaynvr 0:bc9f26b5dadf 221 LOG_FUNCTION_END(ret);
vijaynvr 0:bc9f26b5dadf 222
vijaynvr 0:bc9f26b5dadf 223 return ret;
vijaynvr 0:bc9f26b5dadf 224 }
vijaynvr 0:bc9f26b5dadf 225
vijaynvr 0:bc9f26b5dadf 226 sensor_error common_set_system_mode_gpio0(uint8_t device_base_address, uint8_t mode, uint8_t select, uint8_t polarity)
vijaynvr 0:bc9f26b5dadf 227 {
vijaynvr 0:bc9f26b5dadf 228 uint8_t gpioModeReg;
vijaynvr 0:bc9f26b5dadf 229 uint8_t gpio_select;
vijaynvr 0:bc9f26b5dadf 230 sensor_error ret = SENSOR_ERROR_NONE;
vijaynvr 0:bc9f26b5dadf 231
vijaynvr 0:bc9f26b5dadf 232 LOG_FUNCTION_START((void*)&device_base_address,(void*)&mode, (void*)&select, (void*)&polarity);
vijaynvr 0:bc9f26b5dadf 233
vijaynvr 0:bc9f26b5dadf 234 switch (select)
vijaynvr 0:bc9f26b5dadf 235 {
vijaynvr 0:bc9f26b5dadf 236 case GPIOx_SELECT_OFF :
vijaynvr 0:bc9f26b5dadf 237 case GPIOx_SELECT_MEASURE_READY :
vijaynvr 0:bc9f26b5dadf 238 case GPIOx_SELECT_DISABLED :
vijaynvr 0:bc9f26b5dadf 239 case GPIOx_SELECT_GPIO_INTERRUPT_OUTPUT :
vijaynvr 0:bc9f26b5dadf 240 gpioModeReg = i2c_read_byte(SYSTEM_MODE_GPIO0, device_base_address);
vijaynvr 0:bc9f26b5dadf 241 gpioModeReg = gpioModeReg & 0x21; // preserve only the mode & polarity bits from the register contents!
vijaynvr 0:bc9f26b5dadf 242 gpio_select = select << 1; // move up 1 bit, to make mask for bits 1-4
vijaynvr 0:bc9f26b5dadf 243
vijaynvr 0:bc9f26b5dadf 244 i2c_write_byte(SYSTEM_MODE_GPIO0,
vijaynvr 0:bc9f26b5dadf 245 (gpioModeReg | gpio_select),
vijaynvr 0:bc9f26b5dadf 246 device_base_address);
vijaynvr 0:bc9f26b5dadf 247 break;
vijaynvr 0:bc9f26b5dadf 248 default :
vijaynvr 0:bc9f26b5dadf 249 ret = COMMON_INVALID_PARAMS;
vijaynvr 0:bc9f26b5dadf 250 break;
vijaynvr 0:bc9f26b5dadf 251 }
vijaynvr 0:bc9f26b5dadf 252
vijaynvr 0:bc9f26b5dadf 253 if ((mode == GPIOx_MODE_SELECT_RANGING) || (mode == GPIOx_MODE_SELECT_ALS))
vijaynvr 0:bc9f26b5dadf 254 {
vijaynvr 0:bc9f26b5dadf 255 gpioModeReg = i2c_read_byte(SYSTEM_MODE_GPIO0, device_base_address);
vijaynvr 0:bc9f26b5dadf 256 i2c_write_byte(SYSTEM_MODE_GPIO0,
vijaynvr 0:bc9f26b5dadf 257 (gpioModeReg | mode),
vijaynvr 0:bc9f26b5dadf 258 device_base_address);
vijaynvr 0:bc9f26b5dadf 259 }
vijaynvr 0:bc9f26b5dadf 260 else
vijaynvr 0:bc9f26b5dadf 261 {
vijaynvr 0:bc9f26b5dadf 262 ret = COMMON_INVALID_PARAMS;
vijaynvr 0:bc9f26b5dadf 263 }
vijaynvr 0:bc9f26b5dadf 264
vijaynvr 0:bc9f26b5dadf 265 gpioModeReg = i2c_read_byte(SYSTEM_MODE_GPIO0, device_base_address);
vijaynvr 0:bc9f26b5dadf 266 if (polarity == GPIOx_POLARITY_SELECT_OFF)
vijaynvr 0:bc9f26b5dadf 267 {
vijaynvr 0:bc9f26b5dadf 268 i2c_write_byte(SYSTEM_MODE_GPIO0,
vijaynvr 0:bc9f26b5dadf 269 (gpioModeReg & GPIOx_POLARITY_SELECT_CLEARED),
vijaynvr 0:bc9f26b5dadf 270 device_base_address);
vijaynvr 0:bc9f26b5dadf 271 }
vijaynvr 0:bc9f26b5dadf 272 else if (polarity == GPIOx_POLARITY_SELECT_ON)
vijaynvr 0:bc9f26b5dadf 273 {
vijaynvr 0:bc9f26b5dadf 274 i2c_write_byte(SYSTEM_MODE_GPIO0,
vijaynvr 0:bc9f26b5dadf 275 (gpioModeReg | GPIOx_POLARITY_SELECT),
vijaynvr 0:bc9f26b5dadf 276 device_base_address);
vijaynvr 0:bc9f26b5dadf 277 }
vijaynvr 0:bc9f26b5dadf 278
vijaynvr 0:bc9f26b5dadf 279 LOG_FUNCTION_END(ret);
vijaynvr 0:bc9f26b5dadf 280
vijaynvr 0:bc9f26b5dadf 281 return ret;
vijaynvr 0:bc9f26b5dadf 282 }
vijaynvr 0:bc9f26b5dadf 283
vijaynvr 0:bc9f26b5dadf 284 sensor_error common_set_gpio0_mode(uint8_t device_base_address, uint8_t mode)
vijaynvr 0:bc9f26b5dadf 285 {
vijaynvr 0:bc9f26b5dadf 286 uint8_t gpioModeReg;
vijaynvr 0:bc9f26b5dadf 287 sensor_error ret = SENSOR_ERROR_NONE;
vijaynvr 0:bc9f26b5dadf 288
vijaynvr 0:bc9f26b5dadf 289 LOG_FUNCTION_START((void*)&device_base_address,(void*)&mode);
vijaynvr 0:bc9f26b5dadf 290
vijaynvr 0:bc9f26b5dadf 291 gpioModeReg = i2c_read_byte(SYSTEM_MODE_GPIO0, device_base_address);
vijaynvr 0:bc9f26b5dadf 292 if ((mode == GPIOx_MODE_SELECT_RANGING) || (mode == GPIOx_MODE_SELECT_ALS))
vijaynvr 0:bc9f26b5dadf 293 {
vijaynvr 0:bc9f26b5dadf 294 i2c_write_byte(SYSTEM_MODE_GPIO0, (gpioModeReg | mode), device_base_address);
vijaynvr 0:bc9f26b5dadf 295 }
vijaynvr 0:bc9f26b5dadf 296 else
vijaynvr 0:bc9f26b5dadf 297 {
vijaynvr 0:bc9f26b5dadf 298 ret = COMMON_INVALID_PARAMS;
vijaynvr 0:bc9f26b5dadf 299 }
vijaynvr 0:bc9f26b5dadf 300
vijaynvr 0:bc9f26b5dadf 301 LOG_FUNCTION_END(ret);
vijaynvr 0:bc9f26b5dadf 302
vijaynvr 0:bc9f26b5dadf 303 return ret;
vijaynvr 0:bc9f26b5dadf 304 }
vijaynvr 0:bc9f26b5dadf 305
vijaynvr 0:bc9f26b5dadf 306 uint8_t common_get_gpio0_mode(uint8_t device_base_address)
vijaynvr 0:bc9f26b5dadf 307 {
vijaynvr 0:bc9f26b5dadf 308 uint8_t ret=0;
vijaynvr 0:bc9f26b5dadf 309
vijaynvr 0:bc9f26b5dadf 310 LOG_FUNCTION_START((void*)&device_base_address);
vijaynvr 0:bc9f26b5dadf 311
vijaynvr 0:bc9f26b5dadf 312 if (i2c_read_byte(SYSTEM_MODE_GPIO0, device_base_address) & GPIOx_MODE_SELECT)
vijaynvr 0:bc9f26b5dadf 313 {
vijaynvr 0:bc9f26b5dadf 314 ret = 1;
vijaynvr 0:bc9f26b5dadf 315 }
vijaynvr 0:bc9f26b5dadf 316 else
vijaynvr 0:bc9f26b5dadf 317 {
vijaynvr 0:bc9f26b5dadf 318 ret = 0;
vijaynvr 0:bc9f26b5dadf 319 }
vijaynvr 0:bc9f26b5dadf 320
vijaynvr 0:bc9f26b5dadf 321 LOG_FUNCTION_END(ret);
vijaynvr 0:bc9f26b5dadf 322
vijaynvr 0:bc9f26b5dadf 323 return ret;
vijaynvr 0:bc9f26b5dadf 324 }
vijaynvr 0:bc9f26b5dadf 325
vijaynvr 0:bc9f26b5dadf 326 sensor_error common_set_gpio0_select(uint8_t device_base_address, uint8_t select)
vijaynvr 0:bc9f26b5dadf 327 {
vijaynvr 0:bc9f26b5dadf 328 uint8_t gpio_select;
vijaynvr 0:bc9f26b5dadf 329 uint8_t gpioModeReg;
vijaynvr 0:bc9f26b5dadf 330 sensor_error ret = SENSOR_ERROR_NONE;
vijaynvr 0:bc9f26b5dadf 331
vijaynvr 0:bc9f26b5dadf 332 LOG_FUNCTION_START((void*)&device_base_address,(void*)&select);
vijaynvr 0:bc9f26b5dadf 333
vijaynvr 0:bc9f26b5dadf 334 switch (select)
vijaynvr 0:bc9f26b5dadf 335 {
vijaynvr 0:bc9f26b5dadf 336 case GPIOx_SELECT_OFF:
vijaynvr 0:bc9f26b5dadf 337 case GPIOx_SELECT_MEASURE_READY:
vijaynvr 0:bc9f26b5dadf 338 case GPIOx_SELECT_THRESHOLD_OUTPUT:
vijaynvr 0:bc9f26b5dadf 339 case GPIOx_SELECT_BLANK_IN:
vijaynvr 0:bc9f26b5dadf 340 case GPIOx_SELECT_BLANK_OUT:
vijaynvr 0:bc9f26b5dadf 341 case GPIOx_SELECT_START_STOP:
vijaynvr 0:bc9f26b5dadf 342 case GPIOx_SELECT_DISABLED:
vijaynvr 0:bc9f26b5dadf 343 case GPIOx_SELECT_COMBINED_THRESHOLD_OUTPUT:
vijaynvr 0:bc9f26b5dadf 344 case GPIOx_SELECT_GPIO_INTERRUPT_OUTPUT:
vijaynvr 0:bc9f26b5dadf 345 gpioModeReg = i2c_read_byte(SYSTEM_MODE_GPIO0, device_base_address);
vijaynvr 0:bc9f26b5dadf 346 gpio_select = select << 1; // move up 1 bit, to make mask for bits 1-4
vijaynvr 0:bc9f26b5dadf 347 i2c_write_byte(SYSTEM_MODE_GPIO0, (gpioModeReg | gpio_select), device_base_address);
vijaynvr 0:bc9f26b5dadf 348 break;
vijaynvr 0:bc9f26b5dadf 349 default :
vijaynvr 0:bc9f26b5dadf 350 ret = COMMON_INVALID_PARAMS;
vijaynvr 0:bc9f26b5dadf 351 break;
vijaynvr 0:bc9f26b5dadf 352 }
vijaynvr 0:bc9f26b5dadf 353
vijaynvr 0:bc9f26b5dadf 354 LOG_FUNCTION_END(ret);
vijaynvr 0:bc9f26b5dadf 355
vijaynvr 0:bc9f26b5dadf 356 return ret;
vijaynvr 0:bc9f26b5dadf 357 }
vijaynvr 0:bc9f26b5dadf 358
vijaynvr 0:bc9f26b5dadf 359 uint8_t common_get_gpio0_select(uint8_t device_base_address)
vijaynvr 0:bc9f26b5dadf 360 {
vijaynvr 0:bc9f26b5dadf 361 uint8_t gpioModeReg;
vijaynvr 0:bc9f26b5dadf 362 uint8_t gpio_select;
vijaynvr 0:bc9f26b5dadf 363 uint8_t ret=0;
vijaynvr 0:bc9f26b5dadf 364
vijaynvr 0:bc9f26b5dadf 365 LOG_FUNCTION_START((void*)&device_base_address);
vijaynvr 0:bc9f26b5dadf 366
vijaynvr 0:bc9f26b5dadf 367 gpioModeReg = i2c_read_byte(SYSTEM_MODE_GPIO0, device_base_address);
vijaynvr 0:bc9f26b5dadf 368 gpio_select = (gpioModeReg & 0x1E) >> 1; // mask only bits 1-4
vijaynvr 0:bc9f26b5dadf 369 switch (gpio_select)
vijaynvr 0:bc9f26b5dadf 370 {
vijaynvr 0:bc9f26b5dadf 371 case GPIOx_SELECT_OFF:
vijaynvr 0:bc9f26b5dadf 372 ret = GPIOx_SELECT_OFF;
vijaynvr 0:bc9f26b5dadf 373 break;
vijaynvr 0:bc9f26b5dadf 374 case GPIOx_SELECT_MEASURE_READY:
vijaynvr 0:bc9f26b5dadf 375 ret = GPIOx_SELECT_MEASURE_READY;
vijaynvr 0:bc9f26b5dadf 376 break;
vijaynvr 0:bc9f26b5dadf 377 case GPIOx_SELECT_THRESHOLD_OUTPUT:
vijaynvr 0:bc9f26b5dadf 378 ret = GPIOx_SELECT_THRESHOLD_OUTPUT;
vijaynvr 0:bc9f26b5dadf 379 break;
vijaynvr 0:bc9f26b5dadf 380 case GPIOx_SELECT_BLANK_IN:
vijaynvr 0:bc9f26b5dadf 381 ret = GPIOx_SELECT_BLANK_IN;
vijaynvr 0:bc9f26b5dadf 382 break;
vijaynvr 0:bc9f26b5dadf 383 case GPIOx_SELECT_BLANK_OUT:
vijaynvr 0:bc9f26b5dadf 384 ret = GPIOx_SELECT_BLANK_OUT;
vijaynvr 0:bc9f26b5dadf 385 break;
vijaynvr 0:bc9f26b5dadf 386 case GPIOx_SELECT_START_STOP:
vijaynvr 0:bc9f26b5dadf 387 ret = GPIOx_SELECT_START_STOP;
vijaynvr 0:bc9f26b5dadf 388 break;
vijaynvr 0:bc9f26b5dadf 389 case GPIOx_SELECT_DISABLED:
vijaynvr 0:bc9f26b5dadf 390 ret = GPIOx_SELECT_DISABLED;
vijaynvr 0:bc9f26b5dadf 391 break;
vijaynvr 0:bc9f26b5dadf 392 case GPIOx_SELECT_COMBINED_THRESHOLD_OUTPUT:
vijaynvr 0:bc9f26b5dadf 393 ret = GPIOx_SELECT_COMBINED_THRESHOLD_OUTPUT;
vijaynvr 0:bc9f26b5dadf 394 break;
vijaynvr 0:bc9f26b5dadf 395 case GPIOx_SELECT_GPIO_INTERRUPT_OUTPUT:
vijaynvr 0:bc9f26b5dadf 396 ret = GPIOx_SELECT_GPIO_INTERRUPT_OUTPUT;
vijaynvr 0:bc9f26b5dadf 397 break;
vijaynvr 0:bc9f26b5dadf 398 }
vijaynvr 0:bc9f26b5dadf 399
vijaynvr 0:bc9f26b5dadf 400 LOG_FUNCTION_END(ret);
vijaynvr 0:bc9f26b5dadf 401
vijaynvr 0:bc9f26b5dadf 402 return ret;
vijaynvr 0:bc9f26b5dadf 403 }
vijaynvr 0:bc9f26b5dadf 404
vijaynvr 0:bc9f26b5dadf 405 sensor_error common_set_gpio0_polarity(uint8_t device_base_address, uint8_t polarity)
vijaynvr 0:bc9f26b5dadf 406 {
vijaynvr 0:bc9f26b5dadf 407 uint8_t gpioModeReg;
vijaynvr 0:bc9f26b5dadf 408 sensor_error ret = SENSOR_ERROR_NONE;
vijaynvr 0:bc9f26b5dadf 409
vijaynvr 0:bc9f26b5dadf 410 LOG_FUNCTION_START((void*)&device_base_address,(void*) &polarity);
vijaynvr 0:bc9f26b5dadf 411
vijaynvr 0:bc9f26b5dadf 412 gpioModeReg = i2c_read_byte(SYSTEM_MODE_GPIO0, device_base_address);
vijaynvr 0:bc9f26b5dadf 413 if (polarity == GPIOx_POLARITY_SELECT_OFF)
vijaynvr 0:bc9f26b5dadf 414 {
vijaynvr 0:bc9f26b5dadf 415 i2c_write_byte(SYSTEM_MODE_GPIO0,
vijaynvr 0:bc9f26b5dadf 416 (gpioModeReg & GPIOx_POLARITY_SELECT_CLEARED),
vijaynvr 0:bc9f26b5dadf 417 device_base_address);
vijaynvr 0:bc9f26b5dadf 418 }
vijaynvr 0:bc9f26b5dadf 419 else if (polarity == GPIOx_POLARITY_SELECT_ON)
vijaynvr 0:bc9f26b5dadf 420 i2c_write_byte(SYSTEM_MODE_GPIO0, (gpioModeReg | GPIOx_POLARITY_SELECT), device_base_address);
vijaynvr 0:bc9f26b5dadf 421 else
vijaynvr 0:bc9f26b5dadf 422 ret = COMMON_INVALID_PARAMS;
vijaynvr 0:bc9f26b5dadf 423
vijaynvr 0:bc9f26b5dadf 424 LOG_FUNCTION_END(ret);
vijaynvr 0:bc9f26b5dadf 425
vijaynvr 0:bc9f26b5dadf 426 return ret;
vijaynvr 0:bc9f26b5dadf 427 }
vijaynvr 0:bc9f26b5dadf 428
vijaynvr 0:bc9f26b5dadf 429 bool_t common_get_gpio0_polarity(uint8_t device_base_address)
vijaynvr 0:bc9f26b5dadf 430 {
vijaynvr 0:bc9f26b5dadf 431 bool_t ret=FALSE;
vijaynvr 0:bc9f26b5dadf 432
vijaynvr 0:bc9f26b5dadf 433 LOG_FUNCTION_START((void*)&device_base_address);
vijaynvr 0:bc9f26b5dadf 434
vijaynvr 0:bc9f26b5dadf 435 if (i2c_read_byte(SYSTEM_MODE_GPIO0, device_base_address) & GPIOx_POLARITY_SELECT)
vijaynvr 0:bc9f26b5dadf 436 ret = TRUE;
vijaynvr 0:bc9f26b5dadf 437
vijaynvr 0:bc9f26b5dadf 438 LOG_FUNCTION_END(ret);
vijaynvr 0:bc9f26b5dadf 439
vijaynvr 0:bc9f26b5dadf 440 return ret;
vijaynvr 0:bc9f26b5dadf 441 }
vijaynvr 0:bc9f26b5dadf 442
vijaynvr 0:bc9f26b5dadf 443 sensor_error common_set_system_mode_gpio1(uint8_t device_base_address, uint8_t mode, uint8_t select, uint8_t polarity)
vijaynvr 0:bc9f26b5dadf 444 {
vijaynvr 0:bc9f26b5dadf 445 uint8_t gpioModeReg;
vijaynvr 0:bc9f26b5dadf 446 uint8_t gpio_select;
vijaynvr 0:bc9f26b5dadf 447 sensor_error ret = SENSOR_ERROR_NONE;
vijaynvr 0:bc9f26b5dadf 448
vijaynvr 0:bc9f26b5dadf 449 LOG_FUNCTION_START((void*)&device_base_address,(void*)&mode,(void*)&select,(void*)&polarity);
vijaynvr 0:bc9f26b5dadf 450
vijaynvr 0:bc9f26b5dadf 451 switch (select)
vijaynvr 0:bc9f26b5dadf 452 {
vijaynvr 0:bc9f26b5dadf 453 case GPIOx_SELECT_OFF :
vijaynvr 0:bc9f26b5dadf 454 case GPIOx_SELECT_MEASURE_READY :
vijaynvr 0:bc9f26b5dadf 455 case GPIOx_SELECT_DISABLED :
vijaynvr 0:bc9f26b5dadf 456 case GPIOx_SELECT_GPIO_INTERRUPT_OUTPUT :
vijaynvr 0:bc9f26b5dadf 457 gpioModeReg = i2c_read_byte(SYSTEM_MODE_GPIO1, device_base_address);
vijaynvr 0:bc9f26b5dadf 458 gpioModeReg = gpioModeReg & 0x21; // preserve only the mode & polarity bits from the register contents!
vijaynvr 0:bc9f26b5dadf 459 gpio_select = select << 1; // move up 1 bit, to make mask for bits 1-4
vijaynvr 0:bc9f26b5dadf 460 i2c_write_byte(SYSTEM_MODE_GPIO1, (gpioModeReg | gpio_select), device_base_address);
vijaynvr 0:bc9f26b5dadf 461 break;
vijaynvr 0:bc9f26b5dadf 462 default :
vijaynvr 0:bc9f26b5dadf 463 ret = COMMON_INVALID_PARAMS;
vijaynvr 0:bc9f26b5dadf 464 break;
vijaynvr 0:bc9f26b5dadf 465 }
vijaynvr 0:bc9f26b5dadf 466
vijaynvr 0:bc9f26b5dadf 467 if ((mode == GPIOx_MODE_SELECT_RANGING) || (mode == GPIOx_MODE_SELECT_ALS))
vijaynvr 0:bc9f26b5dadf 468 {
vijaynvr 0:bc9f26b5dadf 469 gpioModeReg = i2c_read_byte(SYSTEM_MODE_GPIO1, device_base_address);
vijaynvr 0:bc9f26b5dadf 470 i2c_write_byte(SYSTEM_MODE_GPIO1,
vijaynvr 0:bc9f26b5dadf 471 (gpioModeReg | mode),
vijaynvr 0:bc9f26b5dadf 472 device_base_address);
vijaynvr 0:bc9f26b5dadf 473 }
vijaynvr 0:bc9f26b5dadf 474 else
vijaynvr 0:bc9f26b5dadf 475 {
vijaynvr 0:bc9f26b5dadf 476 ret = COMMON_INVALID_PARAMS;
vijaynvr 0:bc9f26b5dadf 477 }
vijaynvr 0:bc9f26b5dadf 478
vijaynvr 0:bc9f26b5dadf 479 gpioModeReg = i2c_read_byte(SYSTEM_MODE_GPIO1, device_base_address);
vijaynvr 0:bc9f26b5dadf 480
vijaynvr 0:bc9f26b5dadf 481 if (polarity == GPIOx_POLARITY_SELECT_OFF)
vijaynvr 0:bc9f26b5dadf 482 {
vijaynvr 0:bc9f26b5dadf 483 i2c_write_byte(SYSTEM_MODE_GPIO1,
vijaynvr 0:bc9f26b5dadf 484 (gpioModeReg & GPIOx_POLARITY_SELECT_CLEARED),
vijaynvr 0:bc9f26b5dadf 485 device_base_address);
vijaynvr 0:bc9f26b5dadf 486 }
vijaynvr 0:bc9f26b5dadf 487
vijaynvr 0:bc9f26b5dadf 488 if (polarity == GPIOx_POLARITY_SELECT_ON)
vijaynvr 0:bc9f26b5dadf 489 {
vijaynvr 0:bc9f26b5dadf 490 i2c_write_byte(SYSTEM_MODE_GPIO1,
vijaynvr 0:bc9f26b5dadf 491 (gpioModeReg | GPIOx_POLARITY_SELECT),
vijaynvr 0:bc9f26b5dadf 492 device_base_address);
vijaynvr 0:bc9f26b5dadf 493 }
vijaynvr 0:bc9f26b5dadf 494
vijaynvr 0:bc9f26b5dadf 495 LOG_FUNCTION_END(ret);
vijaynvr 0:bc9f26b5dadf 496
vijaynvr 0:bc9f26b5dadf 497 return ret;
vijaynvr 0:bc9f26b5dadf 498 }
vijaynvr 0:bc9f26b5dadf 499
vijaynvr 0:bc9f26b5dadf 500 sensor_error common_set_gpio1_mode(uint8_t device_base_address, uint8_t mode)
vijaynvr 0:bc9f26b5dadf 501 {
vijaynvr 0:bc9f26b5dadf 502 uint8_t gpioModeReg;
vijaynvr 0:bc9f26b5dadf 503 sensor_error ret = COMMON_INVALID_PARAMS;
vijaynvr 0:bc9f26b5dadf 504
vijaynvr 0:bc9f26b5dadf 505 LOG_FUNCTION_START((void*)&device_base_address,(void*)&mode);
vijaynvr 0:bc9f26b5dadf 506
vijaynvr 0:bc9f26b5dadf 507 gpioModeReg = i2c_read_byte(SYSTEM_MODE_GPIO1, device_base_address);
vijaynvr 0:bc9f26b5dadf 508
vijaynvr 0:bc9f26b5dadf 509 if ((mode == GPIOx_MODE_SELECT_RANGING) || (mode == GPIOx_MODE_SELECT_ALS))
vijaynvr 0:bc9f26b5dadf 510 {
vijaynvr 0:bc9f26b5dadf 511 i2c_write_byte(SYSTEM_MODE_GPIO1,
vijaynvr 0:bc9f26b5dadf 512 (gpioModeReg | mode),
vijaynvr 0:bc9f26b5dadf 513 device_base_address);
vijaynvr 0:bc9f26b5dadf 514 ret = SENSOR_ERROR_NONE;
vijaynvr 0:bc9f26b5dadf 515 }
vijaynvr 0:bc9f26b5dadf 516
vijaynvr 0:bc9f26b5dadf 517 LOG_FUNCTION_END(ret);
vijaynvr 0:bc9f26b5dadf 518
vijaynvr 0:bc9f26b5dadf 519 return ret;
vijaynvr 0:bc9f26b5dadf 520 }
vijaynvr 0:bc9f26b5dadf 521
vijaynvr 0:bc9f26b5dadf 522 uint8_t common_get_gpio1_mode(uint8_t device_base_address)
vijaynvr 0:bc9f26b5dadf 523 {
vijaynvr 0:bc9f26b5dadf 524 uint8_t ret = 0;
vijaynvr 0:bc9f26b5dadf 525
vijaynvr 0:bc9f26b5dadf 526 LOG_FUNCTION_START((void*)&device_base_address);
vijaynvr 0:bc9f26b5dadf 527
vijaynvr 0:bc9f26b5dadf 528 if (i2c_read_byte(SYSTEM_MODE_GPIO1, device_base_address) & GPIOx_MODE_SELECT)
vijaynvr 0:bc9f26b5dadf 529 {
vijaynvr 0:bc9f26b5dadf 530 ret = 1;
vijaynvr 0:bc9f26b5dadf 531 }
vijaynvr 0:bc9f26b5dadf 532
vijaynvr 0:bc9f26b5dadf 533 LOG_FUNCTION_END(ret);
vijaynvr 0:bc9f26b5dadf 534
vijaynvr 0:bc9f26b5dadf 535 return ret;
vijaynvr 0:bc9f26b5dadf 536 }
vijaynvr 0:bc9f26b5dadf 537
vijaynvr 0:bc9f26b5dadf 538 sensor_error common_set_gpio1_select(uint8_t device_base_address, uint8_t select)
vijaynvr 0:bc9f26b5dadf 539 {
vijaynvr 0:bc9f26b5dadf 540 uint8_t gpio_select;
vijaynvr 0:bc9f26b5dadf 541 uint8_t gpioModeReg;
vijaynvr 0:bc9f26b5dadf 542 sensor_error ret = SENSOR_ERROR_NONE;
vijaynvr 0:bc9f26b5dadf 543
vijaynvr 0:bc9f26b5dadf 544 LOG_FUNCTION_START((void*)&device_base_address,(void*)&select);
vijaynvr 0:bc9f26b5dadf 545
vijaynvr 0:bc9f26b5dadf 546 switch (select)
vijaynvr 0:bc9f26b5dadf 547 {
vijaynvr 0:bc9f26b5dadf 548 case GPIOx_SELECT_OFF:
vijaynvr 0:bc9f26b5dadf 549 case GPIOx_SELECT_MEASURE_READY:
vijaynvr 0:bc9f26b5dadf 550 case GPIOx_SELECT_THRESHOLD_OUTPUT:
vijaynvr 0:bc9f26b5dadf 551 case GPIOx_SELECT_BLANK_IN:
vijaynvr 0:bc9f26b5dadf 552 case GPIOx_SELECT_BLANK_OUT:
vijaynvr 0:bc9f26b5dadf 553 case GPIOx_SELECT_START_STOP:
vijaynvr 0:bc9f26b5dadf 554 case GPIOx_SELECT_DISABLED:
vijaynvr 0:bc9f26b5dadf 555 case GPIOx_SELECT_COMBINED_THRESHOLD_OUTPUT:
vijaynvr 0:bc9f26b5dadf 556 case GPIOx_SELECT_GPIO_INTERRUPT_OUTPUT:
vijaynvr 0:bc9f26b5dadf 557 gpioModeReg = i2c_read_byte(SYSTEM_MODE_GPIO1, device_base_address);
vijaynvr 0:bc9f26b5dadf 558 gpio_select = select << 1; // move up 1 bit, to make mask for bits 1-4
vijaynvr 0:bc9f26b5dadf 559 i2c_write_byte(SYSTEM_MODE_GPIO1,
vijaynvr 0:bc9f26b5dadf 560 (gpioModeReg | gpio_select),
vijaynvr 0:bc9f26b5dadf 561 device_base_address);
vijaynvr 0:bc9f26b5dadf 562 break;
vijaynvr 0:bc9f26b5dadf 563 default:
vijaynvr 0:bc9f26b5dadf 564 ret = COMMON_INVALID_PARAMS;
vijaynvr 0:bc9f26b5dadf 565 break;
vijaynvr 0:bc9f26b5dadf 566 }
vijaynvr 0:bc9f26b5dadf 567
vijaynvr 0:bc9f26b5dadf 568 LOG_FUNCTION_END(ret);
vijaynvr 0:bc9f26b5dadf 569
vijaynvr 0:bc9f26b5dadf 570 return ret;
vijaynvr 0:bc9f26b5dadf 571 }
vijaynvr 0:bc9f26b5dadf 572
vijaynvr 0:bc9f26b5dadf 573 uint8_t common_get_gpio1_select(uint8_t device_base_address)
vijaynvr 0:bc9f26b5dadf 574 {
vijaynvr 0:bc9f26b5dadf 575 uint8_t gpio_select;
vijaynvr 0:bc9f26b5dadf 576 uint8_t gpioModeReg;
vijaynvr 0:bc9f26b5dadf 577 uint8_t ret=0;
vijaynvr 0:bc9f26b5dadf 578
vijaynvr 0:bc9f26b5dadf 579 LOG_FUNCTION_START((void*)&device_base_address);
vijaynvr 0:bc9f26b5dadf 580
vijaynvr 0:bc9f26b5dadf 581 gpioModeReg = i2c_read_byte(SYSTEM_MODE_GPIO1, device_base_address);
vijaynvr 0:bc9f26b5dadf 582
vijaynvr 0:bc9f26b5dadf 583 gpio_select = (gpioModeReg & 0x1E) >> 1; // mask only bits 1-4
vijaynvr 0:bc9f26b5dadf 584
vijaynvr 0:bc9f26b5dadf 585 switch (gpio_select)
vijaynvr 0:bc9f26b5dadf 586 {
vijaynvr 0:bc9f26b5dadf 587 case GPIOx_SELECT_OFF:
vijaynvr 0:bc9f26b5dadf 588 ret = GPIOx_SELECT_OFF;
vijaynvr 0:bc9f26b5dadf 589 break;
vijaynvr 0:bc9f26b5dadf 590 case GPIOx_SELECT_MEASURE_READY:
vijaynvr 0:bc9f26b5dadf 591 ret = GPIOx_SELECT_MEASURE_READY;
vijaynvr 0:bc9f26b5dadf 592 break;
vijaynvr 0:bc9f26b5dadf 593 case GPIOx_SELECT_THRESHOLD_OUTPUT:
vijaynvr 0:bc9f26b5dadf 594 ret = GPIOx_SELECT_THRESHOLD_OUTPUT;
vijaynvr 0:bc9f26b5dadf 595 break;
vijaynvr 0:bc9f26b5dadf 596 case GPIOx_SELECT_BLANK_IN:
vijaynvr 0:bc9f26b5dadf 597 ret = GPIOx_SELECT_BLANK_IN;
vijaynvr 0:bc9f26b5dadf 598 break;
vijaynvr 0:bc9f26b5dadf 599 case GPIOx_SELECT_BLANK_OUT:
vijaynvr 0:bc9f26b5dadf 600 ret = GPIOx_SELECT_BLANK_OUT;
vijaynvr 0:bc9f26b5dadf 601 break;
vijaynvr 0:bc9f26b5dadf 602 case GPIOx_SELECT_START_STOP:
vijaynvr 0:bc9f26b5dadf 603 ret = GPIOx_SELECT_START_STOP;
vijaynvr 0:bc9f26b5dadf 604 break;
vijaynvr 0:bc9f26b5dadf 605 case GPIOx_SELECT_DISABLED:
vijaynvr 0:bc9f26b5dadf 606 ret = GPIOx_SELECT_DISABLED;
vijaynvr 0:bc9f26b5dadf 607 break;
vijaynvr 0:bc9f26b5dadf 608 case GPIOx_SELECT_COMBINED_THRESHOLD_OUTPUT:
vijaynvr 0:bc9f26b5dadf 609 ret = GPIOx_SELECT_COMBINED_THRESHOLD_OUTPUT;
vijaynvr 0:bc9f26b5dadf 610 break;
vijaynvr 0:bc9f26b5dadf 611 case GPIOx_SELECT_GPIO_INTERRUPT_OUTPUT:
vijaynvr 0:bc9f26b5dadf 612 ret = GPIOx_SELECT_GPIO_INTERRUPT_OUTPUT;
vijaynvr 0:bc9f26b5dadf 613 break;
vijaynvr 0:bc9f26b5dadf 614 }
vijaynvr 0:bc9f26b5dadf 615
vijaynvr 0:bc9f26b5dadf 616 LOG_FUNCTION_END(ret);
vijaynvr 0:bc9f26b5dadf 617
vijaynvr 0:bc9f26b5dadf 618 return ret;
vijaynvr 0:bc9f26b5dadf 619 }
vijaynvr 0:bc9f26b5dadf 620
vijaynvr 0:bc9f26b5dadf 621 sensor_error common_set_gpio1_polarity(uint8_t device_base_address, uint8_t polarity)
vijaynvr 0:bc9f26b5dadf 622 {
vijaynvr 0:bc9f26b5dadf 623 uint8_t gpioModeReg;
vijaynvr 0:bc9f26b5dadf 624 sensor_error ret = SENSOR_ERROR_NONE;
vijaynvr 0:bc9f26b5dadf 625
vijaynvr 0:bc9f26b5dadf 626 LOG_FUNCTION_START((void*)&device_base_address,(void*)&polarity);
vijaynvr 0:bc9f26b5dadf 627
vijaynvr 0:bc9f26b5dadf 628 gpioModeReg = i2c_read_byte(SYSTEM_MODE_GPIO1, device_base_address);
vijaynvr 0:bc9f26b5dadf 629
vijaynvr 0:bc9f26b5dadf 630 if (polarity == GPIOx_POLARITY_SELECT_OFF)
vijaynvr 0:bc9f26b5dadf 631 {
vijaynvr 0:bc9f26b5dadf 632 i2c_write_byte(SYSTEM_MODE_GPIO1,
vijaynvr 0:bc9f26b5dadf 633 (gpioModeReg & GPIOx_POLARITY_SELECT_CLEARED),
vijaynvr 0:bc9f26b5dadf 634 device_base_address);
vijaynvr 0:bc9f26b5dadf 635 }
vijaynvr 0:bc9f26b5dadf 636 else if (polarity == GPIOx_POLARITY_SELECT_ON)
vijaynvr 0:bc9f26b5dadf 637 {
vijaynvr 0:bc9f26b5dadf 638 i2c_write_byte(SYSTEM_MODE_GPIO1,
vijaynvr 0:bc9f26b5dadf 639 (gpioModeReg | GPIOx_POLARITY_SELECT),
vijaynvr 0:bc9f26b5dadf 640 device_base_address);
vijaynvr 0:bc9f26b5dadf 641 }
vijaynvr 0:bc9f26b5dadf 642 else
vijaynvr 0:bc9f26b5dadf 643 {
vijaynvr 0:bc9f26b5dadf 644 ret = COMMON_INVALID_PARAMS;
vijaynvr 0:bc9f26b5dadf 645 }
vijaynvr 0:bc9f26b5dadf 646
vijaynvr 0:bc9f26b5dadf 647 LOG_FUNCTION_END(ret);
vijaynvr 0:bc9f26b5dadf 648
vijaynvr 0:bc9f26b5dadf 649 return ret;
vijaynvr 0:bc9f26b5dadf 650 }
vijaynvr 0:bc9f26b5dadf 651
vijaynvr 0:bc9f26b5dadf 652 bool_t common_get_gpio1_polarity(uint8_t device_base_address)
vijaynvr 0:bc9f26b5dadf 653 {
vijaynvr 0:bc9f26b5dadf 654 bool_t ret= FALSE;
vijaynvr 0:bc9f26b5dadf 655
vijaynvr 0:bc9f26b5dadf 656 LOG_FUNCTION_START((void*)&device_base_address);
vijaynvr 0:bc9f26b5dadf 657
vijaynvr 0:bc9f26b5dadf 658 if (i2c_read_byte(SYSTEM_MODE_GPIO1, device_base_address) & GPIOx_POLARITY_SELECT)
vijaynvr 0:bc9f26b5dadf 659 {
vijaynvr 0:bc9f26b5dadf 660 ret = TRUE;
vijaynvr 0:bc9f26b5dadf 661 }
vijaynvr 0:bc9f26b5dadf 662
vijaynvr 0:bc9f26b5dadf 663 LOG_FUNCTION_END(ret);
vijaynvr 0:bc9f26b5dadf 664
vijaynvr 0:bc9f26b5dadf 665 return ret;
vijaynvr 0:bc9f26b5dadf 666 }
vijaynvr 0:bc9f26b5dadf 667
vijaynvr 0:bc9f26b5dadf 668 sensor_error common_set_history_buffer_enable(uint8_t device_base_address, uint8_t history_buffer_enable)
vijaynvr 0:bc9f26b5dadf 669 {
vijaynvr 0:bc9f26b5dadf 670 uint8_t mode;
vijaynvr 0:bc9f26b5dadf 671 sensor_error ret= COMMON_INVALID_PARAMS;
vijaynvr 0:bc9f26b5dadf 672
vijaynvr 0:bc9f26b5dadf 673 LOG_FUNCTION_START((void*)&device_base_address,(void*)&history_buffer_enable);
vijaynvr 0:bc9f26b5dadf 674
vijaynvr 0:bc9f26b5dadf 675 if ((history_buffer_enable == HISTORY_BUFFER_DISABLE) ||
vijaynvr 0:bc9f26b5dadf 676 (history_buffer_enable == HISTORY_BUFFER_ENABLE))
vijaynvr 0:bc9f26b5dadf 677 {
vijaynvr 0:bc9f26b5dadf 678 mode = i2c_read_byte(SYSTEM_HISTORY_CTRL, device_base_address);
vijaynvr 0:bc9f26b5dadf 679 i2c_write_byte(SYSTEM_HISTORY_CTRL,
vijaynvr 0:bc9f26b5dadf 680 (mode | history_buffer_enable),
vijaynvr 0:bc9f26b5dadf 681 device_base_address);
vijaynvr 0:bc9f26b5dadf 682 ret = SENSOR_ERROR_NONE;
vijaynvr 0:bc9f26b5dadf 683 }
vijaynvr 0:bc9f26b5dadf 684
vijaynvr 0:bc9f26b5dadf 685 LOG_FUNCTION_END(ret);
vijaynvr 0:bc9f26b5dadf 686
vijaynvr 0:bc9f26b5dadf 687 return ret;
vijaynvr 0:bc9f26b5dadf 688 }
vijaynvr 0:bc9f26b5dadf 689
vijaynvr 0:bc9f26b5dadf 690 bool_t common_get_history_buffer_enable(uint8_t device_base_address)
vijaynvr 0:bc9f26b5dadf 691 {
vijaynvr 0:bc9f26b5dadf 692 bool_t ret = FALSE;
vijaynvr 0:bc9f26b5dadf 693
vijaynvr 0:bc9f26b5dadf 694 LOG_FUNCTION_START((void*)&device_base_address);
vijaynvr 0:bc9f26b5dadf 695
vijaynvr 0:bc9f26b5dadf 696 if (i2c_read_byte(SYSTEM_HISTORY_CTRL, device_base_address) & HISTORY_BUFFER_ENABLED)
vijaynvr 0:bc9f26b5dadf 697 {
vijaynvr 0:bc9f26b5dadf 698 ret = TRUE;
vijaynvr 0:bc9f26b5dadf 699 }
vijaynvr 0:bc9f26b5dadf 700
vijaynvr 0:bc9f26b5dadf 701 LOG_FUNCTION_END(ret);
vijaynvr 0:bc9f26b5dadf 702
vijaynvr 0:bc9f26b5dadf 703 return ret;
vijaynvr 0:bc9f26b5dadf 704 }
vijaynvr 0:bc9f26b5dadf 705
vijaynvr 0:bc9f26b5dadf 706 sensor_error common_set_history_buffer_mode(uint8_t device_base_address, uint8_t history_buffer_mode)
vijaynvr 0:bc9f26b5dadf 707 {
vijaynvr 0:bc9f26b5dadf 708 uint8_t historyRegVal;
vijaynvr 0:bc9f26b5dadf 709 uint8_t mode=0;
vijaynvr 0:bc9f26b5dadf 710 sensor_error ret= SENSOR_ERROR_NONE;
vijaynvr 0:bc9f26b5dadf 711
vijaynvr 0:bc9f26b5dadf 712 LOG_FUNCTION_START((void*)&device_base_address,(void*)&history_buffer_mode);
vijaynvr 0:bc9f26b5dadf 713
vijaynvr 0:bc9f26b5dadf 714 historyRegVal = i2c_read_byte(SYSTEM_HISTORY_CTRL, device_base_address);
vijaynvr 0:bc9f26b5dadf 715
vijaynvr 0:bc9f26b5dadf 716 if (history_buffer_mode & HISTORY_BUFFER_ALS_MODE)
vijaynvr 0:bc9f26b5dadf 717 {
vijaynvr 0:bc9f26b5dadf 718 mode = historyRegVal | 0x02; // set bit 1 to enable ALS mode
vijaynvr 0:bc9f26b5dadf 719 }
vijaynvr 0:bc9f26b5dadf 720 else if (history_buffer_mode & HISTORY_BUFFER_RANGING_MODE)
vijaynvr 0:bc9f26b5dadf 721 {
vijaynvr 0:bc9f26b5dadf 722 mode = historyRegVal & 0xFD; // clear bit 1
vijaynvr 0:bc9f26b5dadf 723 }
vijaynvr 0:bc9f26b5dadf 724 else
vijaynvr 0:bc9f26b5dadf 725 {
vijaynvr 0:bc9f26b5dadf 726 ret = COMMON_INVALID_PARAMS;
vijaynvr 0:bc9f26b5dadf 727 }
vijaynvr 0:bc9f26b5dadf 728 i2c_write_byte(SYSTEM_HISTORY_CTRL, mode, device_base_address);
vijaynvr 0:bc9f26b5dadf 729
vijaynvr 0:bc9f26b5dadf 730 LOG_FUNCTION_END(ret);
vijaynvr 0:bc9f26b5dadf 731
vijaynvr 0:bc9f26b5dadf 732 return ret;
vijaynvr 0:bc9f26b5dadf 733 }
vijaynvr 0:bc9f26b5dadf 734
vijaynvr 0:bc9f26b5dadf 735 uint8_t common_get_history_buffer_mode(uint8_t device_base_address)
vijaynvr 0:bc9f26b5dadf 736 {
vijaynvr 0:bc9f26b5dadf 737 int32_t ret = HISTORY_BUFFER_RANGING_MODE;
vijaynvr 0:bc9f26b5dadf 738
vijaynvr 0:bc9f26b5dadf 739 LOG_FUNCTION_START((void*)&device_base_address);
vijaynvr 0:bc9f26b5dadf 740
vijaynvr 0:bc9f26b5dadf 741 if (i2c_read_byte(SYSTEM_HISTORY_CTRL, device_base_address) & HISTORY_BUFFER_MODE)
vijaynvr 0:bc9f26b5dadf 742 {
vijaynvr 0:bc9f26b5dadf 743 ret = HISTORY_BUFFER_ALS_MODE;
vijaynvr 0:bc9f26b5dadf 744 }
vijaynvr 0:bc9f26b5dadf 745
vijaynvr 0:bc9f26b5dadf 746 LOG_FUNCTION_END(ret);
vijaynvr 0:bc9f26b5dadf 747
vijaynvr 0:bc9f26b5dadf 748 return ret;
vijaynvr 0:bc9f26b5dadf 749 }
vijaynvr 0:bc9f26b5dadf 750
vijaynvr 0:bc9f26b5dadf 751 sensor_error common_set_history_buffer_clear(uint8_t device_base_address)
vijaynvr 0:bc9f26b5dadf 752 {
vijaynvr 0:bc9f26b5dadf 753 uint8_t mode;
vijaynvr 0:bc9f26b5dadf 754
vijaynvr 0:bc9f26b5dadf 755 LOG_FUNCTION_START((void*)&device_base_address);
vijaynvr 0:bc9f26b5dadf 756
vijaynvr 0:bc9f26b5dadf 757 mode = i2c_read_byte(SYSTEM_HISTORY_CTRL, device_base_address);
vijaynvr 0:bc9f26b5dadf 758 mode = mode | 0x04; // set bit 2 to 1 to clear history buffer
vijaynvr 0:bc9f26b5dadf 759 i2c_write_byte(SYSTEM_HISTORY_CTRL, mode, device_base_address);
vijaynvr 0:bc9f26b5dadf 760
vijaynvr 0:bc9f26b5dadf 761 LOG_FUNCTION_END(NULL);
vijaynvr 0:bc9f26b5dadf 762
vijaynvr 0:bc9f26b5dadf 763 return SENSOR_ERROR_NONE;
vijaynvr 0:bc9f26b5dadf 764 }
vijaynvr 0:bc9f26b5dadf 765
vijaynvr 0:bc9f26b5dadf 766 bool_t common_get_history_buffer_clear(uint8_t device_base_address)
vijaynvr 0:bc9f26b5dadf 767 {
vijaynvr 0:bc9f26b5dadf 768 bool_t ret = FALSE;
vijaynvr 0:bc9f26b5dadf 769
vijaynvr 0:bc9f26b5dadf 770 LOG_FUNCTION_START((void*)&device_base_address);
vijaynvr 0:bc9f26b5dadf 771 if (i2c_read_byte(SYSTEM_HISTORY_CTRL, device_base_address) & HISTORY_BUFFER_CLEARED)
vijaynvr 0:bc9f26b5dadf 772 {
vijaynvr 0:bc9f26b5dadf 773 ret= TRUE;
vijaynvr 0:bc9f26b5dadf 774 }
vijaynvr 0:bc9f26b5dadf 775 LOG_FUNCTION_END(ret);
vijaynvr 0:bc9f26b5dadf 776
vijaynvr 0:bc9f26b5dadf 777 return ret;
vijaynvr 0:bc9f26b5dadf 778 }
vijaynvr 0:bc9f26b5dadf 779
vijaynvr 0:bc9f26b5dadf 780 sensor_error common_set_system_interrupt_clear_error(uint8_t device_base_address)
vijaynvr 0:bc9f26b5dadf 781 {
vijaynvr 0:bc9f26b5dadf 782
vijaynvr 0:bc9f26b5dadf 783 LOG_FUNCTION_START((void*)&device_base_address);
vijaynvr 0:bc9f26b5dadf 784
vijaynvr 0:bc9f26b5dadf 785 i2c_write_byte(SYSTEM_INTERRUPT_CLEAR, INTERRUPT_CLEAR_ERROR, device_base_address);
vijaynvr 0:bc9f26b5dadf 786
vijaynvr 0:bc9f26b5dadf 787 LOG_FUNCTION_END(NULL);
vijaynvr 0:bc9f26b5dadf 788
vijaynvr 0:bc9f26b5dadf 789 return SENSOR_ERROR_NONE;
vijaynvr 0:bc9f26b5dadf 790 }
vijaynvr 0:bc9f26b5dadf 791
vijaynvr 0:bc9f26b5dadf 792 uint8_t common_get_error_result_interrupt_status_gpio(uint8_t device_base_address)
vijaynvr 0:bc9f26b5dadf 793 {
vijaynvr 0:bc9f26b5dadf 794 uint8_t ret = 0;
vijaynvr 0:bc9f26b5dadf 795
vijaynvr 0:bc9f26b5dadf 796 LOG_FUNCTION_START((void*)&device_base_address);
vijaynvr 0:bc9f26b5dadf 797
vijaynvr 0:bc9f26b5dadf 798 ret = ( (i2c_read_byte(RESULT_INTERRUPT_STATUS_GPIO, device_base_address) & 0xC0) >> 6 );
vijaynvr 0:bc9f26b5dadf 799
vijaynvr 0:bc9f26b5dadf 800 LOG_FUNCTION_END(ret);
vijaynvr 0:bc9f26b5dadf 801
vijaynvr 0:bc9f26b5dadf 802 return ret;
vijaynvr 0:bc9f26b5dadf 803 }
vijaynvr 0:bc9f26b5dadf 804
vijaynvr 0:bc9f26b5dadf 805 sensor_error common_clear_system_fresh_out_of_reset(uint8_t device_base_address)
vijaynvr 0:bc9f26b5dadf 806 {
vijaynvr 0:bc9f26b5dadf 807
vijaynvr 0:bc9f26b5dadf 808 LOG_FUNCTION_START((void*)&device_base_address);
vijaynvr 0:bc9f26b5dadf 809
vijaynvr 0:bc9f26b5dadf 810 i2c_write_byte(SYSTEM_FRESH_OUT_OF_RESET, 0x00, device_base_address);
vijaynvr 0:bc9f26b5dadf 811
vijaynvr 0:bc9f26b5dadf 812 LOG_FUNCTION_END(NULL);
vijaynvr 0:bc9f26b5dadf 813
vijaynvr 0:bc9f26b5dadf 814 return SENSOR_ERROR_NONE;
vijaynvr 0:bc9f26b5dadf 815 }
vijaynvr 0:bc9f26b5dadf 816
vijaynvr 0:bc9f26b5dadf 817 bool_t common_get_system_fresh_out_of_reset(uint8_t device_base_address)
vijaynvr 0:bc9f26b5dadf 818 {
vijaynvr 0:bc9f26b5dadf 819 uint8_t cFreshOutOfReset = 0x01;
vijaynvr 0:bc9f26b5dadf 820 bool_t ret= FALSE;
vijaynvr 0:bc9f26b5dadf 821
vijaynvr 0:bc9f26b5dadf 822 LOG_FUNCTION_START((void*)&device_base_address);
vijaynvr 0:bc9f26b5dadf 823
vijaynvr 0:bc9f26b5dadf 824 if (i2c_read_byte(SYSTEM_FRESH_OUT_OF_RESET, device_base_address) & cFreshOutOfReset)
vijaynvr 0:bc9f26b5dadf 825 {
vijaynvr 0:bc9f26b5dadf 826 ret = TRUE;
vijaynvr 0:bc9f26b5dadf 827 }
vijaynvr 0:bc9f26b5dadf 828
vijaynvr 0:bc9f26b5dadf 829 LOG_FUNCTION_END(ret);
vijaynvr 0:bc9f26b5dadf 830
vijaynvr 0:bc9f26b5dadf 831 return ret;
vijaynvr 0:bc9f26b5dadf 832 }
vijaynvr 0:bc9f26b5dadf 833
vijaynvr 0:bc9f26b5dadf 834 sensor_error common_set_system_group_parameter_hold(uint8_t device_base_address)
vijaynvr 0:bc9f26b5dadf 835 {
vijaynvr 0:bc9f26b5dadf 836
vijaynvr 0:bc9f26b5dadf 837 LOG_FUNCTION_START((void*)&device_base_address);
vijaynvr 0:bc9f26b5dadf 838
vijaynvr 0:bc9f26b5dadf 839 i2c_write_byte(SYSTEM_GROUPED_PARAMETER_HOLD, 0x01, device_base_address);
vijaynvr 0:bc9f26b5dadf 840
vijaynvr 0:bc9f26b5dadf 841 LOG_FUNCTION_END(NULL);
vijaynvr 0:bc9f26b5dadf 842
vijaynvr 0:bc9f26b5dadf 843 return SENSOR_ERROR_NONE;
vijaynvr 0:bc9f26b5dadf 844 }
vijaynvr 0:bc9f26b5dadf 845
vijaynvr 0:bc9f26b5dadf 846 sensor_error common_clear_system_group_parameter_hold(uint8_t device_base_address)
vijaynvr 0:bc9f26b5dadf 847 {
vijaynvr 0:bc9f26b5dadf 848
vijaynvr 0:bc9f26b5dadf 849 LOG_FUNCTION_START((void*)&device_base_address);
vijaynvr 0:bc9f26b5dadf 850
vijaynvr 0:bc9f26b5dadf 851 i2c_write_byte(SYSTEM_GROUPED_PARAMETER_HOLD, 0x00, device_base_address);
vijaynvr 0:bc9f26b5dadf 852
vijaynvr 0:bc9f26b5dadf 853 LOG_FUNCTION_END(NULL);
vijaynvr 0:bc9f26b5dadf 854
vijaynvr 0:bc9f26b5dadf 855 return SENSOR_ERROR_NONE;
vijaynvr 0:bc9f26b5dadf 856 }
vijaynvr 0:bc9f26b5dadf 857
vijaynvr 0:bc9f26b5dadf 858 uint8_t common_get_system_fatal_error_code(uint8_t device_base_address)
vijaynvr 0:bc9f26b5dadf 859 {
vijaynvr 0:bc9f26b5dadf 860 uint8_t ret = 0;
vijaynvr 0:bc9f26b5dadf 861
vijaynvr 0:bc9f26b5dadf 862 LOG_FUNCTION_START((void*)&device_base_address);
vijaynvr 0:bc9f26b5dadf 863
vijaynvr 0:bc9f26b5dadf 864 ret = i2c_read_byte(SYSTEM_FATAL_ERROR_CODE, device_base_address);
vijaynvr 0:bc9f26b5dadf 865
vijaynvr 0:bc9f26b5dadf 866 LOG_FUNCTION_END(ret);
vijaynvr 0:bc9f26b5dadf 867
vijaynvr 0:bc9f26b5dadf 868 return ret;
vijaynvr 0:bc9f26b5dadf 869 }
vijaynvr 0:bc9f26b5dadf 870
vijaynvr 0:bc9f26b5dadf 871 uint8_t common_get_system_fatal_error_status(uint8_t device_base_address)
vijaynvr 0:bc9f26b5dadf 872 {
vijaynvr 0:bc9f26b5dadf 873 uint8_t ret = 0;
vijaynvr 0:bc9f26b5dadf 874
vijaynvr 0:bc9f26b5dadf 875 LOG_FUNCTION_START((void*)&device_base_address);
vijaynvr 0:bc9f26b5dadf 876
vijaynvr 0:bc9f26b5dadf 877 ret = i2c_read_byte(SYSTEM_FATAL_ERROR_STATUS, device_base_address);
vijaynvr 0:bc9f26b5dadf 878
vijaynvr 0:bc9f26b5dadf 879 LOG_FUNCTION_END(ret);
vijaynvr 0:bc9f26b5dadf 880
vijaynvr 0:bc9f26b5dadf 881 return ret;
vijaynvr 0:bc9f26b5dadf 882 }
vijaynvr 0:bc9f26b5dadf 883
vijaynvr 0:bc9f26b5dadf 884 // ??
vijaynvr 0:bc9f26b5dadf 885 uint8_t common_get_system_health_check(uint8_t device_base_address)
vijaynvr 0:bc9f26b5dadf 886 {
vijaynvr 0:bc9f26b5dadf 887 // return threshold
vijaynvr 0:bc9f26b5dadf 888 return 1; // temp only, will stub is here!
vijaynvr 0:bc9f26b5dadf 889 }
vijaynvr 0:bc9f26b5dadf 890