INSAT Mini Project

Dependencies:   ST_INTERFACES X_NUCLEO_COMMON

Fork of X_NUCLEO_6180XA1 by ST

Committer:
gallonm
Date:
Mon Nov 02 14:02:53 2015 +0100
Revision:
24:025afc3fe30f
Parent:
20:dd8390d615bf
Child:
27:22c6f69967d9
Modified file cfg.h by introducing #define EXTENDED_RANGE_50CM.
Settled StartMeasurement by removing MeasureData_t from parameters.
Settled range single shot measure and als single shot measure.
Settled GetMeasurement by introducing range_single_shot case and als_single_shot case.
Settled VL6180x_AlsSetThresholds by introducing the computation in order to pass
the arguments in lux and write the same arguments in raw device value into registers.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gallonm 10:4954b09b72d8 1 /**
gallonm 10:4954b09b72d8 2 ******************************************************************************
gallonm 10:4954b09b72d8 3 * @file x_nucleo_6180xa1.cpp
gallonm 10:4954b09b72d8 4 * @author AST / EST
gallonm 10:4954b09b72d8 5 * @version V0.0.1
gallonm 10:4954b09b72d8 6 * @date 13-April-2015
gallonm 10:4954b09b72d8 7 * @brief Implementation file for the X_NUCLEO_VL6180XA1 singleton class
gallonm 10:4954b09b72d8 8 ******************************************************************************
gallonm 10:4954b09b72d8 9 * @attention
gallonm 10:4954b09b72d8 10 *
gallonm 10:4954b09b72d8 11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
gallonm 10:4954b09b72d8 12 *
gallonm 10:4954b09b72d8 13 * Redistribution and use in source and binary forms, with or without modification,
gallonm 10:4954b09b72d8 14 * are permitted provided that the following conditions are met:
gallonm 10:4954b09b72d8 15 * 1. Redistributions of source code must retain the above copyright notice,
gallonm 10:4954b09b72d8 16 * this list of conditions and the following disclaimer.
gallonm 10:4954b09b72d8 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
gallonm 10:4954b09b72d8 18 * this list of conditions and the following disclaimer in the documentation
gallonm 10:4954b09b72d8 19 * and/or other materials provided with the distribution.
gallonm 10:4954b09b72d8 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
gallonm 10:4954b09b72d8 21 * may be used to endorse or promote products derived from this software
gallonm 10:4954b09b72d8 22 * without specific prior written permission.
gallonm 10:4954b09b72d8 23 *
gallonm 10:4954b09b72d8 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
gallonm 10:4954b09b72d8 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
gallonm 10:4954b09b72d8 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
gallonm 10:4954b09b72d8 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
gallonm 10:4954b09b72d8 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
gallonm 10:4954b09b72d8 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
gallonm 10:4954b09b72d8 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
gallonm 10:4954b09b72d8 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
gallonm 10:4954b09b72d8 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
gallonm 10:4954b09b72d8 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
gallonm 10:4954b09b72d8 34 *
gallonm 10:4954b09b72d8 35 ******************************************************************************
gallonm 10:4954b09b72d8 36 */
gallonm 10:4954b09b72d8 37
gallonm 10:4954b09b72d8 38
gallonm 10:4954b09b72d8 39 /* Includes ------------------------------------------------------------------*/
gallonm 10:4954b09b72d8 40 #include "x_nucleo_6180xa1.h"
gallonm 10:4954b09b72d8 41
gallonm 10:4954b09b72d8 42 /* Static variables ----------------------------------------------------------*/
gallonm 10:4954b09b72d8 43 X_NUCLEO_6180XA1* X_NUCLEO_6180XA1::_instance = NULL;
gallonm 10:4954b09b72d8 44
gallonm 10:4954b09b72d8 45
gallonm 10:4954b09b72d8 46 X_NUCLEO_6180XA1* X_NUCLEO_6180XA1::Instance(DevI2C *ext_i2c)
gallonm 10:4954b09b72d8 47 {
gallonm 16:0d4776564733 48 if(_instance==NULL)
gallonm 16:0d4776564733 49 _instance=new X_NUCLEO_6180XA1(ext_i2c);
gallonm 16:0d4776564733 50 else
gallonm 20:dd8390d615bf 51 printf("Failed to init X_NUCLEO_6180XA1 board!\n");
gallonm 16:0d4776564733 52 return _instance;
gallonm 10:4954b09b72d8 53 }
gallonm 10:4954b09b72d8 54
gallonm 10:4954b09b72d8 55
gallonm 20:dd8390d615bf 56 int X_NUCLEO_6180XA1::InitBoard()
gallonm 10:4954b09b72d8 57 {
gallonm 16:0d4776564733 58 int status, n_dev=0;
gallonm 15:454710d17358 59
gallonm 16:0d4776564733 60 sensor_top->VL6180x_Off();
gallonm 16:0d4776564733 61 sensor_bottom->VL6180x_Off();
gallonm 16:0d4776564733 62 sensor_left->VL6180x_Off();
gallonm 16:0d4776564733 63 sensor_right->VL6180x_Off();
gallonm 16:0d4776564733 64 status=sensor_top->InitSensor(NEW_SENSOR_TOP_ADDRESS);
gallonm 16:0d4776564733 65 if(status)
gallonm 16:0d4776564733 66 {
gallonm 16:0d4776564733 67 delete sensor_top;
gallonm 16:0d4776564733 68 delete gpio0_top;
gallonm 16:0d4776564733 69 sensor_top=NULL;
gallonm 16:0d4776564733 70 gpio0_top=NULL;
gallonm 16:0d4776564733 71 printf("Failed to init sensor_top\n\r");
gallonm 16:0d4776564733 72 }
gallonm 16:0d4776564733 73 else
gallonm 16:0d4776564733 74 {
gallonm 16:0d4776564733 75 n_dev++;
gallonm 16:0d4776564733 76 }
gallonm 16:0d4776564733 77 status=sensor_bottom->InitSensor(NEW_SENSOR_BOTTOM_ADDRESS);
gallonm 16:0d4776564733 78 if(status)
gallonm 16:0d4776564733 79 {
gallonm 16:0d4776564733 80 delete sensor_bottom;
gallonm 16:0d4776564733 81 delete gpio0_bottom;
gallonm 16:0d4776564733 82 sensor_bottom=NULL;
gallonm 16:0d4776564733 83 gpio0_bottom=NULL;
gallonm 16:0d4776564733 84 printf("Failed to init sensor_bottom\n\r");
gallonm 16:0d4776564733 85 }
gallonm 16:0d4776564733 86 else
gallonm 16:0d4776564733 87 {
gallonm 16:0d4776564733 88 n_dev++;
gallonm 16:0d4776564733 89 }
gallonm 16:0d4776564733 90 status=sensor_left->InitSensor(NEW_SENSOR_LEFT_ADDRESS);
gallonm 16:0d4776564733 91 if(status)
gallonm 16:0d4776564733 92 {
gallonm 16:0d4776564733 93 delete sensor_left;
gallonm 16:0d4776564733 94 delete gpio0_left;
gallonm 16:0d4776564733 95 sensor_left=NULL;
gallonm 16:0d4776564733 96 gpio0_left=NULL;
gallonm 16:0d4776564733 97 printf("Failed to init sensor_left\n\r");
gallonm 16:0d4776564733 98 }
gallonm 16:0d4776564733 99 else
gallonm 16:0d4776564733 100 {
gallonm 16:0d4776564733 101 n_dev++;
gallonm 16:0d4776564733 102 }
gallonm 16:0d4776564733 103 status=sensor_right->InitSensor(NEW_SENSOR_RIGHT_ADDRESS);
gallonm 16:0d4776564733 104 if(status)
gallonm 16:0d4776564733 105 {
gallonm 16:0d4776564733 106 delete sensor_right;
gallonm 16:0d4776564733 107 delete gpio0_right;
gallonm 16:0d4776564733 108 sensor_right=NULL;
gallonm 20:dd8390d615bf 109 gpio0_right=NULL;
gallonm 16:0d4776564733 110 printf("Failed to init sensor_right\n\r");
gallonm 16:0d4776564733 111 }
gallonm 16:0d4776564733 112 else
gallonm 16:0d4776564733 113 {
gallonm 16:0d4776564733 114 n_dev++;
gallonm 16:0d4776564733 115 }
gallonm 16:0d4776564733 116 if(n_dev==0)
gallonm 16:0d4776564733 117 return 1;
gallonm 16:0d4776564733 118 else
gallonm 16:0d4776564733 119 return 0;
gallonm 10:4954b09b72d8 120 }
gallonm 10:4954b09b72d8 121
gallonm 10:4954b09b72d8 122