Greatly simplified Architecture, Identical Functions Removed: Platform Interfaces, STP6001 interface

Revision:
10:cd1758e186a4
Parent:
9:cb4c6d4e5030
Child:
11:d8dbe3b87f9f
--- a/VL53L0X.cpp	Tue Jun 25 11:03:34 2019 +0000
+++ b/VL53L0X.cpp	Thu Jun 27 12:51:34 2019 +0000
@@ -85,7 +85,7 @@
     }
 
     // deduce silicon version
-    status = VL53L0X_get_device_info(&_device_info);
+    status = VL53L0X_get_device_info();
 
     status = prepare();
     if (status != VL53L0X_ERROR_NONE) {
@@ -142,7 +142,7 @@
     Data.OscFrequencyMHz = 618660;
 
     /* Set Default XTalkCompensationRateMegaCps to 0  */
-    Data.CurrentParameters.XTalkCompensationRateMegaCps = 0;
+    CurrentParameters.XTalkCompensationRateMegaCps = 0;
 
     /* Get default parameters */
     status = VL53L0X_get_device_parameters( &CurrentParameters);
@@ -150,7 +150,7 @@
         /* initialize PAL values */
         CurrentParameters.DeviceMode = VL53L0X_DEVICEMODE_SINGLE_RANGING;
         CurrentParameters.HistogramMode = VL53L0X_HISTOGRAMMODE_DISABLED;
-        Data.CurrentParameters = CurrentParameters;
+        CurrentParameters = CurrentParameters;
     }
 
     /* Sigma estimator variable */
@@ -942,7 +942,7 @@
 
         /* store current, adjusted offset */
         if (status == VL53L0X_ERROR_NONE) {
-            Data.CurrentParameters.RangeOffsetMicroMeters = corrected_offset_micro_meters;
+            CurrentParameters.RangeOffsetMicroMeters = corrected_offset_micro_meters;
         }
     }
 
@@ -953,7 +953,7 @@
 {   VL53L0X_Error status = VL53L0X_ERROR_NONE;
     
 
-    *p_device_mode = Data.CurrentParameters.DeviceMode ;
+    *p_device_mode = CurrentParameters.DeviceMode ;
 
     
     return status;
@@ -979,7 +979,7 @@
             *p_inter_measurement_period_milli_seconds =
                 im_period_milli_seconds / osc_calibrate_val;
         }
-        Data.CurrentParameters.InterMeasurementPeriodMilliSeconds = *p_inter_measurement_period_milli_seconds;
+        CurrentParameters.InterMeasurementPeriodMilliSeconds = *p_inter_measurement_period_milli_seconds;
     }
 
     
@@ -997,14 +997,14 @@
     if (status == VL53L0X_ERROR_NONE) {
         if (value == 0) {
             /* the Xtalk is disabled return value from memory */
-            temp_fix1616 = Data.CurrentParameters.XTalkCompensationRateMegaCps ;
+            temp_fix1616 = CurrentParameters.XTalkCompensationRateMegaCps ;
             *p_xtalk_compensation_rate_mega_cps = temp_fix1616;
-            Data.CurrentParameters.XTalkCompensationEnable = 0;
+            CurrentParameters.XTalkCompensationEnable = 0;
         } else {
             temp_fix1616 = VL53L0X_FIXPOINT313TOFIXPOINT1616(value);
             *p_xtalk_compensation_rate_mega_cps = temp_fix1616;
-            Data.CurrentParameters.XTalkCompensationRateMegaCps = temp_fix1616;
-            Data.CurrentParameters.XTalkCompensationEnable = 1;
+            CurrentParameters.XTalkCompensationRateMegaCps = temp_fix1616;
+            CurrentParameters.XTalkCompensationEnable = 1;
         }
     }
 
@@ -1025,7 +1025,7 @@
 
         case VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE:
             /* internal computation: */
-            temp_fix1616 = Data.CurrentParameters.LimitChecksValue[VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE];
+            temp_fix1616 = CurrentParameters.LimitChecksValue[VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE];
             enable_zero_value = 0;
             break;
 
@@ -1041,13 +1041,13 @@
 
         case VL53L0X_CHECKENABLE_SIGNAL_REF_CLIP:
             /* internal computation: */
-            temp_fix1616 = Data.CurrentParameters.LimitChecksValue[VL53L0X_CHECKENABLE_SIGNAL_REF_CLIP];
+            temp_fix1616 = CurrentParameters.LimitChecksValue[VL53L0X_CHECKENABLE_SIGNAL_REF_CLIP];
             enable_zero_value = 0;
             break;
 
         case VL53L0X_CHECKENABLE_RANGE_IGNORE_THRESHOLD:
             /* internal computation: */
