mirror of
https://github.com/yoboujon/dumber.git
synced 2025-06-08 13:50:49 +02:00
Added semaphore for Arena
This commit is contained in:
parent
8b39e4e099
commit
9df1899580
6 changed files with 14 additions and 11 deletions
|
@ -41,7 +41,7 @@
|
|||
</conf>
|
||||
<conf name="Debug__RPI_" type="1">
|
||||
<toolsSet>
|
||||
<developmentServer>xenomai@10.105.0.145:22</developmentServer>
|
||||
<developmentServer>xenomai@10.105.0.146:22</developmentServer>
|
||||
<platform>2</platform>
|
||||
</toolsSet>
|
||||
<dbx_gdbdebugger version="1">
|
||||
|
|
|
@ -6,6 +6,9 @@
|
|||
</data>
|
||||
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
|
||||
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
|
||||
<group/>
|
||||
<group>
|
||||
<file>file:/home/boujon/Documents/dumber/software/raspberry/superviseur-robot/tasks.cpp</file>
|
||||
<file>file:/home/boujon/Documents/dumber/software/raspberry/superviseur-robot/tasks.h</file>
|
||||
</group>
|
||||
</open-files>
|
||||
</project-private>
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
#Tue Nov 13 11:04:27 CET 2018
|
||||
#Tue May 14 13:44:12 CEST 2024
|
||||
project.license=gpl30
|
||||
|
|
|
@ -358,6 +358,7 @@ void Tasks::ReceiveFromMonTask(void *arg) {
|
|||
if(arenaStatus == ArenaStatusEnum::NONE)
|
||||
arenaStatus = ArenaStatusEnum::SEARCHING;
|
||||
rt_mutex_release(&mutex_arenaStatus);
|
||||
rt_sem_v(&sem_arenaChoice, TM_INFINITE);
|
||||
}
|
||||
else if (msgRcv->CompareID(MESSAGE_CAM_ARENA_CONFIRM)) {
|
||||
std::cout << "\n\n\nArena Confirm asked !!!\n\n\n" << std::endl;
|
||||
|
@ -365,6 +366,7 @@ void Tasks::ReceiveFromMonTask(void *arg) {
|
|||
if(arenaStatus == ArenaStatusEnum::SEARCHED)
|
||||
arenaStatus = ArenaStatusEnum::CONFIRM;
|
||||
rt_mutex_release(&mutex_arenaStatus);
|
||||
rt_sem_v(&sem_arenaChoice, TM_INFINITE);
|
||||
}
|
||||
else if (msgRcv->CompareID(MESSAGE_CAM_ARENA_INFIRM)) {
|
||||
std::cout << "\n\n\nArena Infirm asked !!!\n\n\n" << std::endl;
|
||||
|
@ -372,6 +374,7 @@ void Tasks::ReceiveFromMonTask(void *arg) {
|
|||
if(arenaStatus == ArenaStatusEnum::SEARCHED)
|
||||
arenaStatus = ArenaStatusEnum::INFIRM;
|
||||
rt_mutex_release(&mutex_arenaStatus);
|
||||
rt_sem_v(&sem_arenaChoice, TM_INFINITE);
|
||||
}
|
||||
else if (msgRcv->CompareID(MESSAGE_CAM_IMAGE)) {
|
||||
//?
|
||||
|
@ -666,15 +669,12 @@ void Tasks::ArenaChoiceTask(void * arg)
|
|||
ArenaStatusEnum as(ArenaStatusEnum::NONE);
|
||||
|
||||
cout << "Start " << __PRETTY_FUNCTION__ << endl << flush;
|
||||
// Synchronization barrier (waiting that all tasks are starting)
|
||||
rt_sem_p(&sem_barrier, TM_INFINITE);
|
||||
|
||||
/* The task starts here */
|
||||
rt_task_set_periodic(NULL, TM_NOW, 490000000);
|
||||
|
||||
while(1)
|
||||
{
|
||||
rt_task_wait_period(NULL);
|
||||
// Get semaphore
|
||||
rt_sem_p(&sem_arenaChoice, TM_INFINITE);
|
||||
// Check the status of the arena
|
||||
rt_mutex_acquire(&mutex_arenaStatus, TM_INFINITE);
|
||||
as = arenaStatus;
|
||||
|
@ -736,11 +736,10 @@ void Tasks::ArenaChoiceTask(void * arg)
|
|||
rt_mutex_acquire(&mutex_cameraStatus, TM_INFINITE);
|
||||
cameraStatus = CameraStatusEnum::OPENING;
|
||||
rt_mutex_release(&mutex_cameraStatus);
|
||||
const MessageID tempMessage = this->OpenCamera();
|
||||
WriteInQueue(&q_messageToMon, new Message(tempMessage));
|
||||
this->OpenCamera();
|
||||
|
||||
rt_mutex_acquire(&mutex_arenaStatus, TM_INFINITE);
|
||||
arenaStatus = ArenaStatusEnum::CONFIRMED;
|
||||
arenaStatus = ArenaStatusEnum::NONE;
|
||||
rt_mutex_release(&mutex_arenaStatus);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -122,6 +122,7 @@ private:
|
|||
RT_SEM sem_openComRobot;
|
||||
RT_SEM sem_serverOk;
|
||||
RT_SEM sem_startRobot;
|
||||
RT_SEM sem_arenaChoice;
|
||||
|
||||
/**********************************************************************/
|
||||
/* Message queues */
|
||||
|
|
Loading…
Add table
Reference in a new issue