1
0
Fork 0
mirror of https://github.com/RobotechLille/cdf2018-principal synced 2024-11-23 16:46:04 +01:00

Peut ignorer si l'Arduino n'est pas connecté

This commit is contained in:
Geoffrey Frogeye 2018-05-09 00:59:23 +02:00
parent f0778e621f
commit de62a72457

View file

@ -1,10 +1,14 @@
// Robotech Lille 2017-2018
#include "actionneurs.h"
#include <stdio.h>
#include <stdlib.h>
#include "CA.h"
#include "actionneurs.h"
pthread_mutex_t receptionActionMutex;
pthread_cond_t receptionActionCond;
bool actionneursConfigured = false;
// On fait un truc de malpropre : étant donné que l'Arduino
// peut faire qu'une seule tache à la fois on suppose que le
@ -12,6 +16,8 @@ pthread_cond_t receptionActionCond;
void configureActionneurs()
{
actionneursConfigured = true;
configureCA();
pthread_mutex_init(&receptionActionMutex, NULL);
pthread_cond_init(&receptionActionCond, NULL);
resetActionneurs();
@ -64,7 +70,6 @@ void setPropulsion(bool state)
attendAction(state ? C2AD_PROPULSION_ON : C2AD_PROPULSION_OFF);
}
void resetActionneurs()
{
setLoquet(false);
@ -87,14 +92,22 @@ void receptionAction()
void attendAction(unsigned char code)
{
if (actionneursConfigured) {
pthread_mutex_lock(&receptionActionMutex);
registerRxHandlerCA(code, receptionAction);
sendCA(code, NULL, 0);
pthread_cond_wait(&receptionActionCond, &receptionActionMutex);
pthread_mutex_unlock(&receptionActionMutex);
} else {
fprintf(stderr, "Action demandée sans Arduino configuré\n");
}
}
void deconfigureActionneurs()
{
if (actionneursConfigured) {
stopActionneurs();
deconfigureCA();
actionneursConfigured = false;
}
}