Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
user:kluong:refactoring_the_firmware [2020/10/06 15:28] kluong [Design notes] |
user:kluong:refactoring_the_firmware [2021/09/19 21:59] (current) |
||
---|---|---|---|
Line 24: | Line 24: | ||
Definitions | Definitions | ||
- | <code> | + | <code cpp> |
class AbstractBoard { | class AbstractBoard { | ||
public: | public: | ||
virtual void sample(); | virtual void sample(); | ||
virtual void transmit(); | virtual void transmit(); | ||
- | } | + | }; |
class AppleBoard : public AbstractBoard{ | class AppleBoard : public AbstractBoard{ | ||
Line 35: | Line 35: | ||
void sample(); | void sample(); | ||
void transmit(); | void transmit(); | ||
- | } | + | }; |
</code> | </code> | ||
The main: | The main: | ||
- | <code> | + | <code cpp> |
loop(){ | loop(){ | ||
Line 52: | Line 52: | ||
</code> | </code> | ||
+ | |||
+ | |||
+ | ====== Implementation notes ====== | ||
+ | |||
+ | Normally, in professional software engineering environments - work is planned so that it is non-disruptive to the current production setup. We'll try to do the same here to not leave the current code in a half-working state. This is especially important if work takes longer than expected, and there needs to be a transition for the next semester/year. | ||
+ | |||
+ | Generally, here's how we can approach this: | ||
+ | |||
+ | - Review the current code and create the abstract base class | ||
+ | - Implement a class for one board (apple?) that inherits from the abstract base class (essentially implementing it) | ||
+ | - Test it | ||
+ | - Finish migrating the other boards | ||
+ | |||
+ | Two notes: | ||
+ | |||
+ | * Tasks should be committed and merged as soon as they're complete | ||
+ | * At no period of time should the original firmware be unavailable (in case some teams need to deploy boxes) | ||
+ | |||
+ | |||
+ |