From 8abc32e7f1a7e6978ffc7cd7c3cd350aece19a22 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Tue, 3 Mar 2020 16:00:01 +0100 Subject: [PATCH] moench: default pattern file in server, settings, tests --- slsDetectorGui/forms/form_tab_settings.ui | 40 ++ slsDetectorGui/include/qTabSettings.h | 8 + slsDetectorGui/src/qTabSettings.cpp | 15 +- .../moenchDetectorServer/CMakeLists.txt | 3 +- .../moenchDetectorServer/DefaultPattern.txt | 414 ++++++++++++++++++ .../moenchDetectorServer/Makefile | 2 +- .../bin/moenchDetectorServer_developer | Bin 176860 -> 186624 bytes .../slsDetectorFunctionList.c | 100 ++++- .../slsDetectorServer_defs.h | 13 + .../include/readDefaultPattern.h | 22 + .../include/slsDetectorFunctionList.h | 5 +- .../src/readDefaultPattern.c | 414 ++++++++++++++++++ .../src/slsDetectorServer_funcs.c | 13 +- slsDetectorSoftware/include/Detector.h | 2 + slsDetectorSoftware/src/CmdProxy.h | 12 +- slsDetectorSoftware/src/slsDetector.cpp | 5 +- slsDetectorSoftware/src/slsDetector.h | 2 + slsDetectorSoftware/tests/CMakeLists.txt | 1 + .../tests/test-CmdProxy-moench.cpp | 103 +++++ slsSupportLib/include/ToString.h | 32 ++ slsSupportLib/include/sls_detector_defs.h | 36 +- slsSupportLib/include/versionAPI.h | 2 +- 22 files changed, 1213 insertions(+), 31 deletions(-) create mode 100755 slsDetectorServers/moenchDetectorServer/DefaultPattern.txt create mode 100755 slsDetectorServers/slsDetectorServer/include/readDefaultPattern.h create mode 100755 slsDetectorServers/slsDetectorServer/src/readDefaultPattern.c create mode 100644 slsDetectorSoftware/tests/test-CmdProxy-moench.cpp diff --git a/slsDetectorGui/forms/form_tab_settings.ui b/slsDetectorGui/forms/form_tab_settings.ui index b17a600ee..01d951982 100755 --- a/slsDetectorGui/forms/form_tab_settings.ui +++ b/slsDetectorGui/forms/form_tab_settings.ui @@ -214,6 +214,46 @@ Very Low Gain + + + G1_HG + + + + + G1_LG + + + + + G2_HC_HG + + + + + G2_HC_LG + + + + + G2_LC_HG + + + + + G2_LC_LG + + + + + G4_HG + + + + + G4_LG + + Undefined diff --git a/slsDetectorGui/include/qTabSettings.h b/slsDetectorGui/include/qTabSettings.h index a8076eda0..1b29ebbae 100755 --- a/slsDetectorGui/include/qTabSettings.h +++ b/slsDetectorGui/include/qTabSettings.h @@ -41,6 +41,14 @@ private: FORCESWITCHG1, FORCESWITCHG2, VERLOWGAIN, + G1_HIGHGAIN, + G1_LOWGAIN, + G2_HIGHCAP_HIGHGAIN, + G2_HIGHCAP_LOWGAIN, + G2_LOWCAP_HIGHGAIN, + G2_LOWCAP_LOWGAIN, + G4_HIGHGAIN, + G4_LOWGAIN, UNDEFINED, UNINITIALIZED, NUMSETTINGS diff --git a/slsDetectorGui/src/qTabSettings.cpp b/slsDetectorGui/src/qTabSettings.cpp index 10489db8e..59172de8f 100755 --- a/slsDetectorGui/src/qTabSettings.cpp +++ b/slsDetectorGui/src/qTabSettings.cpp @@ -20,7 +20,6 @@ void qTabSettings::SetupWidgetWindow() { // enabling according to det type switch(det->getDetectorType().squash()) { - case slsDetectorDefs::MOENCH: case slsDetectorDefs::MYTHEN3: lblSettings->setEnabled(false); comboSettings->setEnabled(false); @@ -83,11 +82,21 @@ void qTabSettings::SetupDetectorSettings() { item[(int)FORCESWITCHG1]->setEnabled(true); item[(int)FORCESWITCHG2]->setEnabled(true); break; - case slsDetectorDefs::GOTTHARD2: + case slsDetectorDefs::GOTTHARD2: item[(int)DYNAMICGAIN]->setEnabled(true); item[(int)FIXGAIN1]->setEnabled(true); item[(int)FIXGAIN2]->setEnabled(true); - break; + break; + case slsDetectorDefs::MOENCH: + item[(int)G1_HIGHGAIN]->setEnabled(true); + item[(int)G1_LOWGAIN]->setEnabled(true); + item[(int)G2_HIGHCAP_HIGHGAIN]->setEnabled(true); + item[(int)G2_HIGHCAP_LOWGAIN]->setEnabled(true); + item[(int)G2_LOWCAP_HIGHGAIN]->setEnabled(true); + item[(int)G2_LOWCAP_LOWGAIN]->setEnabled(true); + item[(int)G4_HIGHGAIN]->setEnabled(true); + item[(int)G4_LOWGAIN]->setEnabled(true); + break; default: FILE_LOG(logDEBUG) << "Unknown detector type. Exiting GUI."; qDefs::Message(qDefs::CRITICAL, diff --git a/slsDetectorServers/moenchDetectorServer/CMakeLists.txt b/slsDetectorServers/moenchDetectorServer/CMakeLists.txt index 2952e41ac..f7a99301c 100644 --- a/slsDetectorServers/moenchDetectorServer/CMakeLists.txt +++ b/slsDetectorServers/moenchDetectorServer/CMakeLists.txt @@ -12,7 +12,8 @@ add_executable(moenchDetectorServer_virtual ../slsDetectorServer/src/ALTERA_PLL.c ../slsDetectorServer/src/LTC2620.c ../slsDetectorServer/src/MAX1932.c - ../slsDetectorServer/src/programFpgaBlackfin.c + ../slsDetectorServer/src/programFpgaBlackfin.c + ../slsDetectorServer/src/readDefaultPattern.c ) include_directories( diff --git a/slsDetectorServers/moenchDetectorServer/DefaultPattern.txt b/slsDetectorServers/moenchDetectorServer/DefaultPattern.txt new file mode 100755 index 000000000..5cf148cc8 --- /dev/null +++ b/slsDetectorServers/moenchDetectorServer/DefaultPattern.txt @@ -0,0 +1,414 @@ +patword 0x0000 0x0000000000000000 +patword 0x0001 0x0000000000000000 +patword 0x0002 0x0008000900080000 +patword 0x0003 0x0008000900080000 +patword 0x0004 0x0008000900080000 +patword 0x0005 0x0008000900080000 +patword 0x0006 0x0008000900080000 +patword 0x0007 0x0008000900080000 +patword 0x0008 0x0008000900080000 +patword 0x0009 0x0008000900080000 +patword 0x000a 0x0008000900080000 +patword 0x000b 0x0008000900080000 +patword 0x000c 0x0008000900080000 +patword 0x000d 0x0008000900080000 +patword 0x000e 0x0008000900080000 +patword 0x000f 0x0008000900080000 +patword 0x0010 0x0008000900080000 +patword 0x0011 0x0008000900080000 +patword 0x0012 0x0008000900080000 +patword 0x0013 0x0008000900080000 +patword 0x0014 0x0008000900080000 +patword 0x0015 0x0008000900080000 +patword 0x0016 0x0008400900080020 +patword 0x0017 0x0008400900080020 +patword 0x0018 0x0008599f0418503a +patword 0x0019 0x0008599f0418503a +patword 0x001a 0x0108599f0418503a +patword 0x001b 0x0108599f0418503a +patword 0x001c 0x0108599f0418503a +patword 0x001d 0x0108599f0418503a +patword 0x001e 0x0108599f0418503a +patword 0x001f 0x0108599f0418503a +patword 0x0020 0x0108599f0418503a +patword 0x0021 0x0108599f0418503a +patword 0x0022 0x0108599f0418503a +patword 0x0023 0x0108599f0418503a +patword 0x0024 0x0108599f0418503a +patword 0x0025 0x0108599f0418503a +patword 0x0026 0x0108599f0418503a +patword 0x0027 0x0108599f0418503a +patword 0x0028 0x0108599f0418503a +patword 0x0029 0x0108599f0418503a +patword 0x002a 0x0108599f0418503a +patword 0x002b 0x0108599f0418503a +patword 0x002c 0x0108599f0418503a +patword 0x002d 0x0108599f0418503a +patword 0x002e 0x0108599f0418503a +patword 0x002f 0x0108599f0418503a +patword 0x0030 0x0108599f0418503a +patword 0x0031 0x0108599f0418503a +patword 0x0032 0x0108599f0418503a +patword 0x0033 0x0108599f0418503a +patword 0x0034 0x0108599f0418503a +patword 0x0035 0x0108599f0418503a +patword 0x0036 0x0108599f0418503a +patword 0x0037 0x0108599f0418503a +patword 0x0038 0x0108599f0418503a +patword 0x0039 0x0108599f0418503a +patword 0x003a 0x0108599f0418503a +patword 0x003b 0x0108599f0418503a +patword 0x003c 0x0108599f0418503a +patword 0x003d 0x0108599f0418503a +patword 0x003e 0x0108599f0418503a +patword 0x003f 0x0108599f0418503a +patword 0x0040 0x0108599f0418503a +patword 0x0041 0x0108599f0418503a +patword 0x0042 0x0108599f0418503a +patword 0x0043 0x0108599f0418503a +patword 0x0044 0x0108599f0418503a +patword 0x0045 0x0108599f0418503a +patword 0x0046 0x0108599f0418503a +patword 0x0047 0x0108599f0418503a +patword 0x0048 0x0108599f0418503a +patword 0x0049 0x0108599f0418503a +patword 0x004a 0x0108599f0418503a +patword 0x004b 0x0108599f0418503a +patword 0x004c 0x0108599f0418503a +patword 0x004d 0x0108599f0418503a +patword 0x004e 0x0108599f0418503a +patword 0x004f 0x0108599f0418503a +patword 0x0050 0x0108599f0418503a +patword 0x0051 0x0108599f0418503a +patword 0x0052 0x0108599f0418503a +patword 0x0053 0x0108599f0418503a +patword 0x0054 0x0108599f0418503a +patword 0x0055 0x0108599f0418503a +patword 0x0056 0x0108599f0418503a +patword 0x0057 0x0108599f0418503a +patword 0x0058 0x0108599f0418503a +patword 0x0059 0x0108599f0418503a +patword 0x005a 0x0108599f0418503a +patword 0x005b 0x0108599f0418503a +patword 0x005c 0x0108599f0418503a +patword 0x005d 0x0108599f0418503a +patword 0x005e 0x0108599f0418503a +patword 0x005f 0x0108599f0418503a +patword 0x0060 0x0108599f0418503a +patword 0x0061 0x0108599f0418503a +patword 0x0062 0x0108599f0418503a +patword 0x0063 0x0108599f0418503a +patword 0x0064 0x0108599f0418503a +patword 0x0065 0x0108599f0418503a +patword 0x0066 0x0108599f0418503a +patword 0x0067 0x0108599f0418503a +patword 0x0068 0x0108599f0418503a +patword 0x0069 0x0108599f0418503a +patword 0x006a 0x0108599f0418503a +patword 0x006b 0x0108599f0418503a +patword 0x006c 0x0108599f0418503a +patword 0x006d 0x0108599f0418503a +patword 0x006e 0x0108599f0418503a +patword 0x006f 0x0108599f0418503a +patword 0x0070 0x0108599f0418503a +patword 0x0071 0x0108599f0418503a +patword 0x0072 0x0108599f0418503a +patword 0x0073 0x0108599f0418503a +patword 0x0074 0x0108599f0418503a +patword 0x0075 0x0108599f0418503a +patword 0x0076 0x0108599f0418503a +patword 0x0077 0x0108599f0418503a +patword 0x0078 0x0108599f0418503a +patword 0x0079 0x0108599f0418503a +patword 0x007a 0x0108599f0418503a +patword 0x007b 0x0108599f0418503a +patword 0x007c 0x0108599f0418503a +patword 0x007d 0x0108599f0418503a +patword 0x007e 0x010859960418503a +patword 0x007f 0x010859960418503a +patword 0x0080 0x010859960418503a +patword 0x0081 0x010859960418503a +patword 0x0082 0x010859960418503a +patword 0x0083 0x010859960418503a +patword 0x0084 0x010859960418503a +patword 0x0085 0x010859960418503a +patword 0x0086 0x010859960418503a +patword 0x0087 0x010859960418503a +patword 0x0088 0x010859960418503a +patword 0x0089 0x010859960418503a +patword 0x008a 0x010859960418503a +patword 0x008b 0x010859960418503a +patword 0x008c 0x010859960418503a +patword 0x008d 0x010859960418503a +patword 0x008e 0x010859960418503a +patword 0x008f 0x010859960418503a +patword 0x0090 0x010859960418503a +patword 0x0091 0x010859960418503a +patword 0x0092 0x010819960418501a +patword 0x0093 0x010819960418501a +patword 0x0094 0x010819960418501a +patword 0x0095 0x010819960418501a +patword 0x0096 0x030819960418501a +patword 0x0097 0x030819960418501a +patword 0x0098 0x030819960418501a +patword 0x0099 0x030819960418501a +patword 0x009a 0x030819960418501a +patword 0x009b 0x030819960418501a +patword 0x009c 0x030819960418501a +patword 0x009d 0x030819960418501a +patword 0x009e 0x030819960418501a +patword 0x009f 0x030819960418501a +patword 0x00a0 0x030819960418501a +patword 0x00a1 0x030819960418501a +patword 0x00a2 0x030819960418501a +patword 0x00a3 0x030819960418501a +patword 0x00a4 0x030819960418501a +patword 0x00a5 0x030819960418501a +patword 0x00a6 0x030819960418501a +patword 0x00a7 0x030819960418501a +patword 0x00a8 0x030819960418501a +patword 0x00a9 0x030819960418501a +patword 0x00aa 0x030819960418501a +patword 0x00ab 0x030819960418501a +patword 0x00ac 0x030819960008501a +patword 0x00ad 0x030819960008501a +patword 0x00ae 0x030819960008501a +patword 0x00af 0x030819960008501a +patword 0x00b0 0x030819960008501a +patword 0x00b1 0x030819960008501a +patword 0x00b2 0x030819960008501a +patword 0x00b3 0x030819960008501a +patword 0x00b4 0x030819960008501a +patword 0x00b5 0x030819960008501a +patword 0x00b6 0x030819960008501a +patword 0x00b7 0x030819960008501a +patword 0x00b8 0x030819960008501a +patword 0x00b9 0x030819960008501a +patword 0x00ba 0x030819960008501a +patword 0x00bb 0x030819960008501a +patword 0x00bc 0x030819960008501a +patword 0x00bd 0x030819960008501a +patword 0x00be 0x030819960008501a +patword 0x00bf 0x030819960008501a +patword 0x00c0 0x0308199f0008501a +patword 0x00c1 0x0308199f0008501a +patword 0x00c2 0x0308199f0008501a +patword 0x00c3 0x0308199f0008501a +patword 0x00c4 0x0308199f0008501a +patword 0x00c5 0x0308199f0008501a +patword 0x00c6 0x0308199f0008501a +patword 0x00c7 0x0308199f0008501a +patword 0x00c8 0x0308199f0008501a +patword 0x00c9 0x0308199f0008501a +patword 0x00ca 0x0308199f0008501a +patword 0x00cb 0x0308199f0008501a +patword 0x00cc 0x0308199f0008501a +patword 0x00cd 0x0308199f0008501a +patword 0x00ce 0x0308199f0008501a +patword 0x00cf 0x0308199f0008501a +patword 0x00d0 0x0308199f0008501a +patword 0x00d1 0x0308199f0008501a +patword 0x00d2 0x0308199f0008501a +patword 0x00d3 0x0308199f0008501a +patword 0x00d4 0x0308599f0008503a +patword 0x00d5 0x0308599f0008503a +patword 0x00d6 0x030c599f000850ba +patword 0x00d7 0x030c599f000850ba +patword 0x00d8 0x030c599f000850ba +patword 0x00d9 0x030c599f000850ba +patword 0x00da 0x030c599f000850ba +patword 0x00db 0x030c599f000850ba +patword 0x00dc 0x030c599f000850ba +patword 0x00dd 0x030c599f000850ba +patword 0x00de 0x030c599f000850ba +patword 0x00df 0x030c599f000850ba +patword 0x00e0 0x030c599f000850ba +patword 0x00e1 0x030c599f000850ba +patword 0x00e2 0x030c599f000850ba +patword 0x00e3 0x030c599f000850ba +patword 0x00e4 0x030c599f000850ba +patword 0x00e5 0x030c599f000850ba +patword 0x00e6 0x030c599f000850ba +patword 0x00e7 0x030c599f000850ba +patword 0x00e8 0x030c599f000850ba +patword 0x00e9 0x030c599f000850ba +patword 0x00ea 0x030c799f010858ba +patword 0x00eb 0x030c799f010858ba +patword 0x00ec 0x030c599f000850ba +patword 0x00ed 0x030c599f000850ba +patword 0x00ee 0x030c599f000850ba +patword 0x00ef 0x030c599f000850ba +patword 0x00f0 0x030c599f000850ba +patword 0x00f1 0x030c599f000850ba +patword 0x00f2 0x030c599f000850ba +patword 0x00f3 0x030c599f000850ba +patword 0x00f4 0x030c599f000850ba +patword 0x00f5 0x030c599f000850ba +patword 0x00f6 0x030c599f000850ba +patword 0x00f7 0x030c599f000850ba +patword 0x00f8 0x030c599f000850ba +patword 0x00f9 0x030c599f000850ba +patword 0x00fa 0x030c599f000850ba +patword 0x00fb 0x030c599f000850ba +patword 0x00fc 0x030c599f000850ba +patword 0x00fd 0x030c599f000850ba +patword 0x00fe 0x030c599f000850ba +patword 0x00ff 0x030c599f000850ba +patword 0x0100 0x030c599f000850ba +patword 0x0101 0x030c599f000850ba +patword 0x0102 0x030c599f400850ba +patword 0x0103 0x030c599f400850ba +patword 0x0104 0x030c599f600850ba +patword 0x0105 0x030c599f400850ba +patword 0x0106 0x030c599f400850ba +patword 0x0107 0x030c599f400850ba +patword 0x0108 0x870c599f682e50ba +patword 0x0109 0x870c599f482850ba +patword 0x010a 0x870c599f000e50ba +patword 0x010b 0x870c599f000850ba +patword 0x010c 0x870c599f000e50ba +patword 0x010d 0x870c599f000850ba +patword 0x010e 0x870c599f000e50ba +patword 0x010f 0x870c599f000850ba +patword 0x0110 0x870c599f000e50ba +patword 0x0111 0x870c599f000850ba +patword 0x0112 0x870c599f000e50ba +patword 0x0113 0x870c599f000850ba +patword 0x0114 0x870c599f000e50ba +patword 0x0115 0x870c599f000850ba +patword 0x0116 0x870c599f000e50ba +patword 0x0117 0x870c599f000850ba +patword 0x0118 0x870c599f000e50ba +patword 0x0119 0x870c599f000850ba +patword 0x011a 0x870c599f000e50ba +patword 0x011b 0x870c599f000850ba +patword 0x011c 0x870c599f000e50ba +patword 0x011d 0x870c599f000850ba +patword 0x011e 0x870c599f000e50ba +patword 0x011f 0x870c599f000850ba +patword 0x0120 0x870c599f000e50ba +patword 0x0121 0x870c599f000850ba +patword 0x0122 0x870c599f200e50ba +patword 0x0123 0x870c599f000850ba +patword 0x0124 0x870c599f000e50ba +patword 0x0125 0x870c599f000850ba +patword 0x0126 0x870c599f000e50ba +patword 0x0127 0x870c599f000850ba +patword 0x0128 0x870c599f000e50ba +patword 0x0129 0x870c599f000850ba +patword 0x012a 0x870c599f000e50ba +patword 0x012b 0x870c599f000850ba +patword 0x012c 0x870c599f000e50ba +patword 0x012d 0x870c599f000850ba +patword 0x012e 0x870c599f000e50ba +patword 0x012f 0x870c599f000850ba +patword 0x0130 0x870c599f000e50ba +patword 0x0131 0x870c599f000850ba +patword 0x0132 0x870c599f000e50ba +patword 0x0133 0x870c599f000850ba +patword 0x0134 0x870c599f000e50ba +patword 0x0135 0x870c599f000850ba +patword 0x0136 0x870c599f000e50ba +patword 0x0137 0x870c599f000850ba +patword 0x0138 0x870c599f000e50ba +patword 0x0139 0x870c599f000850ba +patword 0x013a 0x870c599f282e50ba +patword 0x013b 0x870c599f082850ba +patword 0x013c 0x870c599f000e50ba +patword 0x013d 0x870c599f000850ba +patword 0x013e 0x870c599f000e50ba +patword 0x013f 0x870c599f000850ba +patword 0x0140 0x870c599f000e50ba +patword 0x0141 0x870c599f000850ba +patword 0x0142 0x870c599f000e50ba +patword 0x0143 0x870c599f000850ba +patword 0x0144 0x870c599f000e50ba +patword 0x0145 0x870c599f000850ba +patword 0x0146 0x870c599f000e50ba +patword 0x0147 0x870c599f000850ba +patword 0x0148 0x870c599f000e50ba +patword 0x0149 0x870c599f000850ba +patword 0x014a 0x870c599f000e50ba +patword 0x014b 0x870c599f000850ba +patword 0x014c 0x870c599f000e50ba +patword 0x014d 0x870c599f000850ba +patword 0x014e 0x870c599f000e50ba +patword 0x014f 0x870c599f000850ba +patword 0x0150 0x870c599f000e50ba +patword 0x0151 0x870c599f000850ba +patword 0x0152 0x870c599f000e50ba +patword 0x0153 0x870c599f000850ba +patword 0x0154 0x870c599f200e50ba +patword 0x0155 0x870c599f000850ba +patword 0x0156 0x870c599f000e50ba +patword 0x0157 0x870c599f000850ba +patword 0x0158 0x870c599f000e50ba +patword 0x0159 0x870c599f000850ba +patword 0x015a 0x870c599f000e50ba +patword 0x015b 0x870c599f000850ba +patword 0x015c 0x870c599f000e50ba +patword 0x015d 0x870c599f000850ba +patword 0x015e 0x870c599f000e50ba +patword 0x015f 0x870c599f000850ba +patword 0x0160 0x870c599f000e50ba +patword 0x0161 0x870c599f000850ba +patword 0x0162 0x870c599f000e50ba +patword 0x0163 0x870c599f000850ba +patword 0x0164 0x870c599f000e50ba +patword 0x0165 0x870c599f000850ba +patword 0x0166 0x870c599f000e50ba +patword 0x0167 0x870c599f000850ba +patword 0x0168 0x870c599f000e50ba +patword 0x0169 0x870c599f000850ba +patword 0x016a 0x870c599f000e50ba +patword 0x016b 0x870c599f000850ba +patword 0x016c 0x070c599f000850ba +patword 0x016d 0x070c599f000850ba +patword 0x016e 0x000c599f000850ba +patword 0x016f 0x000c599f000850ba +patword 0x0170 0x0008599f200e503a +patword 0x0171 0x0008599f0008503a +patword 0x0172 0x0008599f200e503a +patword 0x0173 0x0008599f0008503a +patword 0x0174 0x0008599f0008503a +patword 0x0175 0x0008599f0008503a +patword 0x0176 0x0008599f0008503a +patword 0x0177 0x0008599f0008503a +patword 0x0178 0x0008599f0008503a +patword 0x0179 0x0008599f0008503a +patword 0x017a 0x0008599f0008503a +patword 0x017b 0x0008599f0008503a +patword 0x017c 0x0008599f0008503a +patword 0x017d 0x0008599f0008503a +patword 0x017e 0x0008599f0008503a +patword 0x017f 0x0008599f0008503a +patword 0x0180 0x0008599f0008503a +patword 0x0181 0x0008599f0008503a +patword 0x0182 0x0008599f0008503a +patword 0x0183 0x0008599f0008503a +patword 0x0184 0x0008599f0008503a +patword 0x0185 0x0008599f0008503a +patword 0x0186 0x0008599f0008503a +patword 0x0187 0x0008599f0008503a +patword 0x0188 0x0008599f0008503a +patword 0x0189 0x0008599f0008503a +patword 0x018a 0x0008599f0008503a +patword 0x018b 0x0008599f0008503a +patword 0x018c 0x0008599f0008503a +patword 0x018d 0x0008599f0008503a +patioctrl 0x8f0effff6dbffdbf +patclkctrl 0x0000000000000000 +patlimits 0x0000 0x018c +patloop0 0x013a 0x016b +patnloop0 199 +patloop1 0x0400 0x0400 +patnloop1 0 +patloop2 0x0400 0x0400 +patnloop2 0 +patwait0 0x00aa +patwaittime0 10000 +patwait1 0x0400 +patwaittime1 0 +patwait2 0x0400 +patwaittime2 0 + diff --git a/slsDetectorServers/moenchDetectorServer/Makefile b/slsDetectorServers/moenchDetectorServer/Makefile index 5285f2ea2..9589da771 100755 --- a/slsDetectorServers/moenchDetectorServer/Makefile +++ b/slsDetectorServers/moenchDetectorServer/Makefile @@ -12,7 +12,7 @@ DESTDIR ?= bin INSTMODE = 0777 SRCS = slsDetectorFunctionList.c -SRCS += $(main_src)slsDetectorServer.c $(main_src)slsDetectorServer_funcs.c $(main_src)communication_funcs.c $(main_src)blackfin.c $(main_src)common.c $(main_src)commonServerFunctions.c $(main_src)communication_funcs_UDP.c $(main_src)UDPPacketHeaderGenerator.c $(main_src)AD9257.c $(main_src)ALTERA_PLL.c $(main_src)LTC2620.c $(main_src)MAX1932.c $(main_src)programFpgaBlackfin.c +SRCS += $(main_src)slsDetectorServer.c $(main_src)slsDetectorServer_funcs.c $(main_src)communication_funcs.c $(main_src)blackfin.c $(main_src)common.c $(main_src)commonServerFunctions.c $(main_src)communication_funcs_UDP.c $(main_src)UDPPacketHeaderGenerator.c $(main_src)AD9257.c $(main_src)ALTERA_PLL.c $(main_src)LTC2620.c $(main_src)MAX1932.c $(main_src)programFpgaBlackfin.c $(main_src)readDefaultPattern.c OBJS = $(SRCS:.c=.o) diff --git a/slsDetectorServers/moenchDetectorServer/bin/moenchDetectorServer_developer b/slsDetectorServers/moenchDetectorServer/bin/moenchDetectorServer_developer index 5f32a8451989eba90a1abff25f0c7450ccd81171..439291dda044f8a687dff1b24a77fd21312ddbdf 100755 GIT binary patch literal 186624 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 z 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 delta 87709 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

rNxr&%GNhK12#33oj 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 l8uuM}zmrR4eDdLjHX0xo`=3$D`2Q*sB18ZH diff --git a/slsDetectorServers/moenchDetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/moenchDetectorServer/slsDetectorFunctionList.c index 77513d918..6c0bcc36f 100755 --- a/slsDetectorServers/moenchDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorServers/moenchDetectorServer/slsDetectorFunctionList.c @@ -9,6 +9,7 @@ #include "MAX1932.h" // hv #include "ALTERA_PLL.h" // pll #include "blackfin.h" +#include "readDefaultPattern.h" #include "common.h" #include @@ -55,6 +56,7 @@ uint32_t clkFrequency[NUM_CLOCKS] = {40, 20, 20, 200}; int dacValues[NDAC] = {}; // software limit that depends on the current chip on the ctb int vLimit = 0; +enum detectorSettings thisSettings = UNINITIALIZED; int highvoltage = 0; int nSamples = 1; int detPos[2] = {0, 0}; @@ -521,6 +523,8 @@ void setupDetector() { initError = FAIL; } setPipeline(ADC_CLK, DEFAULT_PIPELINE); + loadDefaultPattern(DEFAULT_PATTERN_FILE); + setSettings(DEFAULT_SETTINGS); } int updateDatabytesandAllocateRAM() { @@ -862,10 +866,99 @@ int64_t getMeasurementTime() { } - /* parameters - settings */ + +enum detectorSettings setSettings(enum detectorSettings sett){ + if (sett == UNINITIALIZED) + return thisSettings; + + // set settings + if(sett != GET_SETTINGS) { + switch (sett) { + case G1_HIGHGAIN: + FILE_LOG(logINFO, ("Set settings - G1_HIGHGAIN\n")); + setPatternMask(G1_HIGHGAIN_PATMASK); + break; + case G1_LOWGAIN: + FILE_LOG(logINFO, ("Set settings - G1_LOWGAIN\n")); + setPatternMask(G1_LOWGAIN_PATMASK); + break; + case G2_HIGHCAP_HIGHGAIN: + FILE_LOG(logINFO, ("Set settings - G2_HIGHCAP_HIGHGAIN\n")); + setPatternMask(G2_HIGHCAP_HIGHGAIN_PATMASK); + break; + case G2_HIGHCAP_LOWGAIN: + FILE_LOG(logINFO, ("Set settings - G2_HIGHCAP_LOWGAIN\n")); + setPatternMask(G2_HIGHCAP_LOWGAIN_PATMASK); + break; + case G2_LOWCAP_HIGHGAIN: + FILE_LOG(logINFO, ("Set settings - G2_LOWCAP_HIGHGAIN\n")); + setPatternMask(G2_LOWCAP_HIGHGAIN_PATMASK); + break; + case G2_LOWCAP_LOWGAIN: + FILE_LOG(logINFO, ("Set settings - G2_LOWCAP_LOWGAIN\n")); + setPatternMask(G2_LOWCAP_LOWGAIN_PATMASK); + break; + case G4_HIGHGAIN: + FILE_LOG(logINFO, ("Set settings - G4_HIGHGAIN\n")); + setPatternMask(G4_HIGHGAIN_PATMASK); + break; + case G4_LOWGAIN: + FILE_LOG(logINFO, ("Set settings - G4_LOWGAIN\n")); + setPatternMask(G4_LOWGAIN_PATMASK); + break; + default: + FILE_LOG(logERROR, ("This settings is not defined for this detector %d\n", (int)sett)); + return -1; + } + setPatternBitMask(DEFAULT_PATSETBIT); + thisSettings = sett; + } + + return getSettings(); +} + enum detectorSettings getSettings() { - return UNDEFINED; + + uint64_t patsetbit = getPatternBitMask(); + if (patsetbit != DEFAULT_PATSETBIT) { + FILE_LOG(logERROR, ("Patsetbit is 0x%llx, and not 0x%llx. Undefined Settings!\n", patsetbit, DEFAULT_PATSETBIT)); + thisSettings = UNDEFINED; + return thisSettings; + } + + uint64_t patsetmask = getPatternMask(); + switch (patsetmask) { + case G1_HIGHGAIN_PATMASK: + thisSettings = G1_HIGHGAIN; + break; + case G1_LOWGAIN_PATMASK: + thisSettings = G1_LOWGAIN; + break; + case G2_HIGHCAP_HIGHGAIN_PATMASK: + thisSettings = G2_HIGHCAP_HIGHGAIN; + break; + case G2_HIGHCAP_LOWGAIN_PATMASK: + thisSettings = G2_HIGHCAP_LOWGAIN; + break; + case G2_LOWCAP_HIGHGAIN_PATMASK: + thisSettings = G2_LOWCAP_HIGHGAIN; + break; + case G2_LOWCAP_LOWGAIN_PATMASK: + thisSettings = G2_LOWCAP_LOWGAIN; + break; + case G4_HIGHGAIN_PATMASK: + thisSettings = G4_HIGHGAIN; + break; + case G4_LOWGAIN_PATMASK: + thisSettings = G4_LOWGAIN; + break; + default: + FILE_LOG(logERROR, ("Patsetmask is 0x%llx. Undefined Settings!\n", patsetmask)); + thisSettings = UNDEFINED; + break; + } + return thisSettings; } /* parameters - dac, adc, hv */ @@ -1690,6 +1783,7 @@ void setPatternLoop(int level, int *startAddr, int *stopAddr, int *nLoop) { void setPatternMask(uint64_t mask) { + FILE_LOG(logINFO, ("Setting pattern mask to 0x%llx\n", mask)); set64BitReg(mask, PATTERN_MASK_LSB_REG, PATTERN_MASK_MSB_REG); } @@ -1698,6 +1792,7 @@ uint64_t getPatternMask() { } void setPatternBitMask(uint64_t mask) { + FILE_LOG(logINFO, ("Setting pattern bit mask to 0x%llx\n", mask)); set64BitReg(mask, PATTERN_SET_LSB_REG, PATTERN_SET_MSB_REG); } @@ -1706,6 +1801,7 @@ uint64_t getPatternBitMask() { } + /* aquisition */ int startStateMachine(){ diff --git a/slsDetectorServers/moenchDetectorServer/slsDetectorServer_defs.h b/slsDetectorServers/moenchDetectorServer/slsDetectorServer_defs.h index 2641a83d2..427a74223 100755 --- a/slsDetectorServers/moenchDetectorServer/slsDetectorServer_defs.h +++ b/slsDetectorServers/moenchDetectorServer/slsDetectorServer_defs.h @@ -60,6 +60,7 @@ enum CLKINDEX {RUN_CLK, ADC_CLK, SYNC_CLK, DBIT_CLK, NUM_CLOCKS}; #define NSAMPLES_PER_ROW (25) /** Default Parameters */ +#define DEFAULT_PATTERN_FILE ("DefaultPattern.txt") #define DEFAULT_DATA_BYTES (NCHIP * NCHAN * NUM_BITS_PER_PIXEL) #define DEFAULT_NUM_SAMPLES (5000) #define DEFAULT_EXPTIME (0) @@ -77,6 +78,18 @@ enum CLKINDEX {RUN_CLK, ADC_CLK, SYNC_CLK, DBIT_CLK, NUM_CLOCKS}; #define DEFAULT_DBIT_CLK (20) #define DEFAULT_ADC_PHASE_DEG (30) #define DEFAULT_PIPELINE (14) +#define DEFAULT_SETTINGS (G4_HIGHGAIN) + +// settings +#define DEFAULT_PATSETBIT (0x40800000115ULL) +#define G1_HIGHGAIN_PATMASK (0x40800000101ULL) +#define G1_LOWGAIN_PATMASK (0x40000000100ULL) +#define G2_HIGHCAP_HIGHGAIN_PATMASK (0x00800000001ULL) +#define G2_HIGHCAP_LOWGAIN_PATMASK (0x00000000000ULL) +#define G2_LOWCAP_HIGHGAIN_PATMASK (0x40800000115ULL) +#define G2_LOWCAP_LOWGAIN_PATMASK (0x40000000114ULL) +#define G4_HIGHGAIN_PATMASK (0x00800000015ULL) +#define G4_LOWGAIN_PATMASK (0x00000000014ULL) #define HIGHVOLTAGE_MIN (60) #define HIGHVOLTAGE_MAX (200) // min dac val diff --git a/slsDetectorServers/slsDetectorServer/include/readDefaultPattern.h b/slsDetectorServers/slsDetectorServer/include/readDefaultPattern.h new file mode 100755 index 000000000..a1554236a --- /dev/null +++ b/slsDetectorServers/slsDetectorServer/include/readDefaultPattern.h @@ -0,0 +1,22 @@ +#pragma once + +#include +#include + +int loadDefaultPattern(char* fname); + +int default_writePatternWord(char* line, uint32_t addr, uint64_t word); + +int default_writePatternIOControl(char* line, uint64_t arg); + +int default_writePatternClkControl(char* line, uint64_t arg); + +int default_setPatternLoopLimits(char* line, uint32_t startAddr, uint32_t stopAddr); + +int default_setPatternLoopAddresses(char* line, int level, uint32_t startAddr, uint32_t stopAddr); + +int default_setPatternLoopCycles(char* line, int level, int numLoops); + +int default_setPatternWaitAddresses(char* line, int level, uint32_t addr); + +int default_setPatternWaitTime(char* line, int level, uint64_t waittime); \ No newline at end of file diff --git a/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h b/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h index 71696a9c7..9483c33b1 100755 --- a/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h +++ b/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h @@ -257,7 +257,7 @@ int64_t getMeasurementTime(); int setModule(sls_detector_module myMod, char* mess); int getModule(sls_detector_module *myMod); #endif -#if (!defined(CHIPTESTBOARDD)) && (!defined(MOENCHD)) && (!defined(MYTHEN3D)) +#if (!defined(CHIPTESTBOARDD)) && (!defined(MYTHEN3D)) enum detectorSettings setSettings(enum detectorSettings sett); #endif #if !defined(MYTHEN3D) @@ -403,6 +403,9 @@ uint64_t getPatternMask(); void setPatternBitMask(uint64_t mask); uint64_t getPatternBitMask(); #endif +#ifdef MOENCHD +extern int loadDefaultPattern(char* fname); // readDefaultPattern.h +#endif // jungfrau specific - powerchip, autocompdisable, clockdiv, asictimer, clock, pll, flashing firmware #ifdef JUNGFRAUD diff --git a/slsDetectorServers/slsDetectorServer/src/readDefaultPattern.c b/slsDetectorServers/slsDetectorServer/src/readDefaultPattern.c new file mode 100755 index 000000000..a50b3c5b5 --- /dev/null +++ b/slsDetectorServers/slsDetectorServer/src/readDefaultPattern.c @@ -0,0 +1,414 @@ +#include "readDefaultPattern.h" +#include "sls_detector_defs.h" +#include "slsDetectorServer_defs.h" +#include "ansi.h" +#include "clogger.h" + +#include + +extern char initErrorMessage[MAX_STR_LENGTH]; +extern int initError; + +extern uint64_t writePatternIOControl(uint64_t word); +extern uint64_t writePatternClkControl(uint64_t word); +extern uint64_t writePatternWord(int addr, uint64_t word); +extern int setPatternWaitAddress(int level, int addr); +extern uint64_t setPatternWaitTime(int level, uint64_t t); +extern void setPatternLoop(int level, int *startAddr, int *stopAddr, int *nLoop); + + +int loadDefaultPattern(char* fname) { + if (initError == FAIL) { + return initError; + } + + FILE* fd = fopen(fname, "r"); + if(fd == NULL) { + sprintf(initErrorMessage, "Could not open pattern file [%s].\n", fname); + initError = FAIL; + FILE_LOG(logERROR, ("%s\n\n", initErrorMessage)); + return FAIL; + } + FILE_LOG(logINFOBLUE, ("Reading default pattern file %s\n", fname)); + + + // Initialization + const size_t LZ = 256; + char line[LZ]; + memset(line, 0, LZ); + char command[LZ]; + + // keep reading a line + while (fgets(line, LZ, fd)) { + + // ignore comments + if (line[0] == '#') { + FILE_LOG(logDEBUG1, ("Ignoring Comment\n")); + continue; + } + + // ignore empty lines + if (strlen(line) <= 1) { + FILE_LOG(logDEBUG1, ("Ignoring Empty line\n")); + continue; + } + + FILE_LOG(logDEBUG1, ("Command to process: (size:%d) %.*s\n", + strlen(line), strlen(line) -1, line)); + memset(command, 0, LZ); + + // patword + if (!strncmp(line, "patword", strlen("patword"))) { + uint32_t addr = 0; + uint64_t word = 0; + + // cannot scan values + if (sscanf(line, "%s 0x%x 0x%llx", command, &addr, &word) != 3) { + sprintf(initErrorMessage, "Could not scan patword arguments from default " + "pattern file. Line:[%s].\n", line); + break; + } + + if (default_writePatternWord(line, addr, word) == FAIL) { + break; + } + } + + // patioctrl + if (!strncmp(line, "patioctrl", strlen("patioctrl"))) { + uint64_t arg = 0; + + // cannot scan values + if (sscanf(line, "%s 0x%llx", command, &arg) != 2) { + sprintf(initErrorMessage, "Could not scan patioctrl arguments from default " + "pattern file. Line:[%s].\n", line); + break; + } + + if (default_writePatternIOControl(line, arg) == FAIL) { + break; + } + } + + // patclkctrl + if (!strncmp(line, "patclkctrl", strlen("patclkctrl"))) { + uint64_t arg = 0; + + // cannot scan values + if (sscanf(line, "%s 0x%llx", command, &arg) != 2) { + sprintf(initErrorMessage, "Could not scan patclkctrl arguments from default " + "pattern file. Line:[%s].\n", line); + break; + } + + if (default_writePatternClkControl(line, arg) == FAIL) { + break; + } + } + + // patlimits + if (!strncmp(line, "patlimits", strlen("patlimits"))) { + uint32_t startAddr = 0; + uint32_t stopAddr = 0; + + // cannot scan values + if (sscanf(line, "%s 0x%x 0x%x", command, &startAddr, &stopAddr) != 3) { + sprintf(initErrorMessage, "Could not scan patlimits arguments from default " + "pattern file. Line:[%s].\n", line); + break; + } + + if (default_setPatternLoopLimits(line, startAddr, stopAddr) == FAIL) { + break; + } + } + + // patloop + if ((!strncmp(line, "patloop0", strlen("patloop0"))) || + (!strncmp(line, "patloop1", strlen("patloop1"))) || + (!strncmp(line, "patloop2", strlen("patloop2")))) { + + // level + int level = -1; + if (!strncmp(line, "patloop0", strlen("patloop0"))) { + level = 0; + } else if (!strncmp(line, "patloop1", strlen("patloop1"))) { + level = 1; + } else { + level = 2; + } + + uint32_t startAddr = 0; + uint32_t stopAddr = 0; + // cannot scan values + if (sscanf(line, "%s 0x%x 0x%x", command, &startAddr, &stopAddr) != 3) { + sprintf(initErrorMessage, "Could not scan patloop%d arguments from default " + "pattern file. Line:[%s].\n", level, line); + break; + } + + if (default_setPatternLoopAddresses(line, level, startAddr, stopAddr) == FAIL) { + break; + } + } + + // patnloop + if ((!strncmp(line, "patnloop0", strlen("patnloop0"))) || + (!strncmp(line, "patnloop1", strlen("patnloop1"))) || + (!strncmp(line, "patnloop2", strlen("patnloop2")))) { + + // level + int level = -1; + if (!strncmp(line, "patnloop0", strlen("patnloop0"))) { + level = 0; + } else if (!strncmp(line, "patnloop1", strlen("patnloop1"))) { + level = 1; + } else { + level = 2; + } + + int numLoops = -1; + // cannot scan values + if (sscanf(line, "%s %d", command, &numLoops) != 2) { + sprintf(initErrorMessage, "Could not scan patnloop%d arguments from default " + "pattern file. Line:[%s].\n", level, line); + break; + } + + if (default_setPatternLoopCycles(line, level, numLoops) == FAIL) { + break; + } + } + + // patwait + if ((!strncmp(line, "patwait0", strlen("patwait0"))) || + (!strncmp(line, "patwait1", strlen("patwait1"))) || + (!strncmp(line, "patwait2", strlen("patwait2")))) { + + // level + int level = -1; + if (!strncmp(line, "patwait0", strlen("patwait0"))) { + level = 0; + } else if (!strncmp(line, "patwait1", strlen("patwait1"))) { + level = 1; + } else { + level = 2; + } + + uint32_t addr = 0; + // cannot scan values + if (sscanf(line, "%s 0x%x", command, &addr) != 2) { + sprintf(initErrorMessage, "Could not scan patwait%d arguments from default " + "pattern file. Line:[%s].\n", level, line); + break; + } + + if (default_setPatternWaitAddresses(line, level, addr) == FAIL) { + break; + } + } + + // patwaittime + if ((!strncmp(line, "patwaittime0", strlen("patwaittime0"))) || + (!strncmp(line, "patwaittime1", strlen("patwaittime1"))) || + (!strncmp(line, "patwaittime2", strlen("patwaittime2")))) { + + // level + int level = -1; + if (!strncmp(line, "patwaittime0", strlen("patwaittime0"))) { + level = 0; + } else if (!strncmp(line, "patwaittime1", strlen("patwaittime1"))) { + level = 1; + } else { + level = 2; + } + + uint64_t waittime = 0; + + // cannot scan values + if (sscanf(line, "%s %lld", command, &waittime) != 2) { + sprintf(initErrorMessage, "Could not scan patwaittime%d arguments from default " + "pattern file. Line:[%s].\n", level, line); + break; + } + + if (default_setPatternWaitTime(line, level, waittime) == FAIL) { + break; + } + } + + memset(line, 0, LZ); + } + fclose(fd); + + if (strlen(initErrorMessage)) { + initError = FAIL; + FILE_LOG(logERROR, ("%s\n\n", initErrorMessage)); + } else { + FILE_LOG(logINFOBLUE, ("Successfully read default pattern file\n")); + } + return initError; +} + + +int default_writePatternWord(char* line, uint32_t addr, uint64_t word) { + //validations + if (addr < 0 || addr >= MAX_PATTERN_LENGTH) { + sprintf(initErrorMessage, "Cannot set pattern word from default " + "pattern file. Addr must be between 0 and 0x%x. Line:[%s]\n", + MAX_PATTERN_LENGTH, line); + return FAIL; + } + writePatternWord(addr, word); + // cannot validate for moench, ctb ( same as executing pattern word) + return OK; +} + +int default_writePatternIOControl(char* line, uint64_t arg) { + uint64_t retval = writePatternIOControl(arg); + if (retval != arg) { + sprintf(initErrorMessage, "Could not set patioctrl from default pattern " + "file. Set 0x%llx, read 0x%llx. Line:[%s]\n", arg, retval, line); + return FAIL; + } + return OK; +} + + +int default_writePatternClkControl(char* line, uint64_t arg) { + uint64_t retval = writePatternClkControl(arg); + if (retval != arg) { + sprintf(initErrorMessage, "Could not set patclkctrl from default pattern " + "file. Set 0x%llx, read 0x%llx. Line:[%s]\n", arg, retval, line); + return FAIL; + } + return OK; +} + +int default_setPatternLoopLimits(char* line, uint32_t startAddr, uint32_t stopAddr) { + //validations + if (startAddr < 0 || startAddr >= MAX_PATTERN_LENGTH || + stopAddr < 0 || stopAddr >= MAX_PATTERN_LENGTH) { + sprintf(initErrorMessage, "Cannot set patlimits from default " + "pattern file. Addr must be between 0 and 0x%x. Line:[%s]\n", + MAX_PATTERN_LENGTH, line); + return FAIL; + } + int numLoops = -1; + int r_startAddr = startAddr, r_stopAddr = stopAddr; + setPatternLoop(-1, &r_startAddr, &r_stopAddr, &numLoops); + + // validate + if (r_startAddr != startAddr || r_stopAddr != stopAddr) { + sprintf(initErrorMessage, "Could not set patlimits from default pattern " + "file. Read start addr:0x%x, stop addr: 0x%x. Line:[%s]\n", + r_startAddr, r_stopAddr, line); + return FAIL; + } + return OK; +} + +int default_setPatternLoopAddresses(char* line, int level, uint32_t startAddr, uint32_t stopAddr) { + //validations + if (level < 0 || level > 2) { + sprintf(initErrorMessage, "Cannot set patloop from default " + "pattern file. Level must be between 0 and 2. Line:[%s]\n", + line); + return FAIL; + } + if (startAddr < 0 || startAddr >= MAX_PATTERN_LENGTH || + stopAddr < 0 || stopAddr >= MAX_PATTERN_LENGTH) { + sprintf(initErrorMessage, "Cannot set patloop (level: %d) from default " + "pattern file. Addr must be between 0 and 0x%x. Line:[%s]\n", + level, MAX_PATTERN_LENGTH, line); + return FAIL; + } + int numLoops = -1; + int r_startAddr = startAddr, r_stopAddr = stopAddr; + setPatternLoop(level, &r_startAddr, &r_stopAddr, &numLoops); + + // validate + if (r_startAddr != startAddr || r_stopAddr != stopAddr) { + sprintf(initErrorMessage, "Could not set patloop (level: %d) from default " + "pattern file. Read start addr:0x%x, stop addr: 0x%x. Line:[%s]\n", + level, r_startAddr, r_stopAddr, line); + return FAIL; + } + return OK; +} + +int default_setPatternLoopCycles(char* line, int level, int numLoops) { + //validations + if (level < 0 || level > 2) { + sprintf(initErrorMessage, "Cannot set patnloop from default " + "pattern file. Level must be between 0 and 2. Line:[%s]\n", + line); + return FAIL; + } + if (numLoops < 0) { + sprintf(initErrorMessage, "Cannot set patnloop from default " + "pattern file. Iterations must be between > 0. Line:[%s]\n", + line); + return FAIL; + } + int startAddr = -1; + int stopAddr = -1; + int r_numLoops = numLoops; + setPatternLoop(level, &startAddr, &stopAddr, &r_numLoops); + + // validate + if (r_numLoops != numLoops) { + sprintf(initErrorMessage, "Could not set patnloop (level: %d) from default " + "pattern file. Read %d loops. Line:[%s]\n", + level, r_numLoops, line); + return FAIL; + } + return OK; +} + +int default_setPatternWaitAddresses(char* line, int level, uint32_t addr) { + //validations + if (level < 0 || level > 2) { + sprintf(initErrorMessage, "Cannot set patwait address from default " + "pattern file. Level must be between 0 and 2. Line:[%s]\n", + line); + return FAIL; + } + if (addr < 0 || addr >= MAX_PATTERN_LENGTH) { + sprintf(initErrorMessage, "Cannot set patwait address (level: %d) from default " + "pattern file. Addr must be between 0 and 0x%x. Line:[%s]\n", + level, MAX_PATTERN_LENGTH, line); + return FAIL; + } + + int retval = setPatternWaitAddress(level, addr); + + // validate + if (retval != addr) { + sprintf(initErrorMessage, "Could not set patwait address (level: %d) from default " + "pattern file. Read addr: 0x%x. Line:[%s]\n", + level, retval, line); + return FAIL; + } + return OK; +} + +int default_setPatternWaitTime(char* line, int level, uint64_t waittime) { + //validations + if (level < 0 || level > 2) { + sprintf(initErrorMessage, "Cannot set patwaittime from default " + "pattern file. Level must be between 0 and 2. Line:[%s]\n", + line); + return FAIL; + } + uint64_t retval = setPatternWaitTime(level, waittime); + + // validate + if (retval != waittime) { + sprintf(initErrorMessage, "Could not set patwaittime (level: %d) from default " + "pattern file. Read %lld wait time. Line:[%s]\n", + level, retval, line); + return FAIL; + } + return OK; +} diff --git a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c index 42137d235..7c709d39e 100755 --- a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c +++ b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c @@ -1670,7 +1670,7 @@ int set_settings(int file_des) { if (receiveData(file_des, &isett, sizeof(isett), INT32) < 0) return printSocketReadError(); -#if defined(CHIPTESTBOARDD) || defined(MOENCHD) || defined(MYTHEN3D) +#if defined(CHIPTESTBOARDD) || defined(MYTHEN3D) functionNotImplemented(); #else FILE_LOG(logDEBUG1, ("Setting settings %d\n", isett)); @@ -1698,6 +1698,15 @@ int set_settings(int file_des) { case DYNAMICGAIN: case FIXGAIN1: case FIXGAIN2: +#elif MOENCHD + case G1_HIGHGAIN: + case G1_LOWGAIN: + case G2_HIGHCAP_HIGHGAIN: + case G2_HIGHCAP_LOWGAIN: + case G2_LOWCAP_HIGHGAIN: + case G2_LOWCAP_LOWGAIN: + case G4_HIGHGAIN: + case G4_LOWGAIN: #endif break; default: @@ -2818,7 +2827,7 @@ int send_update(int file_des) { if (n < 0) return printSocketReadError(); // settings -#if defined(EIGERD) || defined(JUNGFRAUD) || defined(GOTTHARDD) +#if defined(EIGERD) || defined(JUNGFRAUD) || defined(GOTTHARDD) || defined(GOTTHARD2D)|| defined(MOENCHD) i32 = (int)getSettings(); n = sendData(file_des,&i32,sizeof(i32),INT32); if (n < 0) return printSocketReadError(); diff --git a/slsDetectorSoftware/include/Detector.h b/slsDetectorSoftware/include/Detector.h index ce8128602..8cbe0cd55 100644 --- a/slsDetectorSoftware/include/Detector.h +++ b/slsDetectorSoftware/include/Detector.h @@ -101,6 +101,8 @@ class Detector { /** [Jungfrau] Options:DYNAMICGAIN, DYNAMICHG0, FIXGAIN1, FIXGAIN2, FORCESWITCHG1, FORCESWITCHG2 * [Gotthard] Options: DYNAMICGAIN, HIGHGAIN, LOWGAIN, MEDIUMGAIN, VERYHIGHGAIN * [Gotthard2] Options: DYNAMICGAIN, FIXGAIN1, FIXGAIN2 + * [Moench] Options: G1_HIGHGAIN, G1_LOWGAIN, G2_HIGHCAP_HIGHGAIN, G2_HIGHCAP_LOWGAIN, + * G2_LOWCAP_HIGHGAIN, G2_LOWCAP_LOWGAIN, G4_HIGHGAIN, G4_LOWGAIN */ void setSettings(defs::detectorSettings value, Positions pos = {}); diff --git a/slsDetectorSoftware/src/CmdProxy.h b/slsDetectorSoftware/src/CmdProxy.h index d5d072df0..2c83f5679 100644 --- a/slsDetectorSoftware/src/CmdProxy.h +++ b/slsDetectorSoftware/src/CmdProxy.h @@ -1013,10 +1013,14 @@ class CmdProxy { "\n\tSerial number or MAC of detector (hex)."); INTEGER_COMMAND(settings, getSettings, setSettings, sls::StringTo, - "[standard, fast, highgain, dynamicgain, lowgain, mediumgain, veryhighgain, dynamichg0, fixgain1, fixgain2, forceswitchg1, forceswitchg2, verylowgain]" - "\n\t[Jungfrau] - Detector Settings [dynamicgain | dynamichg0 | fixgain1 | fixgain2 | forceswitchg1 | forceswitchg2]" - "\n\t[Gotthard] - Detector Settings [dynamicgain | highgain | lowgain | mediumgain | veryhighgain]" - "\n\t[Gotthard2] - Detector Settings [dynamicgain | fixgain1 | fixgain2]" + "[standard, fast, highgain, dynamicgain, lowgain, mediumgain, veryhighgain, dynamichg0, " + "fixgain1, fixgain2, forceswitchg1, forceswitchg2, verylowgain, g1_hg, g1_lg, g2_hc_hg, g2_hc_lg, " + "g2_lc_hg, g2_lc_lg, g4_hg, g4_lg]" + "\n\t Detector Settings" + "\n\t[Jungfrau] - [dynamicgain | dynamichg0 | fixgain1 | fixgain2 | forceswitchg1 | forceswitchg2]" + "\n\t[Gotthard] - [dynamicgain | highgain | lowgain | mediumgain | veryhighgain]" + "\n\t[Gotthard2] - [dynamicgain | fixgain1 | fixgain2]" + "\n\t[Moench] - [g1_hg | g1_lg | g2_hc_hg | g2_hc_lg | g2_lc_hg | g2_lc_lg | g4_hg | g4_lg]" "\n\t[Eiger] Use threshold or thresholdnotb."); /* acquisition parameters */ diff --git a/slsDetectorSoftware/src/slsDetector.cpp b/slsDetectorSoftware/src/slsDetector.cpp index 1a9c36e21..fe4a9ab49 100755 --- a/slsDetectorSoftware/src/slsDetector.cpp +++ b/slsDetectorSoftware/src/slsDetector.cpp @@ -758,8 +758,9 @@ void slsDetector::updateCachedDetectorVariables() { shm()->dynamicRange = i32; // settings - if (shm()->myDetectorType == EIGER || - shm()->myDetectorType == JUNGFRAU || shm()->myDetectorType == GOTTHARD) { + if (shm()->myDetectorType == EIGER || shm()->myDetectorType == JUNGFRAU || + shm()->myDetectorType == GOTTHARD || shm()->myDetectorType == GOTTHARD2 || + shm()->myDetectorType == MOENCH) { n += client.Receive(&i32, sizeof(i32)); shm()->currentSettings = static_cast(i32); } diff --git a/slsDetectorSoftware/src/slsDetector.h b/slsDetectorSoftware/src/slsDetector.h index ff7cb8953..86cfe127f 100755 --- a/slsDetectorSoftware/src/slsDetector.h +++ b/slsDetectorSoftware/src/slsDetector.h @@ -407,6 +407,8 @@ class slsDetector : public virtual slsDetectorDefs { /** [Jungfrau] Options:DYNAMICGAIN, DYNAMICHG0, FIXGAIN1, FIXGAIN2, FORCESWITCHG1, FORCESWITCHG2 * [Gotthard] Options: DYNAMICGAIN, HIGHGAIN, LOWGAIN, MEDIUMGAIN, VERYHIGHGAIN * [Gotthard2] Options: DYNAMICGAIN, FIXGAIN1, FIXGAIN2 + * [Moench] Options: G1_HIGHGAIN, G1_LOWGAIN, G2_HIGHCAP_HIGHGAIN, G2_HIGHCAP_LOWGAIN, + * G2_LOWCAP_HIGHGAIN, G2_LOWCAP_LOWGAIN, G4_HIGHGAIN, G4_LOWGAIN * [Eiger] Only stores them locally in shm Options: STANDARD, HIGHGAIN, LOWGAIN, VERYHIGHGAIN, VERYLOWGAIN */ detectorSettings setSettings(detectorSettings isettings); diff --git a/slsDetectorSoftware/tests/CMakeLists.txt b/slsDetectorSoftware/tests/CMakeLists.txt index 4a7d7287d..111c82122 100755 --- a/slsDetectorSoftware/tests/CMakeLists.txt +++ b/slsDetectorSoftware/tests/CMakeLists.txt @@ -9,6 +9,7 @@ target_sources(tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/test-CmdProxy-gotthard2.cpp ${CMAKE_CURRENT_SOURCE_DIR}/test-CmdProxy-gotthard.cpp ${CMAKE_CURRENT_SOURCE_DIR}/test-CmdProxy-chiptestboard.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/test-CmdProxy-moench.cpp ${CMAKE_CURRENT_SOURCE_DIR}/test-CmdProxy-global.cpp ${CMAKE_CURRENT_SOURCE_DIR}/test-Result.cpp ${CMAKE_CURRENT_SOURCE_DIR}/test-CmdParser.cpp diff --git a/slsDetectorSoftware/tests/test-CmdProxy-moench.cpp b/slsDetectorSoftware/tests/test-CmdProxy-moench.cpp new file mode 100644 index 000000000..b7d62c1d9 --- /dev/null +++ b/slsDetectorSoftware/tests/test-CmdProxy-moench.cpp @@ -0,0 +1,103 @@ +#include "CmdProxy.h" +#include "Detector.h" +#include "catch.hpp" +#include "sls_detector_defs.h" +#include + +#include "Result.h" +#include "ToString.h" +#include "test-CmdProxy-global.h" +#include "tests/globals.h" +#include "versionAPI.h" + +using sls::CmdProxy; +using sls::Detector; +using test::GET; +using test::PUT; + +TEST_CASE("Setting and reading back MOENCH dacs", "[.cmd][.dacs]") { + // vbp_colbuf, vipre, vin_cm", vb_sda, vcasc_sfp, vout_cm, vipre_cds, ibias_sfp + + Detector det; + CmdProxy proxy(&det); + auto det_type = det.getDetectorType().squash(); + if (det_type == defs::MOENCH) { + SECTION("vbp_colbuf") { test_dac(defs::VBP_COLBUF, "vbp_colbuf", 1300); } + SECTION("vipre") { test_dac(defs::VIPRE, "vipre", 1000); } + SECTION("vin_cm") { test_dac(defs::VIN_CM, "vin_cm", 1400); } + SECTION("vb_sda") { test_dac(defs::VB_SDA, "vb_sda", 680); } + SECTION("vcasc_sfp") { test_dac(defs::VCASC_SFP, "vcasc_sfp", 1428); } + SECTION("vout_cm") { test_dac(defs::VOUT_CM, "vout_cm", 1200); } + SECTION("vipre_cds") { test_dac(defs::VIPRE_CDS, "vipre_cds", 800); } + SECTION("ibias_sfp") { test_dac(defs::IBIAS_SFP, "ibias_sfp", 900); } + + // eiger + REQUIRE_THROWS(proxy.Call("vthreshold", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vsvp", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vsvn", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vtr", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vrf", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vrs", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vtgstv", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vcmp_ll", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vcmp_lr", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vcal", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vcmp_rl", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vcmp_rr", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("rxb_rb", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("rxb_lb", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vcp", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vcn", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vis", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("iodelay", {}, -1, GET)); + // jungfrau + REQUIRE_THROWS(proxy.Call("vb_comp", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vdd_prot", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vin_com", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vref_prech", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vb_pixbuf", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vb_ds", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vref_ds", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vref_comp", {}, -1, GET)); + // gotthard + REQUIRE_THROWS(proxy.Call("vref_ds", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vcascn_pb", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vcascp_pb", {}, -1, GET)); + //REQUIRE_THROWS(proxy.Call("vout_cm", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vcasc_out", {}, -1, GET)); + //REQUIRE_THROWS(proxy.Call("vin_cm", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vref_comp", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("ib_test_c", {}, -1, GET)); + // mythen3 + REQUIRE_THROWS(proxy.Call("vpreamp", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vshaper", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vshaperneg", {}, -1, GET)); + //REQUIRE_THROWS(proxy.Call("vipre", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("viinsh", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vdcsh", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vth1", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vth2", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vth3", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vpl", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vph", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vtrim", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vcassh", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vcas", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vicin", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vipre_out", {}, -1, GET)); + // gotthard2 + REQUIRE_THROWS(proxy.Call("vref_h_adc", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vb_comp_fe", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vb_comp_adc", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vcom_cds", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vref_rstore", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vb_opa_1st", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vref_comp_fe", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vcom_adc1", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vref_l_adc", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vref_cds", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vb_cs", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vb_opa_fd", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("vcom_adc2", {}, -1, GET)); + } +} diff --git a/slsSupportLib/include/ToString.h b/slsSupportLib/include/ToString.h index e22d1732a..cde6dc972 100644 --- a/slsSupportLib/include/ToString.h +++ b/slsSupportLib/include/ToString.h @@ -91,6 +91,22 @@ inline std::string ToString(const defs::detectorSettings s) { return std::string("forceswitchg2"); case defs::VERYLOWGAIN: return std::string("verylowgain"); + case defs::G1_HIGHGAIN: + return std::string("g1_hg"); + case defs::G1_LOWGAIN: + return std::string("g1_lg"); + case defs::G2_HIGHCAP_HIGHGAIN: + return std::string("g2_hc_hg"); + case defs::G2_HIGHCAP_LOWGAIN: + return std::string("g2_hc_lg"); + case defs::G2_LOWCAP_HIGHGAIN: + return std::string("g2_lc_hg"); + case defs::G2_LOWCAP_LOWGAIN: + return std::string("g2_lc_lg"); + case defs::G4_HIGHGAIN: + return std::string("g4_hg"); + case defs::G4_LOWGAIN: + return std::string("g4_lg"); case defs::UNDEFINED: return std::string("undefined"); case defs::UNINITIALIZED: @@ -459,6 +475,22 @@ inline defs::detectorSettings StringTo(const std::string& s) { return defs::FORCESWITCHG2; if (s == "verylowgain") return defs::VERYLOWGAIN; + if (s == "g1_hg") + return defs::G1_HIGHGAIN; + if (s == "g1_lg") + return defs::G1_LOWGAIN; + if (s == "g2_hc_hg") + return defs::G2_HIGHCAP_HIGHGAIN; + if (s == "g2_hc_lg") + return defs::G2_HIGHCAP_LOWGAIN; + if (s == "g2_lc_hg") + return defs::G2_LOWCAP_HIGHGAIN; + if (s == "g2_lc_lg") + return defs::G2_LOWCAP_LOWGAIN; + if (s == "g4_hg") + return defs::G4_HIGHGAIN; + if (s == "g4_lg") + return defs::G4_LOWGAIN; throw sls::RuntimeError("Unknown setting " + s); } diff --git a/slsSupportLib/include/sls_detector_defs.h b/slsSupportLib/include/sls_detector_defs.h index 07e30f8f9..48cc39268 100755 --- a/slsSupportLib/include/sls_detector_defs.h +++ b/slsSupportLib/include/sls_detector_defs.h @@ -364,20 +364,28 @@ class slsDetectorDefs { detector settings indexes */ enum detectorSettings { - GET_SETTINGS = -1, /**< return current detector settings */ - STANDARD, /**< standard settings */ - FAST, /**< fast settings */ - HIGHGAIN, /**< highgain settings */ - DYNAMICGAIN, /**< dynamic gain settings */ - LOWGAIN, /**< low gain settings */ - MEDIUMGAIN, /**< medium gain settings */ - VERYHIGHGAIN, /**< very high gain settings */ - DYNAMICHG0, /**< dynamic high gain 0 */ - FIXGAIN1, /**< fix gain 1 */ - FIXGAIN2, /**< fix gain 2 */ - FORCESWITCHG1, /**< force switch gain 1 */ - FORCESWITCHG2, /**< force switch gain 2 */ - VERYLOWGAIN, /**< very low gain settings */ + GET_SETTINGS = -1, + STANDARD, + FAST, + HIGHGAIN, + DYNAMICGAIN, + LOWGAIN, + MEDIUMGAIN, + VERYHIGHGAIN, + DYNAMICHG0, + FIXGAIN1, + FIXGAIN2, + FORCESWITCHG1, + FORCESWITCHG2, + VERYLOWGAIN, + G1_HIGHGAIN, + G1_LOWGAIN, + G2_HIGHCAP_HIGHGAIN, + G2_HIGHCAP_LOWGAIN, + G2_LOWCAP_HIGHGAIN, + G2_LOWCAP_LOWGAIN, + G4_HIGHGAIN, + G4_LOWGAIN, UNDEFINED = 200, /**< undefined or custom settings */ UNINITIALIZED /**< uninitialiazed (status at startup) */ }; diff --git a/slsSupportLib/include/versionAPI.h b/slsSupportLib/include/versionAPI.h index 0c81f31b6..8f6161275 100644 --- a/slsSupportLib/include/versionAPI.h +++ b/slsSupportLib/include/versionAPI.h @@ -9,4 +9,4 @@ #define APIGUI 0x200227 #define APICTB 0x200227 #define APIGOTTHARD2 0x200228 -#define APIMOENCH 0x200302 +#define APIMOENCH 0x200303