mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-23 01:21:42 +00:00
Change hal sim to use spinlocks (#1291)
This makes callback registration completely thread safe. This patch also uses templates and macros to dramatically reduce the amount of manual boilerplate.
This commit is contained in:
@@ -44,7 +44,7 @@ void HAL_InitAccumulator(HAL_AnalogInputHandle analogPortHandle,
|
||||
return;
|
||||
}
|
||||
|
||||
SimAnalogInData[port->channel].SetAccumulatorInitialized(true);
|
||||
SimAnalogInData[port->channel].accumulatorInitialized = true;
|
||||
}
|
||||
void HAL_ResetAccumulator(HAL_AnalogInputHandle analogPortHandle,
|
||||
int32_t* status) {
|
||||
@@ -54,9 +54,9 @@ void HAL_ResetAccumulator(HAL_AnalogInputHandle analogPortHandle,
|
||||
return;
|
||||
}
|
||||
|
||||
SimAnalogInData[port->channel].SetAccumulatorCenter(0);
|
||||
SimAnalogInData[port->channel].SetAccumulatorCount(0);
|
||||
SimAnalogInData[port->channel].SetAccumulatorValue(0);
|
||||
SimAnalogInData[port->channel].accumulatorCenter = 0;
|
||||
SimAnalogInData[port->channel].accumulatorCount = 0;
|
||||
SimAnalogInData[port->channel].accumulatorValue = 0;
|
||||
}
|
||||
void HAL_SetAccumulatorCenter(HAL_AnalogInputHandle analogPortHandle,
|
||||
int32_t center, int32_t* status) {
|
||||
@@ -66,7 +66,7 @@ void HAL_SetAccumulatorCenter(HAL_AnalogInputHandle analogPortHandle,
|
||||
return;
|
||||
}
|
||||
|
||||
SimAnalogInData[port->channel].SetAccumulatorCenter(center);
|
||||
SimAnalogInData[port->channel].accumulatorCenter = center;
|
||||
}
|
||||
void HAL_SetAccumulatorDeadband(HAL_AnalogInputHandle analogPortHandle,
|
||||
int32_t deadband, int32_t* status) {
|
||||
@@ -76,7 +76,7 @@ void HAL_SetAccumulatorDeadband(HAL_AnalogInputHandle analogPortHandle,
|
||||
return;
|
||||
}
|
||||
|
||||
SimAnalogInData[port->channel].SetAccumulatorDeadband(deadband);
|
||||
SimAnalogInData[port->channel].accumulatorDeadband = deadband;
|
||||
}
|
||||
int64_t HAL_GetAccumulatorValue(HAL_AnalogInputHandle analogPortHandle,
|
||||
int32_t* status) {
|
||||
@@ -86,7 +86,7 @@ int64_t HAL_GetAccumulatorValue(HAL_AnalogInputHandle analogPortHandle,
|
||||
return 0;
|
||||
}
|
||||
|
||||
return SimAnalogInData[port->channel].GetAccumulatorValue();
|
||||
return SimAnalogInData[port->channel].accumulatorValue;
|
||||
}
|
||||
int64_t HAL_GetAccumulatorCount(HAL_AnalogInputHandle analogPortHandle,
|
||||
int32_t* status) {
|
||||
@@ -96,7 +96,7 @@ int64_t HAL_GetAccumulatorCount(HAL_AnalogInputHandle analogPortHandle,
|
||||
return 0;
|
||||
}
|
||||
|
||||
return SimAnalogInData[port->channel].GetAccumulatorCount();
|
||||
return SimAnalogInData[port->channel].accumulatorCount;
|
||||
}
|
||||
void HAL_GetAccumulatorOutput(HAL_AnalogInputHandle analogPortHandle,
|
||||
int64_t* value, int64_t* count, int32_t* status) {
|
||||
@@ -106,7 +106,7 @@ void HAL_GetAccumulatorOutput(HAL_AnalogInputHandle analogPortHandle,
|
||||
return;
|
||||
}
|
||||
|
||||
*count = SimAnalogInData[port->channel].GetAccumulatorCount();
|
||||
*value = SimAnalogInData[port->channel].GetAccumulatorValue();
|
||||
*count = SimAnalogInData[port->channel].accumulatorCount;
|
||||
*value = SimAnalogInData[port->channel].accumulatorValue;
|
||||
}
|
||||
} // extern "C"
|
||||
|
||||
Reference in New Issue
Block a user