00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "FadcReadoutFormat/FadcData.h"
00010
00011 #include "DaqReadoutFormat/ByteBuffer.h"
00012 #include "FadcReadoutFormat/FadcTraits.h"
00013
00014 using DybDaq::FadcData;
00015
00016 FadcData::FadcData(const unsigned int channelId,
00017 const unsigned int highDataByte,
00018 const unsigned int middleDataByte,
00019 const unsigned int lowDataByte,
00020 const FadcTraits& traits) :
00021 FadcBuffer(new char[traits.dataSize() * kBytesInInt],
00022 traits) {
00023 traits.initializeData(buffer());
00024 setChannelId(channelId);
00025 setHighDataByte(highDataByte);
00026 setMiddleDataByte(middleDataByte);
00027 setLowDataByte(lowDataByte);
00028 }
00029
00030 FadcData::FadcData(const ByteBuffer& byteBuffer,
00031 const FadcTraits& traits) :
00032 FadcBuffer(byteBuffer,
00033 traits) {
00034 byteBuffer.position(byteBuffer.position() + (fadcTraits().dataSize() * kBytesInInt));
00035 }
00036
00037 FadcData::~FadcData() {
00038 }
00039
00040 unsigned int FadcData::formatComponent() const {
00041 return FadcTraits::kData;
00042 }
00043
00044 unsigned int FadcData::channelId() const {
00045 return readUnsignedInt(FadcTraits::kChannelId);
00046 }
00047
00048 unsigned char FadcData::highDataByte() const {
00049 return readUnsignedChar(FadcTraits::kHighDataByte);
00050 }
00051
00052 unsigned char FadcData::middleDataByte() const {
00053 return readUnsignedChar(FadcTraits::kMiddleDataByte);
00054 }
00055
00056 unsigned char FadcData::lowDataByte() const {
00057 return readUnsignedChar(FadcTraits::kLowDataByte);
00058 }
00059
00060 unsigned int FadcData::bufferSize() const {
00061 return fadcTraits().dataSize();
00062 }
00063
00064 void FadcData::setChannelId(const unsigned int channelId) {
00065 writeField(channelId,
00066 FadcTraits::kChannelId);
00067 }
00068
00069 void FadcData::setHighDataByte(const unsigned int dataByte) {
00070 writeField(dataByte,
00071 FadcTraits::kHighDataByte);
00072 }
00073
00074 void FadcData::setMiddleDataByte(const unsigned int dataByte) {
00075 writeField(dataByte,
00076 FadcTraits::kMiddleDataByte);
00077 }
00078
00079 void FadcData::setLowDataByte(const unsigned int dataByte) {
00080 writeField(dataByte,
00081 FadcTraits::kLowDataByte);
00082 }
00083