示例#1
0
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);
  }
}