// // 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); }
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); }
// // 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(); }
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; }