Jedná se o domácí bastl kód - žádné auto-motive nebo nic produkčního.
Tvořím na raspberry pico ovládání žaluzií, ovládání podlahovky a čtení teplot atd.
Cílem bylo vytvořit něco jako možnost potomků si zapnout periodické volání nějakých metod - nic víc.
Keby si niekde (github?) dal kod, dalo by sa o tom lepsie diskutovat.
Suhlasim s snugar_i ze toto nevyzera na pripad pre dedicnost. Skus urobit jednu triedu,
ktora poskytuje funkciu volania callbackov, mozno ako singleton, a tie jednotlive casti (ovladanie zaluzii)
si u nej budu registrovat co a kedy potrebuju volat (cez lambdu alebo std::function), pripadne v ktorom threade.
Pouziva sa pri tom finta, ze registrovanie callbacku vracia nieco (ID, pointer) pomocou ktoreho ten callback vies zrusit.
Uz som par rokov nerobil v C++ tak ti nenapisem detaily, skor myslienku.
struct Callback {
int id;
int frequency;
std::function<> callback;
}
class Callbacks {
public:
int registerCallback(int frequency, std::function<> callback) {
int id = findFreeId();
callbacks.push(new Callback(id, frequency, callback);
};
void unregisterCallback(int id) {
// remove Callback with id from callbacks
}
private:
std::vector<Callback> callbacks;
int findFreeId() const {
// find some unused id
}
// zostava napisat ako sa spustaju callbacky...
}