00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "FadcReadoutFormat/FadcTraits_v1_2.h"
00011
00012 #include "DaqReadoutFormat/BitsDefinition.h"
00013
00014 using DybDaq::DaqTraits;
00015 using DybDaq::FadcTraits_v1_2;
00016 using std::string;
00017
00018 static const unsigned int m_indices[] = {
00019 0U,
00020 0U,
00021 0U,
00022 0U,
00023 0U,
00024 0U,
00025 0U,
00026 0U,
00027 0U,
00028 0U,
00029 0U,
00030 0U,
00031 0U,
00032 0U
00033 };
00034
00035 static const unsigned int m_shifts[] = {
00036 0U,
00037 0U,
00038 0U,
00039 16U,
00040 15U,
00041 24U,
00042 16U,
00043 8U,
00044 0U,
00045 16U,
00046 0U,
00047 28U,
00048 29U,
00049 28U
00050 };
00051
00052 static const unsigned int m_masks[] = {
00053 0x000000ffU,
00054 0x00000000U,
00055 0x00000000U,
00056 0x0000000fU,
00057 0x00000001U,
00058 0x0000000fU,
00059 0x000000ffU,
00060 0x000000ffU,
00061 0x000000ffU,
00062 0x000000ffU,
00063 0x0000ffffU,
00064 0x0000000fU,
00065 0x00000007U,
00066 0x0000000fU
00067 };
00068
00069 static const std::string m_description[] = {
00070 "FADC Trigger Number",
00071 "FADC Major Format Version",
00072 "FADC Minor Format Version",
00073 "FADC Trigger Type",
00074 "FADC Has No Data",
00075 "FADC Channel Id",
00076 "FADC High Data Byte",
00077 "FADC Middle Data Byte",
00078 "FADC Low Data Byte",
00079 "FADC Trigger Number",
00080 "FADC Data Length",
00081 "FADC Head Marker (0x4)",
00082 "FADC ADC Data Marker (0x3)",
00083 "FADC Foot Marker (0xa)"
00084 };
00085
00086 static const unsigned int kFdcHeadElements[] = {
00087 11U,
00088 3U,
00089 4U,
00090 0U
00091 };
00092
00093 static const unsigned int kFdcDataElements[] = {
00094 12U,
00095 5U,
00096 6U,
00097 7U,
00098 8U
00099 };
00100
00101 static const unsigned int kFdcFootElements[] = {
00102 13U,
00103 9U,
00104 10U
00105 };
00106
00107 static const unsigned int* m_componentFields[] = {
00108 kFdcHeadElements,
00109 kFdcDataElements,
00110 kFdcFootElements
00111 };
00112
00113 static const unsigned int m_componentFieldsEnd[] = {
00114 4U,
00115 5U,
00116 3U
00117 };
00118
00119 static DaqTraits::Definitions* m_definitions[] = {
00120 0,
00121 0,
00122 0
00123 };
00124
00125 static const char* m_triggerTypes[] = {
00126 "self",
00127 "external",
00128 };
00129
00130 const char* FadcTraits_v1_2::key() {
00131 return "FADC Format 1.2";
00132 }
00133
00134 FadcTraits_v1_2::FadcTraits_v1_2() {
00135 }
00136
00137 FadcTraits_v1_2::~FadcTraits_v1_2() {
00138 }
00139
00140 unsigned int FadcTraits_v1_2::majorVersion() const {
00141 return 1U;
00142 }
00143
00144 unsigned int FadcTraits_v1_2::minorVersion() const {
00145 return 2U;
00146 }
00147
00148 const string FadcTraits_v1_2::versionString() const {
00149 return key();
00150 }
00151
00152 unsigned int FadcTraits_v1_2::headSize() const {
00153 return 1U;
00154 }
00155
00156 unsigned int FadcTraits_v1_2::dataSize() const {
00157 return 1U;
00158 }
00159
00160 unsigned int FadcTraits_v1_2::footSize() const {
00161 return 1U;
00162 }
00163
00164 void FadcTraits_v1_2::initializeHead(char* buffer) const {
00165 *((unsigned int*)buffer) = 0x40000000U;
00166 }
00167
00168 void FadcTraits_v1_2::initializeData(char* buffer) const {
00169 *((unsigned int*)buffer) = 0x60000000U;
00170 }
00171
00172 void FadcTraits_v1_2::initializeFoot(char* buffer) const {
00173 *((unsigned int*)buffer) = 0xa0000000U;
00174 }
00175
00176 unsigned int FadcTraits_v1_2::markersEnd() const {
00177 return 0U;
00178 }
00179
00180 const unsigned int* FadcTraits_v1_2::markers() const {
00181 return 0;
00182 }
00183
00184 unsigned int FadcTraits_v1_2::fieldsEnd() const {
00185 return kFootMarker + 1;
00186 }
00187
00188 const unsigned int* FadcTraits_v1_2::indices() const {
00189 return m_indices;
00190 }
00191
00192 const unsigned int* FadcTraits_v1_2::shifts() const {
00193 return m_shifts;
00194 }
00195
00196 const unsigned int* FadcTraits_v1_2::masks() const {
00197 return m_masks;
00198 }
00199
00200 const std::string* FadcTraits_v1_2::descriptions() const {
00201 return m_description;
00202 }
00203
00204 DaqTraits::Definitions* FadcTraits_v1_2::definitions(unsigned int component) const {
00205 return m_definitions[component];
00206 }
00207
00208 void FadcTraits_v1_2::setDefinitions(DaqTraits::Definitions* definitions,
00209 unsigned int component) {
00210 m_definitions[component] = definitions;
00211 }
00212
00213 const unsigned int* FadcTraits_v1_2::componentFields(unsigned int component) const {
00214 return m_componentFields[component];
00215 }
00216
00217 const unsigned int FadcTraits_v1_2::componentFieldsEnd(unsigned int component) const {
00218 return m_componentFieldsEnd[component];
00219 }
00220
00221 unsigned int FadcTraits_v1_2::triggerTypeEnd() const {
00222 return 2U;
00223 }
00224
00225 const char** FadcTraits_v1_2::triggerTypeStrings() const {
00226 return m_triggerTypes;
00227 }