DC not ETB refactoring

This commit is contained in:
rusefillc 2020-11-16 20:07:12 -05:00
parent cd7cefb669
commit 014cae25db
4 changed files with 6 additions and 19 deletions

View File

@ -94,22 +94,9 @@ public:
}
};
static DcHardware dcHardware[ETB_COUNT * 2];
static DcHardware dcHardware[ETB_COUNT + DC_PER_STEPPER];
// We needed more H-bridge configs - so the IO configs are split
// across two arrays of settings to preserve config compatibility
const dc_io& getConfigForMotor(size_t index DECLARE_ENGINE_PARAMETER_SUFFIX) {
size_t firstSize = efi::size(engineConfiguration->etbIo);
if (index < firstSize) {
return engineConfiguration->etbIo[index];
}
return engineConfiguration->stepperDcIo[index - firstSize];
}
DcMotor* initDcMotor(size_t index, bool useTwoWires DECLARE_ENGINE_PARAMETER_SUFFIX) {
const auto& io = getConfigForMotor(index PASS_ENGINE_PARAMETER_SUFFIX);
DcMotor* initDcMotor(const dc_io& io, size_t index, bool useTwoWires DECLARE_ENGINE_PARAMETER_SUFFIX) {
auto& hw = dcHardware[index];
hw.start(

View File

@ -13,7 +13,7 @@
class DcMotor;
class Logger;
DcMotor* initDcMotor(size_t index, bool useTwoWires DECLARE_ENGINE_PARAMETER_SUFFIX);
DcMotor* initDcMotor(const dc_io& io, size_t index, bool useTwoWires DECLARE_ENGINE_PARAMETER_SUFFIX);
// Manual control of motors for use by console commands
void setDcMotorFrequency(size_t index, int hz);

View File

@ -841,7 +841,7 @@ void doInitElectronicThrottle(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
bool anyEtbConfigured = false;
for (int i = 0 ; i < ETB_COUNT; i++) {
auto motor = initDcMotor(i, CONFIG(etb_use_two_wires) PASS_ENGINE_PARAMETER_SUFFIX);
auto motor = initDcMotor(engineConfiguration->etbIo[i], i, CONFIG(etb_use_two_wires) PASS_ENGINE_PARAMETER_SUFFIX);
// If this motor is actually set up, init the etb
if (motor)

View File

@ -139,8 +139,8 @@ void initIdleHardware(Logging* sharedLogger DECLARE_ENGINE_PARAMETER_SUFFIX) {
StepperHw* hw;
if (CONFIG(useHbridges)) {
auto motorA = initDcMotor(2, /*useTwoWires*/ true PASS_ENGINE_PARAMETER_SUFFIX);
auto motorB = initDcMotor(3, /*useTwoWires*/ true PASS_ENGINE_PARAMETER_SUFFIX);
auto motorA = initDcMotor(engineConfiguration->stepperDcIo[0], 2, /*useTwoWires*/ true PASS_ENGINE_PARAMETER_SUFFIX);
auto motorB = initDcMotor(engineConfiguration->stepperDcIo[1], 3, /*useTwoWires*/ true PASS_ENGINE_PARAMETER_SUFFIX);
if (motorA && motorB) {
iacHbridgeHw.initialize(