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(); }
int main(void) { // Create IP connection IPConnection ipcon; ipcon_create(&ipcon); // Create device object GPS gps; gps_create(&gps, UID, &ipcon); // Connect to brickd if(ipcon_connect(&ipcon, HOST, PORT) < 0) { fprintf(stderr, "Could not connect\n"); return 1; } // Don't use device before ipcon is connected // Register coordinates callback to function cb_coordinates gps_register_callback(&gps, GPS_CALLBACK_COORDINATES, (void *)cb_coordinates, NULL); // Set period for coordinates callback to 1s (1000ms) // Note: The coordinates callback is only called every second // if the coordinates has changed since the last call! gps_set_coordinates_callback_period(&gps, 1000); printf("Press key to exit\n"); getchar(); gps_destroy(&gps); ipcon_destroy(&ipcon); // Calls ipcon_disconnect internally return 0; }
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); } }