#include "block.h" class WillardSequence : public Block { private: OutPort < bool > * out; Parameter < long > * NPar; long N; public: WillardSequence(const Blockopt & blockopt): Block(blockopt) {} void makeParameters() { NPar = new Parameter < long > (this, "N", 7); } void makeIOPorts() { out = new OutPort < bool > (this, "out", NPar->value()); } void initialize() { N=NPar->value(); if ((3!=N) && (4!=N) && (5!=N) && (7!=N) && (11!=N) && (13!=N)) simend("unknown code length"); } void go() { switch(N) { case 3: out->write(true); out->write(true); out->write(false); break; case 4: out->write(true); out->write(true); out->write(false); out->write(false); break; case 5: out->write(true); out->write(true); out->write(false); out->write(true); out->write(false); break; case 7: out->write(true); out->write(true); out->write(true); out->write(false); out->write(true); out->write(false); out->write(false); break; case 11: out->write(true); out->write(true); out->write(true); out->write(false); out->write(true); out->write(true); out->write(false); out->write(true); out->write(false); out->write(false); out->write(false); break; case 13: out->write(true); out->write(true); out->write(true); out->write(true); out->write(true); out->write(false); out->write(false); out->write(true); out->write(false); out->write(true); out->write(false); out->write(false); out->write(false); break; } } }; PUBLISH(WillardSequence);