-            temp_fix1616 = Data.CurrentParameters.LimitChecksValue[VL53L0X_CHECKENABLE_RANGE_IGNORE_THRESHOLD];
+            temp_fix1616 = CurrentParameters.LimitChecksValue[VL53L0X_CHECKENABLE_RANGE_IGNORE_THRESHOLD];
             enable_zero_value = 0;
             break;
 
@@ -1073,13 +1073,13 @@
 
             if (temp_fix1616 == 0) {
                 /* disabled: return value from memory */
-                temp_fix1616 = Data.CurrentParameters.LimitChecksValue[limit_check_id];
+                temp_fix1616 = CurrentParameters.LimitChecksValue[limit_check_id];
                 *p_limit_check_value = temp_fix1616;
-                Data.CurrentParameters.LimitChecksEnable[limit_check_id] = 0;
+                CurrentParameters.LimitChecksEnable[limit_check_id] = 0;
             } else {
                 *p_limit_check_value = temp_fix1616;
-                Data.CurrentParameters.LimitChecksValue[limit_check_id] = temp_fix1616;
-                Data.CurrentParameters.LimitChecksEnable[limit_check_id] = 1;
+                CurrentParameters.LimitChecksValue[limit_check_id] = temp_fix1616;
+                CurrentParameters.LimitChecksEnable[limit_check_id] = 1;
             }
         } else {
             *p_limit_check_value = temp_fix1616;
@@ -1102,7 +1102,7 @@
         status = VL53L0X_ERROR_INVALID_PARAMS;
         *p_limit_check_enable = 0;
     } else {
-        temp8 = Data.CurrentParameters.LimitChecksEnable[limit_check_id];
+        temp8 = CurrentParameters.LimitChecksEnable[limit_check_id];
         *p_limit_check_enable = temp8;
     }
 
@@ -1126,7 +1126,7 @@
         }
     }
     if (status == VL53L0X_ERROR_NONE) {
-        Data.CurrentParameters.WrapAroundCheckEnable = *p_wrap_around_check_enable;
+        CurrentParameters.WrapAroundCheckEnable = *p_wrap_around_check_enable;
     }
 
     
@@ -1405,7 +1405,7 @@
 
     /* Finally, the timing budget must be re-applied */
     if (status == VL53L0X_ERROR_NONE) {
-        measurement_timing_budget_micro_seconds = Data.CurrentParameters.MeasurementTimingBudgetMicroSeconds ;
+        measurement_timing_budget_micro_seconds = CurrentParameters.MeasurementTimingBudgetMicroSeconds ;
 
         status = VL53L0X_set_measurement_timing_budget_micro_seconds(measurement_timing_budget_micro_seconds);
     }
@@ -1678,7 +1678,7 @@
     }
 
     if (status == VL53L0X_ERROR_NONE) {
-        Data.CurrentParameters.MeasurementTimingBudgetMicroSeconds = *p_measurement_timing_budget_micro_seconds;
+        CurrentParameters.MeasurementTimingBudgetMicroSeconds = *p_measurement_timing_budget_micro_seconds;
     }
 
     
@@ -1757,17 +1757,17 @@
 
     
 
