예제 #1
0
파일: video_stage.c 프로젝트: show0k/uvhar
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);
}
예제 #2
0
파일: video_stage.c 프로젝트: show0k/uvhar
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);
}
예제 #3
0
 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;
	}
예제 #6
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");
			}			
		}
		
	}
}