vlx lib
range_upscaling_driver.cpp@0:bc9f26b5dadf, 2015-02-08 (annotated)
- Committer:
- vijaynvr
- Date:
- Sun Feb 08 14:26:51 2015 +0000
- Revision:
- 0:bc9f26b5dadf
working
Who changed what in which revision?
User | Revision | Line number | New 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 functions used for configuration and operation during extended |
vijaynvr | 0:bc9f26b5dadf | 26 | ranging. |
vijaynvr | 0:bc9f26b5dadf | 27 | ''' |
vijaynvr | 0:bc9f26b5dadf | 28 | */ |
vijaynvr | 0:bc9f26b5dadf | 29 | |
vijaynvr | 0:bc9f26b5dadf | 30 | //----------------------------------------------------------------------------- |
vijaynvr | 0:bc9f26b5dadf | 31 | // module imports |
vijaynvr | 0:bc9f26b5dadf | 32 | //----------------------------------------------------------------------------- |
vijaynvr | 0:bc9f26b5dadf | 33 | |
vijaynvr | 0:bc9f26b5dadf | 34 | // ST libraries |
vijaynvr | 0:bc9f26b5dadf | 35 | |
vijaynvr | 0:bc9f26b5dadf | 36 | #include "range_upscaling_driver.h" |
vijaynvr | 0:bc9f26b5dadf | 37 | |
vijaynvr | 0:bc9f26b5dadf | 38 | #include "common_driver.h" |
vijaynvr | 0:bc9f26b5dadf | 39 | #include "ranging_driver.h" |
vijaynvr | 0:bc9f26b5dadf | 40 | #include "debug.h" |
vijaynvr | 0:bc9f26b5dadf | 41 | #include "platform.h" |
vijaynvr | 0:bc9f26b5dadf | 42 | |
vijaynvr | 0:bc9f26b5dadf | 43 | |
vijaynvr | 0:bc9f26b5dadf | 44 | //----------------------------------------------------------------------------- |
vijaynvr | 0:bc9f26b5dadf | 45 | // constant definitions |
vijaynvr | 0:bc9f26b5dadf | 46 | //----------------------------------------------------------------------------- |
vijaynvr | 0:bc9f26b5dadf | 47 | #define IDENTIFICATION_MODEL_ID 0x00 |
vijaynvr | 0:bc9f26b5dadf | 48 | #define IDENTIFICATION_MODULE_REV_MAJOR 0x03 |
vijaynvr | 0:bc9f26b5dadf | 49 | #define IDENTIFICATION_MODULE_REV_MINOR 0x04 |
vijaynvr | 0:bc9f26b5dadf | 50 | |
vijaynvr | 0:bc9f26b5dadf | 51 | #define RESULT_RANGE_VAL 0x62 |
vijaynvr | 0:bc9f26b5dadf | 52 | |
vijaynvr | 0:bc9f26b5dadf | 53 | #define RANGE_SCALER 0x96 |
vijaynvr | 0:bc9f26b5dadf | 54 | |
vijaynvr | 0:bc9f26b5dadf | 55 | //----------------------------------------------------------------------------- |
vijaynvr | 0:bc9f26b5dadf | 56 | // global variable declarations |
vijaynvr | 0:bc9f26b5dadf | 57 | //----------------------------------------------------------------------------- |
vijaynvr | 0:bc9f26b5dadf | 58 | static ExtRangeScaler _rangeScaler = Scale2X; |
vijaynvr | 0:bc9f26b5dadf | 59 | |
vijaynvr | 0:bc9f26b5dadf | 60 | //----------------------------------------------------------------------------- |
vijaynvr | 0:bc9f26b5dadf | 61 | // method definitions |
vijaynvr | 0:bc9f26b5dadf | 62 | //----------------------------------------------------------------------------- |
vijaynvr | 0:bc9f26b5dadf | 63 | |
vijaynvr | 0:bc9f26b5dadf | 64 | static void er_set_register_tuning(uint8_t device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 65 | |
vijaynvr | 0:bc9f26b5dadf | 66 | |
vijaynvr | 0:bc9f26b5dadf | 67 | static void er_set_register_tuning(uint8_t device_base_address) |
vijaynvr | 0:bc9f26b5dadf | 68 | { |
vijaynvr | 0:bc9f26b5dadf | 69 | // apply REGISTER_TUNING_ER02_100614_CustomerView.tx |
vijaynvr | 0:bc9f26b5dadf | 70 | |
vijaynvr | 0:bc9f26b5dadf | 71 | // Mandatory : private registers |
vijaynvr | 0:bc9f26b5dadf | 72 | i2c_write_byte(0x0207, 0x01, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 73 | i2c_write_byte(0x0208, 0x01, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 74 | i2c_write_byte(0x0096, 0x00, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 75 | i2c_write_byte(0x0097, 0x54, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 76 | i2c_write_byte(0x00e3, 0x00, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 77 | i2c_write_byte(0x00e4, 0x04, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 78 | i2c_write_byte(0x00e5, 0x02, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 79 | i2c_write_byte(0x00e6, 0x01, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 80 | i2c_write_byte(0x00e7, 0x03, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 81 | i2c_write_byte(0x00f5, 0x02, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 82 | i2c_write_byte(0x00d9, 0x05, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 83 | i2c_write_byte(0x00db, 0xce, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 84 | i2c_write_byte(0x00dc, 0x03, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 85 | i2c_write_byte(0x00dd, 0xf8, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 86 | i2c_write_byte(0x009f, 0x00, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 87 | i2c_write_byte(0x00a3, 0x28, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 88 | i2c_write_byte(0x00b7, 0x00, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 89 | i2c_write_byte(0x00bb, 0x28, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 90 | i2c_write_byte(0x00b2, 0x09, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 91 | i2c_write_byte(0x00ca, 0x09, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 92 | i2c_write_byte(0x0198, 0x01, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 93 | i2c_write_byte(0x01b0, 0x17, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 94 | i2c_write_byte(0x01ad, 0x00, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 95 | i2c_write_byte(0x00ff, 0x05, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 96 | i2c_write_byte(0x0100, 0x05, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 97 | i2c_write_byte(0x0199, 0x05, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 98 | i2c_write_byte(0x01a6, 0x1b, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 99 | i2c_write_byte(0x01ac, 0x3e, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 100 | i2c_write_byte(0x01a7, 0x1f, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 101 | i2c_write_byte(0x0030, 0x00, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 102 | |
vijaynvr | 0:bc9f26b5dadf | 103 | // Recommended : Public registers - See data sheet for more detail |
vijaynvr | 0:bc9f26b5dadf | 104 | i2c_write_byte(0x0011, 0x10, device_base_address); // Enables polling for �New Sample ready� when measurement completes |
vijaynvr | 0:bc9f26b5dadf | 105 | i2c_write_byte(0x010a, 0x30, device_base_address); // Set the averaging sample period (compromise between lower noise and increased execution time) |
vijaynvr | 0:bc9f26b5dadf | 106 | 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 | 107 | i2c_write_byte(0x0031, 0xFF, device_base_address); // sets the # of range measurements after which auto calibration of system is performed |
vijaynvr | 0:bc9f26b5dadf | 108 | i2c_write_byte(0x0040, 0x63, device_base_address); // Set ALS integration time to 100ms |
vijaynvr | 0:bc9f26b5dadf | 109 | i2c_write_byte(0x002e, 0x01, device_base_address); // perform a single temperature calibration of the ranging sensor |
vijaynvr | 0:bc9f26b5dadf | 110 | i2c_write_byte(0x002c, 0xff, device_base_address); // set SNR limit to 0.06 |
vijaynvr | 0:bc9f26b5dadf | 111 | |
vijaynvr | 0:bc9f26b5dadf | 112 | // Optional: Public registers - See data sheet for more detail |
vijaynvr | 0:bc9f26b5dadf | 113 | i2c_write_byte(0x001b, 0x09, device_base_address); // Set default ranging inter-measurement period to 100ms |
vijaynvr | 0:bc9f26b5dadf | 114 | i2c_write_byte(0x003e, 0x31, device_base_address); // Set default ALS inter-measurement period to 500ms |
vijaynvr | 0:bc9f26b5dadf | 115 | i2c_write_byte(0x0014, 0x24, device_base_address); // Configures interrupt on �New sample ready� |
vijaynvr | 0:bc9f26b5dadf | 116 | } |
vijaynvr | 0:bc9f26b5dadf | 117 | |
vijaynvr | 0:bc9f26b5dadf | 118 | sensor_error er_set_static_config(uint8_t device_base_address) |
vijaynvr | 0:bc9f26b5dadf | 119 | { |
vijaynvr | 0:bc9f26b5dadf | 120 | unsigned char module_id, rev_maj, rev_min; |
vijaynvr | 0:bc9f26b5dadf | 121 | bool_t module; |
vijaynvr | 0:bc9f26b5dadf | 122 | int32_t programmedOffset; |
vijaynvr | 0:bc9f26b5dadf | 123 | |
vijaynvr | 0:bc9f26b5dadf | 124 | LOG_FUNCTION_START((void*)&device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 125 | |
vijaynvr | 0:bc9f26b5dadf | 126 | module_id = i2c_read_byte(IDENTIFICATION_MODEL_ID, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 127 | // for use with NVM-programmed parts |
vijaynvr | 0:bc9f26b5dadf | 128 | rev_maj = i2c_read_byte(IDENTIFICATION_MODULE_REV_MAJOR, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 129 | rev_min = i2c_read_byte(IDENTIFICATION_MODULE_REV_MINOR, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 130 | |
vijaynvr | 0:bc9f26b5dadf | 131 | module = FALSE; |
vijaynvr | 0:bc9f26b5dadf | 132 | if ((module_id == 0xb4) && (rev_maj == 0x01) && (rev_min == 0x02)) |
vijaynvr | 0:bc9f26b5dadf | 133 | module = TRUE; |
vijaynvr | 0:bc9f26b5dadf | 134 | |
vijaynvr | 0:bc9f26b5dadf | 135 | if (module) |
vijaynvr | 0:bc9f26b5dadf | 136 | er_set_register_tuning(device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 137 | |
vijaynvr | 0:bc9f26b5dadf | 138 | // VHV automatically run on parts that are NVM-programmed, ie customer parts! |
vijaynvr | 0:bc9f26b5dadf | 139 | |
vijaynvr | 0:bc9f26b5dadf | 140 | if (common_get_system_fresh_out_of_reset(device_base_address)) |
vijaynvr | 0:bc9f26b5dadf | 141 | { |
vijaynvr | 0:bc9f26b5dadf | 142 | // must write the scaler at least once to the device to ensure the scaler is in a known state. |
vijaynvr | 0:bc9f26b5dadf | 143 | er_set_scaler(_rangeScaler, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 144 | |
vijaynvr | 0:bc9f26b5dadf | 145 | // for upscaled ranging, recalibrate the part-2-part offset |
vijaynvr | 0:bc9f26b5dadf | 146 | programmedOffset = er_range_get_part2Part_range_offset(device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 147 | er_set_part2Part_range_offset(device_base_address, (uint8_t)(programmedOffset/_rangeScaler)); |
vijaynvr | 0:bc9f26b5dadf | 148 | |
vijaynvr | 0:bc9f26b5dadf | 149 | // *** only if using glass **** |
vijaynvr | 0:bc9f26b5dadf | 150 | // xtalk_height = ranging.Range_Get_Crosstalk_Valid_Height(device) |
vijaynvr | 0:bc9f26b5dadf | 151 | // ranging.Range_Set_Crosstalk_Valid_Height(device, int(xtalk_height/_rangeScaler)) |
vijaynvr | 0:bc9f26b5dadf | 152 | |
vijaynvr | 0:bc9f26b5dadf | 153 | common_clear_system_fresh_out_of_reset(device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 154 | } |
vijaynvr | 0:bc9f26b5dadf | 155 | LOG_FUNCTION_END(NULL); |
vijaynvr | 0:bc9f26b5dadf | 156 | |
vijaynvr | 0:bc9f26b5dadf | 157 | return SENSOR_ERROR_NONE; |
vijaynvr | 0:bc9f26b5dadf | 158 | } |
vijaynvr | 0:bc9f26b5dadf | 159 | |
vijaynvr | 0:bc9f26b5dadf | 160 | sensor_error er_set_part2Part_range_offset(uint8_t device_base_address, uint8_t part_to_part_range_offset) |
vijaynvr | 0:bc9f26b5dadf | 161 | { |
vijaynvr | 0:bc9f26b5dadf | 162 | LOG_FUNCTION_START((void*)&device_base_address,(void*)&part_to_part_range_offset); |
vijaynvr | 0:bc9f26b5dadf | 163 | |
vijaynvr | 0:bc9f26b5dadf | 164 | i2c_write_byte(SYSRANGE_PART_TO_PART_RANGE_OFFSET, part_to_part_range_offset, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 165 | |
vijaynvr | 0:bc9f26b5dadf | 166 | LOG_FUNCTION_END(NULL); |
vijaynvr | 0:bc9f26b5dadf | 167 | |
vijaynvr | 0:bc9f26b5dadf | 168 | return SENSOR_ERROR_NONE; |
vijaynvr | 0:bc9f26b5dadf | 169 | } |
vijaynvr | 0:bc9f26b5dadf | 170 | |
vijaynvr | 0:bc9f26b5dadf | 171 | uint8_t er_range_get_part2Part_range_offset(uint8_t device_base_address) |
vijaynvr | 0:bc9f26b5dadf | 172 | { |
vijaynvr | 0:bc9f26b5dadf | 173 | uint8_t ret=0; |
vijaynvr | 0:bc9f26b5dadf | 174 | |
vijaynvr | 0:bc9f26b5dadf | 175 | LOG_FUNCTION_START((void*)&device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 176 | ret = i2c_read_byte(SYSRANGE_PART_TO_PART_RANGE_OFFSET, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 177 | LOG_FUNCTION_END(ret); |
vijaynvr | 0:bc9f26b5dadf | 178 | |
vijaynvr | 0:bc9f26b5dadf | 179 | return ret; |
vijaynvr | 0:bc9f26b5dadf | 180 | } |
vijaynvr | 0:bc9f26b5dadf | 181 | |
vijaynvr | 0:bc9f26b5dadf | 182 | uint32_t er_get_result(uint8_t device_base_address) |
vijaynvr | 0:bc9f26b5dadf | 183 | { |
vijaynvr | 0:bc9f26b5dadf | 184 | uint32_t range = 0; |
vijaynvr | 0:bc9f26b5dadf | 185 | |
vijaynvr | 0:bc9f26b5dadf | 186 | LOG_FUNCTION_START((void*)&device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 187 | |
vijaynvr | 0:bc9f26b5dadf | 188 | range = (uint32_t)(i2c_read_byte(RESULT_RANGE_VAL, device_base_address) * _rangeScaler); |
vijaynvr | 0:bc9f26b5dadf | 189 | |
vijaynvr | 0:bc9f26b5dadf | 190 | LOG_FUNCTION_END(range); |
vijaynvr | 0:bc9f26b5dadf | 191 | |
vijaynvr | 0:bc9f26b5dadf | 192 | return range; |
vijaynvr | 0:bc9f26b5dadf | 193 | } |
vijaynvr | 0:bc9f26b5dadf | 194 | |
vijaynvr | 0:bc9f26b5dadf | 195 | |
vijaynvr | 0:bc9f26b5dadf | 196 | sensor_error er_set_scaler(uint8_t scaler, uint8_t device_base_address) |
vijaynvr | 0:bc9f26b5dadf | 197 | { |
vijaynvr | 0:bc9f26b5dadf | 198 | //const uint16_t cMask = 0x01ff; |
vijaynvr | 0:bc9f26b5dadf | 199 | const uint16_t cScalerVal1X = 253; |
vijaynvr | 0:bc9f26b5dadf | 200 | const uint16_t cScalerVal2X = 127; |
vijaynvr | 0:bc9f26b5dadf | 201 | const uint16_t cScalerVal3X = 84; |
vijaynvr | 0:bc9f26b5dadf | 202 | uint32_t ret=0; |
vijaynvr | 0:bc9f26b5dadf | 203 | uint16_t scalerVal = cScalerVal2X; |
vijaynvr | 0:bc9f26b5dadf | 204 | |
vijaynvr | 0:bc9f26b5dadf | 205 | LOG_FUNCTION_START((void*)&device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 206 | |
vijaynvr | 0:bc9f26b5dadf | 207 | if(scaler == Scale1X) |
vijaynvr | 0:bc9f26b5dadf | 208 | { |
vijaynvr | 0:bc9f26b5dadf | 209 | _rangeScaler = Scale1X; |
vijaynvr | 0:bc9f26b5dadf | 210 | scalerVal = cScalerVal1X; |
vijaynvr | 0:bc9f26b5dadf | 211 | } |
vijaynvr | 0:bc9f26b5dadf | 212 | else if(scaler == Scale2X) |
vijaynvr | 0:bc9f26b5dadf | 213 | { |
vijaynvr | 0:bc9f26b5dadf | 214 | _rangeScaler = Scale2X; |
vijaynvr | 0:bc9f26b5dadf | 215 | scalerVal = cScalerVal2X; |
vijaynvr | 0:bc9f26b5dadf | 216 | } |
vijaynvr | 0:bc9f26b5dadf | 217 | else |
vijaynvr | 0:bc9f26b5dadf | 218 | { |
vijaynvr | 0:bc9f26b5dadf | 219 | _rangeScaler = Scale3X; |
vijaynvr | 0:bc9f26b5dadf | 220 | scalerVal = cScalerVal3X; |
vijaynvr | 0:bc9f26b5dadf | 221 | } |
vijaynvr | 0:bc9f26b5dadf | 222 | |
vijaynvr | 0:bc9f26b5dadf | 223 | i2c_write_word(RANGE_SCALER, scalerVal, device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 224 | |
vijaynvr | 0:bc9f26b5dadf | 225 | LOG_FUNCTION_END(ret); |
vijaynvr | 0:bc9f26b5dadf | 226 | |
vijaynvr | 0:bc9f26b5dadf | 227 | return ret; |
vijaynvr | 0:bc9f26b5dadf | 228 | } |
vijaynvr | 0:bc9f26b5dadf | 229 | |
vijaynvr | 0:bc9f26b5dadf | 230 | uint8_t er_get_scaler(uint8_t device_base_address) |
vijaynvr | 0:bc9f26b5dadf | 231 | { |
vijaynvr | 0:bc9f26b5dadf | 232 | uint8_t ret = _rangeScaler; |
vijaynvr | 0:bc9f26b5dadf | 233 | |
vijaynvr | 0:bc9f26b5dadf | 234 | //LOG_FUNCTION_START((void*)&device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 235 | |
vijaynvr | 0:bc9f26b5dadf | 236 | //LOG_FUNCTION_END(ret); |
vijaynvr | 0:bc9f26b5dadf | 237 | |
vijaynvr | 0:bc9f26b5dadf | 238 | return ret; |
vijaynvr | 0:bc9f26b5dadf | 239 | } |
vijaynvr | 0:bc9f26b5dadf | 240 | |
vijaynvr | 0:bc9f26b5dadf | 241 | uint32_t er_get_upper_limit(uint8_t device_base_address) |
vijaynvr | 0:bc9f26b5dadf | 242 | { |
vijaynvr | 0:bc9f26b5dadf | 243 | const uint32_t cScalerMax1X = 255; |
vijaynvr | 0:bc9f26b5dadf | 244 | const uint32_t cScalerMax2X = 510; |
vijaynvr | 0:bc9f26b5dadf | 245 | const uint32_t cScalerMax3X = 765; |
vijaynvr | 0:bc9f26b5dadf | 246 | uint32_t upperLim = cScalerMax1X; |
vijaynvr | 0:bc9f26b5dadf | 247 | |
vijaynvr | 0:bc9f26b5dadf | 248 | LOG_FUNCTION_START((void*)&device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 249 | |
vijaynvr | 0:bc9f26b5dadf | 250 | if(_rangeScaler == Scale2X) |
vijaynvr | 0:bc9f26b5dadf | 251 | { |
vijaynvr | 0:bc9f26b5dadf | 252 | upperLim = cScalerMax2X; |
vijaynvr | 0:bc9f26b5dadf | 253 | } |
vijaynvr | 0:bc9f26b5dadf | 254 | else if(_rangeScaler == Scale3X) |
vijaynvr | 0:bc9f26b5dadf | 255 | { |
vijaynvr | 0:bc9f26b5dadf | 256 | upperLim = cScalerMax3X; |
vijaynvr | 0:bc9f26b5dadf | 257 | } |
vijaynvr | 0:bc9f26b5dadf | 258 | |
vijaynvr | 0:bc9f26b5dadf | 259 | LOG_FUNCTION_END(upperLim); |
vijaynvr | 0:bc9f26b5dadf | 260 | |
vijaynvr | 0:bc9f26b5dadf | 261 | return upperLim; |
vijaynvr | 0:bc9f26b5dadf | 262 | } |
vijaynvr | 0:bc9f26b5dadf | 263 | |
vijaynvr | 0:bc9f26b5dadf | 264 | |
vijaynvr | 0:bc9f26b5dadf | 265 | uint32_t er_get_lower_limit(uint8_t device_base_address) |
vijaynvr | 0:bc9f26b5dadf | 266 | { |
vijaynvr | 0:bc9f26b5dadf | 267 | uint32_t lowerLimit = 0; |
vijaynvr | 0:bc9f26b5dadf | 268 | LOG_FUNCTION_START((void*)&device_base_address); |
vijaynvr | 0:bc9f26b5dadf | 269 | |
vijaynvr | 0:bc9f26b5dadf | 270 | LOG_FUNCTION_END(lowerLimit); |
vijaynvr | 0:bc9f26b5dadf | 271 | |
vijaynvr | 0:bc9f26b5dadf | 272 | return lowerLimit; |
vijaynvr | 0:bc9f26b5dadf | 273 | } |
vijaynvr | 0:bc9f26b5dadf | 274 | |
vijaynvr | 0:bc9f26b5dadf | 275 |