mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-25 01:41:43 +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:
@@ -62,7 +62,7 @@ HAL_AnalogOutputHandle HAL_InitializeAnalogOutputPort(HAL_PortHandle portHandle,
|
||||
port->channel = static_cast<uint8_t>(channel);
|
||||
|
||||
// Initialize sim analog input
|
||||
SimAnalogOutData[channel].SetInitialized(true);
|
||||
SimAnalogOutData[channel].initialized = true;
|
||||
return handle;
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ void HAL_FreeAnalogOutputPort(HAL_AnalogOutputHandle analogOutputHandle) {
|
||||
auto port = analogOutputHandles->Get(analogOutputHandle);
|
||||
if (port == nullptr) return;
|
||||
analogOutputHandles->Free(analogOutputHandle);
|
||||
SimAnalogOutData[port->channel].SetInitialized(false);
|
||||
SimAnalogOutData[port->channel].initialized = false;
|
||||
}
|
||||
|
||||
HAL_Bool HAL_CheckAnalogOutputChannel(int32_t channel) {
|
||||
@@ -86,7 +86,7 @@ void HAL_SetAnalogOutput(HAL_AnalogOutputHandle analogOutputHandle,
|
||||
return;
|
||||
}
|
||||
|
||||
SimAnalogOutData[port->channel].SetVoltage(voltage);
|
||||
SimAnalogOutData[port->channel].voltage = voltage;
|
||||
}
|
||||
|
||||
double HAL_GetAnalogOutput(HAL_AnalogOutputHandle analogOutputHandle,
|
||||
@@ -97,6 +97,6 @@ double HAL_GetAnalogOutput(HAL_AnalogOutputHandle analogOutputHandle,
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
return SimAnalogOutData[port->channel].GetVoltage();
|
||||
return SimAnalogOutData[port->channel].voltage;
|
||||
}
|
||||
} // extern "C"
|
||||
|
||||
Reference in New Issue
Block a user