C_RESULT output_gtk_stage_transform( void *cfg, vp_api_io_data_t *in, vp_api_io_data_t *out) { vp_os_mutex_lock(&video_update_lock); /* Get a reference to the last decoded picture */ pixbuf_data = (uint8_t*)in->buffers[0]; // we casten het naar een pointer van type uint8_t!! // returns: A newly-created GdkPixbuf structure with a reference count of 1. pixbuf = gdk_pixbuf_new_from_data(pixbuf_data, // image data in 8-bit/sample packed format GDK_COLORSPACE_RGB, FALSE, // has alpha 8, // bits per sample imageWidth, imageHeight, imageWidth * 3, // distance in bites between rowstride NULL, // GdkPixbufDestroyNotify detroy_fn NULL); // gpoint destroy_fn_data); sprintf(imageName, "images/frame%05d.jpg", ++imageCounter); gdk_pixbuf_save(pixbuf, imageName, "jpeg", NULL, "quality", "100", NULL); vp_os_mutex_unlock(&video_update_lock); // Check if we need to switch the video feed to bottom or horizontal camera if(videoSwitch != oldVideoSwitch) { oldVideoSwitch = videoSwitch; if(videoSwitch > 0) { ardrone_at_zap(ZAP_CHANNEL_HORI); imageWidth = 320; imageHeight = 240; } else { ardrone_at_zap(ZAP_CHANNEL_VERT); imageWidth = 320; imageHeight = 144; } } return (SUCCESS); }
C_RESULT output_gtk_stage_open( void *cfg, vp_api_io_data_t *in, vp_api_io_data_t *out) { g_type_init(); //ardrone_at_zap(ZAP_CHANNEL_VERT); ardrone_at_zap(ZAP_CHANNEL_HORI); //ardrone_at_zap(ZAP_CHANNEL_LARGE_HORI_SMALL_VERT); imageCounter = 0; /* int cdResult, rmResult; cdResult = system("cd images"); if (cdResult == 1) { rmResult = system("rm frame*.jpg"); if (rmResult == 1) return (SUCCESS); } */ return (SUCCESS); }
void ardrone_at_zapC(ZAP_VIDEO_CHANNEL channel){ardrone_at_zap(channel);}
int _stdcall ChangeToBottomCamera() { ardrone_at_zap(ZAP_CHANNEL_VERT); return 0; }
int _stdcall ChangeToFrontCamera() { ardrone_at_zap(ZAP_CHANNEL_HORI); return 0; }
void checkErrors(void) { input_state_t* input_state = ardrone_tool_get_input_state(); strcpy(ctrldata.error_msg, ""); if(!ctrldata.wifiReachabled) { strcat(ctrldata.error_msg, messages[MESSAGEBOX_WIFI_NOT_REACHABLED]); strcat(ctrldata.error_msg, "\n"); resetControlData(); } else { if(ctrldata.needAnimation >= 0) { ardrone_at_set_anim(ctrldata.needAnimation, MAYDAY_TIMEOUT[ctrldata.needAnimation]); ctrldata.needAnimation = -1; } if(ctrldata.needVideoSwitch >= 0) { ardrone_at_zap(ctrldata.needVideoSwitch); ctrldata.needVideoSwitch = -1; } if(ctrldata.needChangeCameraDetection >= 0) { ardrone_at_cad(ctrldata.needChangeCameraDetection, ctrldata.tag_size); ctrldata.needChangeCameraDetection = -1; } if(ctrldata.needLedAnimation >= 0) { ardrone_at_set_led_animation(ctrldata.needLedAnimation, ctrldata.ledAnimFreq, ctrldata.ledAnimDuration); ctrldata.needLedAnimation = -1; } if(ctrldata.needSetEmergency) { ctrldata.isInEmergency = ctrlnavdata.emergencyLanding; ardrone_tool_set_ui_pad_select(1); ctrldata.needSetEmergency = FALSE; } if( ctrldata.needSetNavdataDemo) { if( control_ack_configure_navdata_demo(ctrldata.navdata_demo)) ctrldata.needSetNavdataDemo = FALSE; } else if( ctrldata.needSetPairing ) { if(control_ack_configure_mac_address((const char*)&iphone_mac_address[0])) ctrldata.needSetPairing = FALSE; } else if(ctrldata.needSetFrequency) { if(control_ack_configure_ultrasound_frequency(!ctrldata.is_client)) ctrldata.needSetFrequency = FALSE; } else if(ctrldata.needSetManualTrim) { if(control_ack_configure_manual_trim(ctrldata.manual_trim)) { ctrldata.needSetManualTrim = FALSE; ctrldata.manual_trim_enabled = ctrldata.manual_trim; } } else if(ctrldata.needGetConfiguration) { //PRINT("Request configuration file\n"); if(control_get_configuration()) ctrldata.needGetConfiguration = FALSE; } if((ctrldata.framecounter % (kFPS / 2)) == 0) { if(ctrlnavdata.bootstrap) { setNavdataDemo(TRUE); ctrldata.needSetFrequency = TRUE; ctrldata.needGetConfiguration = TRUE; ctrldata.needSetPairing = TRUE; } } if(ardrone_navdata_client_get_num_retries() >= NAVDATA_MAX_RETRIES) { strcat(ctrldata.error_msg, messages[MESSAGEBOX_CANT_CONNECT_TO_TOY]); strcat(ctrldata.error_msg, "\n"); resetControlData(); } else if(ctrlnavdata.emergencyLanding) { if(!ctrldata.isInEmergency && input_state->select) ardrone_tool_set_ui_pad_select(0); strcpy(ctrldata.emergency_msg, "reset"); strcat(ctrldata.error_msg, messages[MESSAGEBOX_EMERGENCY_PRESS_RESET]); strcat(ctrldata.error_msg, "\n"); if(ctrlnavdata.ultrasoundProblem) { strcat(ctrldata.error_msg, messages[MESSAGEBOX_EMERGENCY_ULTRASOUND]); strcat(ctrldata.error_msg, "\n"); } else if(ctrlnavdata.cutoutProblem) { strcat(ctrldata.error_msg, messages[MESSAGEBOX_EMERGENCY_CUT_OUT]); strcat(ctrldata.error_msg, "\n"); } else if(ctrlnavdata.motorsProblem) { strcat(ctrldata.error_msg, messages[MESSAGEBOX_EMERGENCY_MOTORS]); strcat(ctrldata.error_msg, "\n"); } else if(ctrlnavdata.cameraProblem) { strcat(ctrldata.error_msg, messages[MESSAGEBOX_EMERGENCY_CAMERA]); strcat(ctrldata.error_msg, "\n"); } else if(ctrlnavdata.adcProblem) { strcat(ctrldata.error_msg, messages[MESSAGEBOX_EMERGENCY_PIC_WATCHDOG]); strcat(ctrldata.error_msg, "\n"); } else if(ctrlnavdata.adcVersionProblem) { strcat(ctrldata.error_msg, messages[MESSAGEBOX_EMERGENCY_PIC_VERSION]); strcat(ctrldata.error_msg, "\n"); } else if(ctrlnavdata.anglesProblem) { strcat(ctrldata.error_msg, messages[MESSAGEBOX_EMERGENCY_TOO_MUCH_ANGLE]); strcat(ctrldata.error_msg, "\n"); } else if(ctrlnavdata.vbatLowProblem) { strcat(ctrldata.error_msg, messages[MESSAGEBOX_EMERGENCY_BATTERY_LOW]); strcat(ctrldata.error_msg, "\n"); } else if(ctrlnavdata.userEmergency) { strcat(ctrldata.error_msg, messages[MESSAGEBOX_EMERGENCY_USER]); strcat(ctrldata.error_msg, "\n"); } else { strcat(ctrldata.error_msg, messages[MESSAGEBOX_EMERGENCY_UNKNOWN]); strcat(ctrldata.error_msg, "\n"); } resetControlData(); ardrone_tool_start_reset(); if(ctrlnavdata.startPressed) switchTakeOff(); } else if(!ctrlnavdata.emergencyLanding) { if(ctrldata.isInEmergency && input_state->select) ardrone_tool_set_ui_pad_select(0); if(video_stage_get_num_retries() > VIDEO_MAX_RETRIES) { strcat(ctrldata.error_msg, messages[MESSAGEBOX_ALERT_NO_VIDEO_CONNECTION]); strcat(ctrldata.error_msg, "\n"); } else if(ctrlnavdata.vbatLowProblem) { strcat(ctrldata.error_msg, messages[MESSAGEBOX_ALERT_BATTERY_LOW]); strcat(ctrldata.error_msg, "\n"); } else if(ctrlnavdata.ultrasoundProblem) { strcat(ctrldata.error_msg, messages[MESSAGEBOX_ALERT_ULTRASOUND]); strcat(ctrldata.error_msg, "\n"); } else if(ctrlnavdata.visionProblem && ctrlnavdata.flyingState) { strcat(ctrldata.error_msg, messages[MESSAGEBOX_ALERT_VISION]); strcat(ctrldata.error_msg, "\n"); } if(!ctrlnavdata.timerElapsed) strcpy(ctrldata.emergency_msg, "emergency"); if(input_state->start) { if(ctrlnavdata.startPressed) { strcpy(ctrldata.takeoff_msg, "take_land"); } else { strcpy(ctrldata.takeoff_msg, "take_off"); strcat(ctrldata.error_msg, messages[MESSAGEBOX_START_NOT_RECEIVED]); strcat(ctrldata.error_msg, "\n"); } } else { strcpy(ctrldata.takeoff_msg, "take_off"); } } } }