-    temp8 = Data.CurrentParameters.LimitChecksEnable[limit_check_id];
+    temp8 = CurrentParameters.LimitChecksEnable[limit_check_id];
 
     if (temp8 == 0) { /* disabled write only internal value */
-        Data.CurrentParameters.LimitChecksValue[limit_check_id] = limit_check_value;
+        CurrentParameters.LimitChecksValue[limit_check_id] = limit_check_value;
     } else {
 
         switch (limit_check_id) {
 
             case VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE:
                 /* internal computation: */
-                Data.CurrentParameters.LimitChecksValue[VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE] = limit_check_value;
+                CurrentParameters.LimitChecksValue[VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE] = limit_check_value;
                 break;
 
             case VL53L0X_CHECKENABLE_SIGNAL_RATE_FINAL_RANGE:
@@ -1780,107 +1780,80 @@
             case VL53L0X_CHECKENABLE_SIGNAL_REF_CLIP:
 
                 /* internal computation: */
-                Data.CurrentParameters.LimitChecksValue[VL53L0X_CHECKENABLE_SIGNAL_REF_CLIP] = limit_check_value;
-
+                CurrentParameters.LimitChecksValue[VL53L0X_CHECKENABLE_SIGNAL_REF_CLIP] = limit_check_value;
                 break;
 
             case VL53L0X_CHECKENABLE_RANGE_IGNORE_THRESHOLD:
 
                 /* internal computation: */
-                Data.CurrentParameters.LimitChecksValue[VL53L0X_CHECKENABLE_RANGE_IGNORE_THRESHOLD] = limit_check_value;
-
+                CurrentParameters.LimitChecksValue[VL53L0X_CHECKENABLE_RANGE_IGNORE_THRESHOLD] = limit_check_value;
                 break;
 
             case VL53L0X_CHECKENABLE_SIGNAL_RATE_MSRC:
             case VL53L0X_CHECKENABLE_SIGNAL_RATE_PRE_RANGE:
-
                 status = VL53L0X_write_word(VL53L0X_REG_PRE_RANGE_MIN_COUNT_RATE_RTN_LIMIT,
                                             VL53L0X_FIXPOINT1616TOFIXPOINT97(limit_check_value));
-
                 break;
 
             default:
                 status = VL53L0X_ERROR_INVALID_PARAMS;
-
         }
 
         if (status == VL53L0X_ERROR_NONE) {
-            Data.CurrentParameters.LimitChecksValue[limit_check_id] = limit_check_value;
+            CurrentParameters.LimitChecksValue[limit_check_id] = limit_check_value;
         }
     }
-
-    
     return status;
 }
 
