Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
OPT3101device.h
00001 /*! 00002 * \file OPT3101device.h 00003 * \author Karthik Rajagopal <krthik@ti.com> 00004 * \version 0.9.1 00005 * 00006 * \section COPYRIGHT 00007 * TEXAS INSTRUMENTS TEXT FILE LICENSE 00008 * Copyright (c) 2018 Texas Instruments Incorporated 00009 * All rights reserved not granted herein. 00010 * Limited License. 00011 * Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive license under copyrights and patents it now or hereafter owns or controls to make, have made, use, import, offer to sell and sell ("Utilize") this software subject to the terms herein. With respect to the foregoing patent license, such license is granted solely to the extent that any such patent is necessary to Utilize the software alone. The patent license shall not apply to any combinations which include this software, other than combinations with devices manufactured by or for TI ("TI Devices"). No hardware patent is licensed hereunder. 00012 * Redistributions must preserve existing copyright notices and reproduce this license (including the above copyright notice and the disclaimer and (if applicable) source code license limitations below) in the documentation and/or other materials provided with the distribution 00013 * Redistribution and use in binary form, without modification, are permitted provided that the following conditions are met: 00014 * * No reverse engineering, decompilation, or disassembly of this software is permitted with respect to any software provided in binary form. 00015 * * any redistribution and use are licensed by TI for use only with TI Devices. 00016 * * Nothing shall obligate TI to provide you with source code for the software licensed and provided to you in object code. 00017 * If software source code is provided to you, modification and redistribution of the source code are permitted provided that the following conditions are met: 00018 * * any redistribution and use of the source code, including any resulting derivative works, are licensed by TI for use only with TI Devices. 00019 * * any redistribution and use of any object code compiled from the source code and any resulting derivative works, are licensed by TI for use only with TI Devices. 00020 * Neither the name of Texas Instruments Incorporated nor the names of its suppliers may be used to endorse or promote products derived from this software without specific prior written permission. 00021 * DISCLAIMER. 00022 * THIS SOFTWARE IS PROVIDED BY TI AND TI'S LICENSORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL TI AND TI'S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00023 * 00024 * \section DESCRIPTION 00025 * This file contains the OPT3101::device class declaration. This is the master class that integrates all the components of the SDK 00026 */ 00027 00028 00029 #ifndef OPT3101DEVICE_H_ 00030 #define OPT3101DEVICE_H_ 00031 00032 #include "OPT3101RegisterDefinition.h " 00033 #include "OPT3101Calibration.h " 00034 #include "OPT3101DesignCoefficients.h " 00035 #include "OPT3101PhaseOffset.h " 00036 //#include "OPT3101frameData.h" 00037 #include "definitions.h" 00038 00039 /*! \namespace OPT3101 00040 \brief OPT3101 name space is used to classify and segregate all OPT3101SDK related methods and class definitions. 00041 00042 OPT3101SDK is intended to be used on various different host configurations. Having a segregated name space helps isolate and manage the structure of the classes and methods better. 00043 */ 00044 namespace OPT3101 { 00045 00046 /** 00047 \class OPT3101::device 00048 \brief This is the master class that integrates all the OPT3101SDK functions 00049 00050 OPT3101::device is at the apex of the OPT3101SDK providing all the methods and functionality required for a full system bring up calibration and debug<br> 00051 The register control for the device, calibration routines are instantiated in this call for user assess. 00052 */ 00053 class device { 00054 private: 00055 void writeDataToEEPROM(uint8_t location, uint8_t data); 00056 uint8_t readDataFromEEPROM(uint8_t location); 00057 void measurePhaseOffset(OPT3101::phaseOffsetC *phaseOffset, uint16_t refDistanceInCodes); 00058 void measureIllumCrosstalk(OPT3101::crosstalkC *illumXtalk); 00059 uint8_t determineConfigCount(); 00060 OPT3101::frameData data[3]; 00061 public: 00062 /*! 00063 * \brief Constructor for class OPT3101::device 00064 * Constructor definition for which is generated by OPT3101 configurator tool. Mainly the OPT3101::device::configurationFlags_isTXChannelActive and OPT3101::device::configurationFlags_isRegisterSetActive are set in the constructor 00065 * \returns Nothing; 00066 */ 00067 device(); 00068 OPT3101::registers reg; ///< Instance of the register class OPT3101::registers control for the device dev.reg.{registerName}=value initiates I2C register writes. 00069 OPT3101::calibrationC calibration[1]; ///< Instance of the calibration class OPT3101::calibrationC. This instance acts a staging area to load, save and calculate calibration coefficients during initial bring up, debug and factory calibration steps. 00070 /*! 00071 * \brief resets device 00072 * Template function which involves hostController::resetDevice method 00073 * \returns Nothing; 00074 */ 00075 void reset(); 00076 /*! 00077 * \brief initializes the device 00078 * Definition for the method is generated by the OPT3101 configuration generator tool. This method consists for all the register writes and sequences required to bring the device to desired operating condition 00079 * \returns Nothing; 00080 */ 00081 void initialize(); 00082 /*! 00083 * \brief validates I2C communication 00084 * This methods verifies if I2C protocol is working on the host 00085 * \returns status; Status bit if True I2C is working and if False its not working 00086 */ 00087 bool validateI2C(); 00088 /*! 00089 * \brief validates if design ID is correct 00090 * This methods verifies if design ID matches with what is expected from the device 00091 * \returns status; Status bit if True Design ID matches and if False the design ID doesnt match up 00092 */ 00093 bool validateDesignID(); 00094 00095 /*! 00096 * \brief Measures and corrects internal crosstalk 00097 * Method abstracts the internal crosstalk measurement. There are bunch of steps and register read/writes involved to measure and correct internal crosstalk which this method handles. This method is recommended to be run every time after power-up 00098 * \param[out] internalXtalk; internalXtalk in pointer to the instance of class OPT3101::crosstalkC where the internal crosstalk values gets loaded. This is used to understand and analyze system performance. 00099 * \returns Nothing; 00100 */ 00101 void measureAndCorrectInternalCrosstalk(crosstalkC *internalXtalk); 00102 /*! 00103 * \brief Measures illum crosstalk for a given channel and register set 00104 * Method abstracts the illum crosstalk measurement. The measurement of illum crosstalk for a given channel and register set involves configuring the device with bunch of register writes and reads. This method abstracts the procedure to make it simple for users to adopt<br> 00105 * This calibration procedure demands a very specific target/environmental requirement. This method invokes the appropriate template method from the envController class. Users needs to implement the method which achieves the specific requirement 00106 * \param[out] illumXtalk; illumXtalk in pointer to the instance of class OPT3101::crosstalkC where the illum crosstalk values gets loaded. This is used to understand and analyze system performance besides being used for temp coff estimation and factory calibration. 00107 * \param[in] txChannel; txChannel is the number denoting the channel for which the crosstalk measurement has to be performed. For eg: illumXtalk=0 does measurement for TX0 channel 00108 * \param[in] registerSet; registerSet is a char 'h' or 'l' specifying register set on which the illum crosstalk measurement needs to be performed. For eg: registerSet='h' would perform measurement on registers related to illum_dac_h_tx* 00109 * \param[in] shiftIllumPhase; shiftIllumPhase is the register value to set the OPT3101::registers::shift_illum_phase. This modifies the relative phase between the TX channels and the AFE helping perform non-linear calibration without moving the target. 00110 * \returns Nothing; 00111 */ 00112 void measureIllumCrosstalk(crosstalkC *illumXtalk, uint8_t txChannel, char registerSet, uint8_t shiftIllumPhase = 0); 00113 /*! 00114 * \brief Measures illum crosstalk for set of all the registers which are valid 00115 * Method abstracts the illum crosstalk measurement. This measures all the cross talk values for the given set<br> 00116 * This calibration procedure demands a very specific target/environmental requirement. This method invokes the appropriate template method from the envController class. Users needs to implement the method which achieves the specific requirement 00117 * \returns Nothing; 00118 */ 00119 void measureIllumCrosstalkSet(bool saveToFile=true); 00120 /*! 00121 * \brief Measures phase offset for a given channel and register set 00122 * Method abstracts the phase offset measurement. The measurement of phase offset is for a given channel and register set involves configuring the device with bunch of register writes and reads. This method abstracts the procedure to make it simple for users to adopt<br> 00123 * This calibration procedure demands a very specific target/environmental requirement. This method invokes the appropriate template method from the envController class. Users needs to implement the method which achieves the specific requirement 00124 * \param[out] phaseOffset; phaseOffset in pointer to the instance of class OPT3101::phaseOffsetC where the phase offset values gets loaded. This is used to understand and analyze system performance besides being used for temp coff estimation and factory calibration. 00125 * \param[in] txChannel; txChannel is the number denoting the channel for which the measurement has to be performed. For eg: illumXtalk=0 does measurement for TX0 channel 00126 * \param[in] registerSet; registerSet is a char 'h' or 'l' specifying register set on which the measurement needs to be performed. For eg: registerSet='h' would perform measurement on registers related to illum_dac_h_tx* 00127 * \param[in] refDistanceInCodes; refDistanceInCodes is reference distance of the target specified in codes OPT3101::frameData::phase codes. The conversion for the distance in mm to codes documented in the method OPT3101::device::calibrationSession_perDesignCalibrationPhaseTemp 00128 * \param[in] shiftIllumPhase; shiftIllumPhase is the register value to set the OPT3101::registers::shift_illum_phase. This modifies the relative phase between the TX channels and the AFE helping perform non-linear calibration without moving the target. 00129 * \returns Nothing; 00130 */ 00131 void measurePhaseOffset(phaseOffsetC *phaseOffset, uint8_t txChannel, char registerSet, uint16_t refDistanceInCodes, uint8_t shiftIllumPhase = 0); 00132 /*! 00133 * \brief Measures phase offset for a set of all registers 00134 * Method abstracts the phase offset measurement. The measurement of phase offset is for a given channel and register set involves configuring the device with bunch of register writes and reads. This method abstracts the procedure to make it simple for users to adopt<br> 00135 * This calibration procedure demands a very specific target/environmental requirement. This method invokes the appropriate template method from the envController class. Users needs to implement the method which achieves the specific requirement 00136 * \returns Nothing; 00137 */ 00138 void measurePhaseOffsetSet(bool saveToFile=true); 00139 /*! 00140 * \brief load illum crosstalk from OPT3101::crosstalkC class to the h/w 00141 * Method loads the registers from OPT3101::crosstalkC instance specified to the h/w to specified txChannel and registerSet 00142 * \param[out] illumXtalk; illumXtalk is pointer to the instance of OPT3101::crosstalkC class. The register values form the instance are loaded to the hardware to specified txChannel and registerSet 00143 * \param[in] txChannel; txChannel is the number denoting the channel to which the registers need to be loaded For eg: illumXtalk=0 loads for TX0 channel 00144 * \param[in] registerSet; registerSet is a char 'h' or 'l' specifying register set on which register needs to be loaded. For eg: registerSet='h' would load on to registers related to illum_dac_h_tx* 00145 * \returns Nothing; 00146 */ 00147 void loadIllumCrosstalk(crosstalkC *illumXtalk, uint8_t txChannel, char registerSet); 00148 /*! 00149 * \brief load phase offset from OPT3101::phaseOffsetC class to the h/w 00150 * Method loads the registers from OPT3101::phaseOffsetC instance specified to the h/w to specified txChannel and registerSet 00151 * \param[in] phaseOffset; phaseOffset is pointer to the instance of OPT3101::phaseOffsetC class. The register values form the instance are loaded to the hardware to specified txChannel and registerSet 00152 * \param[in] txChannel; txChannel is the number denoting the channel to which the registers need to be loaded For eg: illumXtalk=0 loads for TX0 channel 00153 * \param[in] registerSet; registerSet is a char 'h' or 'l' specifying register set on which register needs to be loaded. For eg: registerSet='h' would load on to registers related to illum_dac_h_tx* 00154 * \returns Nothing; 00155 */ 00156 void loadPhaseOffset(phaseOffsetC *phaseOffset, uint8_t txChannel, char registerSet); 00157 /*! 00158 * \brief Manually set the illumination cross talk coefficients after calculating outside 00159 * Method to manually set illumination crosstalk temperature coefficients. 00160 * \returns Nothing; 00161 */ 00162 void manuallySetIllumCrosstalkTempCoffs(); 00163 /*! 00164 * \brief Manually set the Phase Temperature coefficients after calculating outside 00165 * Method to manually Phase Temperature coefficients. 00166 * \returns Nothing; 00167 */ 00168 void manuallySetPhaseTempCoffs(); 00169 /*! 00170 * \brief load crosstalk temperature coefficients from OPT3101::crosstalkTempCoffC class to the h/w 00171 * Method loads the registers from OPT3101::crosstalkTempCoffC instance specified to the h/w to specified txChannel and registerSet 00172 * \param[in] illumXtalkTempCoff; illumXtalkTempCoff is pointer to the instance of OPT3101::crosstalkTempCoffC class. The register values form the instance are loaded to the hardware to specified txChannel and registerSet 00173 * \param[in] txChannel; txChannel is the number denoting the channel to which the registers need to be loaded For eg: illumXtalk=0 loads for TX0 channel 00174 * \param[in] registerSet; registerSet is a char 'h' or 'l' specifying register set on which register needs to be loaded. For eg: registerSet='h' would load on to registers related to illum_dac_h_tx* 00175 * \returns Nothing; 00176 */ 00177 void loadIllumCrosstalkTempCoff(crosstalkTempCoffC *illumXtalkTempCoff, uint8_t txChannel, char registerSet); 00178 /*! 00179 * \brief load phase offset temperature coefficients from OPT3101::phaseTempCoffC class to the h/w 00180 * Method loads the registers from OPT3101::phaseTempCoffC instance specified to the h/w to specified txChannel and registerSet 00181 * \param[in] phaseTempCoff; phaseTempCoff is pointer to the instance of OPT3101::phaseTempCoffC class. The register values form the instance are loaded to the hardware to specified txChannel and registerSet 00182 * \param[in] txChannel; txChannel is the number denoting the channel to which the registers need to be loaded For eg: illumXtalk=0 loads for TX0 channel 00183 * \param[in] registerSet; registerSet is a char 'h' or 'l' specifying register set on which register needs to be loaded. For eg: registerSet='h' would load on to registers related to illum_dac_h_tx* 00184 * \returns Nothing; 00185 */ 00186 void loadPhaseOffsetTempCoff(phaseTempCoffC *phaseTempCoff, uint8_t txChannel, char registerSet); 00187 /*! 00188 * \brief load phase ambient coefficients from OPT3101::phaseAmbientCoffC class to the h/w 00189 * Method loads the registers from OPT3101::phaseAmbientCoff instance specified to the h/w 00190 * \param[in] phaseAmbientCoff; phaseAmbientCoff is pointer to the instance of OPT3101::phaseAmbientCoffC class. The register values form the instance are loaded to the hardware 00191 * \returns Nothing; 00192 */ 00193 void loadPhaseAmbientCoff(phaseAmbientCoffC *phaseAmbientCoff); 00194 00195 /*! 00196 * \brief loads all illum crosstalk set specified by OPT3101 configuration tool to h/w 00197 * Method loads all the illum crosstalk registers from OPT3101::calibrationC::illumCrosstalk to the h/w to their specific TX channels and register sets. The order in which data is stored and indexed is preset and loaded accordingly. 00198 * The method provides a higher level of abstraction for users to just load the illumCrosstalk calibration portion of the calibration data from the self contained instance of OPT3101::calibrationC to the h/w 00199 * \param[in] loadFromFile; loadFromFile is a flag which specifies whether to load the calibration coff from file or from the OPT3101::device::calibration member of the OPT3101::calibrationC class 00200 * \returns Nothing; 00201 */ 00202 void loadIllumCrosstalkSet(bool loadFromFile = true); 00203 /*! 00204 * \brief loads all illum crosstalk temp coefficients set specified by OPT3101 configuration tool to h/w 00205 * Method loads all the illum crosstalk temp coff registers from OPT3101::calibrationC::illumCrosstalkTempCoff to the h/w to their specific TX channels and register sets. The order in which data is stored and indexed is preset and loaded accordingly. 00206 * The method provides a higher level of abstraction for users to just load the illumCrosstalk temp coff calibration portion of the calibration data from the self contained instance of OPT3101::calibrationC to the h/w 00207 * \returns Nothing; 00208 */ 00209 void loadIllumCrosstalkTempCoffSet(); 00210 /*! 00211 * \brief loads all phase offset set specified by OPT3101 configuration tool to h/w 00212 * Method loads all the phase offset registers from OPT3101::calibration::phaseOffset to the h/w to their specific TX channels and register sets. The order in which data is stored and indexed is preset and loaded accordingly. 00213 * The method provides a higher level of abstraction for users to just load the phase offset calibration portion of the calibration data from the self contained instance of OPT3101::calibrationC to the h/w 00214 * \param[in] loadFromFile; loadFromFile is a flag which specifies whether to load the calibration coff from file or from the OPT3101::device::calibration member of the OPT3101::calibrationC class 00215 * \returns Nothing; 00216 */ 00217 void loadPhaseOffsetSet(bool loadFromFile = true); 00218 /*! 00219 * \brief loads all phase temp coff set specified by OPT3101 configuration tool to h/w 00220 * Method loads all the phase temp coff registers from OPT3101::calibration::phaseTempCoff to the h/w to their specific TX channels and register sets. The order in which data is stored and indexed is preset and loaded accordingly. 00221 * The method provides a higher level of abstraction for users to just load the phase temp coff calibration portion of the calibration data from the self contained instance of OPT3101::calibrationC to the h/w 00222 * \param[in] loadFromFile; loadFromFile is a flag which specifies whether to load the calibration coff from file or from the OPT3101::device::calibration member of the OPT3101::calibrationC class 00223 * \returns Nothing; 00224 */ 00225 void loadPhaseOffsetTempCoffSet(); 00226 /*! 00227 * \brief loads phase ambient coff set to h/w 00228 * Method loads all the phase ambient coff registers from OPT3101::calibrationC::phaseAmbientCoff to the h/w. 00229 * The method provides a higher level of abstraction for users to just load the phase ambient coff calibration portion of the calibration data from the self contained instance of OPT3101::calibrationC to the h/w 00230 * \returns Nothing; 00231 */ 00232 void loadPhaseAmbientCoffSet(); 00233 /*! 00234 * \brief shows live view 00235 * scrolls data on screen 00236 * param[in] nFrames; Number of Frames to display data 00237 * param[in] refreshDelayinms; Refresh delay in mS 00238 * param[in] scroll; Flag to determine if data needs to scrool on screen 00239 * \returns Nothing; 00240 */ 00241 void liveDataView(uint32_t nFrames,uint32_t refreshDelayinms,bool scroll=false); 00242 /*! 00243 * \brief Initialize hardware and view data 00244 * Initializes the hardware and views data 00245 * param[in] nFrames; Number of Frames to display data 00246 * param[in] loadCalibration; Flag to determine if calibration data needs to be loaded 00247 * \returns Nothing; 00248 */ 00249 void resetInitAndViewData(uint32_t nFrames=100,bool loadCalibration=false); 00250 /*! 00251 * \brief method for calibration session run the first time the board is brought up 00252 * Method is a sequence of steps recommended when the system is powered up for the first time. 00253 * This this is a session, this is a standalone session includes reset of device and initialization 00254 * Details of the steps performed are documented in the detailed section 00255 * \returns Nothing; 00256 */ 00257 void calibrationSession_firstTimeBringUp(); 00258 /*! 00259 * \brief method for calibration of crosstalk temperature coefficients 00260 * This method is only needed for implementations using TX2 channel on OPT3101. 00261 * It fixes an issue where the device data stream will freeze at a certain amplitude. 00262 * This method is a sequence of steps to scale xtalk down on tx2 channel of the device. 00263 * This is a standalone session, which includes reset of device and initialization 00264 * Details of the steps performed are documented in the detailed section 00265 * \returns Nothing; 00266 */ 00267 void calibrationSession_perDesignTx2IllumXtalkCorrection(); 00268 /*! 00269 * \brief optional method for compensating high crosstalk levels on a single channel 00270 * This procedure is needed if a single channel has much higher crosstalk than the others and 00271 * allows for an additional compensation step to reduce this crosstalk to a greater degree 00272 * than possible with the crosstalk correction engine on the device. 00273 * Most three channel implementations will require this step if xtalk on tx2 channel is >600 codes. 00274 * This this is a session, this is a standalone session includes reset of device and initialization 00275 * This method also modifies registers without restoring values. 00276 * Make sure to reset the device after running if other methods are to be run after. 00277 * Details of the steps performed are documented in the detailed section 00278 * \returns Nothing; 00279 */ 00280 void calibrationSession_perDesignCalibrationCrosstalkTemp(); 00281 /*! 00282 * \brief method for calibration of phase temperature coefficients 00283 * This is recommended to be run on a few units per design. Coefficients calculated by this can be used for all the units in production 00284 * Method is a sequence of steps recommended to perform phase temperature coefficients 00285 * This this is a session, this is a standalone session includes reset of device and initialization 00286 * Details of the steps performed are documented in the detailed section 00287 * \returns Nothing; 00288 */ 00289 void calibrationSession_perDesignCalibrationPhaseTemp(); 00290 /*! 00291 * \brief method for calibration of phase ambient coefficients 00292 * This is recommended to be run on a few units per design. Coefficients calculated by this can be used for all the units in production 00293 * Method is a sequence of steps recommended to perform phase ambient coefficients 00294 * This this is a session, this is a standalone session includes reset of device and initialization 00295 * Details of the steps performed are documented in the detailed section 00296 * \returns Nothing; 00297 */ 00298 void calibrationSession_perDesignCalibrationPhaseAmbient(); 00299 /*! 00300 * \brief method for calibration of phase ambient coefficients after manually curve fitting 00301 * This is recommended to be run on a few units per design. Coefficients calculated by this can be used for all the units in production 00302 * Method is a expected to be run after a PWL curve fit has been done to the ambient data after running OPT3101::device::calibrationSession_perDesignCalibrationPhaseAmbient and analyzing and curve fitting the data 00303 * This method doesn't do anything to the device except to update the coff and store it to file 00304 * Details of the steps performed are documented in the detailed section 00305 * \returns Nothing; 00306 */ 00307 void manuallySetPhaseAmbientCoffs(); 00308 /*! 00309 * \brief method for calibration during factory for each unit of the system 00310 * This is recommended to be run on a each and every units through production. 00311 * Method is a sequence of steps recommended to perform all necessary calibration per unit 00312 * This is a session, this is a standalone session includes reset of device and initialization 00313 * Details of the steps performed are documented in the detailed section 00314 * \returns Nothing; 00315 */ 00316 void calibrationSession_perUnitFactoryCalibration(); 00317 00318 void perUnitFactoryUpdateIllumXtalk (); 00319 /*! 00320 * \brief method to store the calibration to EERPOM or some other from on non-volatile memory to be loaded on power-up every time 00321 * This is recommended to be run on a each and every units through production after OPT3101::device::calibrationSession_perUnitFactoryCalibration 00322 * Method is a sequence of steps recommended to store the calibration data to a non-volatile memory for restoration during actual system operation 00323 * In case if the configuration flag OPT3101::device::EEPROM_connected is set to true, this method uses the OPT3101 I2C slave to write data to the connected EEPROM 00324 * This is a session, this is a standalone session includes reset of device and initialization 00325 * Details of the steps performed are documented in the detailed section 00326 * DEBUG_dry_run argument when set to true will print registers to write, but does not actually write to the EEPROM. This is a debug feature. 00327 * \returns Nothing; 00328 */ 00329 void calibrationSession_perUnitFactoryCalibrationWriteRegisterDataToNonVolatileMemory(bool DEBUG_dry_run=false); 00330 /*! 00331 * \brief Read from the EEPROM and display contents on the screen 00332 * param[in] format; Chooses which format to display the data 00333 * \returns Nothing; 00334 */ 00335 void readAndPrintEEPROMContents(bool rawFormat=false); 00336 // Configuration flags to be set by configurator tool 00337 bool configurationFlags_monoshotMode; ///< Configuration flag to specify if the device is operating in mono shot mode which is set by OPT3101 configurator tool 00338 uint8_t configurationFlags_xtalkFilterTau; ///< Configuration value of crosstalk filter time constant which is set by OPT3101 configurator tool 00339 uint16_t configurationFlags_xtalkSettlingOneTauInMilliSeconds; ///< Configuration value specifying the time constant in milliseconds which is set by OPT3101 configurator tool 00340 uint16_t configurationFlags_xtalkSettlingOneTauInDataReadyCounts; ///< Configuration value specifying the time constant in data ready counts which is set by OPT3101 configurator tool 00341 uint8_t configurationFlags_avgFrameCountExponentOfTwo; ///< Configuration value specifying exponent component of average frame count which is set by OPT3101 configurator tool 00342 uint32_t configurationFlags_frameTimeInMilliSeconds; ///< Configuration value specifying frame time in milli-seconds which is set by OPT3101 configurator tool 00343 bool configurationFlags_isTXChannelActive[3]; ///< Configuration value specifying the active channels set by OPT3101 congifigurator tool 00344 bool configurationFlags_isRegisterSetActive[2]; ///< Configuration value specifying the active register set by OPT3101 congifigurator tool 00345 00346 }; 00347 } 00348 00349 #endif /* OPT3101DEVICE_H_ */ 00350
Generated on Sun Jul 17 2022 05:22:03 by
1.7.2