#ifndef _PROCESSOR_H
#define _PROCESSOR_H
#include "LightsString.h"
class LightsString;
class Processor
{
byte _maxbulbs; // maximum bulbs in all strings
private:
LightsString* _strings[MAXSTRINGS]; // collection of lights strings we are controlling
#if defined(PC) || defined(RASPBERRY)
bool _break;
#endif
bool AllDone();
void LoadInstructions();
void Execute();
void ParallelDisplay();
public:
void Construct();
void Run();
void SetAllColour(short colour);
#ifdef INCLUDE_DEBUG_PATTERNS
void SetStringBulb(byte string, byte bulb, short colour, short brightness);
#endif
#if defined(PC) || defined(RASPBERRY)
void Break() {_break = true;};
Processor() { _maxbulbs = 0; };
void AddString(const byte pin, short* program, byte stringlen, short* subroutinestable);
#else
void AddString(const byte pin, prog_int16_t* program, prog_int8_t* stringlen, prog_int16_t* subroutinestable);
#endif
};
#endif // _PROCESSOR_H