Example showing how to integrate EASE with proximity Sensor and Base board

Dependencies:   mbed EsmacatShield X_NUCLEO_6180XA1

Information about Esmacat and EASE is provided in the link below. https://os.mbed.com/users/esmacat/code/EASE_Example/wiki/Homepage

Information about the hardware needs and setup is provided in the link below. https://os.mbed.com/users/esmacat/code/EASE_Example/wiki/Hardware-Setup

Information about the structure of the system and it's software is provided in the link below. https://os.mbed.com/users/esmacat/code/EASE_Example/wiki/Software

Revision:
6:318b85f6e6a5
Parent:
4:84dfc00ae7b3
diff -r 6935fab2a92b -r 318b85f6e6a5 main.cpp
--- a/main.cpp	Mon Aug 21 15:52:57 2017 +0000
+++ b/main.cpp	Fri Feb 07 23:15:39 2020 +0000
@@ -1,3 +1,36 @@
+/**
+ ******************************************************************************
+ * @file    main.cpp
+ * @date    February 07, 2020
+ * @brief   mbed test application Esmacat Shield working together with 
+ *          STMicroelectronics X-NUCLEO-6180XA1
+ *          The Expansion Board for range measurement and als measurement.
+ *The original code is by STMicroelectronics which is modified to integrate EASE.
+ *The Copyright of STMicroelectronics is retained below.
+ ******************************************************************************
+ 
+  Copyright (c) 2020 https://www.esmacat.com/
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+  EsmacatShield.h - Library for using EtherCAT Arduino Shield by Esmacat(EASE).
+  Created by Esmacat, 01/22/2020
+  
+*******************************************************************************
+* @file EsmacatShield.h
+*******************************************************************************
+*/
+
 /*
    This VL6180X Expansion board test application performs a range measurement
    and an als measurement in interrupt mode on the onboard embedded top sensor. 
@@ -26,6 +59,8 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <assert.h>
+#include <EsmacatShield.h>    //Esmacat : Include Esmacat Shield Library
+
 
 
 /* Definitions ---------------------------------------------------------------*/
@@ -41,6 +76,15 @@
 
 /* Types ---------------------------------------------------------------------*/
 
+
+/* Esmacat communication------------------------------------------------------*/
+DigitalOut selectPin(D10); // D10 is used to drive chip enable low 
+SPI spi(D11, D12, D13); // mosi, miso, sclk 
+EsmacatShield slave(spi, selectPin); // EsmacatShield Slave object creation
+int sendToEsmacat; 
+bool led_on; 
+/* Esmacat communication------------------------------------------------------*/
+
 /* Operating mode */
 operating_mode_t operating_mode, prev_operating_mode;
 enum op_mode_int_poll_t {
@@ -84,17 +128,31 @@
     if (op_mode==range_continuous_interrupt || op_mode==range_continuous_polling) {
         if (data_sensor_top.range_mm!=0xFFFFFFFF) {
             sprintf(str,"%d",data_sensor_top.range_mm);
+            /*Copy Sensor data to be sent to EASE*/
+            sendToEsmacat = data_sensor_top.range_mm; 
         } else {
+            /*Copy Sensor data to be sent to EASE*/
+            sendToEsmacat = 0; // Esmacat
             sprintf(str,"%s","----");
         }
     } else if (op_mode==als_continuous_interrupt || op_mode==als_continuous_polling) {
         if (data_sensor_top.lux!=0xFFFFFFFF) {
             sprintf(str,"%d",data_sensor_top.lux);
+            /*Copy Sensor data to be sent to EASE*/
+            sendToEsmacat = data_sensor_top.lux; // Esmacat
         } else {
+            /*If not valid data then send 0 to EASE*/
+            sendToEsmacat = 0; // Esmacat
             sprintf(str,"%s","----");
         }
     }
-    board->display->display_string(str, strlen(str));       
+  
+    /*Toggle the LED on EASE board*/
+    led_on = !led_on; 
+    printf("sendToEsmacat value %d \n", sendToEsmacat); // Esmacat
+    slave.write_reg_value(0,sendToEsmacat, led_on); //  Write data to EASE
+          
+    board->display->display_string(str, strlen(str));
 }
 
 /* On board red slider position check */
@@ -159,13 +217,14 @@
 
 /* Handle continuous ALS or Range measurement. */
 void int_continous_als_or_range_measure (DevI2C *device_i2c) {
+   
     int status;
 
     /* Creates the 6180XA1 expansion board singleton obj */
 #ifdef TARGET_STM32F429
-    board = XNucleo6180XA1::instance(device_i2c, A5, A2, D13, D2);
+    board = XNucleo6180XA1::instance(device_i2c, A5, A2, D7, D2);//Pratima D13 -> D7
 #else
-    board = XNucleo6180XA1::instance(device_i2c, A3, A2, D13, D2);
+    board = XNucleo6180XA1::instance(device_i2c, A3, A2, D7, D2);//Pratima D13 -> D7
 #endif
     display_msg("INT");
     
@@ -213,11 +272,14 @@
             } else {
                 display_refresh(operating_mode);
             }
+            
         }
     }
     display_msg("BYE");
+
 }
 
+
 /*=================================== Main ==================================
  Move the VL6180X Expansion board red slider to switch between ALS or Range
  measures.
@@ -225,6 +287,12 @@
 =============================================================================*/
 int main()
 {   
+/* Esmacat communication*/
+   
+    slave.setup_spi();           //Setup SPI for EASE
+
+
+
 #if USER_BUTTON==PC_13  // Cross compiling for Nucleo-F401
     InterruptIn stop_button (USER_BUTTON);
     stop_button.rise (&stop_measure_irq);  
@@ -234,3 +302,5 @@
     /* Start continous measures Interrupt based */
     int_continous_als_or_range_measure (device_i2c);
 }
+
+