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:
Peter Johnson
2018-09-03 16:08:07 -07:00
committed by GitHub
parent 67b1c85315
commit c0ff6198b3
65 changed files with 1305 additions and 7639 deletions

View File

@@ -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"