00001 #ifndef _ots_PurdueFirmwareCore_h_
00002 #define _ots_PurdueFirmwareCore_h_
00003
00004 #include "otsdaq-components/DAQHardware/FirmwareSequence.h"
00005 #include "otsdaq-components/DAQHardware/FrontEndFirmwareBase.h"
00006
00007 #include <string>
00008 #include <cstdint>
00009
00010 namespace ots
00011 {
00012 class PurdueFirmwareCore : public FrontEndFirmwareBase
00013 {
00014
00015 public:
00016 PurdueFirmwareCore (unsigned int version);
00017 virtual ~PurdueFirmwareCore (void);
00018 virtual void init (void);
00019
00020
00021 std::string read (char* address);
00022 std::string write (char* address, char* data);
00023
00024 virtual void write (std::string& buffer, uint32_t address, uint32_t data, bool clearBuffer=true);
00025 virtual void waitSet (std::string& buffer, uint32_t address, uint32_t data, uint32_t timeout = 255, bool clearBuffer=true);
00026 virtual void waitClear (std::string& buffer, uint32_t address, uint32_t data, uint32_t timeout = 255, bool clearBuffer=true);
00027 virtual void read (std::string& buffer, uint32_t address, bool clearBuffer=true);
00028
00029 virtual void setDataDestination (std::string& buffer, const std::string& ip, const uint16_t port, bool clearBuffer=true);
00030
00031
00032
00033
00034
00035
00036 using FrontEndFirmwareBase::write;
00037 using FrontEndFirmwareBase::read;
00038
00039 virtual unsigned int getNumberOfBufferedCommands (std::string& buffer);
00040 virtual std::string compareSendAndReceive (const std::string& sentBuffer, std::string& acknowledgment);
00041 virtual uint32_t createRegisterFromValue (std::string& readBuffer, std::string& receivedValue);
00042 protected:
00043
00044 };
00045
00046 }
00047
00048 #endif