Example #1
0
bool initNavData(ardrone* dr)
{
	static char atCtrl[] = "AT*CTRL=0\r", un[14] = {1,0,0,0,0,0,0,0,0,0,0,0,0,0};
	/// Commence par envoyer un paquet sur le port des données de navigation, pour que le drone commence à écouter.
	fprintf(stdout, "#      - Send some bytes on navdata port\n");
	if(!sendNavData(dr, "Hello World !"))
		return false;
	
	/// Puis demande l'envoi de donnée de navigation.
    strcpy(dr->bufferLeft, "AT*CONFIG=");
    strcpy(dr->bufferRight, ",\"general:navdata_demo\",\"TRUE\"\r");
    fprintf(stdout, "#%5d - Start navdata flow %s%d%s\n", dr->ident+1, dr->bufferLeft, dr->ident+1, dr->bufferRight);    
    if(!sendAT(dr))
    	return false;

	/// Ensuite envoie une trame de contrôle pour indiquer au drone qu'il peut envoyer des données.
	if (sendto(dr->udpSocket_at, atCtrl, strlen(atCtrl), 0,
		(struct sockaddr *) &(dr->addrDroneAT),
		sizeof(dr->addrDroneAT)) < 0)
	{
		fprintf(stderr, "## Error : Impossible d'émettre la trame AT*CTRL=0\n", dr->ident);
		return false;
	}
	else
		fprintf(stdout, "#      - AT*CTRL=0 emitted.\n");
	
	/// Puis envoie une configuration pour demander au drone d'envoyer les données de navigation en multicast.
	if(!sendNavData(dr, un))
	{
		fprintf(stderr, "## Error : Impossible d'émettre un 1\n");
		return false;
	}
	else
		fprintf(stdout, "#      - 1 envoyé.\n");
	return true;
}
Example #2
0
void Socket_Manager::initConfig()
{
	// TODO: the first argument of the first command (sequence number) must begin with 0 and not 1 as for AT*PCMD
	int nb = 0;

		/*
	//first command use in the sdk. Seems have no effect
	string unknow_cmd1 = "AT*PMODE="+toString(nb++)+",2";
	string unknow_cmd2= "AT*MISC="+toString(nb++)+",2,20,2000,3000";
	sendCmd((char*)unknow_cmd1.c_str());
	sendCmd((char*)unknow_cmd2.c_str());
	*/

	//-----------------> INIT THE SESSION
	string cmd1 = "AT*CONFIG_IDS="+toString(nb++)+",\""ARDRONE_SESSION_ID"\",\""ARDRONE_PROFILE_ID"\",\""ARDRONE_APPLOCATION_ID"\"\r";
	string cmd2 = "AT*CONFIG="+toString(nb++)+",\"custom:session_id\",\""ARDRONE_SESSION_ID"\"\r";
	sendCmd((char*)cmd1.c_str());
	sendCmd((char*)cmd2.c_str());
	Sleep(100);

	string cmd3 = "AT*CONFIG_IDS="+toString(nb++)+",\""ARDRONE_SESSION_ID"\",\""ARDRONE_PROFILE_ID"\",\""ARDRONE_APPLOCATION_ID"\"\r";
	string cmd4 = "AT*CONFIG="+toString(nb++)+",\"custom:profile_id\",\""ARDRONE_PROFILE_ID"\"\r";
	sendCmd((char*)cmd3.c_str());
	sendCmd((char*)cmd4.c_str());
	Sleep(100);

	string cmd5 = "AT*CONFIG_IDS="+toString(nb++)+",\""ARDRONE_SESSION_ID"\",\""ARDRONE_PROFILE_ID"\",\""ARDRONE_APPLOCATION_ID"\"\r";
	string cmd6 = "AT*CONFIG="+toString(nb++)+",\"custom:application_id\",\""ARDRONE_APPLOCATION_ID"\"\r";
	sendCmd((char*)cmd5.c_str());
	sendCmd((char*)cmd6.c_str());
	Sleep(100);

	//-----------------> START Navdata
	sendNavData((char *) "\x01\x00\x00\x00");
	string cmd7 = "AT*CONFIG_IDS="+toString(nb++)+",\""ARDRONE_SESSION_ID"\",\""ARDRONE_PROFILE_ID"\",\""ARDRONE_APPLOCATION_ID"\"\r";
	string cmd8 = "AT*CONFIG="+toString(nb++)+",\"general:navdata_demo\",\"TRUE\"\r";
	string cmd9 = "AT*CTRL="+toString(nb++)+",0\r";

	sendCmd((char*)cmd7.c_str());
	sendCmd((char*)cmd8.c_str());
	Sleep(100);

	sendCmd((char*)cmd9.c_str());// Seed ACK
	Sleep(100);

	//-----------------> SET THE WEBCAM TO USE, 0 for horizontal or 1 for vertical
	string cmd10 = "AT*CONFIG_IDS="+toString(nb++)+",\""ARDRONE_SESSION_ID"\",\""ARDRONE_PROFILE_ID"\",\""ARDRONE_APPLOCATION_ID"\"\r";
	string cmd11 = "AT*CONFIG="+toString(nb++)+",\"video:video_channel\",\"0\"\r";
	sendCmd((char*)cmd10.c_str());
	sendCmd((char*)cmd11.c_str());
	Sleep(100);

	//-----------------> SET THE QUALITY, 129 for 360p or 131 for 720p
	string cmd12 = "AT*CONFIG_IDS="+toString(nb++)+",\""ARDRONE_SESSION_ID"\",\""ARDRONE_PROFILE_ID"\",\""ARDRONE_APPLOCATION_ID"\"\r";
	string cmd13 = "AT*CONFIG="+toString(nb++)+",\"video:video_codec\",\"131\"\r";
	sendCmd((char*)cmd12.c_str());
	sendCmd((char*)cmd13.c_str());
	Sleep(100);

	//string cmd14 = "AT*CONFIG_IDS="+toString(nb++)+",\""ARDRONE_SESSION_ID"\",\""ARDRONE_PROFILE_ID"\",\""ARDRONE_APPLOCATION_ID"\"\r";
	//string cmd15 = "AT*CONFIG="+toString(nb++)+",\"video:bitrate\",\"4000\"\r";
	//sendCmd((char*)cmd14.c_str());
	//sendCmd((char*)cmd15.c_str());
	//Sleep(100);

	//-----------------> INIT THE ENSOR CAPTOR, must only use when the drone in on the ground
	string cmd16 = "AT*FTRIM="+toString(nb++)+",\r";
	sendCmd((char*)cmd16.c_str());
	Sleep(100);
}