class LightController { protected: __SIZE_TYPE__ bjtCount; const int *bjtPins; int *bjtState; private: void setAbsoluteState(const char data[], int index); void parseRelativeState(const char data[], int index, int steps); int clampState(int stateValue); void commitState(int index); void commitPinState(int index); void initializeStateDefaultValues(); void restoreState(); void initializeState(); void initializePins(); public: LightController(const int bjtPins[], __SIZE_TYPE__ bjtCount); void updateState(const char data[], int steps); int getBjtCount(); const int *getBjtPins(); int *getBjtState(); };