mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-29 02:21:44 +00:00
Added in new headers and libraries for image version 18. This image contains a change to fix artf3773, which switched setDataSem to be a pthread_cond_t variable instead of a mutex. As a result, a few new HAL functions had to be exposed over JNI, specifically the functions for MultiWait.
Change-Id: I28be07c8102acb078440ee74ded46527328dd271
This commit is contained in:
@@ -35,7 +35,7 @@ DriverStation::DriverStation()
|
||||
: m_statusDataSemaphore (initializeMutexNormal())
|
||||
, m_task ("DriverStation", (FUNCPTR)DriverStation::InitTask)
|
||||
, m_newControlData(0)
|
||||
, m_packetDataAvailableSem (0)
|
||||
, m_packetDataAvailableMultiWait(0)
|
||||
, m_waitForDataSem(0)
|
||||
, m_approxMatchTimeOffset(-1.0)
|
||||
, m_userInDisabled(false)
|
||||
@@ -53,16 +53,19 @@ DriverStation::DriverStation()
|
||||
}
|
||||
|
||||
// Create a new semaphore
|
||||
m_packetDataAvailableSem = initializeMutexNormal();
|
||||
m_packetDataAvailableMultiWait = initializeMultiWait();
|
||||
m_newControlData = initializeSemaphore(SEMAPHORE_EMPTY);
|
||||
|
||||
// Register that semaphore with the network communications task.
|
||||
// It will signal when new packet data is available.
|
||||
HALSetNewDataSem(m_packetDataAvailableSem);
|
||||
|
||||
m_waitForDataSem = initializeMultiWait();
|
||||
m_waitForDataMutex = initializeMutexNormal();
|
||||
|
||||
m_packetDataAvailableMultiWait = initializeMultiWait();
|
||||
m_packetDataAvailableMutex = initializeMutexNormal();
|
||||
|
||||
// Register that semaphore with the network communications task.
|
||||
// It will signal when new packet data is available.
|
||||
HALSetNewDataSem(m_packetDataAvailableMultiWait);
|
||||
|
||||
AddToSingletonList();
|
||||
|
||||
if (!m_task.Start((int32_t)this))
|
||||
@@ -79,7 +82,8 @@ DriverStation::~DriverStation()
|
||||
deleteMultiWait(m_waitForDataSem);
|
||||
// Unregister our semaphore.
|
||||
HALSetNewDataSem(0);
|
||||
deleteMutex(m_packetDataAvailableSem);
|
||||
deleteMultiWait(m_packetDataAvailableMultiWait);
|
||||
deleteMutex(m_packetDataAvailableMutex);
|
||||
deleteMutex(m_waitForDataMutex);
|
||||
}
|
||||
|
||||
@@ -93,7 +97,7 @@ void DriverStation::Run()
|
||||
int period = 0;
|
||||
while (true)
|
||||
{
|
||||
takeMutex(m_packetDataAvailableSem);
|
||||
takeMultiWait(m_packetDataAvailableMultiWait, m_packetDataAvailableMutex, 0);
|
||||
GetData();
|
||||
giveMultiWait(m_waitForDataSem);
|
||||
if (++period >= 4)
|
||||
|
||||
Reference in New Issue
Block a user