ST Expansion SW Team / X_NUCLEO_53L3A2

Dependencies:   VL53L3CX_mbed

Dependents:   VL53L3CX_Shield_Polling VL53L3CX_Shield_Polling VL53L3CX_Shield_Polling_v5_15 VL53L3_shield_1sensor_polling_Mb515 ... more

Files at this revision

API Documentation at this revision

Comitter:
johnAlexander
Date:
Wed Nov 04 10:01:32 2020 +0000
Parent:
6:9a5313607546
Child:
8:c174f4f18bd0
Commit message:
Rename board library, to match printed board, and repo, name.

Changed in this revision

XNucleo53L3A2.cpp Show annotated file Show diff for this revision Revisions of this file
XNucleo53L3A2.h Show annotated file Show diff for this revision Revisions of this file
XNucleo53LX.cpp Show diff for this revision Revisions of this file
XNucleo53LX.h Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/XNucleo53L3A2.cpp	Wed Nov 04 10:01:32 2020 +0000
@@ -0,0 +1,110 @@
+#include "XNucleo53L3A2.h"
+
+XNucleo53L3A2 *XNucleo53L3A2::_instance = NULL;
+
+
+XNucleo53L3A2 *XNucleo53L3A2::instance(vl53L3_DevI2C *ext_i2c)
+{
+    if (_instance == NULL) {
+        _instance = new XNucleo53L3A2(ext_i2c);
+    } else {
+        printf("Failed to create XNucleo53L3A2 instance\n\r\r\n");
+    }
+    return _instance;
+}
+
+XNucleo53L3A2 *XNucleo53L3A2::instance(vl53L3_DevI2C *ext_i2c,
+                                       PinName gpio1_centre,
+                                       PinName gpio1_left, PinName gpio1_right)
+{
+    if (_instance == NULL) {
+//        printf("instance %d z\n",ext_i2c);
+        _instance = new XNucleo53L3A2(ext_i2c, gpio1_centre, gpio1_left, gpio1_right);
+    } else {
+        printf("Failed to create XNucleo53L3A2 instance\n\r");
+    }
+    return _instance;
+}
+
+
+int XNucleo53L3A2::init_board()
+{
+    printf("init_board \n");
+    int status, n_dev = 0;
+
+    sensor_centre->VL53LX_Off();
+    sensor_left->VL53LX_Off();
+    sensor_right->VL53LX_Off();
+    
+
+    
+    // On startup or on the shutdown pin going high the VL53l1 devices have a i2c address of 0x52.
+    // To initialise then we have to bring up one device at a time This involves raising the shutdown pin for that device,
+    // initialising then setting the i2c address to a unique value. Once that is done the shutdown pins don't need to be touched.
+    
+    // set the shutdown pins to be outputs ( they are inputs on power up)
+    stmpe1600_exp1->set_gpio_dir(GPIO_15,OUTPUT);
+    stmpe1600_exp0->set_gpio_dir(GPIO_14,OUTPUT);
+    stmpe1600_exp0->set_gpio_dir(GPIO_15,OUTPUT);
+    
+    // set the shutdown pins to low, this will reset the VL53l1s
+    stmpe1600_exp1->clear_gpio(GPIO_15);
+    stmpe1600_exp0->clear_gpio(GPIO_14);
+    stmpe1600_exp0->clear_gpio(GPIO_15);
+
+// select the first VL53l1. It will have i2c address of 0x52. Set the i2c address to
+//NEW_SENSOR_CENTRE_ADDRESS
+    stmpe1600_exp1->set_gpio(GPIO_15);
+        printf("InitSensor \n");
+    status = sensor_centre->InitSensor(NEW_SENSOR_CENTRE_ADDRESS);
+    if (status) {
+        delete sensor_centre;
+        delete xshutdown_centre;
+        sensor_centre = NULL;
+        xshutdown_centre = NULL;
+        printf("Sensor centre not present\n\r");
+    } else {
+        printf("Sensor centre present\n\r");
+        n_dev++;
+    }
+    
+    // select the second VL53l1. It will have i2c address of 0x52. Set the i2c address to
+    //NEW_SENSOR_LEFT_ADDRESS
+    
+    stmpe1600_exp0->set_gpio(GPIO_14);
+
+    status = sensor_left->InitSensor(NEW_SENSOR_LEFT_ADDRESS);
+    if (status) {
+        delete sensor_left;
+        delete xshutdown_left;
+        sensor_left = NULL;
+        xshutdown_left = NULL;
+        printf("Sensor left not present\n\r");
+    } else {
+        printf("Sensor left present\n\r");
+        n_dev++;
+    }
+    
+     // select the 3rd VL53l1. It will have i2c address of 0x52. Set the i2c address to
+    //NEW_SENSOR_RIGHT_ADDRESS 
+    stmpe1600_exp0->set_gpio(GPIO_15);
+    status = sensor_right->InitSensor(NEW_SENSOR_RIGHT_ADDRESS);
+    if (status) {
+        delete sensor_right;
+        delete xshutdown_right;
+        sensor_right = NULL;
+        xshutdown_right = NULL;
+        printf("Sensor right not present\n\r");
+    } else {
+        printf("Sensor right present\n\r");
+        n_dev++;
+    }
+
+return 0;
+    if (n_dev == 0) {
+        return 1;
+    } else {
+        return 0;
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/XNucleo53L3A2.h	Wed Nov 04 10:01:32 2020 +0000
@@ -0,0 +1,196 @@
+/**
+ ******************************************************************************
+ * @file    XNucleo53L3A2.h
+ * @author  JS
+ * @version V0.0.1
+ * @date    15-January-2019
+ * @brief   Header file for component XNucleo53L3A2
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; COPYRIGHT(c) 2019 STMicroelectronics</center></h2>
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *   1. Redistributions of source code must retain the above copyright notice,
+ *      this list of conditions and the following disclaimer.
+ *   2. Redistributions in binary form must reproduce the above copyright notice,
+ *      this list of conditions and the following disclaimer in the documentation
+ *      and/or other materials provided with the distribution.
+ *   3. Neither the name of STMicroelectronics nor the names of its contributors
+ *      may be used to endorse or promote products derived from this software
+ *       without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT HOLDER OR CONTRIBUTORS 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.
+ *
+ ******************************************************************************
+*/
+
+#ifndef __VL53L3_NUCLEO_CLASS_H
+#define __VL53L3_NUCLEO_CLASS_H
+
+
+/* Includes ------------------------------------------------------------------*/
+#include "mbed.h"
+#include "PinNames.h"
+#include <vl53lx_class.h>
+#include "Stmpe1600.h"
+//#include "DevI2C.h"
+#include "vl53L3_I2c.h"
+
+
+/** New device addresses */
+///#define NEW_SENSOR_CENTRE_ADDRESS   0x52
+//#define NEW_SENSOR_CENTRE_ADDRESS   0x54
+///#define NEW_SENSOR_LEFT_ADDRESS         0x54
+///#define NEW_SENSOR_RIGHT_ADDRESS        0x56
+
+
+#define NEW_SENSOR_CENTRE_ADDRESS   0x56
+
+#define NEW_SENSOR_LEFT_ADDRESS         0x58
+#define NEW_SENSOR_RIGHT_ADDRESS        0x5a
+
+
+/* Classes--------------------------------------------------------------------*/
+
+/* Classes -------------------------------------------------------------------*/
+/** Class representing the X-NUCLEO-VL53L1A1 expansion board
+ */
+class XNucleo53L3A2
+{
+public:
+    /** Constructor 1
+    * @param[in] &i2c device I2C to be used for communication
+    */
+    XNucleo53L3A2(vl53L3_DevI2C *ext_i2c) : dev_i2c(ext_i2c)
+    {
+        
+                printf("XNucleo53L3A2 %d z\n",ext_i2c);
+        stmpe1600_exp0 = new Stmpe1600((DevI2C*)ext_i2c, (0x43 * 2));     // U21
+
+        stmpe1600_exp1 = new Stmpe1600((DevI2C*)ext_i2c, (0x42 * 2));     // U19
+
+        xshutdown_centre = new Stmpe1600DigiOut((DevI2C*)dev_i2c, GPIO_15, (0x42 * 2));     // U19 on schematic
+        sensor_centre = new VL53LX(ext_i2c, xshutdown_centre, A2);
+
+        xshutdown_left = new Stmpe1600DigiOut((DevI2C*)dev_i2c, GPIO_14, (0x43 * 2));     // U21 on schematic
+        sensor_left = new VL53LX(dev_i2c, xshutdown_left, D8);
+
+        xshutdown_right = new Stmpe1600DigiOut((DevI2C*)dev_i2c, GPIO_15, (0x43 * 2));     // U21 on schematic
+        sensor_right = new VL53LX(dev_i2c, xshutdown_right, D2);
+    }  
+    
+    /** Constructor 2
+     * @param[in] &i2c device I2C to be used for communication
+     * @param[in] PinName gpio1_top Mbed DigitalOut pin name to be used as a top sensor GPIO_1 INT
+     * @param[in] PinName gpio1_bottom Mbed DigitalOut pin name to be used as a bottom sensor GPIO_1 INT
+     * @param[in] PinName gpio1_left Mbed DigitalOut pin name to be used as a left sensor GPIO_1 INT
+     * @param[in] PinName gpio1_right Mbed DigitalOut pin name to be used as a right sensor GPIO_1 INT
+     */
+    XNucleo53L3A2(vl53L3_DevI2C *ext_i2c, PinName gpio1_centre,
+                  PinName gpio1_left, PinName gpio1_right) : dev_i2c(ext_i2c)
+    {
+        stmpe1600_exp0 = new Stmpe1600((DevI2C*)ext_i2c, (0x43 * 2));     // U21
+
+        stmpe1600_exp1 = new Stmpe1600((DevI2C*)ext_i2c, (0x42 * 2));     // U19
+        printf("vl53L1X_DevI2C constructor %d %d %d %d\n",ext_i2c,gpio1_centre,gpio1_left,gpio1_right);
+
+        xshutdown_centre = new Stmpe1600DigiOut((DevI2C*)dev_i2c, GPIO_15, (0x42 * 2));     // U19 on schematic
+        sensor_centre = new VL53LX(dev_i2c, xshutdown_centre, gpio1_centre);
+
+        xshutdown_left = new Stmpe1600DigiOut((DevI2C*)dev_i2c, GPIO_14, (0x43 * 2));     // U21 on schematic
+        sensor_left = new VL53LX(dev_i2c, xshutdown_left, gpio1_left);
+
+        xshutdown_right = new Stmpe1600DigiOut((DevI2C*)dev_i2c, GPIO_15, (0x43 * 2));     // U21 on schematic
+        sensor_right = new VL53LX(dev_i2c, xshutdown_right, gpio1_right);
+    }    
+    
+    
+    /** Destructor
+     */
+    ~XNucleo53L3A2()
+    {
+        printf("XNucleo53L3A2 destructor \n");
+        if (xshutdown_centre != NULL) {
+            delete xshutdown_centre;
+            xshutdown_centre = NULL;
+        }
+        if (sensor_centre != NULL) {
+            delete sensor_centre;
+            sensor_centre = NULL;
+        }
+        if (xshutdown_left != NULL) {
+            delete xshutdown_left;
+            xshutdown_left = NULL;
+        }
+        if (sensor_left != NULL) {
+            delete sensor_left;
+            sensor_left = NULL;
+        }
+        if (xshutdown_right != NULL) {
+            delete xshutdown_right;
+            xshutdown_right = NULL;
+        }
+        if (sensor_right != NULL) {
+            delete sensor_right;
+            sensor_right = NULL;
+        }
+
+        delete stmpe1600_exp0;
+        stmpe1600_exp0 = NULL;
+        delete stmpe1600_exp1;
+        stmpe1600_exp1 = NULL;
+        _instance = NULL;
+    }
+
+
+    /**
+     * @brief       Creates a singleton object instance
+     * @param[in]   &i2c device I2C to be used for communication
+     * @return      Pointer to the object instance
+     */
+    static XNucleo53L3A2 *instance(vl53L3_DevI2C *ext_i2c);
+
+    /**
+     * @brief       Creates a singleton object instance
+     * @param[in]   &i2c device I2C to be used for communication
+     * @param[in]   PinName gpio1_centre the pin connected to top sensor INT
+     * @param[in]   PinName gpio1_left the pin connected to left sensor INT
+     * @param[in]   PinName gpio1_right the pin connected to right sensor INT
+     * @return      Pointer to the object instance
+     */
+    static XNucleo53L3A2 *instance(vl53L3_DevI2C *ext_i2c, PinName gpio1_centre,
+                                   PinName gpio1_left, PinName gpio1_right);
+
+    /**
+     * @brief       Initialize the board and sensors with deft values
+     * @return      0 on success
+     */
+    int init_board();
+    
+    vl53L3_DevI2C *dev_i2c;
+    VL53LX *sensor_centre;
+    VL53LX *sensor_left;
+    VL53LX *sensor_right;
+    Stmpe1600 *stmpe1600_exp0;
+    Stmpe1600 *stmpe1600_exp1;
+    Stmpe1600DigiOut *xshutdown_centre;
+    Stmpe1600DigiOut *xshutdown_left;
+    Stmpe1600DigiOut *xshutdown_right;
+    
+private:
+    static XNucleo53L3A2 *_instance;
+};
+
+
+#endif /* __VL53L3_NUCLEO_CLASS_H */
\ No newline at end of file
--- a/XNucleo53LX.cpp	Tue Nov 03 15:28:52 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-#include "XNucleo53LX.h"
-
-XNucleo53LX *XNucleo53LX::_instance = NULL;
-
-
-XNucleo53LX *XNucleo53LX::instance(vl53L3_DevI2C *ext_i2c)
-{
-    if (_instance == NULL) {
-        _instance = new XNucleo53LX(ext_i2c);
-    } else {
-        printf("Failed to create XNucleo53LX instance\n\r\r\n");
-    }
-    return _instance;
-}
-
-XNucleo53LX *XNucleo53LX::instance(vl53L3_DevI2C *ext_i2c,
-                                       PinName gpio1_centre,
-                                       PinName gpio1_left, PinName gpio1_right)
-{
-    if (_instance == NULL) {
-//        printf("instance %d z\n",ext_i2c);
-        _instance = new XNucleo53LX(ext_i2c, gpio1_centre, gpio1_left, gpio1_right);
-    } else {
-        printf("Failed to create XNucleo53LX instance\n\r");
-    }
-    return _instance;
-}
-
-
-int XNucleo53LX::init_board()
-{
-    printf("init_board \n");
-    int status, n_dev = 0;
-
-    sensor_centre->VL53LX_Off();
-    sensor_left->VL53LX_Off();
-    sensor_right->VL53LX_Off();
-    
-
-    
-    // On startup or on the shutdown pin going high the VL53l1 devices have a i2c address of 0x52.
-    // To initialise then we have to bring up one device at a time This involves raising the shutdown pin for that device,
-    // initialising then setting the i2c address to a unique value. Once that is done the shutdown pins don't need to be touched.
-    
-    // set the shutdown pins to be outputs ( they are inputs on power up)
-    stmpe1600_exp1->set_gpio_dir(GPIO_15,OUTPUT);
-    stmpe1600_exp0->set_gpio_dir(GPIO_14,OUTPUT);
-    stmpe1600_exp0->set_gpio_dir(GPIO_15,OUTPUT);
-    
-    // set the shutdown pins to low, this will reset the VL53l1s
-    stmpe1600_exp1->clear_gpio(GPIO_15);
-    stmpe1600_exp0->clear_gpio(GPIO_14);
-    stmpe1600_exp0->clear_gpio(GPIO_15);
-
-// select the first VL53l1. It will have i2c address of 0x52. Set the i2c address to
-//NEW_SENSOR_CENTRE_ADDRESS
-    stmpe1600_exp1->set_gpio(GPIO_15);
-        printf("InitSensor \n");
-    status = sensor_centre->InitSensor(NEW_SENSOR_CENTRE_ADDRESS);
-    if (status) {
-        delete sensor_centre;
-        delete xshutdown_centre;
-        sensor_centre = NULL;
-        xshutdown_centre = NULL;
-        printf("Sensor centre not present\n\r");
-    } else {
-        printf("Sensor centre present\n\r");
-        n_dev++;
-    }
-    
-    // select the second VL53l1. It will have i2c address of 0x52. Set the i2c address to
-    //NEW_SENSOR_LEFT_ADDRESS
-    
-    stmpe1600_exp0->set_gpio(GPIO_14);
-
-    status = sensor_left->InitSensor(NEW_SENSOR_LEFT_ADDRESS);
-    if (status) {
-        delete sensor_left;
-        delete xshutdown_left;
-        sensor_left = NULL;
-        xshutdown_left = NULL;
-        printf("Sensor left not present\n\r");
-    } else {
-        printf("Sensor left present\n\r");
-        n_dev++;
-    }
-    
-     // select the 3rd VL53l1. It will have i2c address of 0x52. Set the i2c address to
-    //NEW_SENSOR_RIGHT_ADDRESS 
-    stmpe1600_exp0->set_gpio(GPIO_15);
-    status = sensor_right->InitSensor(NEW_SENSOR_RIGHT_ADDRESS);
-    if (status) {
-        delete sensor_right;
-        delete xshutdown_right;
-        sensor_right = NULL;
-        xshutdown_right = NULL;
-        printf("Sensor right not present\n\r");
-    } else {
-        printf("Sensor right present\n\r");
-        n_dev++;
-    }
-
-return 0;
-    if (n_dev == 0) {
-        return 1;
-    } else {
-        return 0;
-    }
-}
-
--- a/XNucleo53LX.h	Tue Nov 03 15:28:52 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,196 +0,0 @@
-/**
- ******************************************************************************
- * @file    XNucleo53L1A1.h
- * @author  JS
- * @version V0.0.1
- * @date    15-January-2019
- * @brief   Header file for component XNucleo53L1A1
- ******************************************************************************
- * @attention
- *
- * <h2><center>&copy; COPYRIGHT(c) 2019 STMicroelectronics</center></h2>
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *   1. Redistributions of source code must retain the above copyright notice,
- *      this list of conditions and the following disclaimer.
- *   2. Redistributions in binary form must reproduce the above copyright notice,
- *      this list of conditions and the following disclaimer in the documentation
- *      and/or other materials provided with the distribution.
- *   3. Neither the name of STMicroelectronics nor the names of its contributors
- *      may be used to endorse or promote products derived from this software
- *       without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT HOLDER OR CONTRIBUTORS 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.
- *
- ******************************************************************************
-*/
-
-#ifndef __VL53L1_X_NUCLEO_CLASS_H
-#define __VL53L1_X_NUCLEO_CLASS_H
-
-
-/* Includes ------------------------------------------------------------------*/
-#include "mbed.h"
-#include "PinNames.h"
-#include <vl53lx_class.h>
-#include "Stmpe1600.h"
-//#include "DevI2C.h"
-#include "vl53L3_I2c.h"
-
-
-/** New device addresses */
-///#define NEW_SENSOR_CENTRE_ADDRESS   0x52
-//#define NEW_SENSOR_CENTRE_ADDRESS   0x54
-///#define NEW_SENSOR_LEFT_ADDRESS         0x54
-///#define NEW_SENSOR_RIGHT_ADDRESS        0x56
-
-
-#define NEW_SENSOR_CENTRE_ADDRESS   0x56
-
-#define NEW_SENSOR_LEFT_ADDRESS         0x58
-#define NEW_SENSOR_RIGHT_ADDRESS        0x5a
-
-
-/* Classes--------------------------------------------------------------------*/
-
-/* Classes -------------------------------------------------------------------*/
-/** Class representing the X-NUCLEO-VL53L1A1 expansion board
- */
-class XNucleo53LX
-{
-public:
-    /** Constructor 1
-    * @param[in] &i2c device I2C to be used for communication
-    */
-    XNucleo53LX(vl53L3_DevI2C *ext_i2c) : dev_i2c(ext_i2c)
-    {
-        
-                printf("XNucleo53LX %d z\n",ext_i2c);
-        stmpe1600_exp0 = new Stmpe1600((DevI2C*)ext_i2c, (0x43 * 2));     // U21
-
-        stmpe1600_exp1 = new Stmpe1600((DevI2C*)ext_i2c, (0x42 * 2));     // U19
-
-        xshutdown_centre = new Stmpe1600DigiOut((DevI2C*)dev_i2c, GPIO_15, (0x42 * 2));     // U19 on schematic
-        sensor_centre = new VL53LX(ext_i2c, xshutdown_centre, A2);
-
-        xshutdown_left = new Stmpe1600DigiOut((DevI2C*)dev_i2c, GPIO_14, (0x43 * 2));     // U21 on schematic
-        sensor_left = new VL53LX(dev_i2c, xshutdown_left, D8);
-
-        xshutdown_right = new Stmpe1600DigiOut((DevI2C*)dev_i2c, GPIO_15, (0x43 * 2));     // U21 on schematic
-        sensor_right = new VL53LX(dev_i2c, xshutdown_right, D2);
-    }  
-    
-    /** Constructor 2
-     * @param[in] &i2c device I2C to be used for communication
-     * @param[in] PinName gpio1_top Mbed DigitalOut pin name to be used as a top sensor GPIO_1 INT
-     * @param[in] PinName gpio1_bottom Mbed DigitalOut pin name to be used as a bottom sensor GPIO_1 INT
-     * @param[in] PinName gpio1_left Mbed DigitalOut pin name to be used as a left sensor GPIO_1 INT
-     * @param[in] PinName gpio1_right Mbed DigitalOut pin name to be used as a right sensor GPIO_1 INT
-     */
-    XNucleo53LX(vl53L3_DevI2C *ext_i2c, PinName gpio1_centre,
-                  PinName gpio1_left, PinName gpio1_right) : dev_i2c(ext_i2c)
-    {
-        stmpe1600_exp0 = new Stmpe1600((DevI2C*)ext_i2c, (0x43 * 2));     // U21
-
-        stmpe1600_exp1 = new Stmpe1600((DevI2C*)ext_i2c, (0x42 * 2));     // U19
-        printf("vl53L1X_DevI2C constructor %d %d %d %d\n",ext_i2c,gpio1_centre,gpio1_left,gpio1_right);
-
-        xshutdown_centre = new Stmpe1600DigiOut((DevI2C*)dev_i2c, GPIO_15, (0x42 * 2));     // U19 on schematic
-        sensor_centre = new VL53LX(dev_i2c, xshutdown_centre, gpio1_centre);
-
-        xshutdown_left = new Stmpe1600DigiOut((DevI2C*)dev_i2c, GPIO_14, (0x43 * 2));     // U21 on schematic
-        sensor_left = new VL53LX(dev_i2c, xshutdown_left, gpio1_left);
-
-        xshutdown_right = new Stmpe1600DigiOut((DevI2C*)dev_i2c, GPIO_15, (0x43 * 2));     // U21 on schematic
-        sensor_right = new VL53LX(dev_i2c, xshutdown_right, gpio1_right);
-    }    
-    
-    
-    /** Destructor
-     */
-    ~XNucleo53LX()
-    {
-        printf("XNucleo53LX destructor \n");
-        if (xshutdown_centre != NULL) {
-            delete xshutdown_centre;
-            xshutdown_centre = NULL;
-        }
-        if (sensor_centre != NULL) {
-            delete sensor_centre;
-            sensor_centre = NULL;
-        }
-        if (xshutdown_left != NULL) {
-            delete xshutdown_left;
-            xshutdown_left = NULL;
-        }
-        if (sensor_left != NULL) {
-            delete sensor_left;
-            sensor_left = NULL;
-        }
-        if (xshutdown_right != NULL) {
-            delete xshutdown_right;
-            xshutdown_right = NULL;
-        }
-        if (sensor_right != NULL) {
-            delete sensor_right;
-            sensor_right = NULL;
-        }
-
-        delete stmpe1600_exp0;
-        stmpe1600_exp0 = NULL;
-        delete stmpe1600_exp1;
-        stmpe1600_exp1 = NULL;
-        _instance = NULL;
-    }
-
-
-    /**
-     * @brief       Creates a singleton object instance
-     * @param[in]   &i2c device I2C to be used for communication
-     * @return      Pointer to the object instance
-     */
-    static XNucleo53LX *instance(vl53L3_DevI2C *ext_i2c);
-
-    /**
-     * @brief       Creates a singleton object instance
-     * @param[in]   &i2c device I2C to be used for communication
-     * @param[in]   PinName gpio1_centre the pin connected to top sensor INT
-     * @param[in]   PinName gpio1_left the pin connected to left sensor INT
-     * @param[in]   PinName gpio1_right the pin connected to right sensor INT
-     * @return      Pointer to the object instance
-     */
-    static XNucleo53LX *instance(vl53L3_DevI2C *ext_i2c, PinName gpio1_centre,
-                                   PinName gpio1_left, PinName gpio1_right);
-
-    /**
-     * @brief       Initialize the board and sensors with deft values
-     * @return      0 on success
-     */
-    int init_board();
-    
-    vl53L3_DevI2C *dev_i2c;
-    VL53LX *sensor_centre;
-    VL53LX *sensor_left;
-    VL53LX *sensor_right;
-    Stmpe1600 *stmpe1600_exp0;
-    Stmpe1600 *stmpe1600_exp1;
-    Stmpe1600DigiOut *xshutdown_centre;
-    Stmpe1600DigiOut *xshutdown_left;
-    Stmpe1600DigiOut *xshutdown_right;
-    
-private:
-    static XNucleo53LX *_instance;
-};
-
-
-#endif /* __VL53L1_X_NUCLEO_CLASS_H */
\ No newline at end of file