Firstly, the concept of what "drivers" are is a bit vague. But I think it can be solidified be renaming them "iodrivers" or something similar, as a Machine exposes a tuple through getIoDrivers(), and each member of the tuple is a subclass of IoDriver.
So, our "drivers" are:
Fan
A4988
TempControl
I think we can group the thermistor in there, since it handles IO, even though it's a data member of TempControl. I also think we can leave IOPin in there for now, because it's designed to be used exclusively by drivers (although it is also referenced by the Machine...)
So, nothing else besides those should reside in src/drivers.
I think "src/drivers/auto", "drivers/generic", and "drivers/rpi" should be moved to "src/platforms/", because they represent generic overrides for each platform - some of the overrides are IO based (PrimitiveIoPin), some are optimization-based (Clocks & such).
AxisStepper and its implementations should be moved into the "motion" folder, as they represent motion.
I'm not sure if CoordMap & implementations belong in their own folder or in the motion folder. I would put them in the motion folder for now, especially considering that they might later interact with the AxisSteppers.
Firstly, the concept of what "drivers" are is a bit vague. But I think it can be solidified be renaming them "iodrivers" or something similar, as a Machine exposes a tuple through
getIoDrivers()
, and each member of the tuple is a subclass ofIoDriver
.So, our "drivers" are:
I think we can group the thermistor in there, since it handles IO, even though it's a data member of TempControl. I also think we can leave IOPin in there for now, because it's designed to be used exclusively by drivers (although it is also referenced by the Machine...)
So, nothing else besides those should reside in src/drivers.
I think "src/drivers/auto", "drivers/generic", and "drivers/rpi" should be moved to "src/platforms/", because they represent generic overrides for each platform - some of the overrides are IO based (PrimitiveIoPin), some are optimization-based (Clocks & such).
AxisStepper and its implementations should be moved into the "motion" folder, as they represent motion.
I'm not sure if CoordMap & implementations belong in their own folder or in the motion folder. I would put them in the motion folder for now, especially considering that they might later interact with the AxisSteppers.