コード例 #1
0
/*
 * Class:     Drone
 * Method:    emergency
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_cbccore_ARDrone_emergency(JNIEnv * env, jobject obj){
	drone_emergency();
}
コード例 #2
0
ファイル: ui.c プロジェクト: kradhub/pspdc
int
ui_flight_run (UI * ui, Drone * drone)
{
	int ret = 0;
	int is_flying = 0;

	while (running) {
		SceCtrlData pad;
		SceCtrlLatch latch;
		int yaw = 0;
		int pitch = 0;
		int roll = 0;
		int gaz = 0;

		if (!drone->connected) {
			ui_msg_dialog (ui, "Connection to drone lost");
			ret = FLIGHT_UI_MAIN_MENU;
			break;
		}

		ui_flight_update (ui, drone);

		sceCtrlReadBufferPositive (&pad, 1);
		sceCtrlReadLatch (&latch);

		is_flying = (drone->state == DRONE_STATE_TAKING_OFF) ||
			(drone->state == DRONE_STATE_FLYING);

		/* Check triangle and circle transition */
		if (EVENT_BUTTON_DOWN (&latch, PSP_CTRL_TRIANGLE)) {
			if (is_flying)
				drone_landing (drone);
			else
				drone_takeoff (drone);
		}

		if (EVENT_BUTTON_DOWN (&latch, PSP_CTRL_CIRCLE)) {
			drone_emergency (drone);
			is_flying = 0;
		}

		if (EVENT_BUTTON_DOWN (&latch, PSP_CTRL_SELECT)) {
			switch (ui->setting_select_binding) {
				case SELECT_BIND_TAKE_PICTURE:
					drone_take_picture (drone);
					break;
				case SELECT_BIND_FLIP_FRONT:
					drone_do_flip (drone, DRONE_FLIP_FRONT);
					break;
				case SELECT_BIND_FLIP_BACK:
					drone_do_flip (drone, DRONE_FLIP_BACK);
					break;
				case SELECT_BIND_FLIP_RIGHT:
					drone_do_flip (drone, DRONE_FLIP_RIGHT);
					break;
				case SELECT_BIND_FLIP_LEFT:
					drone_do_flip (drone, DRONE_FLIP_LEFT);
					break;
				default:
					break;
			}
		}

		if (EVENT_BUTTON_DOWN (&latch, PSP_CTRL_START)) {
			if (ui_flight_main_menu (ui, drone) ==
					FLIGHT_MAIN_MENU_QUIT) {
				ret = FLIGHT_UI_MAIN_MENU;
				break;
			}
		}

		/* Send flight control */
		if (pad.Buttons != 0) {
			if (pad.Buttons & PSP_CTRL_CROSS)
				gaz += ui->setting_gaz;
			if (pad.Buttons & PSP_CTRL_SQUARE)
				gaz -= ui->setting_gaz;

			if (pad.Buttons & PSP_CTRL_LTRIGGER)
				yaw -= ui->setting_yaw;
			if (pad.Buttons & PSP_CTRL_RTRIGGER)
				yaw += ui->setting_yaw;

			if (pad.Buttons & PSP_CTRL_UP)
				pitch += ui->setting_pitch;
			if (pad.Buttons & PSP_CTRL_DOWN)
				pitch -= ui->setting_pitch;

			if (pad.Buttons & PSP_CTRL_LEFT)
				roll -= ui->setting_roll;
			if (pad.Buttons & PSP_CTRL_RIGHT)
				roll += ui->setting_roll;
		}

		if (gaz || yaw || pitch || roll)
			drone_flight_control (drone, gaz, yaw, pitch, roll);

		sceDisplayWaitVblankStart ();
		SDL_Flip (ui->screen);
	}

	return ret;
}