Ted Grosch / Mbed 2 deprecated Nucleo_TOF_I2C

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers OPT3101device.h Source File

OPT3101device.h

Go to the documentation of this file.
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