-VL53L0X_Error VL53L0X::VL53L0X_check_part_used( uint8_t *revision,
-        VL53L0X_DeviceInfo_t *p_VL53L0X_device_info)
+// instead of passing VL53L0X_DeviceInfo_t *p_VL53L0X_device_info, directly fill Device_Info
+VL53L0X_Error VL53L0X::VL53L0X_get_device_info()
 {   VL53L0X_Error status = VL53L0X_ERROR_NONE;
-    uint8_t module_id_int;
+    uint8_t revision_id;
+    uint8_t revision;
     char *product_id_tmp;
 
     status = VL53L0X_get_info_from_device( 2);
 
     if (status == VL53L0X_ERROR_NONE) {
-        module_id_int = Data.ModuleId;
-
-        if (module_id_int == 0) {
-            *revision = 0;
-            VL53L0X_COPYSTRING(p_VL53L0X_device_info->ProductId, "");
+        if (Data.ModuleId == 0) {
+            revision = 0;
+            VL53L0X_COPYSTRING(Device_Info.ProductId, "");
         } else {
-            *revision = Data.Revision;
+            revision = Data.Revision;
             product_id_tmp = Data.ProductId;
-            VL53L0X_COPYSTRING(p_VL53L0X_device_info->ProductId, product_id_tmp);
+            VL53L0X_COPYSTRING(Device_Info.ProductId, product_id_tmp);
         }
     }  
-    return status;
-}
-
-VL53L0X_Error VL53L0X::wrapped_VL53L0X_get_device_info(VL53L0X_DeviceInfo_t *p_VL53L0X_device_info)
-{   VL53L0X_Error status = VL53L0X_ERROR_NONE;
-    uint8_t revision_id;
-    uint8_t revision;
-
-    status = VL53L0X_check_part_used( &revision, p_VL53L0X_device_info);
-
-    if (status == VL53L0X_ERROR_NONE) {
+
+     if (status == VL53L0X_ERROR_NONE) {
         if (revision == 0) {
-            VL53L0X_COPYSTRING(p_VL53L0X_device_info->Name,
+            VL53L0X_COPYSTRING(Device_Info.Name,
                                VL53L0X_STRING_DEVICE_INFO_NAME_TS0);
         } else if ((revision <= 34) && (revision != 32)) {
-            VL53L0X_COPYSTRING(p_VL53L0X_device_info->Name,
+            VL53L0X_COPYSTRING(Device_Info.Name,
                                VL53L0X_STRING_DEVICE_INFO_NAME_TS1);
         } else if (revision < 39) {
-            VL53L0X_COPYSTRING(p_VL53L0X_device_info->Name,
+            VL53L0X_COPYSTRING(Device_Info.Name,
                                VL53L0X_STRING_DEVICE_INFO_NAME_TS2);
-        } else {VL53L0X_COPYSTRING(p_VL53L0X_device_info->Name,
+        } else {VL53L0X_COPYSTRING(Device_Info.Name,
                                VL53L0X_STRING_DEVICE_INFO_NAME_ES1);
         }
 
-        VL53L0X_COPYSTRING(p_VL53L0X_device_info->Type,
-                           VL53L0X_STRING_DEVICE_INFO_TYPE);
+        VL53L0X_COPYSTRING(Device_Info.Type, VL53L0X_STRING_DEVICE_INFO_TYPE);
     }
 
     if (status == VL53L0X_ERROR_NONE) {
         status = VL53L0X_read_byte( VL53L0X_REG_IDENTIFICATION_MODEL_ID,
-                                   &p_VL53L0X_device_info->ProductType);}
+                                   &Device_Info.ProductType);}
 
     if (status == VL53L0X_ERROR_NONE) {
         status = VL53L0X_read_byte(VL53L0X_REG_IDENTIFICATION_REVISION_ID,
                                    &revision_id);
-        p_VL53L0X_device_info->ProductRevisionMajor = 1;
-        p_VL53L0X_device_info->ProductRevisionMinor =
+        Device_Info.ProductRevisionMajor = 1;
+        Device_Info.ProductRevisionMinor =
             (revision_id & 0xF0) >> 4;
     }
-
-    return status;
-}
-
-VL53L0X_Error VL53L0X::VL53L0X_get_device_info(VL53L0X_DeviceInfo_t *p_VL53L0X_device_info)
-{   VL53L0X_Error status = VL53L0X_ERROR_NONE;
-
-    status = wrapped_VL53L0X_get_device_info( p_VL53L0X_device_info);
-
     return status;
 }
 
@@ -2328,7 +2301,7 @@
         case VL53L0X_DEVICEMODE_GPIO_DRIVE:
         case VL53L0X_DEVICEMODE_GPIO_OSC:
             /* Supported modes */
-            Data.CurrentParameters.DeviceMode = device_mode;
+            CurrentParameters.DeviceMode = device_mode;
             break;
         default:
             /* Unsupported mode */
@@ -2598,7 +2571,7 @@
 {   VL53L0X_Error status = VL53L0X_ERROR_NONE;
     uint8_t temp8;
 
-    temp8 = Data.CurrentParameters.XTalkCompensationEnable ;
+    temp8 = CurrentParameters.XTalkCompensationEnable ;
     *p_x_talk_compensation_enable = temp8;
 
     return status;
@@ -2619,7 +2592,7 @@
 
         if (xtalk_comp_enable) {
 
-            xtalk_per_spad_mega_cps = Data.CurrentParameters.XTalkCompensationRateMegaCps ;
+            xtalk_per_spad_mega_cps = CurrentParameters.XTalkCompensationRateMegaCps ;
 
             /* FixPoint1616 * FixPoint 8:8 = FixPoint0824 */
             total_xtalk_mega_cps =
@@ -2917,7 +2890,7 @@
      * Estimates the range sigma
      */
 
-    x_talk_comp_rate_mcps = Data.CurrentParameters.XTalkCompensationRateMegaCps ;
+    x_talk_comp_rate_mcps = CurrentParameters.XTalkCompensationRateMegaCps ;
 
     /*
      * We work in kcps rather than mcps as this helps keep within the
@@ -3353,7 +3326,7 @@
         } else {
             temp8 = 0;
         }
-        Data.CurrentParameters.LimitChecksStatus[VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE] = temp8;
+        CurrentParameters.LimitChecksStatus[VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE] = temp8;
 
         if ((device_range_status_internal == 4) ||
                 (signal_rate_final_range_limit_check_enable == 0)) {
@@ -3361,7 +3334,7 @@
         } else {
             temp8 = 0;
         }
-        Data.CurrentParameters.LimitChecksStatus[VL53L0X_CHECKENABLE_SIGNAL_RATE_FINAL_RANGE] = temp8;
+        CurrentParameters.LimitChecksStatus[VL53L0X_CHECKENABLE_SIGNAL_RATE_FINAL_RANGE] = temp8;
 
         if ((signal_ref_clip_limit_check_enable == 0) ||
                 (signal_ref_clipflag == 1)) {
@@ -3370,7 +3343,7 @@
             temp8 = 0;
         }
 
-        Data.CurrentParameters.LimitChecksStatus[VL53L0X_CHECKENABLE_SIGNAL_REF_CLIP] = temp8;
+        CurrentParameters.LimitChecksStatus[VL53L0X_CHECKENABLE_SIGNAL_REF_CLIP] = temp8;
 
         if ((range_ignore_threshold_limit_check_enable == 0) ||
                 (range_ignore_thresholdflag == 1)) {
@@ -3379,7 +3352,7 @@
             temp8 = 0;
         }
 
-        Data.CurrentParameters.LimitChecksStatus[VL53L0X_CHECKENABLE_RANGE_IGNORE_THRESHOLD] = temp8;
+        CurrentParameters.LimitChecksStatus[VL53L0X_CHECKENABLE_RANGE_IGNORE_THRESHOLD] = temp8;
     }
     
     return status;
@@ -3439,8 +3412,8 @@
             tmpuint16 = (uint16_t)((linearity_corrective_gain  * tmpuint16 + 500) / 1000);
 
             /* Implement Xtalk */
-            x_talk_compensation_rate_mega_cps = Data.CurrentParameters.XTalkCompensationRateMegaCps ;
-            x_talk_compensation_enable = Data.CurrentParameters.XTalkCompensationEnable ;
+            x_talk_compensation_rate_mega_cps = CurrentParameters.XTalkCompensationRateMegaCps ;
+            x_talk_compensation_enable = CurrentParameters.XTalkCompensationEnable ;
 
             if (x_talk_compensation_enable) {
 
@@ -4258,7 +4231,7 @@
          */
         status = set_sequence_step_timeout(VL53L0X_SEQUENCESTEP_FINAL_RANGE,
                                            final_range_timing_budget_micro_seconds);
-        Data.CurrentParameters.MeasurementTimingBudgetMicroSeconds = measurement_timing_budget_micro_seconds;
+        CurrentParameters.MeasurementTimingBudgetMicroSeconds = measurement_timing_budget_micro_seconds;
     }
 
     return status;
@@ -4338,7 +4311,7 @@
 
         /* Recalculate timing budget */
         if (status == VL53L0X_ERROR_NONE) {
-            measurement_timing_budget_micro_seconds = Data.CurrentParameters.MeasurementTimingBudgetMicroSeconds ;
+            measurement_timing_budget_micro_seconds = CurrentParameters.MeasurementTimingBudgetMicroSeconds ;
             VL53L0X_set_measurement_timing_budget_micro_seconds(measurement_timing_budget_micro_seconds);
         }
     }
@@ -4362,7 +4335,7 @@
             limit_check_enable_int = 0;
             limit_check_disable = 1;
         } else {
-            temp_fix1616 = Data.CurrentParameters.LimitChecksValue[limit_check_id];
+            temp_fix1616 = CurrentParameters.LimitChecksValue[limit_check_id];
             limit_check_disable = 0;
             /* this to be sure to have either 0 or 1 */
             limit_check_enable_int = 1;
@@ -4372,7 +4345,7 @@
 
             case VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE:
                 /* internal computation: */
-                Data.CurrentParameters.LimitChecksEnable[VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE] = limit_check_enable_int;
+                CurrentParameters.LimitChecksEnable[VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE] = limit_check_enable_int;
                 break;
 
             case VL53L0X_CHECKENABLE_SIGNAL_RATE_FINAL_RANGE:
@@ -4381,11 +4354,11 @@
                 break;
 
             case VL53L0X_CHECKENABLE_SIGNAL_REF_CLIP:/* internal computation: */
-                Data.CurrentParameters.LimitChecksEnable[VL53L0X_CHECKENABLE_SIGNAL_REF_CLIP] = limit_check_enable_int;
+                CurrentParameters.LimitChecksEnable[VL53L0X_CHECKENABLE_SIGNAL_REF_CLIP] = limit_check_enable_int;
                 break;
 
             case VL53L0X_CHECKENABLE_RANGE_IGNORE_THRESHOLD:/* internal computation: */
-                Data.CurrentParameters.LimitChecksEnable[VL53L0X_CHECKENABLE_RANGE_IGNORE_THRESHOLD] = limit_check_enable_int;
+                CurrentParameters.LimitChecksEnable[VL53L0X_CHECKENABLE_RANGE_IGNORE_THRESHOLD] = limit_check_enable_int;
                 break;
 
             case VL53L0X_CHECKENABLE_SIGNAL_RATE_MSRC:
@@ -4408,9 +4381,9 @@
 
     if (status == VL53L0X_ERROR_NONE) {
         if (limit_check_enable == 0) {
-            Data.CurrentParameters.LimitChecksEnable[limit_check_id] = 0;
+            CurrentParameters.LimitChecksEnable[limit_check_id] = 0;
         } else {
-            Data.CurrentParameters.LimitChecksEnable[limit_check_id] = 1;
+            CurrentParameters.LimitChecksEnable[limit_check_id] = 1;
         }
     }
     return status;
@@ -4492,7 +4465,7 @@
     }
 
     if (status == VL53L0X_ERROR_NONE) {
-        Data.CurrentParameters = current_parameters;
+        CurrentParameters = current_parameters;
     }
 
     /* read the sequence config and save it */