/******************************************************************************* * Gen.h TMS State Table Generator * T.Barnaby, BEAM Ltd, 2007-03-15 ******************************************************************************* */ #ifndef Gen_h #define Gen_h 1 #include <BError.h> #include <BFile.h> #include <BNameValue.h> #include <SigGen.h> #include <TmsLib.h> typedef BNameValue<BString> NameValue; class NameValueList : public BNameValueList<BString> { public: BString getValue(BString name); void setValue(BString name, BString value); }; /// State/Phase table generation class class Gen { public: Gen(BString name); virtual ~Gen(); virtual BString name(); ///< Gets the CycleType name virtual BString info(); ///< Returns information on the cycleType virtual BError init(NameValueList& params); ///< Initialises the generation with a set of parameters virtual void close(); ///< Closes the generator virtual BError run(); ///< Runs the generator virtual BError output(); ///< Outputs the results protected: virtual void outputPhaseDelay(); ///< Outputs the phase delay section virtual void outputState(int num, Tms::TmsState state, int lo1Harmonic, int bunchSet1, int lo2Harmonic, int bunchSet2, int capture); ///< Generates the main state/phase tables BString oname; ///< The CycleType name BString oinfo; ///< Information on this cycle type NameValueList oparams; ///< The list of name/value parameters NameValueList ooutput; ///< The output parameter list BFile ofile; ///< The file to output results to BString ofileName; ///< The output file name double osampleRate; ///< The sample rate double ofref; ///< The FREF frequency int ophaseTableFile; ///< Flag to generate a phase table ASCII file int ouseMsbFref; ///< Flag to use the PhaseTable address MSB as the FREF local reference int opllInitialFrequencyDelay; ///< The PLL initial frequency load delay in ms }; class GenBeam1 : public Gen { public: GenBeam1(); BError run(); }; class GenBeam2 : public Gen { public: GenBeam2(); BError run(); }; class GenBeam3 : public Gen { public: GenBeam3(); BError run(); }; class GenTest1 : public Gen { public: GenTest1(); BError run(); }; BList<Gen*>& genInit(); #endif