int main(){ srand(time(NULL)); data_item_header ignition_angle = {"Ignition angle", Real32_Type, Degrees}; data_item_header engine_torque = {"Engine torque", Real32_Type, Newton_Metres}; data_item_header engine_speed = {"Engine speed", UInt32_Type, Revolutions_Per_Second}; int ignition_angle_port = -1; int engine_torque_port = -1; int engine_speed_port = -1; unsigned int ignition_angle_port_size = sizeof(data_item_header)+4; unsigned int engine_torque_port_size = sizeof(data_item_header)+4; unsigned int engine_speed_port_size = sizeof(data_item_header)+4; ignition_angle_data = setup_port(port_ignition_angle_btdc, &ignition_angle_port, ignition_angle_port_size); engine_torque_data = setup_port(port_engine_torque, &engine_torque_port, engine_torque_port_size); engine_speed_data = setup_port(port_engine_speed, &engine_speed_port, engine_speed_port_size); initialize_simulation(); sleep(5); memcpy(ignition_angle_data, &ignition_angle, sizeof(data_item_header) ); memcpy(engine_torque_data, &engine_torque, sizeof(data_item_header) ); memcpy(engine_speed_data, &engine_speed, sizeof(data_item_header) ); int i = 0; for(; i < 1000000000; i++){ update_rpm(); update_ignition_angle(); update_torque(); } sleep(5); close_port(port_ignition_angle_btdc, ignition_angle_data, ignition_angle_port_size); close_port(port_engine_torque, engine_torque_data, engine_torque_port_size); close_port(port_engine_speed, engine_speed_data, engine_speed_port_size); }
int main() { #ifdef FULL_SIMU initialize_simulation(); trajectory(); finish_simulation(); #else signal(SIGINT, Emergency_exit); pthread_t th_navdata; pthread_t th_watchdog; // pthread_t th_simu; initialize_connection_with_drone(); pthread_create(&th_navdata, NULL, navdata_thread, NULL); pthread_mutex_lock(&mutex_navdata_cond); pthread_cond_wait(&navdata_initialised, &mutex_navdata_cond); pthread_mutex_unlock(&mutex_navdata_cond); pthread_create(&th_watchdog, NULL, watchdog_thread, NULL); // pthread_create(&th_simu, NULL,simu_thread, NULL); printf("It's on\n"); sleep(2); take_off(); printf("First Altitude : %d\n", (int) get_altitude()); sleep(2); calibrate_magnetometer(); //sleep(7); // Indefinitely print magneto /*while (1) { print_navdata_magneto(); usleep(500000); }*/ /************************* * Normal behaviour * *************************/ trajectory(); /************************* * Tests * *************************/ /*sleep(2) ; printf("orientation\n") ; printf("first heading : %f\n", get_heading()) ; //forward(10, 2.0); //forward_mag(100, 150, get_heading()); //sleep(2) ; */ //orientate_mag(100, get_heading() + 10.0); //sleep(2) ; land(); close_commands_socket(); #endif return 0; }