Exemplo n.º 1
0
//
// Get starting values
//
void Scene::init()
{
	m_removeAfterEmpty = false;
	m_stopped = false;
	
	for (t_channel i = 0; i < m_channels; i++)
	{
		m_runTimeData[i].current = m_runTimeData[i].start =
			static_cast<float> 
			(_app->dmxMap()->getValue(m_address + i));
		
		m_runTimeData[i].target = 
			static_cast<float> (m_values[i].value);
		
		m_runTimeData[i].ready = false;
	}
	
	// No time has yet passed for this scene.
	m_elapsedTime = 0;
	
	// Get speed
	Bus::value(m_busID, m_timeSpan);
	
	// Set speed
	speedChange(m_timeSpan);

	// Append this function to running functions' list
	_app->functionConsumer()->cue(this);
}
Exemplo n.º 2
0
static void returnPressed(void *observerData, WMNotification * notification)
{
	_Panel *panel = (_Panel *) observerData;

	/* Parameter not used, but tell the compiler that it is ok */
	(void) notification;

	speedChange(NULL, panel);
}
Exemplo n.º 3
0
//
// Bus value has changed
//
void Scene::busValueChanged(t_bus_id id, t_bus_value value)
{
	if (id != m_busID)
	{
		return;
	}
	
	m_startMutex.lock();
	
	if (m_running)
	{
		speedChange(value);
	}
	else
	{
		m_timeSpan = value;
	}
	
	m_startMutex.unlock();
}
Exemplo n.º 4
0
int main()
{
    int socketServeur;
    int socketClient = -1;
	int clientConnecte = 0;
    int i;
	int ecrit = 0;
	int lu = -1;
	int speed = 500;
	int stopCount = 0;
	int distance = 0;
	int distance_32bits = 0;
    struct sockaddr_in addrServeur;
    socklen_t longueurAdresse; // Nombre d'octets de la structure sockaddr_in
    char nomDuClient[1024], portDuClient[32];
	char commande = 'X';
	char clientONOFF = 'o';
	pthread_t thread1;
	pthread_t thread2;
	
	// Initialisation des GPIO
	initGPIO();
	
	// Initialisation Mutex
	if(pthread_mutex_init(&lock, NULL) != 0)
	{
		perror("mutex");
		exit(-1);
		
	}

    pthread_create(&thread1, NULL, thread_distance, &socketClient);
	pthread_create(&thread2, NULL, thread_speed, &socketClient);
    printf("creation du thread1 et 2\n");
	
    // Cree un socket de communication
	socketServeur = socket(PF_INET, SOCK_STREAM, 0);
    if(socketServeur == -1)
    {
        perror("Socket");
        exit(-1);
    }

    printf("Socket crée avec succès ! (%d)\n", socketServeur);

    addrServeur.sin_addr.s_addr = INADDR_ANY; //toutes
    addrServeur.sin_family = PF_INET;
    addrServeur.sin_port = htons(PORT);
	
	// lose the pesky "Address already in use" error message
	int yes = 1;
	if( setsockopt(socketServeur, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)) == -1 ) 
	{
		perror("setsockopt");
		exit(errno);
	}

    // Demande l'attachement local de la socket
    longueurAdresse = sizeof(addrServeur);
    if( bind(socketServeur, (struct sockaddr *)&addrServeur, longueurAdresse) == -1 )
    {
        perror("bind");
        exit(-2);
    }
    printf("Socket attachée avec succès!\n");

    if (listen(socketServeur, CLIENT_MAX) == -1)
    {
        perror("listen");
        exit(errno);
    }
    printf("Socket placée en écoute passive...\n");

	printf("Attente d'une demande de connexion (quitter avec Cltrl-C)\n\n");
		
    while(1)
    {       
		if(clientConnecte == 0)
		{
			socketClient = accept4(socketServeur, (struct sockaddr *)&addrServeur, &longueurAdresse, SOCK_NONBLOCK);
			
			if(socketClient == -1 )
			{
				printf("errno : %d\n", errno);
				perror("accept");
				close(socketClient);
				close(socketServeur);
				exit(errno);
			}
			
			printf("Nouveau client !\n");

			if ( getnameinfo((struct sockaddr*)&addrServeur, sizeof(addrServeur), nomDuClient, sizeof(nomDuClient), portDuClient,
						   sizeof(portDuClient), NI_NUMERICHOST | NI_NUMERICSERV) == 0)
			{
				   printf("client=%s, port=%s\n", nomDuClient, portDuClient);
			}
			
			clientConnecte = 1;
			//ecrits = write(socketClient, &clientONOFF, 1);
		}
		
		
		// nanosleep((struct timespec[]){{0, 10000000}}, NULL);
		lu = read(socketClient, &commande, 1);
		
		if(lu == -1)
		{
			if(errno == EAGAIN) // Nothing to read
			{
				continue;
			}
			else
			{
				printf("Error reading from socketClient ! \n");
				printf("errno = %d \n", errno);
				break;
			}
		}
		
		if(lu == 0)
		{
			printf("Socket closed ! \n");
			speed = 500;
			avancer(0);
			commande = 's';
			close(socketClient);
			clientConnecte = 0;
			continue;
		}
		
		printf("lu = %d\n", lu);
		printf("commande = %c\n", commande);
		
		switch(commande)
		{
			case 'a' :
				//printf("AVANCE\n");
				avancer(speed);
				break;
			case 'r' :
				//printf("RECULE\n");
				reculer(speed);
				break;
			case 'd' :
				//printf("DROITE\n");
				tourner(DROITE, speed);
				break;
			case 'g' :
				//printf("GAUCHE\n");
				tourner(GAUCHE, speed);
				break;
			case '+' :
				speed = speedChange(UP, speed);
				break;
			case '-' :
				speed = speedChange(DOWN, speed);
				break;
			case 's' :
				//printf("REPOS\n");
				avancer(0);
		}
		
		//distance = ultrason();
    }
	
	close(socketClient);
	close(socketServeur);
	
	return 0;
}