Rename library

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Dependents:   VL53L3CX_NoShield_1Sensor_poll_Mb06x VL53L3_NoShield_1Sensor_polling_Mb63 X_NUCLEO_53L3A2 53L3A2_Ranging

Committer:
charlesmn
Date:
Wed Jul 21 14:07:59 2021 +0000
Revision:
7:7f1bbf370283
Parent:
5:89031b2f5316
Moved vl53l3cx_class.cpp and .h to 53l3a2_RangingClass

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Charles MacNeill 5:89031b2f5316 1
Charles MacNeill 5:89031b2f5316 2 /* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */
Charles MacNeill 5:89031b2f5316 3 /******************************************************************************
Charles MacNeill 5:89031b2f5316 4 * Copyright (c) 2020, STMicroelectronics - All Rights Reserved
Charles MacNeill 5:89031b2f5316 5
Charles MacNeill 5:89031b2f5316 6 This file is part of VL53LX and is dual licensed,
Charles MacNeill 5:89031b2f5316 7 either GPL-2.0+
Charles MacNeill 5:89031b2f5316 8 or 'BSD 3-clause "New" or "Revised" License' , at your option.
Charles MacNeill 5:89031b2f5316 9 ******************************************************************************
Charles MacNeill 5:89031b2f5316 10 */
Charles MacNeill 5:89031b2f5316 11
Charles MacNeill 5:89031b2f5316 12
Charles MacNeill 5:89031b2f5316 13
Charles MacNeill 5:89031b2f5316 14
Charles MacNeill 5:89031b2f5316 15 #ifndef _VL53LX_API_CORE_H_
Charles MacNeill 5:89031b2f5316 16 #define _VL53LX_API_CORE_H_
Charles MacNeill 5:89031b2f5316 17
Charles MacNeill 5:89031b2f5316 18 #include "vl53lx_platform.h"
Charles MacNeill 5:89031b2f5316 19
Charles MacNeill 5:89031b2f5316 20 #ifdef __cplusplus
Charles MacNeill 5:89031b2f5316 21 extern "C" {
Charles MacNeill 5:89031b2f5316 22 #endif
Charles MacNeill 5:89031b2f5316 23
Charles MacNeill 5:89031b2f5316 24
Charles MacNeill 5:89031b2f5316 25
Charles MacNeill 5:89031b2f5316 26
Charles MacNeill 5:89031b2f5316 27 VL53LX_Error VL53LX_get_version(
Charles MacNeill 5:89031b2f5316 28 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 29 VL53LX_ll_version_t *pversion);
Charles MacNeill 5:89031b2f5316 30
Charles MacNeill 5:89031b2f5316 31
Charles MacNeill 5:89031b2f5316 32
Charles MacNeill 5:89031b2f5316 33
Charles MacNeill 5:89031b2f5316 34
Charles MacNeill 5:89031b2f5316 35 VL53LX_Error VL53LX_data_init(
Charles MacNeill 5:89031b2f5316 36 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 37 uint8_t read_p2p_data);
Charles MacNeill 5:89031b2f5316 38
Charles MacNeill 5:89031b2f5316 39
Charles MacNeill 5:89031b2f5316 40
Charles MacNeill 5:89031b2f5316 41
Charles MacNeill 5:89031b2f5316 42 VL53LX_Error VL53LX_read_p2p_data(
Charles MacNeill 5:89031b2f5316 43 VL53LX_DEV Dev);
Charles MacNeill 5:89031b2f5316 44
Charles MacNeill 5:89031b2f5316 45
Charles MacNeill 5:89031b2f5316 46
Charles MacNeill 5:89031b2f5316 47
Charles MacNeill 5:89031b2f5316 48 VL53LX_Error VL53LX_set_part_to_part_data(
Charles MacNeill 5:89031b2f5316 49 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 50 VL53LX_calibration_data_t *pcal_data);
Charles MacNeill 5:89031b2f5316 51
Charles MacNeill 5:89031b2f5316 52
Charles MacNeill 5:89031b2f5316 53
Charles MacNeill 5:89031b2f5316 54
Charles MacNeill 5:89031b2f5316 55 VL53LX_Error VL53LX_get_part_to_part_data(
Charles MacNeill 5:89031b2f5316 56 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 57 VL53LX_calibration_data_t *pcal_data);
Charles MacNeill 5:89031b2f5316 58
Charles MacNeill 5:89031b2f5316 59
Charles MacNeill 5:89031b2f5316 60
Charles MacNeill 5:89031b2f5316 61
Charles MacNeill 5:89031b2f5316 62 VL53LX_Error VL53LX_get_tuning_debug_data(
Charles MacNeill 5:89031b2f5316 63 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 64 VL53LX_tuning_parameters_t *ptun_data);
Charles MacNeill 5:89031b2f5316 65
Charles MacNeill 5:89031b2f5316 66
Charles MacNeill 5:89031b2f5316 67
Charles MacNeill 5:89031b2f5316 68
Charles MacNeill 5:89031b2f5316 69 VL53LX_Error VL53LX_set_inter_measurement_period_ms(
Charles MacNeill 5:89031b2f5316 70 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 71 uint32_t inter_measurement_period_ms);
Charles MacNeill 5:89031b2f5316 72
Charles MacNeill 5:89031b2f5316 73
Charles MacNeill 5:89031b2f5316 74
Charles MacNeill 5:89031b2f5316 75
Charles MacNeill 5:89031b2f5316 76 VL53LX_Error VL53LX_get_inter_measurement_period_ms(
Charles MacNeill 5:89031b2f5316 77 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 78 uint32_t *pinter_measurement_period_ms);
Charles MacNeill 5:89031b2f5316 79
Charles MacNeill 5:89031b2f5316 80
Charles MacNeill 5:89031b2f5316 81
Charles MacNeill 5:89031b2f5316 82
Charles MacNeill 5:89031b2f5316 83 VL53LX_Error VL53LX_set_timeouts_us(
Charles MacNeill 5:89031b2f5316 84 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 85 uint32_t phasecal_config_timeout_us,
Charles MacNeill 5:89031b2f5316 86 uint32_t mm_config_timeout_us,
Charles MacNeill 5:89031b2f5316 87 uint32_t range_config_timeout_us);
Charles MacNeill 5:89031b2f5316 88
Charles MacNeill 5:89031b2f5316 89
Charles MacNeill 5:89031b2f5316 90
Charles MacNeill 5:89031b2f5316 91
Charles MacNeill 5:89031b2f5316 92 VL53LX_Error VL53LX_get_timeouts_us(
Charles MacNeill 5:89031b2f5316 93 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 94 uint32_t *pphasecal_config_timeout_us,
Charles MacNeill 5:89031b2f5316 95 uint32_t *pmm_config_timeout_us,
Charles MacNeill 5:89031b2f5316 96 uint32_t *prange_config_timeout_us);
Charles MacNeill 5:89031b2f5316 97
Charles MacNeill 5:89031b2f5316 98
Charles MacNeill 5:89031b2f5316 99
Charles MacNeill 5:89031b2f5316 100
Charles MacNeill 5:89031b2f5316 101 VL53LX_Error VL53LX_set_user_zone(
Charles MacNeill 5:89031b2f5316 102 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 103 VL53LX_user_zone_t *puser_zone);
Charles MacNeill 5:89031b2f5316 104
Charles MacNeill 5:89031b2f5316 105
Charles MacNeill 5:89031b2f5316 106
Charles MacNeill 5:89031b2f5316 107
Charles MacNeill 5:89031b2f5316 108 VL53LX_Error VL53LX_get_user_zone(
Charles MacNeill 5:89031b2f5316 109 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 110 VL53LX_user_zone_t *puser_zone);
Charles MacNeill 5:89031b2f5316 111
Charles MacNeill 5:89031b2f5316 112
Charles MacNeill 5:89031b2f5316 113
Charles MacNeill 5:89031b2f5316 114
Charles MacNeill 5:89031b2f5316 115 VL53LX_Error VL53LX_get_mode_mitigation_roi(
Charles MacNeill 5:89031b2f5316 116 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 117 VL53LX_user_zone_t *pmm_roi);
Charles MacNeill 5:89031b2f5316 118
Charles MacNeill 5:89031b2f5316 119 VL53LX_Error VL53LX_init_zone_config_histogram_bins(VL53LX_zone_config_t *pdata);
Charles MacNeill 5:89031b2f5316 120 VL53LX_Error VL53LX_set_zone_config(VL53LX_DEV Dev, VL53LX_zone_config_t *pzone_cfg);
Charles MacNeill 5:89031b2f5316 121 VL53LX_Error VL53LX_get_zone_config(VL53LX_DEV Dev, VL53LX_zone_config_t *pzone_cfg);
Charles MacNeill 5:89031b2f5316 122
Charles MacNeill 5:89031b2f5316 123
Charles MacNeill 5:89031b2f5316 124
Charles MacNeill 5:89031b2f5316 125 VL53LX_Error VL53LX_set_preset_mode(
Charles MacNeill 5:89031b2f5316 126 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 127 VL53LX_DevicePresetModes device_preset_mode,
Charles MacNeill 5:89031b2f5316 128 uint16_t dss_config__target_total_rate_mcps,
Charles MacNeill 5:89031b2f5316 129 uint32_t phasecal_config_timeout_us,
Charles MacNeill 5:89031b2f5316 130 uint32_t mm_config_timeout_us,
Charles MacNeill 5:89031b2f5316 131 uint32_t range_config_timeout_us,
Charles MacNeill 5:89031b2f5316 132 uint32_t inter_measurement_period_ms);
Charles MacNeill 5:89031b2f5316 133
Charles MacNeill 5:89031b2f5316 134
Charles MacNeill 5:89031b2f5316 135
Charles MacNeill 5:89031b2f5316 136
Charles MacNeill 5:89031b2f5316 137 VL53LX_Error VL53LX_get_preset_mode_timing_cfg(
Charles MacNeill 5:89031b2f5316 138 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 139 VL53LX_DevicePresetModes device_preset_mode,
Charles MacNeill 5:89031b2f5316 140 uint16_t *pdss_config__target_total_rate_mcps,
Charles MacNeill 5:89031b2f5316 141 uint32_t *pphasecal_config_timeout_us,
Charles MacNeill 5:89031b2f5316 142 uint32_t *pmm_config_timeout_us,
Charles MacNeill 5:89031b2f5316 143 uint32_t *prange_config_timeout_us);
Charles MacNeill 5:89031b2f5316 144
Charles MacNeill 5:89031b2f5316 145
Charles MacNeill 5:89031b2f5316 146
Charles MacNeill 5:89031b2f5316 147 VL53LX_Error VL53LX_enable_xtalk_compensation(
Charles MacNeill 5:89031b2f5316 148 VL53LX_DEV Dev);
Charles MacNeill 5:89031b2f5316 149
Charles MacNeill 5:89031b2f5316 150
Charles MacNeill 5:89031b2f5316 151
Charles MacNeill 5:89031b2f5316 152 VL53LX_Error VL53LX_disable_xtalk_compensation(
Charles MacNeill 5:89031b2f5316 153 VL53LX_DEV Dev);
Charles MacNeill 5:89031b2f5316 154
Charles MacNeill 5:89031b2f5316 155
Charles MacNeill 5:89031b2f5316 156
Charles MacNeill 5:89031b2f5316 157
Charles MacNeill 5:89031b2f5316 158 void VL53LX_get_xtalk_compensation_enable(
Charles MacNeill 5:89031b2f5316 159 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 160 uint8_t *pcrosstalk_compensation_enable);
Charles MacNeill 5:89031b2f5316 161
Charles MacNeill 5:89031b2f5316 162
Charles MacNeill 5:89031b2f5316 163
Charles MacNeill 5:89031b2f5316 164 VL53LX_Error VL53LX_init_and_start_range(
Charles MacNeill 5:89031b2f5316 165 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 166 uint8_t measurement_mode,
Charles MacNeill 5:89031b2f5316 167 VL53LX_DeviceConfigLevel device_config_level);
Charles MacNeill 5:89031b2f5316 168
Charles MacNeill 5:89031b2f5316 169
Charles MacNeill 5:89031b2f5316 170
Charles MacNeill 5:89031b2f5316 171
Charles MacNeill 5:89031b2f5316 172 VL53LX_Error VL53LX_stop_range(
Charles MacNeill 5:89031b2f5316 173 VL53LX_DEV Dev);
Charles MacNeill 5:89031b2f5316 174
Charles MacNeill 5:89031b2f5316 175
Charles MacNeill 5:89031b2f5316 176
Charles MacNeill 5:89031b2f5316 177
Charles MacNeill 5:89031b2f5316 178 VL53LX_Error VL53LX_get_measurement_results(
Charles MacNeill 5:89031b2f5316 179 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 180 VL53LX_DeviceResultsLevel device_result_level);
Charles MacNeill 5:89031b2f5316 181
Charles MacNeill 5:89031b2f5316 182
Charles MacNeill 5:89031b2f5316 183
Charles MacNeill 5:89031b2f5316 184
Charles MacNeill 5:89031b2f5316 185 VL53LX_Error VL53LX_get_device_results(
Charles MacNeill 5:89031b2f5316 186 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 187 VL53LX_DeviceResultsLevel device_result_level,
Charles MacNeill 5:89031b2f5316 188 VL53LX_range_results_t *prange_results);
Charles MacNeill 5:89031b2f5316 189
Charles MacNeill 5:89031b2f5316 190
Charles MacNeill 5:89031b2f5316 191
Charles MacNeill 5:89031b2f5316 192
Charles MacNeill 5:89031b2f5316 193 VL53LX_Error VL53LX_clear_interrupt_and_enable_next_range(
Charles MacNeill 5:89031b2f5316 194 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 195 uint8_t measurement_mode);
Charles MacNeill 5:89031b2f5316 196
Charles MacNeill 5:89031b2f5316 197
Charles MacNeill 5:89031b2f5316 198
Charles MacNeill 5:89031b2f5316 199
Charles MacNeill 5:89031b2f5316 200 VL53LX_Error VL53LX_get_histogram_bin_data(
Charles MacNeill 5:89031b2f5316 201 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 202 VL53LX_histogram_bin_data_t *phist_data);
Charles MacNeill 5:89031b2f5316 203
Charles MacNeill 5:89031b2f5316 204
Charles MacNeill 5:89031b2f5316 205
Charles MacNeill 5:89031b2f5316 206
Charles MacNeill 5:89031b2f5316 207 void VL53LX_copy_sys_and_core_results_to_range_results(
Charles MacNeill 5:89031b2f5316 208 int32_t gain_factor,
Charles MacNeill 5:89031b2f5316 209 VL53LX_system_results_t *psys,
Charles MacNeill 5:89031b2f5316 210 VL53LX_core_results_t *pcore,
Charles MacNeill 5:89031b2f5316 211 VL53LX_range_results_t *presults);
Charles MacNeill 5:89031b2f5316 212
Charles MacNeill 5:89031b2f5316 213
Charles MacNeill 5:89031b2f5316 214
Charles MacNeill 5:89031b2f5316 215 VL53LX_Error VL53LX_set_zone_dss_config(
Charles MacNeill 5:89031b2f5316 216 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 217 VL53LX_zone_private_dyn_cfg_t *pzone_dyn_cfg);
Charles MacNeill 5:89031b2f5316 218
Charles MacNeill 5:89031b2f5316 219
Charles MacNeill 5:89031b2f5316 220
Charles MacNeill 5:89031b2f5316 221
Charles MacNeill 5:89031b2f5316 222 VL53LX_Error VL53LX_set_dmax_mode(
Charles MacNeill 5:89031b2f5316 223 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 224 VL53LX_DeviceDmaxMode dmax_mode);
Charles MacNeill 5:89031b2f5316 225
Charles MacNeill 5:89031b2f5316 226
Charles MacNeill 5:89031b2f5316 227
Charles MacNeill 5:89031b2f5316 228 VL53LX_Error VL53LX_get_dmax_mode(
Charles MacNeill 5:89031b2f5316 229 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 230 VL53LX_DeviceDmaxMode *pdmax_mode);
Charles MacNeill 5:89031b2f5316 231
Charles MacNeill 5:89031b2f5316 232
Charles MacNeill 5:89031b2f5316 233
Charles MacNeill 5:89031b2f5316 234
Charles MacNeill 5:89031b2f5316 235 VL53LX_Error VL53LX_get_dmax_calibration_data(
Charles MacNeill 5:89031b2f5316 236 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 237 VL53LX_DeviceDmaxMode dmax_mode,
Charles MacNeill 5:89031b2f5316 238 VL53LX_dmax_calibration_data_t *pdmax_cal);
Charles MacNeill 5:89031b2f5316 239
Charles MacNeill 5:89031b2f5316 240
Charles MacNeill 5:89031b2f5316 241
Charles MacNeill 5:89031b2f5316 242
Charles MacNeill 5:89031b2f5316 243 VL53LX_Error VL53LX_set_offset_correction_mode(
Charles MacNeill 5:89031b2f5316 244 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 245 VL53LX_OffsetCalibrationMode offset_cor_mode);
Charles MacNeill 5:89031b2f5316 246
Charles MacNeill 5:89031b2f5316 247
Charles MacNeill 5:89031b2f5316 248
Charles MacNeill 5:89031b2f5316 249
Charles MacNeill 5:89031b2f5316 250 VL53LX_Error VL53LX_get_offset_correction_mode(
Charles MacNeill 5:89031b2f5316 251 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 252 VL53LX_OffsetCorrectionMode *poffset_cor_mode);
Charles MacNeill 5:89031b2f5316 253
Charles MacNeill 5:89031b2f5316 254
Charles MacNeill 5:89031b2f5316 255
Charles MacNeill 5:89031b2f5316 256
Charles MacNeill 5:89031b2f5316 257 VL53LX_Error VL53LX_get_tuning_parm(
Charles MacNeill 5:89031b2f5316 258 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 259 VL53LX_TuningParms tuning_parm_key,
Charles MacNeill 5:89031b2f5316 260 int32_t *ptuning_parm_value);
Charles MacNeill 5:89031b2f5316 261
Charles MacNeill 5:89031b2f5316 262
Charles MacNeill 5:89031b2f5316 263
Charles MacNeill 5:89031b2f5316 264 VL53LX_Error VL53LX_set_tuning_parm(
Charles MacNeill 5:89031b2f5316 265 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 266 VL53LX_TuningParms tuning_parm_key,
Charles MacNeill 5:89031b2f5316 267 int32_t tuning_parm_value);
Charles MacNeill 5:89031b2f5316 268
Charles MacNeill 5:89031b2f5316 269
Charles MacNeill 5:89031b2f5316 270
Charles MacNeill 5:89031b2f5316 271 VL53LX_Error VL53LX_dynamic_xtalk_correction_enable(
Charles MacNeill 5:89031b2f5316 272 VL53LX_DEV Dev
Charles MacNeill 5:89031b2f5316 273 );
Charles MacNeill 5:89031b2f5316 274
Charles MacNeill 5:89031b2f5316 275
Charles MacNeill 5:89031b2f5316 276
Charles MacNeill 5:89031b2f5316 277 VL53LX_Error VL53LX_dynamic_xtalk_correction_disable(
Charles MacNeill 5:89031b2f5316 278 VL53LX_DEV Dev
Charles MacNeill 5:89031b2f5316 279 );
Charles MacNeill 5:89031b2f5316 280
Charles MacNeill 5:89031b2f5316 281
Charles MacNeill 5:89031b2f5316 282
Charles MacNeill 5:89031b2f5316 283
Charles MacNeill 5:89031b2f5316 284 VL53LX_Error VL53LX_dynamic_xtalk_correction_apply_enable(
Charles MacNeill 5:89031b2f5316 285 VL53LX_DEV Dev
Charles MacNeill 5:89031b2f5316 286 );
Charles MacNeill 5:89031b2f5316 287
Charles MacNeill 5:89031b2f5316 288
Charles MacNeill 5:89031b2f5316 289
Charles MacNeill 5:89031b2f5316 290 VL53LX_Error VL53LX_dynamic_xtalk_correction_apply_disable(
Charles MacNeill 5:89031b2f5316 291 VL53LX_DEV Dev
Charles MacNeill 5:89031b2f5316 292 );
Charles MacNeill 5:89031b2f5316 293
Charles MacNeill 5:89031b2f5316 294
Charles MacNeill 5:89031b2f5316 295
Charles MacNeill 5:89031b2f5316 296 VL53LX_Error VL53LX_dynamic_xtalk_correction_single_apply_enable(
Charles MacNeill 5:89031b2f5316 297 VL53LX_DEV Dev
Charles MacNeill 5:89031b2f5316 298 );
Charles MacNeill 5:89031b2f5316 299
Charles MacNeill 5:89031b2f5316 300
Charles MacNeill 5:89031b2f5316 301
Charles MacNeill 5:89031b2f5316 302 VL53LX_Error VL53LX_dynamic_xtalk_correction_single_apply_disable(
Charles MacNeill 5:89031b2f5316 303 VL53LX_DEV Dev
Charles MacNeill 5:89031b2f5316 304 );
Charles MacNeill 5:89031b2f5316 305
Charles MacNeill 5:89031b2f5316 306
Charles MacNeill 5:89031b2f5316 307
Charles MacNeill 5:89031b2f5316 308 VL53LX_Error VL53LX_get_current_xtalk_settings(
Charles MacNeill 5:89031b2f5316 309 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 310 VL53LX_xtalk_calibration_results_t *pxtalk
Charles MacNeill 5:89031b2f5316 311 );
Charles MacNeill 5:89031b2f5316 312
Charles MacNeill 5:89031b2f5316 313
Charles MacNeill 5:89031b2f5316 314
Charles MacNeill 5:89031b2f5316 315 VL53LX_Error VL53LX_set_current_xtalk_settings(
Charles MacNeill 5:89031b2f5316 316 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 317 VL53LX_xtalk_calibration_results_t *pxtalk
Charles MacNeill 5:89031b2f5316 318 );
Charles MacNeill 5:89031b2f5316 319
Charles MacNeill 5:89031b2f5316 320 VL53LX_Error VL53LX_load_patch(VL53LX_DEV Dev);
Charles MacNeill 5:89031b2f5316 321
Charles MacNeill 5:89031b2f5316 322 VL53LX_Error VL53LX_unload_patch(VL53LX_DEV Dev);
Charles MacNeill 5:89031b2f5316 323
Charles MacNeill 5:89031b2f5316 324 #ifdef __cplusplus
Charles MacNeill 5:89031b2f5316 325 }
Charles MacNeill 5:89031b2f5316 326 #endif
Charles MacNeill 5:89031b2f5316 327
Charles MacNeill 5:89031b2f5316 328 #endif
Charles MacNeill 5:89031b2f5316 329