LaserTransform::~LaserTransform() { // clean up tf devices if (is_imu_connected) { imu_leds_off(&imu); imu_destroy(&imu); } if (is_imu_v2_connected) { imu_v2_leds_off(&imu_v2); imu_v2_destroy(&imu_v2); } if (is_gps_connected) { gps_destroy(&gps); } if (is_idi4_connected) { industrial_digital_in_4_destroy(&idi4); } if (is_imu_v2_connected || is_imu_connected || is_idi4_connected || is_gps_connected) { ipcon_destroy(&ipcon); } // close gps logfile if (gps_log.is_open()) gps_log.close(); // close velo logfile if (velo_log.is_open()) velo_log.close(); }
TinkerforgeSensors::~TinkerforgeSensors() { bool is_ipcon = false; // clean up tf devices while(!sensors.empty()) { SensorDevice *dev = sensors.front(); switch (dev->getType()) { case AMBIENT_LIGHT_DEVICE_IDENTIFIER: ambient_light_destroy((AmbientLight*)dev->getDev()); break; case AMBIENT_LIGHT_V2_DEVICE_IDENTIFIER: ambient_light_v2_destroy((AmbientLightV2*)dev->getDev()); break; case DISTANCE_IR_DEVICE_IDENTIFIER: distance_ir_destroy((DistanceIR*)dev->getDev()); break; case DISTANCE_US_DEVICE_IDENTIFIER: distance_us_destroy((DistanceUS*)dev->getDev()); break; case DUAL_BUTTON_DEVICE_IDENTIFIER: dual_button_destroy((DualButton*)dev->getDev()); break; case GPS_DEVICE_IDENTIFIER: gps_destroy((GPS*)dev->getDev()); break; case IMU_DEVICE_IDENTIFIER: imu_leds_off((IMU*)dev->getDev()); imu_destroy((IMU*)dev->getDev()); break; case IMU_V2_DEVICE_IDENTIFIER: imu_v2_leds_off((IMUV2*)dev->getDev()); imu_v2_destroy((IMUV2*)dev->getDev()); break; case TEMPERATURE_DEVICE_IDENTIFIER: temperature_destroy((Temperature*)dev->getDev()); break; } delete dev; sensors.pop_front(); is_ipcon = true; } if (is_ipcon) { ipcon_destroy(&ipcon); } }