rm unwanted files in cache

This commit is contained in:
2019-01-11 15:13:00 +01:00
parent d459a98a4f
commit 7504b0a539
25 changed files with 0 additions and 10805 deletions

View File

@@ -1 +0,0 @@
autogen_cafepy3_release.sh

View File

@@ -1,48 +0,0 @@
<cafe:config
xmlns:cafe="http://slsbd.psi.ch">
<!-- Note: The namespace URI is not used by the parser to look up information -->
<!-- The purpose is to give the namespace a unique name -->
<!-- However, often projects use the namespace as a pointer to a web page -->
<!-- containing namespace information -->
<!-- group id is the NAME of the collection -->
<!-- CAFE convention is to begin collection name with c -->
<!-- Order must be X - Y - I and ENABLE -->
<cafe:group id="gDBPM">
<cafe:description>BPM agent configuration</cafe:description>
<cafe:collection>
<cafe:id>cDBPM</cafe:id>
<cafe:attribute>X1</cafe:attribute>
<cafe:collectivetype>CAFE_DOUBLE</cafe:collectivetype>
</cafe:collection>
<cafe:collection>
<cafe:id>cDBPM</cafe:id>
<cafe:attribute>Y1</cafe:attribute>
<cafe:collectivetype>CAFE_DOUBLE</cafe:collectivetype>
</cafe:collection>
<cafe:collection>
<cafe:id>cDBPM</cafe:id>
<cafe:attribute>Q1</cafe:attribute>
<cafe:collectivetype>CAFE_DOUBLE</cafe:collectivetype>
</cafe:collection>
<cafe:collection>
<cafe:id>cDBPM</cafe:id>
<cafe:attribute>X1-VALID</cafe:attribute>
<cafe:collectivetype>CAFE_DOUBLE</cafe:collectivetype>
</cafe:collection>
<cafe:collection>
<cafe:id>cDBPM</cafe:id>
<cafe:attribute>Q1-VALID</cafe:attribute>
<cafe:collectivetype>CAFE_DOUBLE</cafe:collectivetype>
</cafe:collection>
<cafe:collection>
<cafe:id>cDBPM</cafe:id>
<cafe:attribute>ENERGY</cafe:attribute>
<cafe:collectivetype>CAFE_DOUBLE</cafe:collectivetype>
</cafe:collection>
</cafe:group>
</cafe:config>

View File

@@ -1 +0,0 @@
outAramis.xml

View File

@@ -1,380 +0,0 @@
<cafe:config xmlns:cafe="http://xfel.web.psi.ch">
<cafe:collection id="cDBPM">
<cafe:description>Collection of Nodes for SwissFEL</cafe:description>
<cafe:attributes>
<cafe:attribute>X</cafe:attribute>
<cafe:attribute>Y</cafe:attribute>
<cafe:attribute>X0</cafe:attribute>
<cafe:attribute>Y0</cafe:attribute>
<cafe:attribute>REF-X</cafe:attribute>
<cafe:attribute>REF-Y</cafe:attribute>
<cafe:attribute>REFOFF-X</cafe:attribute>
<cafe:attribute>REFOFF-Y</cafe:attribute>
<cafe:attribute>REFORB-X</cafe:attribute>
<cafe:attribute>REFORB-Y</cafe:attribute>
<cafe:attribute>SET-GAIN</cafe:attribute>
<cafe:attribute>I</cafe:attribute>
<cafe:attribute>FB-STAT</cafe:attribute>
<cafe:attribute>FB-ENABLE</cafe:attribute>
<cafe:attribute>STAT</cafe:attribute>
<cafe:attribute>ENABLE</cafe:attribute>
</cafe:attributes>
<cafe:member pos=" 3.0149">
<cafe:device>SINEG01-DBPM340</cafe:device>
</cafe:member>
<cafe:member pos=" 7.9459">
<cafe:device>SINSB01-DBPM150</cafe:device>
</cafe:member>
<cafe:member pos=" 12.9489">
<cafe:device>SINSB02-DBPM150</cafe:device>
</cafe:member>
<cafe:member pos=" 14.5560">
<cafe:device>SINLH01-DBPM060</cafe:device>
</cafe:member>
<cafe:member pos=" 16.4806">
<cafe:device>SINLH02-DBPM210</cafe:device>
</cafe:member>
<cafe:member pos=" 17.4826">
<cafe:device>SINLH02-DBPM240</cafe:device>
</cafe:member>
<cafe:member pos=" 19.2172">
<cafe:device>SINLH03-DBPM010</cafe:device>
</cafe:member>
<cafe:member pos=" 20.4632">
<cafe:device>SINLH03-DBPM050</cafe:device>
</cafe:member>
<cafe:member pos=" 21.6002">
<cafe:device>SINLH03-DBPM090</cafe:device>
</cafe:member>
<cafe:member pos=" 26.9202">
<cafe:device>SINSB03-DBPM120</cafe:device>
</cafe:member>
<cafe:member pos=" 32.4202">
<cafe:device>SINSB03-DBPM220</cafe:device>
</cafe:member>
<cafe:member pos=" 37.9202">
<cafe:device>SINSB04-DBPM120</cafe:device>
</cafe:member>
<cafe:member pos=" 43.4202">
<cafe:device>SINSB04-DBPM220</cafe:device>
</cafe:member>
<cafe:member pos=" 48.9202">
<cafe:device>SINSB05-DBPM120</cafe:device>
</cafe:member>
<cafe:member pos=" 54.4202">
<cafe:device>SINSB05-DBPM220</cafe:device>
</cafe:member>
<cafe:member pos=" 56.2420">
<cafe:device>SINXB01-DBPM120</cafe:device>
</cafe:member>
<cafe:member pos=" 60.2912">
<cafe:device>SINBC01-DBPM010</cafe:device>
</cafe:member>
<cafe:member pos=" 61.0912">
<cafe:device>SINBC01-DBPM030</cafe:device>
</cafe:member>
<cafe:member pos=" 64.4172">
<cafe:device>SINBC01-DBPM080</cafe:device>
</cafe:member>
<cafe:member pos=" 65.9432">
<cafe:device>SINBC01-DBPM100</cafe:device>
</cafe:member>
<cafe:member pos=" 69.3739">
<cafe:device>SINBC02-DBPM140</cafe:device>
</cafe:member>
<cafe:member pos=" 77.5610">
<cafe:device>SINBC02-DBPM320</cafe:device>
</cafe:member>
<cafe:member pos=" 82.0967">
<cafe:device>SINDI01-DBPM010</cafe:device>
</cafe:member>
<cafe:member pos=" 83.5117">
<cafe:device>SINDI01-DBPM060</cafe:device>
</cafe:member>
<cafe:member pos=" 86.0767">
<cafe:device>SINDI02-DBPM010</cafe:device>
</cafe:member>
<cafe:member pos=" 88.3857">
<cafe:device>SINDI02-DBPM040</cafe:device>
</cafe:member>
<cafe:member pos=" 90.6297">
<cafe:device>SINDI02-DBPM080</cafe:device>
</cafe:member>
<cafe:member pos=" 95.3947">
<cafe:device>S10CB01-DBPM220</cafe:device>
</cafe:member>
<cafe:member pos=" 100.2947">
<cafe:device>S10CB01-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 105.1947">
<cafe:device>S10CB02-DBPM220</cafe:device>
</cafe:member>
<cafe:member pos=" 110.0947">
<cafe:device>S10CB02-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 114.6628">
<cafe:device>S10BD01-DBPM020</cafe:device>
</cafe:member>
<cafe:member pos=" 114.9947">
<cafe:device>S10DI01-DBPM110</cafe:device>
</cafe:member>
<cafe:member pos=" 119.8947">
<cafe:device>S10CB03-DBPM220</cafe:device>
</cafe:member>
<cafe:member pos=" 124.7947">
<cafe:device>S10CB03-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 129.6947">
<cafe:device>S10CB04-DBPM220</cafe:device>
</cafe:member>
<cafe:member pos=" 134.5947">
<cafe:device>S10CB04-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 139.4947">
<cafe:device>S10CB05-DBPM220</cafe:device>
</cafe:member>
<cafe:member pos=" 144.3947">
<cafe:device>S10CB05-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 149.2947">
<cafe:device>S10CB06-DBPM220</cafe:device>
</cafe:member>
<cafe:member pos=" 154.1947">
<cafe:device>S10CB06-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 159.0947">
<cafe:device>S10CB07-DBPM220</cafe:device>
</cafe:member>
<cafe:member pos=" 163.9947">
<cafe:device>S10CB07-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 168.8947">
<cafe:device>S10CB08-DBPM220</cafe:device>
</cafe:member>
<cafe:member pos=" 173.7947">
<cafe:device>S10CB08-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 178.6947">
<cafe:device>S10CB09-DBPM220</cafe:device>
</cafe:member>
<cafe:member pos=" 183.5947">
<cafe:device>S10BC01-DBPM010</cafe:device>
</cafe:member>
<cafe:member pos=" 187.8307">
<cafe:device>S10BC01-DBPM050</cafe:device>
</cafe:member>
<cafe:member pos=" 192.2847">
<cafe:device>S10BC01-DBPM090</cafe:device>
</cafe:member>
<cafe:member pos=" 196.7798">
<cafe:device>S10BC02-DBPM140</cafe:device>
</cafe:member>
<cafe:member pos=" 206.5399">
<cafe:device>S10BC02-DBPM320</cafe:device>
</cafe:member>
<cafe:member pos=" 211.2940">
<cafe:device>S10MA01-DBPM010</cafe:device>
</cafe:member>
<cafe:member pos=" 215.6600">
<cafe:device>S10MA01-DBPM060</cafe:device>
</cafe:member>
<cafe:member pos=" 220.1200">
<cafe:device>S10MA01-DBPM120</cafe:device>
</cafe:member>
<cafe:member pos=" 229.0850">
<cafe:device>S20CB01-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 238.1850">
<cafe:device>S20CB02-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 247.2850">
<cafe:device>S20CB03-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 256.3850">
<cafe:device>S20SY01-DBPM010</cafe:device>
</cafe:member>
<cafe:member pos=" 262.5020">
<cafe:device>S20SY01-DBPM040</cafe:device>
</cafe:member>
<cafe:member pos=" 263.6280">
<cafe:device>S20SY01-DBPM060</cafe:device>
</cafe:member>
<cafe:member pos=" 269.1300">
<cafe:device>S20SY02-DBPM080</cafe:device>
</cafe:member>
<cafe:member pos=" 271.0800">
<cafe:device>S20SY02-DBPM120</cafe:device>
</cafe:member>
<cafe:member pos=" 272.7600">
<cafe:device>S20SY02-DBPM150</cafe:device>
</cafe:member>
<cafe:member pos=" 280.6200">
<cafe:device>S20SY03-DBPM010</cafe:device>
</cafe:member>
<cafe:member pos=" 286.9200">
<cafe:device>S20SY03-DBPM040</cafe:device>
</cafe:member>
<cafe:member pos=" 294.3800">
<cafe:device>S20SY03-DBPM080</cafe:device>
</cafe:member>
<cafe:member pos=" 303.8150">
<cafe:device>S30CB01-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 312.9150">
<cafe:device>S30CB02-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 322.0150">
<cafe:device>S30CB03-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 331.1150">
<cafe:device>S30CB04-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 340.2150">
<cafe:device>S30CB05-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 349.3150">
<cafe:device>S30CB06-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 358.4150">
<cafe:device>S30CB07-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 367.5150">
<cafe:device>S30CB08-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 376.6150">
<cafe:device>S30CB09-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 385.7150">
<cafe:device>S30CB10-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 394.8150">
<cafe:device>S30CB11-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 403.9150">
<cafe:device>S30CB12-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 413.0150">
<cafe:device>S30CB13-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 422.1150">
<cafe:device>S30CB14-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 431.2150">
<cafe:device>S30CB15-DBPM420</cafe:device>
</cafe:member>
<cafe:member pos=" 440.3150">
<cafe:device>SARCL01-DBPM010</cafe:device>
</cafe:member>
<cafe:member pos=" 444.6750">
<cafe:device>SARCL01-DBPM060</cafe:device>
</cafe:member>
<cafe:member pos=" 450.7750">
<cafe:device>SARCL01-DBPM120</cafe:device>
</cafe:member>
<cafe:member pos=" 452.1510">
<cafe:device>SARCL01-DBPM150</cafe:device>
</cafe:member>
<cafe:member pos=" 456.9100">
<cafe:device>SARCL02-DBPM110</cafe:device>
</cafe:member>
<cafe:member pos=" 460.9609">
<cafe:device>SARCL02-DBPM220</cafe:device>
</cafe:member>
<cafe:member pos=" 462.7569">
<cafe:device>SARCL02-DBPM260</cafe:device>
</cafe:member>
<cafe:member pos=" 466.6909">
<cafe:device>SARCL02-DBPM330</cafe:device>
</cafe:member>
<cafe:member pos=" 471.1067">
<cafe:device>SARCL02-DBPM470</cafe:device>
</cafe:member>
<cafe:member pos=" 476.4267">
<cafe:device>SARMA01-DBPM040</cafe:device>
</cafe:member>
<cafe:member pos=" 483.2767">
<cafe:device>SARMA01-DBPM100</cafe:device>
</cafe:member>
<cafe:member pos=" 487.9617">
<cafe:device>SARMA02-DBPM010</cafe:device>
</cafe:member>
<cafe:member pos=" 490.0107">
<cafe:device>SARMA02-DBPM020</cafe:device>
</cafe:member>
<cafe:member pos=" 492.0597">
<cafe:device>SARMA02-DBPM040</cafe:device>
</cafe:member>
<cafe:member pos=" 496.8097">
<cafe:device>SARMA02-DBPM110</cafe:device>
</cafe:member>
<cafe:member pos=" 501.5597">
<cafe:device>SARUN01-DBPM070</cafe:device>
</cafe:member>
<cafe:member pos=" 506.3097">
<cafe:device>SARUN02-DBPM070</cafe:device>
</cafe:member>
<cafe:member pos=" 511.0597">
<cafe:device>SARUN03-DBPM070</cafe:device>
</cafe:member>
<cafe:member pos=" 515.8097">
<cafe:device>SARUN04-DBPM070</cafe:device>
</cafe:member>
<cafe:member pos=" 520.5597">
<cafe:device>SARUN05-DBPM070</cafe:device>
</cafe:member>
<cafe:member pos=" 525.3097">
<cafe:device>SARUN06-DBPM070</cafe:device>
</cafe:member>
<cafe:member pos=" 530.0597">
<cafe:device>SARUN07-DBPM070</cafe:device>
</cafe:member>
<cafe:member pos=" 534.8097">
<cafe:device>SARUN08-DBPM070</cafe:device>
</cafe:member>
<cafe:member pos=" 539.5597">
<cafe:device>SARUN09-DBPM070</cafe:device>
</cafe:member>
<cafe:member pos=" 544.3097">
<cafe:device>SARUN10-DBPM070</cafe:device>
</cafe:member>
<cafe:member pos=" 549.0597">
<cafe:device>SARUN11-DBPM070</cafe:device>
</cafe:member>
<cafe:member pos=" 553.8097">
<cafe:device>SARUN12-DBPM070</cafe:device>
</cafe:member>
<cafe:member pos=" 558.5597">
<cafe:device>SARUN13-DBPM070</cafe:device>
</cafe:member>
<cafe:member pos=" 563.3097">
<cafe:device>SARUN14-DBPM070</cafe:device>
</cafe:member>
<cafe:member pos=" 568.0597">
<cafe:device>SARUN15-DBPM070</cafe:device>
</cafe:member>
<cafe:member pos=" 572.8097">
<cafe:device>SARUN16-DBPM070</cafe:device>
</cafe:member>
<cafe:member pos=" 577.5597">
<cafe:device>SARUN17-DBPM070</cafe:device>
</cafe:member>
<cafe:member pos=" 582.3097">
<cafe:device>SARUN18-DBPM070</cafe:device>
</cafe:member>
<cafe:member pos=" 587.0597">
<cafe:device>SARUN19-DBPM070</cafe:device>
</cafe:member>
<cafe:member pos=" 591.8097">
<cafe:device>SARUN20-DBPM070</cafe:device>
</cafe:member>
<cafe:member pos=" 593.9132">
<cafe:device>SARBD01-DBPM040</cafe:device>
</cafe:member>
<cafe:member pos=" 596.9584">
<cafe:device>SARBD02-DBPM010</cafe:device>
</cafe:member>
<cafe:member pos=" 598.3943">
<cafe:device>SARBD02-DBPM040</cafe:device>
</cafe:member>
</cafe:collection>
</cafe:config>

View File

@@ -1,241 +0,0 @@
{"channels":[
{"name":"SINEG01-DBPM340:X1","backend":"sf-databuffer"},
{"name":"SINEG01-DBPM340:Y1","backend":"sf-databuffer"},
{"name":"SINSB01-DBPM150:Y1","backend":"sf-databuffer"},
{"name":"SINSB02-DBPM150:Y1","backend":"sf-databuffer"},
{"name":"SINLH01-DBPM060:Y1","backend":"sf-databuffer"},
{"name":"SINLH02-DBPM210:Y1","backend":"sf-databuffer"},
{"name":"SINLH02-DBPM240:Y1","backend":"sf-databuffer"},
{"name":"SINLH03-DBPM010:Y1","backend":"sf-databuffer"},
{"name":"SINLH03-DBPM050:Y1","backend":"sf-databuffer"},
{"name":"SINLH03-DBPM090:Y1","backend":"sf-databuffer"},
{"name":"SINSB03-DBPM120:Y1","backend":"sf-databuffer"},
{"name":"SINSB03-DBPM220:Y1","backend":"sf-databuffer"},
{"name":"SINSB04-DBPM120:Y1","backend":"sf-databuffer"},
{"name":"SINSB04-DBPM220:Y1","backend":"sf-databuffer"},
{"name":"SINSB05-DBPM120:Y1","backend":"sf-databuffer"},
{"name":"SINSB05-DBPM220:Y1","backend":"sf-databuffer"},
{"name":"SINXB01-DBPM120:Y1","backend":"sf-databuffer"},
{"name":"SINBC01-DBPM010:Y1","backend":"sf-databuffer"},
{"name":"SINBC01-DBPM030:Y1","backend":"sf-databuffer"},
{"name":"SINBC01-DBPM080:Y1","backend":"sf-databuffer"},
{"name":"SINBC01-DBPM100:Y1","backend":"sf-databuffer"},
{"name":"SINBC02-DBPM140:Y1","backend":"sf-databuffer"},
{"name":"SINBC02-DBPM320:Y1","backend":"sf-databuffer"},
{"name":"SINDI01-DBPM010:Y1","backend":"sf-databuffer"},
{"name":"SINDI01-DBPM060:Y1","backend":"sf-databuffer"},
{"name":"SINDI02-DBPM010:Y1","backend":"sf-databuffer"},
{"name":"SINDI02-DBPM040:Y1","backend":"sf-databuffer"},
{"name":"SINDI02-DBPM080:Y1","backend":"sf-databuffer"},
{"name":"S10CB01-DBPM220:Y1","backend":"sf-databuffer"},
{"name":"S10CB01-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"S10CB02-DBPM220:Y1","backend":"sf-databuffer"},
{"name":"S10CB02-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"S10DI01-DBPM110:Y1","backend":"sf-databuffer"},
{"name":"S10CB03-DBPM220:Y1","backend":"sf-databuffer"},
{"name":"S10CB03-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"S10CB04-DBPM220:Y1","backend":"sf-databuffer"},
{"name":"S10CB04-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"S10CB05-DBPM220:Y1","backend":"sf-databuffer"},
{"name":"S10CB05-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"S10CB06-DBPM220:Y1","backend":"sf-databuffer"},
{"name":"S10CB06-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"S10CB07-DBPM220:Y1","backend":"sf-databuffer"},
{"name":"S10CB07-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"S10CB08-DBPM220:Y1","backend":"sf-databuffer"},
{"name":"S10CB08-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"S10CB09-DBPM220:Y1","backend":"sf-databuffer"},
{"name":"S10BC01-DBPM010:Y1","backend":"sf-databuffer"},
{"name":"S10BC01-DBPM050:Y1","backend":"sf-databuffer"},
{"name":"S10BC01-DBPM090:Y1","backend":"sf-databuffer"},
{"name":"S10BC02-DBPM140:Y1","backend":"sf-databuffer"},
{"name":"S10BC02-DBPM320:Y1","backend":"sf-databuffer"},
{"name":"S10MA01-DBPM010:Y1","backend":"sf-databuffer"},
{"name":"S10MA01-DBPM060:Y1","backend":"sf-databuffer"},
{"name":"S10MA01-DBPM120:Y1","backend":"sf-databuffer"},
{"name":"S20CB01-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"S20CB02-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"S20CB03-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"S20SY01-DBPM010:Y1","backend":"sf-databuffer"},
{"name":"S20SY01-DBPM040:Y1","backend":"sf-databuffer"},
{"name":"S20SY01-DBPM060:Y1","backend":"sf-databuffer"},
{"name":"S20SY02-DBPM080:Y1","backend":"sf-databuffer"},
{"name":"S20SY02-DBPM120:Y1","backend":"sf-databuffer"},
{"name":"S20SY02-DBPM150:Y1","backend":"sf-databuffer"},
{"name":"S20SY03-DBPM010:Y1","backend":"sf-databuffer"},
{"name":"S20SY03-DBPM040:Y1","backend":"sf-databuffer"},
{"name":"S20SY03-DBPM080:Y1","backend":"sf-databuffer"},
{"name":"S30CB01-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"S30CB02-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"S30CB03-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"S30CB04-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"S30CB05-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"S30CB06-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"S30CB07-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"S30CB08-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"S30CB09-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"S30CB10-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"S30CB11-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"S30CB12-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"S30CB13-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"S30CB14-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"S30CB15-DBPM420:Y1","backend":"sf-databuffer"},
{"name":"SARCL01-DBPM010:Y1","backend":"sf-databuffer"},
{"name":"SARCL01-DBPM060:Y1","backend":"sf-databuffer"},
{"name":"SARCL01-DBPM120:Y1","backend":"sf-databuffer"},
{"name":"SARCL01-DBPM150:Y1","backend":"sf-databuffer"},
{"name":"SARCL02-DBPM110:Y1","backend":"sf-databuffer"},
{"name":"SARCL02-DBPM220:Y1","backend":"sf-databuffer"},
{"name":"SARCL02-DBPM260:Y1","backend":"sf-databuffer"},
{"name":"SARCL02-DBPM330:Y1","backend":"sf-databuffer"},
{"name":"SARCL02-DBPM470:Y1","backend":"sf-databuffer"},
{"name":"SARMA01-DBPM040:Y1","backend":"sf-databuffer"},
{"name":"SARMA01-DBPM100:Y1","backend":"sf-databuffer"},
{"name":"SARMA02-DBPM010:Y1","backend":"sf-databuffer"},
{"name":"SARMA02-DBPM020:Y1","backend":"sf-databuffer"},
{"name":"SARMA02-DBPM040:Y1","backend":"sf-databuffer"},
{"name":"SARMA02-DBPM110:Y1","backend":"sf-databuffer"},
{"name":"SARUN01-DBPM070:Y1","backend":"sf-databuffer"},
{"name":"SARUN02-DBPM070:Y1","backend":"sf-databuffer"},
{"name":"SARUN03-DBPM070:Y1","backend":"sf-databuffer"},
{"name":"SARUN04-DBPM070:Y1","backend":"sf-databuffer"},
{"name":"SARUN05-DBPM070:Y1","backend":"sf-databuffer"},
{"name":"SARUN06-DBPM070:Y1","backend":"sf-databuffer"},
{"name":"SARUN07-DBPM070:Y1","backend":"sf-databuffer"},
{"name":"SARUN09-DBPM070:Y1","backend":"sf-databuffer"},
{"name":"SARUN10-DBPM070:Y1","backend":"sf-databuffer"},
{"name":"SARUN11-DBPM070:Y1","backend":"sf-databuffer"},
{"name":"SARUN12-DBPM070:Y1","backend":"sf-databuffer"},
{"name":"SARUN13-DBPM070:Y1","backend":"sf-databuffer"},
{"name":"SARUN14-DBPM070:Y1","backend":"sf-databuffer"},
{"name":"SARUN15-DBPM070:Y1","backend":"sf-databuffer"},
{"name":"SARUN16-DBPM070:Y1","backend":"sf-databuffer"},
{"name":"SARUN17-DBPM070:Y1","backend":"sf-databuffer"},
{"name":"SARUN18-DBPM070:Y1","backend":"sf-databuffer"},
{"name":"SARUN19-DBPM070:Y1","backend":"sf-databuffer"},
{"name":"SARUN20-DBPM070:Y1","backend":"sf-databuffer"},
{"name":"S10BD01-DBPM020:Y1","backend":"sf-databuffer"},
{"name":"SARBD01-DBPM040:Y1","backend":"sf-databuffer"},
{"name":"SARBD02-DBPM010:Y1","backend":"sf-databuffer"},
{"name":"SARBD02-DBPM040:Y1","backend":"sf-databuffer"},
{"name":"SINEG01-DBPM340:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINSB01-DBPM150:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINSB02-DBPM150:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINLH01-DBPM060:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINLH02-DBPM210:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINLH02-DBPM240:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINLH03-DBPM010:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINLH03-DBPM050:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINLH03-DBPM090:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINSB03-DBPM120:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINSB03-DBPM220:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINSB04-DBPM120:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINSB04-DBPM220:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINSB05-DBPM120:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINSB05-DBPM220:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINXB01-DBPM120:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINBC01-DBPM010:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINBC01-DBPM030:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINBC01-DBPM080:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINBC01-DBPM100:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINBC02-DBPM140:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINBC02-DBPM320:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINDI01-DBPM010:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINDI01-DBPM060:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINDI02-DBPM010:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINDI02-DBPM040:Y1-VALID","backend":"sf-databuffer"},
{"name":"SINDI02-DBPM080:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10CB01-DBPM220:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10CB01-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10CB02-DBPM220:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10CB02-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10DI01-DBPM110:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10CB03-DBPM220:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10CB03-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10CB04-DBPM220:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10CB04-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10CB05-DBPM220:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10CB05-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10CB06-DBPM220:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10CB06-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10CB07-DBPM220:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10CB07-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10CB08-DBPM220:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10CB08-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10CB09-DBPM220:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10BC01-DBPM010:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10BC01-DBPM050:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10BC01-DBPM090:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10BC02-DBPM140:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10BC02-DBPM320:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10MA01-DBPM010:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10MA01-DBPM060:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10MA01-DBPM120:Y1-VALID","backend":"sf-databuffer"},
{"name":"S20CB01-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"S20CB02-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"S20CB03-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"S20SY01-DBPM010:Y1-VALID","backend":"sf-databuffer"},
{"name":"S20SY01-DBPM040:Y1-VALID","backend":"sf-databuffer"},
{"name":"S20SY01-DBPM060:Y1-VALID","backend":"sf-databuffer"},
{"name":"S20SY02-DBPM080:Y1-VALID","backend":"sf-databuffer"},
{"name":"S20SY02-DBPM120:Y1-VALID","backend":"sf-databuffer"},
{"name":"S20SY02-DBPM150:Y1-VALID","backend":"sf-databuffer"},
{"name":"S20SY03-DBPM010:Y1-VALID","backend":"sf-databuffer"},
{"name":"S20SY03-DBPM040:Y1-VALID","backend":"sf-databuffer"},
{"name":"S20SY03-DBPM080:Y1-VALID","backend":"sf-databuffer"},
{"name":"S30CB01-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"S30CB02-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"S30CB03-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"S30CB04-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"S30CB05-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"S30CB06-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"S30CB07-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"S30CB08-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"S30CB09-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"S30CB10-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"S30CB11-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"S30CB12-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"S30CB13-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"S30CB14-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"S30CB15-DBPM420:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARCL01-DBPM010:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARCL01-DBPM060:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARCL01-DBPM120:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARCL01-DBPM150:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARCL02-DBPM110:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARCL02-DBPM220:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARCL02-DBPM260:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARCL02-DBPM330:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARCL02-DBPM470:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARMA01-DBPM040:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARMA01-DBPM100:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARMA02-DBPM010:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARMA02-DBPM020:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARMA02-DBPM040:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARMA02-DBPM110:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARUN01-DBPM070:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARUN02-DBPM070:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARUN03-DBPM070:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARUN04-DBPM070:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARUN05-DBPM070:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARUN06-DBPM070:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARUN07-DBPM070:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARUN09-DBPM070:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARUN10-DBPM070:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARUN11-DBPM070:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARUN12-DBPM070:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARUN13-DBPM070:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARUN14-DBPM070:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARUN15-DBPM070:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARUN16-DBPM070:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARUN17-DBPM070:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARUN18-DBPM070:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARUN19-DBPM070:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARUN20-DBPM070:Y1-VALID","backend":"sf-databuffer"},
{"name":"S10BD01-DBPM020:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARBD01-DBPM040:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARBD02-DBPM010:Y1-VALID","backend":"sf-databuffer"},
{"name":"SARBD02-DBPM040:Y1-VALID","backend":"sf-databuffer"}],
"mapping":{"incomplete":"fill-null"},
"channelValidation":{"inconsistency":"keep-as-is"},
"sendBehaviour":{"strategy":"complete-latest"}}

View File

@@ -1,6 +0,0 @@
g++ cafePush.cpp -o cafePush -I/opt/gfa/zmq/zeromq-4.1.5/include -I/opt/gfa/zmsglog/json/jsoncpp-src-0.6.0-rc2/include -L/opt/gfa/zmq/zeromq-4.1.5/lib -Wl,-rpath,/opt/gfa/zmq/zeromq-4.1.5/lib -L/opt/gfa/zmsglog/json/jsoncpp-src-0.6.0-rc2/libs/linux-gcc-4.4.7 -Wl,-rpath,/opt/gfa/zmsglog/json/jsoncpp-src-0.6.0-rc2/libs/linux-gcc-4.4.7 -lzmq -ljson_linux-gcc-4.4.7_libmt
g++ cafePush.cpp -o cafePush -I/opt/gfa/zmq/zeromq-4.1.5/include -L/opt/gfa/zmq/zeromq-4.1.5/lib -Wl,-rpath,/opt/gfa/zmq/zeromq-4.1.5/lib -lzmq

View File

@@ -1,52 +0,0 @@
#
# Jan Chrin
# June 2016
#
# Makefile to build C++ cafe client
#
# For cafeClient that needs loadSFGroups we need to
# link in python libraries
#CAFE version to link to
#CAFE_VERSION=cafe-1.0.0-final-2
PYTHON_INCLUDE=/opt/gfa/python-3.5/latest/include/python3.5m
PYTHON_LIB=/opt/gfa/python-3.5/latest/lib
EPICS_BASE=${EPICS}/base
#CAFE project base
CAFE_BASE=/afs/psi.ch/project/cafe/gitworkspace/CAFE
#CAFE_CPP_BASE=${CAFE_BASE}/python/python-3.5
CAFE_CPP_BASE=${CAFE_BASE}/cpp
BOOST_BASE=${CAFE_BASE}/boost/boost_1_61_0/include
INCLUDE_PATH += -I$(CAFE_CPP_BASE)/include \
-I$(EPICS_BASE)/include -I$(EPICS_BASE)/include/os/Linux \
-I$(BOOST_BASE) #\
# -I${PYTHON_INCLUDE}
#-I$(BOOST_BASE)/boost
LIB_DIR += -L$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
-Wl,-rpath,$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
-L$(CAFE_CPP_BASE)/src/.libs \
-Wl,-rpath,$(CAFE_CPP_BASE)/src/.libs #\
# -L$(PYTHON_LIB) -Wl,-rpath,$(PYTHON_LIB) -L/usr/lib64
# -L$(CAFE_CPP_BASE)/src/libs/pycafe \
#LIBS += -lpython3.5m
LIBS += -lcafe -lca -lCom
cafeTest: cafeTest.cc
g++ cafeTest.cc -o cafeTest \
$(INCLUDE_PATH) $(LIB_DIR) $(LIBS)
clean:
rm -f cafeTest.o cafeTest

View File

@@ -1,51 +0,0 @@
#
# Jan Chrin
# November 2015
#
# Makefile to build C++ cafe client
#CAFE version to link to
CAFE_VERSION=latest
PYTHON_INCLUDE=/opt/gfa/python-3.5/latest/include/python3.5m
PYTHON_LIB=/opt/gfa/python-3.5/latest/lib
EPICS_BASE=${EPICS}/base
#CAFE project base
CAFE_BASE=/opt/gfa/cafe
CAFE_CPP_BASE=${CAFE_BASE}/cpp
BOOST_BASE=${CAFE_BASE}/boost/boost_1_57_0
#INCLUDE_PATH += -I$(CAFE_CPP_BASE)/$(CAFE_VERSION)/include \
INCLUDE_PATH += -I/afs/psi.ch/project/cafe/gitworkspace/CAFE/cpp \
-I/afs/psi.ch/project/cafe/gitworkspace/CAFE/cpp/include \
-I$(EPICS_BASE)/include -I$(EPICS_BASE)/include/os/Linux \
-I$(BOOST_BASE) \
-I${PYTHON_INCLUDE}
#-I$(BOOST_BASE)/boost
LIB_DIR += -L$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
-Wl,-rpath,$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
-L/afs/psi.ch/project/cafe/gitworkspace/CAFE/cpp/src/.libs \
-Wl,-rpath,/afs/psi.ch/project/cafe/gitworkspace/CAFE/cpp/src/.libs \
-L$(PYTHON_LIB) -Wl,-rpath,$(PYTHON_LIB)
# -L$(CAFE_CPP_BASE)/$(CAFE_VERSION)/lib \
# -Wl,-rpath,$(CAFE_CPP_BASE)/$(CAFE_VERSION)/lib
#LIBS += -lpython2.6
LIBS += -lcafe -lca -lCom -lpython3.5m
cafeTest: cafeTest.cc
g++ cafeTest.cc -o cafeTest \
$(INCLUDE_PATH) $(LIB_DIR) $(LIBS)
clean:
rm -f cafeTest.o cafeTest

View File

@@ -1,54 +0,0 @@
#
# Jan Chrin
# June 2016
#
# Makefile to build C++ cafe client
#
# For cafeClient that needs loadSFGroups we need to
# link in python libraries
#CAFE version to link to
CAFE_VERSION=latest
PYTHON_INCLUDE=/opt/gfa/python-3.5/latest/include/python3.5m
PYTHON_LIB=/opt/gfa/python-3.5/latest/lib
EPICS_BASE=${EPICS}/base
#CAFE project base
CAFE_BASE=/opt/gfa/cafe
CAFE_CPP_BASE=${CAFE_BASE}/python/python-3.5
BOOST_BASE=${CAFE_BASE}/boost/boost_1_57_0
#INCLUDE_PATH += -I/afs/psi.ch/project/cafe/gitworkspace/CAFE/cpp
INCLUDE_PATH += -I$(CAFE_CPP_BASE)/$(CAFE_VERSION)/include \
-I$(EPICS_BASE)/include -I$(EPICS_BASE)/include/os/Linux \
-I$(BOOST_BASE) \
-I${PYTHON_INCLUDE}
#-I$(BOOST_BASE)/boost
LIB_DIR += -L$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
-Wl,-rpath,$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
-L$(CAFE_CPP_BASE)/$(CAFE_VERSION)/lib \
-Wl,-rpath,$(CAFE_CPP_BASE)/$(CAFE_VERSION)/lib \
-L$(PYTHON_LIB) -Wl,-rpath,$(PYTHON_LIB)
# -L/afs/psi.ch/project/cafe/gitworkspace/CAFE/cpp/src/.libs \
# -Wl,-rpath,/afs/psi.ch/project/cafe/gitworkspace/CAFE/cpp/src/.libs \
#LIBS += -lpython2.6
LIBS += -lcafe -lca -lCom -lpython3.5m
cafeTest: cafeTest.cc
g++ cafeTest.cc -o cafeTest \
$(INCLUDE_PATH) $(LIB_DIR) $(LIBS)
clean:
rm -f cafeTest.o cafeTest

View File

@@ -1,55 +0,0 @@
#
# Jan Chrin
# June 2016
#
# Makefile to build C++ cafe client
#
# For cafeClient that needs loadSFGroups we need to
# link in python libraries
#CAFE version to link to
CAFE_VERSION=pycafe-1.0.0-beta-1
CAFE_VERSION_OTHER=pycafe-noqt-1.0.0-beta-1
PYTHON_INCLUDE=/opt/gfa/python-3.5/latest/include/python3.5m
PYTHON_LIB=/opt/gfa/python-3.5/latest/lib
EPICS_BASE=${EPICS}/base
#CAFE project base
CAFE_BASE=/opt/gfa/cafe
#python/python-3.5
CAFE_CPP_BASE=${CAFE_BASE}/python/python-3.5
BOOST_BASE=${CAFE_BASE}/boost/boost_1_57_0
#INCLUDE_PATH += -I/afs/psi.ch/project/cafe/gitworkspace/CAFE/cpp
INCLUDE_PATH += -I$(CAFE_CPP_BASE)/$(CAFE_VERSION)/include \
-I$(EPICS_BASE)/include -I$(EPICS_BASE)/include/os/Linux \
-I$(BOOST_BASE) \
-I${PYTHON_INCLUDE}
#-I$(BOOST_BASE)/boost
LIB_DIR += -L$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
-Wl,-rpath,$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
-L$(CAFE_CPP_BASE)/$(CAFE_VERSION)/lib \
-Wl,-rpath,$(CAFE_CPP_BASE)/$(CAFE_VERSION)/lib \
-L$(PYTHON_LIB) -Wl,-rpath,$(PYTHON_LIB)
# -L/afs/psi.ch/project/cafe/gitworkspace/CAFE/cpp/src/.libs \
# -Wl,-rpath,/afs/psi.ch/project/cafe/gitworkspace/CAFE/cpp/src/.libs \
#LIBS += -lpython2.6
LIBS += -lcafe -lca -lCom -lpython3.5m
cafeTest: cafeTest.cc
g++ cafeTest.cc -o cafeTest \
$(INCLUDE_PATH) $(LIB_DIR) $(LIBS)
clean:
rm -f cafeTest.o cafeTest

View File

@@ -1,55 +0,0 @@
#
# Jan Chrin
# June 2016
#
# Makefile to build C++ cafe client
#
# For cafeClient that needs loadSFGroups we need to
# link in python libraries
#CAFE version to link to
CAFE_VERSION=pycafe-1.0.0-final-1
PYTHON_INCLUDE=/opt/gfa/python-3.5/latest/include/python3.5m
PYTHON_LIB=/opt/gfa/python-3.5/latest/lib
EPICS_BASE=${EPICS}/base
#CAFE project base
CAFE_BASE=/opt/gfa/cafe
CAFE_CPP_BASE=${CAFE_BASE}/python/python-3.5
#CAFE_CPP_BASE=${CAFE_BASE}/cpp/
BOOST_BASE=${CAFE_BASE}/boost/boost_1_61_0/include
#INCLUDE_PATH += -I/afs/psi.ch/project/cafe/gitworkspace/CAFE/cpp
INCLUDE_PATH += -I$(CAFE_CPP_BASE)/$(CAFE_VERSION)/include \
-I$(EPICS_BASE)/include -I$(EPICS_BASE)/include/os/Linux \
-I$(BOOST_BASE) \
-I${PYTHON_INCLUDE}
#-I$(BOOST_BASE)/boost
LIB_DIR += -L$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
-Wl,-rpath,$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
-L$(CAFE_CPP_BASE)/$(CAFE_VERSION)/lib \
-Wl,-rpath,$(CAFE_CPP_BASE)/$(CAFE_VERSION)/lib \
-L$(PYTHON_LIB) -Wl,-rpath,$(PYTHON_LIB) -L/usr/lib64
# -L/afs/psi.ch/project/cafe/gitworkspace/CAFE/cpp/src/.libs \
# -Wl,-rpath,/afs/psi.ch/project/cafe/gitworkspace/CAFE/cpp/src/.libs \
LIBS += -lpython3.5m
LIBS += -lcafe -lca -lCom
cafeTest: cafeTest.cc
g++ cafeTest.cc -o cafeTest \
$(INCLUDE_PATH) $(LIB_DIR) $(LIBS)
clean:
rm -f cafeTest.o cafeTest

View File

@@ -1,69 +0,0 @@
#
# Jan Chrin
# June 2016
#
# Makefile to build C++ cafe client
#
# For cafeClient that needs loadSFGroups we need to
# link in python libraries
#CAFE version to link to
CAFE_VERSION=pyzcafe-1.3.0-alpha-1
PYTHON_INCLUDE=/opt/gfa/python-3.5/latest/include/python3.5m
PYTHON_LIB=/opt/gfa/python-3.5/latest/lib
EPICS_BASE=${EPICS}/base
#CAFE project base
CAFE_BASE=/opt/gfa/cafe
CAFE_CPP_BASE=${CAFE_BASE}/python/python-3.5
BOOST_BASE=${CAFE_BASE}/boost/boost_1_61_0/include
ZEROMQ_BASE=/opt/gfa/zmq/zeromq-4.1.5
#INCLUDE_PATH += -I/afs/psi.ch/project/cafe/gitworkspace/CAFE/cpp/include
#-I$(CAFE_CPP_BASE)/$(CAFE_VERSION)/include \
INCLUDE_PATH += -I$(CAFE_CPP_BASE)/$(CAFE_VERSION)/include \
-I$(EPICS_BASE)/include -I$(EPICS_BASE)/include/os/Linux \
-I$(BOOST_BASE) -I$(ZEROMQ_BASE)/include \
-I/opt/gfa/zmsglog/json/jsoncpp-src-0.6.0-rc2/include \
-I/opt/gfa/zmq/curl-7.54.1/include \
-I${PYTHON_INCLUDE}
#-I$(BOOST_BASE)/boost
# -L/afs/psi.ch/project/cafe/gitworkspace/CAFE/cpp/src/.libs \
# -Wl,-rpath,/afs/psi.ch/project/cafe/gitworkspace/CAFE/cpp/src/.libs \
LIB_DIR += -L$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
-Wl,-rpath,$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
-L$(CAFE_CPP_BASE)/$(CAFE_VERSION)/lib \
-Wl,-rpath,$(CAFE_CPP_BASE)/$(CAFE_VERSION)/lib \
-L$(ZEROMQ_BASE)/lib \
-Wl,-rpath,$(ZEROMQ_BASE)/lib \
-L/opt/gfa/zmsglog/json/jsoncpp-src-0.6.0-rc2/libs/linux-gcc-4.4.7 \
-Wl,-rpath,/opt/gfa/zmsglog/json/jsoncpp-src-0.6.0-rc2/libs/linux-gcc-4.4.7 \
-L/opt/gfa/zmq/curl-7.54.1/lib/.libs \
-Wl,-rpath,/opt/gfa/zmq/curl-7.54.1/lib/.libs \
-L$(PYTHON_LIB) -Wl,-rpath,$(PYTHON_LIB) -L/usr/lib64
# -L/afs/psi.ch/project/cafe/gitworkspace/CAFE/cpp/src/.libs \
# -Wl,-rpath,/afs/psi.ch/project/cafe/gitworkspace/CAFE/cpp/src/.libs \
LIBS += -lpython3.5m
LIBS += -lcafe -lca -lCom -lzmq -ljson_linux-gcc-4.4.7_libmt -lcurl
cafeTest: cafeTest.cc
g++ cafeTest.cc -o cafeTest \
$(INCLUDE_PATH) $(LIB_DIR) $(LIBS)
clean:
rm -f cafeTest.o cafeTest

View File

@@ -1,75 +0,0 @@
#
# Jan Chrin
# June 2016
#
# Makefile to build C++ cafe client
#
# For cafeClient that needs loadSFGroups we need to
# link in python libraries
#CAFE version to link to
CAFE_VERSION=pycafe-1.0.0-beta-4
PYTHON_INCLUDE=/opt/gfa/python-3.5/latest/include/python3.5m
PYTHON_LIB=/opt/gfa/python-3.5/latest/lib
EPICS_BASE=${EPICS}/base
#CAFE project base
CAFE_BASE=/opt/gfa/cafe
CAFE_CPP_BASE=${CAFE_BASE}/python/python-3.5
#CAFE_CPP_BASE=${CAFE_BASE}/cpp
BOOST_BASE=${CAFE_BASE}/boost/boost_1_61_0/include
#INCLUDE_PATH += -I/afs/psi.ch/project/cafe/gitworkspace/CAFE/cpp
INCLUDE_PATH += -I$(CAFE_CPP_BASE)/$(CAFE_VERSION)/include \
-I$(EPICS_BASE)/include -I$(EPICS_BASE)/include/os/Linux \
-I$(BOOST_BASE) \
-I${PYTHON_INCLUDE}
#-I$(BOOST_BASE)/boost
LIB_DIR += -L$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
-Wl,-rpath,$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
-L$(CAFE_CPP_BASE)/$(CAFE_VERSION)/lib \
-Wl,-rpath,$(CAFE_CPP_BASE)/$(CAFE_VERSION)/lib \
-L$(PYTHON_LIB) -Wl,-rpath,$(PYTHON_LIB) -L/usr/lib64
# -L/afs/psi.ch/project/cafe/gitworkspace/CAFE/cpp/src/.libs \
# -Wl,-rpath,/afs/psi.ch/project/cafe/gitworkspace/CAFE/cpp/src/.libs \
LIBS += -lpython3.5m
LIBS += -lcafe -lca -lCom
#cafeTest: cafeTest.cc
# g++ cafeTest.cc -o cafeTest \
# $(INCLUDE_PATH) $(LIB_DIR) $(LIBS)
#cafeTest: cafeTest.cc
# g++ cafeTest.cc -o cafeTest \
# $(INCLUDE_PATH) -L$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
# -L$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
# $(CAFE_CPP_BASE)/$(CAFE_VERSION)/lib/libcafe.a -lca -lCom
## -L$(PYTHON_LIB)/libpython3.5m.so
cafeTest: cafeTest.cc
g++ cafeTest.cc -o cafeTest \
-I$(BOOST_BASE) -I${PYTHON_INCLUDE} -I/usr/include/Qt \
-I$(CAFE_CPP_BASE)/$(CAFE_VERSION)/include \
-I$(EPICS_BASE)/include -I$(EPICS_BASE)/include/os/Linux \
$(CAFE_CPP_BASE)/$(CAFE_VERSION)/lib/libcafe.a \
$(EPICS_BASE)/lib/${EPICS_HOST_ARCH}/libca.a \
$(EPICS_BASE)/lib/${EPICS_HOST_ARCH}/libCom.a \
-L$(PYTHON_LIB) -Wl,-rpath,$(PYTHON_LIB) \
-L/usr/lib64 -ldl -lpthread -lreadline -lrt -lpython3.5m -lQtCore -lQtXml
clean:
rm -f cafeTest.o cafeTest

View File

@@ -1,22 +0,0 @@
#
# Jan Chrin
# June 2016
#
##### CHANGE AS APPROPRIATE #################
#Cafe CPP Version to install
CAFE_VERSION=cafe-1.0.0-alpha-1
#CAFE project base
CAFE_BASE=/opt/gfa/cafe/cpp
CAFE_ACTUAL=${CAFE_BASE}/${CAFE_VERSION}
EXAMPLES_INSTALL_PATH= $(CAFE_ACTUAL)/examples/cafeTest
#############################################
install:
mkdir -p $(EXAMPLES_INSTALL_PATH)
cp makefile $(EXAMPLES_INSTALL_PATH)
cp cafeTest.cc $(EXAMPLES_INSTALL_PATH)

View File

@@ -1,48 +0,0 @@
#
# Jan Chrin
# June 2016
#
# Makefile to build a simple C++ cafe client
#
#CAFE version to link to
CAFE_VERSION=cafez-1.3.0-alpha-1
#PYTHON_INCLUDE=/opt/gfa/python-3.5/latest/include/python3.5m
#PYTHON_LIB=/opt/gfa/python-3.5/latest/lib
EPICS_BASE=${EPICS}/base
#CAFE project base
CAFE_BASE=/opt/gfa/cafe
CAFE_CPP_BASE=${CAFE_BASE}/cpp
BOOST_BASE=${CAFE_BASE}/boost/boost_1_61_0/include
ZEROMQ_BASE=/opt/gfa/zmq/zeromq-4.1.5
INCLUDE_PATH += -I$(CAFE_CPP_BASE)/$(CAFE_VERSION)/include \
-I$(EPICS_BASE)/include -I$(EPICS_BASE)/include/os/Linux \
-I$(BOOST_BASE) -I$(ZEROMQ_BASE)/include -I/opt/gfa/zmsglog/json/jsoncpp-src-0.6.0-rc2/include
#-I$(BOOST_BASE)/boost
LIB_DIR += -L$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
-Wl,-rpath,$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
-L$(CAFE_CPP_BASE)/$(CAFE_VERSION)/lib \
-Wl,-rpath,$(CAFE_CPP_BASE)/$(CAFE_VERSION)/lib \
-L$(ZEROMQ_BASE)/lib \
-Wl,-rpath,$(ZEROMQ_BASE)/lib \
-L/opt/gfa/zmsglog/json/jsoncpp-src-0.6.0-rc2/libs/linux-gcc-4.4.7 \
-Wl,-rpath,/opt/gfa/zmsglog/json/jsoncpp-src-0.6.0-rc2/libs/linux-gcc-4.4.7
LIBS += -lcafe -lca -lCom -lzmq -ljson_linux-gcc-4.4.7_libmt
cafeTest: cafeTest.cc callbacks.h
g++ cafeTest.cc -o cafeTest \
$(INCLUDE_PATH) $(LIB_DIR) $(LIBS)
clean:
rm -f cafeTest.o cafeTest

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,174 +0,0 @@
/* =====================================================================
zhelpers.h
Helper header file for example applications.
=====================================================================
*/
#ifndef __ZHELPERS_H_INCLUDED__
#define __ZHELPERS_H_INCLUDED__
// Include a bunch of headers that we will need in the examples
#include <zmq.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#if (defined (WIN32))
# include <time.h>
#else
# include <sys/time.h>
#endif
#include <assert.h>
#include <signal.h>
// Version checking, and patch up missing constants to match 2.1
#if ZMQ_VERSION_MAJOR == 2
# error "Please upgrade to ZeroMQ/3.2 for these examples"
#endif
// Provide random number from 0..(num-1)
#if (defined (WIN32))
# define randof(num) (int) ((float) (num) * rand () / (RAND_MAX + 1.0))
#else
# define randof(num) (int) ((float) (num) * random () / (RAND_MAX + 1.0))
#endif
// Receive 0MQ string from socket and convert into C string
// Caller must free returned string. Returns NULL if the context
// is being terminated.
static char *
s_recv (void *socket) {
char buffer [256];
int size = zmq_recv (socket, buffer, 255, 0); //ZMQ_DONTWAIT);
if (size == -1)
return NULL;
if (size > 255)
size = 255;
buffer [size] = 0;
return strdup (buffer);
}
// Convert C string to 0MQ string and send to socket
static int
s_send (void *socket, char *string) {
int size = zmq_send (socket, string, strlen (string), 0);
return size;
}
// Sends string as 0MQ string, as multipart non-terminal
static int
s_sendmore (void *socket, char *string) {
int size = zmq_send (socket, string, strlen (string), ZMQ_SNDMORE);
return size;
}
// Receives all message parts from socket, prints neatly
//
static void
s_dump (void *socket)
{
puts ("----------------------------------------");
while (1) {
// Process all parts of the message
zmq_msg_t message;
zmq_msg_init (&message);
int size = zmq_msg_recv (&message, socket, 0);
// Dump the message as text or binary
char *data = (char*)zmq_msg_data (&message);
int is_text = 1;
int char_nbr;
for (char_nbr = 0; char_nbr < size; char_nbr++)
if ((unsigned char) data [char_nbr] < 32
|| (unsigned char) data [char_nbr] > 127)
is_text = 0;
printf ("[%03d] ", size);
for (char_nbr = 0; char_nbr < size; char_nbr++) {
if (is_text)
printf ("%c", data [char_nbr]);
else
printf ("%02X", (unsigned char) data [char_nbr]);
}
printf ("\n");
int64_t more; // Multipart detection
more = 0;
size_t more_size = sizeof (more);
zmq_getsockopt (socket, ZMQ_RCVMORE, &more, &more_size);
zmq_msg_close (&message);
if (!more)
break; // Last message part
}
}
// Set simple random printable identity on socket
//
static void
s_set_id (void *socket)
{
char identity [10];
sprintf (identity, "%04X-%04X", randof (0x10000), randof (0x10000));
zmq_setsockopt (socket, ZMQ_IDENTITY, identity, strlen (identity));
}
/*
// Sleep for a number of milliseconds
static void
s_sleep (int msecs)
{
#if (defined (WIN32))
Sleep (msecs);
#else
struct timespec t;
t.tv_sec = msecs / 1000;
t.tv_nsec = (msecs % 1000) * 1000000;
nanosleep (&t, NULL);
#endif
}
*/
// Return current system clock as milliseconds
static int64_t
s_clock (void)
{
#if (defined (WIN32))
SYSTEMTIME st;
GetSystemTime (&st);
return (int64_t) st.wSecond * 1000 + st.wMilliseconds;
#else
struct timeval tv;
gettimeofday (&tv, NULL);
return (int64_t) (tv.tv_sec * 1000 + tv.tv_usec / 1000);
#endif
}
// Print formatted string to stdout, prefixed by date/time and
// terminated with a newline.
/*
static void
s_console (const char *format, ...)
{
time_t curtime = time (NULL);
struct tm *loctime = localtime (&curtime);
char *formatted = (char*)malloc (20);
strftime (formatted, 20, "%y-%m-%d %H:%M:%S ", loctime);
printf ("%s", formatted);
free (formatted);
va_list argptr;
va_start (argptr, format);
vprintf (format, argptr);
va_end (argptr);
printf ("\n");
}
*/
#endif // __ZHELPERS_H_INCLUDED__

View File

@@ -1,107 +0,0 @@
#ifndef __PYX_HAVE_API__PyCafe
#define __PYX_HAVE_API__PyCafe
#include "Python.h"
static void (*__pyx_f_6PyCafe_py_cb_wrapper)(PVDataHolder, unsigned int, std::string) = 0;
#define py_cb_wrapper __pyx_f_6PyCafe_py_cb_wrapper
static void (*__pyx_f_6PyCafe_py_cb_ctrl_wrapper)(PVCtrlHolder, unsigned int, std::string) = 0;
#define py_cb_ctrl_wrapper __pyx_f_6PyCafe_py_cb_ctrl_wrapper
static void (*__pyx_f_6PyCafe_py_cb_handle_wrapper)(unsigned int) = 0;
#define py_cb_handle_wrapper __pyx_f_6PyCafe_py_cb_handle_wrapper
static void (*__pyx_f_6PyCafe_py_cb_handle_monid_wrapper)(unsigned int, unsigned long) = 0;
#define py_cb_handle_monid_wrapper __pyx_f_6PyCafe_py_cb_handle_monid_wrapper
#if !defined(__Pyx_PyIdentifier_FromString)
#if PY_MAJOR_VERSION < 3
#define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
#else
#define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
#endif
#endif
#ifndef __PYX_HAVE_RT_ImportModule
#define __PYX_HAVE_RT_ImportModule
static PyObject *__Pyx_ImportModule(const char *name) {
PyObject *py_name = 0;
PyObject *py_module = 0;
py_name = __Pyx_PyIdentifier_FromString(name);
if (!py_name)
goto bad;
py_module = PyImport_Import(py_name);
Py_DECREF(py_name);
return py_module;
bad:
Py_XDECREF(py_name);
return 0;
}
#endif
#ifndef __PYX_HAVE_RT_ImportFunction
#define __PYX_HAVE_RT_ImportFunction
static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
PyObject *d = 0;
PyObject *cobj = 0;
union {
void (*fp)(void);
void *p;
} tmp;
d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
if (!d)
goto bad;
cobj = PyDict_GetItemString(d, funcname);
if (!cobj) {
PyErr_Format(PyExc_ImportError,
"%.200s does not export expected C function %.200s",
PyModule_GetName(module), funcname);
goto bad;
}
#if PY_VERSION_HEX >= 0x02070000
if (!PyCapsule_IsValid(cobj, sig)) {
PyErr_Format(PyExc_TypeError,
"C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)",
PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
goto bad;
}
tmp.p = PyCapsule_GetPointer(cobj, sig);
#else
{const char *desc, *s1, *s2;
desc = (const char *)PyCObject_GetDesc(cobj);
if (!desc)
goto bad;
s1 = desc; s2 = sig;
while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
if (*s1 != *s2) {
PyErr_Format(PyExc_TypeError,
"C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)",
PyModule_GetName(module), funcname, sig, desc);
goto bad;
}
tmp.p = PyCObject_AsVoidPtr(cobj);}
#endif
*f = tmp.fp;
if (!(*f))
goto bad;
Py_DECREF(d);
return 0;
bad:
Py_XDECREF(d);
return -1;
}
#endif
static int import_PyCafe(void) {
PyObject *module = 0;
module = __Pyx_ImportModule("PyCafe");
if (!module) goto bad;
if (__Pyx_ImportFunction(module, "py_cb_wrapper", (void (**)(void))&__pyx_f_6PyCafe_py_cb_wrapper, "void (PVDataHolder, unsigned int, std::string)") < 0) goto bad;
if (__Pyx_ImportFunction(module, "py_cb_ctrl_wrapper", (void (**)(void))&__pyx_f_6PyCafe_py_cb_ctrl_wrapper, "void (PVCtrlHolder, unsigned int, std::string)") < 0) goto bad;
if (__Pyx_ImportFunction(module, "py_cb_handle_wrapper", (void (**)(void))&__pyx_f_6PyCafe_py_cb_handle_wrapper, "void (unsigned int)") < 0) goto bad;
if (__Pyx_ImportFunction(module, "py_cb_handle_monid_wrapper", (void (**)(void))&__pyx_f_6PyCafe_py_cb_handle_monid_wrapper, "void (unsigned int, unsigned long)") < 0) goto bad;
Py_DECREF(module); module = 0;
return 0;
bad:
Py_XDECREF(module);
return -1;
}
#endif /* !__PYX_HAVE_API__PyCafe */

View File

@@ -1,109 +0,0 @@
/* Generated by Cython 0.23.4 */
#ifndef __PYX_HAVE_API__PyCafe
#define __PYX_HAVE_API__PyCafe
#include "Python.h"
static void (*__pyx_api_f_6PyCafe_py_cb_wrapper)(PVDataHolder, unsigned int, std::string) = 0;
#define py_cb_wrapper __pyx_api_f_6PyCafe_py_cb_wrapper
static void (*__pyx_api_f_6PyCafe_py_cb_ctrl_wrapper)(PVCtrlHolder, unsigned int, std::string) = 0;
#define py_cb_ctrl_wrapper __pyx_api_f_6PyCafe_py_cb_ctrl_wrapper
static void (*__pyx_api_f_6PyCafe_py_cb_handle_wrapper)(unsigned int) = 0;
#define py_cb_handle_wrapper __pyx_api_f_6PyCafe_py_cb_handle_wrapper
static void (*__pyx_api_f_6PyCafe_py_cb_handle_monid_wrapper)(unsigned int, unsigned long) = 0;
#define py_cb_handle_monid_wrapper __pyx_api_f_6PyCafe_py_cb_handle_monid_wrapper
#if !defined(__Pyx_PyIdentifier_FromString)
#if PY_MAJOR_VERSION < 3
#define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
#else
#define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
#endif
#endif
#ifndef __PYX_HAVE_RT_ImportModule
#define __PYX_HAVE_RT_ImportModule
static PyObject *__Pyx_ImportModule(const char *name) {
PyObject *py_name = 0;
PyObject *py_module = 0;
py_name = __Pyx_PyIdentifier_FromString(name);
if (!py_name)
goto bad;
py_module = PyImport_Import(py_name);
Py_DECREF(py_name);
return py_module;
bad:
Py_XDECREF(py_name);
return 0;
}
#endif
#ifndef __PYX_HAVE_RT_ImportFunction
#define __PYX_HAVE_RT_ImportFunction
static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
PyObject *d = 0;
PyObject *cobj = 0;
union {
void (*fp)(void);
void *p;
} tmp;
d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
if (!d)
goto bad;
cobj = PyDict_GetItemString(d, funcname);
if (!cobj) {
PyErr_Format(PyExc_ImportError,
"%.200s does not export expected C function %.200s",
PyModule_GetName(module), funcname);
goto bad;
}
#if PY_VERSION_HEX >= 0x02070000
if (!PyCapsule_IsValid(cobj, sig)) {
PyErr_Format(PyExc_TypeError,
"C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)",
PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
goto bad;
}
tmp.p = PyCapsule_GetPointer(cobj, sig);
#else
{const char *desc, *s1, *s2;
desc = (const char *)PyCObject_GetDesc(cobj);
if (!desc)
goto bad;
s1 = desc; s2 = sig;
while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
if (*s1 != *s2) {
PyErr_Format(PyExc_TypeError,
"C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)",
PyModule_GetName(module), funcname, sig, desc);
goto bad;
}
tmp.p = PyCObject_AsVoidPtr(cobj);}
#endif
*f = tmp.fp;
if (!(*f))
goto bad;
Py_DECREF(d);
return 0;
bad:
Py_XDECREF(d);
return -1;
}
#endif
static int import_PyCafe(void) {
PyObject *module = 0;
module = __Pyx_ImportModule("PyCafe");
if (!module) goto bad;
if (__Pyx_ImportFunction(module, "py_cb_wrapper", (void (**)(void))&__pyx_api_f_6PyCafe_py_cb_wrapper, "void (PVDataHolder, unsigned int, std::string)") < 0) goto bad;
if (__Pyx_ImportFunction(module, "py_cb_ctrl_wrapper", (void (**)(void))&__pyx_api_f_6PyCafe_py_cb_ctrl_wrapper, "void (PVCtrlHolder, unsigned int, std::string)") < 0) goto bad;
if (__Pyx_ImportFunction(module, "py_cb_handle_wrapper", (void (**)(void))&__pyx_api_f_6PyCafe_py_cb_handle_wrapper, "void (unsigned int)") < 0) goto bad;
if (__Pyx_ImportFunction(module, "py_cb_handle_monid_wrapper", (void (**)(void))&__pyx_api_f_6PyCafe_py_cb_handle_monid_wrapper, "void (unsigned int, unsigned long)") < 0) goto bad;
Py_DECREF(module); module = 0;
return 0;
bad:
Py_XDECREF(module);
return -1;
}
#endif /* !__PYX_HAVE_API__PyCafe */

View File

@@ -1,115 +0,0 @@
/* Generated by Cython 0.23.4 */
#ifndef __PYX_HAVE_API__PyCafe
#define __PYX_HAVE_API__PyCafe
#include "Python.h"
static void (*__pyx_api_f_6PyCafe_py_cb_wrapper)(PVDataHolder, unsigned int, std::string) = 0;
#define py_cb_wrapper __pyx_api_f_6PyCafe_py_cb_wrapper
static void (*__pyx_api_f_6PyCafe_py_cb_ctrl_wrapper)(PVCtrlHolder, unsigned int, std::string) = 0;
#define py_cb_ctrl_wrapper __pyx_api_f_6PyCafe_py_cb_ctrl_wrapper
static void (*__pyx_api_f_6PyCafe_py_cb_handle_wrapper)(unsigned int) = 0;
#define py_cb_handle_wrapper __pyx_api_f_6PyCafe_py_cb_handle_wrapper
static void (*__pyx_api_f_6PyCafe_py_cb_handle_monid_wrapper)(unsigned int, unsigned long) = 0;
#define py_cb_handle_monid_wrapper __pyx_api_f_6PyCafe_py_cb_handle_monid_wrapper
static void (*__pyx_api_f_6PyCafe_py_cb_handle_get_wrapper)(unsigned int) = 0;
#define py_cb_handle_get_wrapper __pyx_api_f_6PyCafe_py_cb_handle_get_wrapper
static void (*__pyx_api_f_6PyCafe_py_cb_handle_put_wrapper)(unsigned int) = 0;
#define py_cb_handle_put_wrapper __pyx_api_f_6PyCafe_py_cb_handle_put_wrapper
#if !defined(__Pyx_PyIdentifier_FromString)
#if PY_MAJOR_VERSION < 3
#define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
#else
#define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
#endif
#endif
#ifndef __PYX_HAVE_RT_ImportModule
#define __PYX_HAVE_RT_ImportModule
static PyObject *__Pyx_ImportModule(const char *name) {
PyObject *py_name = 0;
PyObject *py_module = 0;
py_name = __Pyx_PyIdentifier_FromString(name);
if (!py_name)
goto bad;
py_module = PyImport_Import(py_name);
Py_DECREF(py_name);
return py_module;
bad:
Py_XDECREF(py_name);
return 0;
}
#endif
#ifndef __PYX_HAVE_RT_ImportFunction
#define __PYX_HAVE_RT_ImportFunction
static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
PyObject *d = 0;
PyObject *cobj = 0;
union {
void (*fp)(void);
void *p;
} tmp;
d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
if (!d)
goto bad;
cobj = PyDict_GetItemString(d, funcname);
if (!cobj) {
PyErr_Format(PyExc_ImportError,
"%.200s does not export expected C function %.200s",
PyModule_GetName(module), funcname);
goto bad;
}
#if PY_VERSION_HEX >= 0x02070000
if (!PyCapsule_IsValid(cobj, sig)) {
PyErr_Format(PyExc_TypeError,
"C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)",
PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
goto bad;
}
tmp.p = PyCapsule_GetPointer(cobj, sig);
#else
{const char *desc, *s1, *s2;
desc = (const char *)PyCObject_GetDesc(cobj);
if (!desc)
goto bad;
s1 = desc; s2 = sig;
while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
if (*s1 != *s2) {
PyErr_Format(PyExc_TypeError,
"C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)",
PyModule_GetName(module), funcname, sig, desc);
goto bad;
}
tmp.p = PyCObject_AsVoidPtr(cobj);}
#endif
*f = tmp.fp;
if (!(*f))
goto bad;
Py_DECREF(d);
return 0;
bad:
Py_XDECREF(d);
return -1;
}
#endif
static int import_PyCafe(void) {
PyObject *module = 0;
module = __Pyx_ImportModule("PyCafe");
if (!module) goto bad;
if (__Pyx_ImportFunction(module, "py_cb_wrapper", (void (**)(void))&__pyx_api_f_6PyCafe_py_cb_wrapper, "void (PVDataHolder, unsigned int, std::string)") < 0) goto bad;
if (__Pyx_ImportFunction(module, "py_cb_ctrl_wrapper", (void (**)(void))&__pyx_api_f_6PyCafe_py_cb_ctrl_wrapper, "void (PVCtrlHolder, unsigned int, std::string)") < 0) goto bad;
if (__Pyx_ImportFunction(module, "py_cb_handle_wrapper", (void (**)(void))&__pyx_api_f_6PyCafe_py_cb_handle_wrapper, "void (unsigned int)") < 0) goto bad;
if (__Pyx_ImportFunction(module, "py_cb_handle_monid_wrapper", (void (**)(void))&__pyx_api_f_6PyCafe_py_cb_handle_monid_wrapper, "void (unsigned int, unsigned long)") < 0) goto bad;
if (__Pyx_ImportFunction(module, "py_cb_handle_get_wrapper", (void (**)(void))&__pyx_api_f_6PyCafe_py_cb_handle_get_wrapper, "void (unsigned int)") < 0) goto bad;
if (__Pyx_ImportFunction(module, "py_cb_handle_put_wrapper", (void (**)(void))&__pyx_api_f_6PyCafe_py_cb_handle_put_wrapper, "void (unsigned int)") < 0) goto bad;
Py_DECREF(module); module = 0;
return 0;
bad:
Py_XDECREF(module);
return -1;
}
#endif /* !__PYX_HAVE_API__PyCafe */

View File

@@ -1,775 +0,0 @@
#ifndef ZHELPERS_H
#define ZHELPERS_H
#include <zmq.h>
/*
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
*/
#include <assert.h>
#include <signal.h>
#if HAVE_JSON
#include <json/json.h>
#endif
#include <cafeService.h>
unsigned short inDumpFlag=2;
string hashIs="";
string hashOriginal="";
unsigned short hashOriginalFlag=0;
bool fillBSPV=false;
vector<std::string> bsPV;
// Receives all message parts from socket, prints neatly
//
static void
s_dump (DBPMKeeper & dbpm)
{
if (inDumpFlag==1) {
cout << "zeroMQ socket is busy " << endl;
cout << "waiting for zmq timeout " << endl;
}
puts ("//START----------------------------------------//");
void * socket = dbpm.subscriber;
#if HAVE_JSON
Json::Value parsedFromString;
Json::Reader reader;
bool parsingSuccessful;
Json::FastWriter fastWriter;
#endif
int64_t more; // Multipart detection
more = 0;
size_t more_size = sizeof (more);
int bsPVIdx=-1;
dbpm.status=ICAFE_NORMAL;
int nZeroSize=0;
cout << "df = " << inDumpFlag << endl;
while (inDumpFlag==1) {
cout << "df/ = " << inDumpFlag << endl;
cout << " sleeping " << endl;
//sleep(1);
}
int subMessage=0;
int nSequentialHeader=0;
while (1) {
inDumpFlag=1;
//puts ("//WHILE LOOP ----------------------------------------//");
//cout << "subMessage " << subMessage << endl;
// Process all parts of the message
zmq_msg_t message;
zmq_msg_init (&message);
size_t size = zmq_msg_recv (&message, socket, 0);
//puts ("//MESSAGE RECEIVED ----------------------------------------//");
if (size == -1) {
cout << " Error is " << zmq_errno() << " " << zmq_strerror(zmq_errno()) << endl;
//Resource unavailable means that there is nothing to read now
zmq_getsockopt (socket, ZMQ_RCVMORE, &more, &more_size);
//cout << "message mulipart --> more == " << more << endl;
zmq_msg_close (&message);
//if (!more) {
// dbpm.status=ERRNO_EAGAIN; //ICAFE_ERRNO_BASE +zmq_errno() ;
// cout << "EARLY BREAK subMessage total: " << subMessage << endl;
// puts ("//------------------------------------END-------------------------------------//");
// break; // Last message
// }
dbpm.status=ICAFE_ERRNO_BASE+zmq_errno() ;
break;
}
else if (size == 0) {
////cout << " Data of Zero SIZE for submessage " << subMessage << endl;
++nZeroSize;
//zmq_msg_close (&message);
//dbpm.status=ECAFE_NODATA;
//break;
//Comes in pairs; one for val one for timestamp
if (nZeroSize%2==1) {
++bsPVIdx;
if (bsPVIdx >0) {
cout << bsPV[bsPVIdx] << endl;
}
}
++subMessage;
//continue;
}
else {
// Dump the message as text or binary
char *data = (char*)zmq_msg_data (&message);
int is_text = 1;
int char_nbr;
//char cmd[5000]="";
for (char_nbr = 0; char_nbr < size; char_nbr++)
if ((unsigned char) data [char_nbr] < 32
|| (unsigned char) data [char_nbr] > 127)
is_text = 0;
//TExt is two header files
//non-text size=8 is X1, Y1, Q1
//non-text size=2 is -VALID
//non-text size=16 is timestamp
/*
printf (" SIZE [%03d] ", size);
if (is_text) {
cout << " TEXT +++++++++++ " << endl;
}
else {
cout << " NOT TEXT +++++++++++ " << endl;
}
for (char_nbr = 0; char_nbr < size; char_nbr++) {
if (is_text) {
printf ("%c", data [char_nbr]);
//snprintf(cmd + strlen(cmd), (sizeof cmd) - strlen(cmd), "%c", data [char_nbr]);
}
else {
printf ("%02X", (unsigned char) data [char_nbr]);
//printf ("%d", (unsigned char) data [char_nbr]);
//snprintf(cmd + strlen(cmd), (sizeof cmd) - strlen(cmd), "%d", (unsigned char)data [char_nbr]);
//if (data[0] == '\x7') {
// cout << " little endian " << endl;
//}
//else {
// cout << "big endian " << endl;
//}
}
}//for
printf ("\n");
*/
if (is_text) {
parsingSuccessful=reader.parse(data, parsedFromString);
if (parsingSuccessful) {
//Json::StyledWriter styledWriter;
//cout << "STYLED: --------------------------------" << endl;
//cout << styledWriter.write(parsedFromString) << endl;
//cout << "----------------------------------" << endl;
//cout << parsedFromString["htype"] << endl;
if (fastWriter.write(parsedFromString["htype"]).find("bsr_m-1.1") != std::string::npos) {
++nSequentialHeader;
hashIs=parsedFromString["hash"].asString();
if (hashOriginalFlag==0) {
cout << hashIs << " is different to original/// " << hashOriginal << endl;
hashOriginal=hashIs;
++hashOriginalFlag;
fillBSPV=true;
}
if (hashOriginal.compare(hashIs)!=0) {
cout << hashIs << " is different to original " << hashOriginal << endl;
hashOriginal=hashIs;
++hashOriginalFlag;
fillBSPV=true;
}
cout << "p id " << parsedFromString["pulse_id"].asUInt64() << endl;
dbpm.setPulse_id(parsedFromString["pulse_id"].asUInt64());
//Reset values as a change of hash signifies that data from two pulse ids
//is being sent in one zeromq messages
subMessage=0;
bsPVIdx=-1;
dbpm.status=ICAFE_NORMAL;
nZeroSize=0;
/*
cout << "(1)++++++++++++++++++++++++++++++++++++++++MAIN++++++++++++++++++++++++++++++++++++++++++" << endl;
cout << "hash " << parsedFromString["hash"] << endl;
cout << "p id " << parsedFromString["pulse_id"].asUInt64() << endl;
cout << "g ts " << parsedFromString["global_timestamp"] << endl;
cout << "comp " << parsedFromString["dh_compression"] << endl;
cout << "sec " << parsedFromString["global_timestamp"]["sec"].asUInt() << endl;
cout << "nsec " << parsedFromString["global_timestamp"]["ns"].asUInt() << endl;
*/
}
else if (fastWriter.write(parsedFromString["htype"]).find("bsr_d-1.1") != std::string::npos) {
++nSequentialHeader;
if (fillBSPV) {
bsPV.clear();
bsPV.reserve(dbpm.getNPV());
/*
if (dbpm.getNPV() != parsedFromString["channels"].size() ) {
cout << "No of CONFIGURED BPMS: " << dbpm.getNPV()
<< " is diffent to that being channeled " << parsedFromString["channels"].size() << endl;
bsPV.reserve( max( (size_t) parsedFromString["channels"].size(),dbpm.getNPV()) );
}
*/
//cout << "chan " << parsedFromString["channels"] << endl;
cout << "No of channels " << parsedFromString["channels"].size() << endl;
cout << "(2)++++++++++++++++++++++++++++++++++++++++HEADER++++++++++++++++++++++++++++++++++++++++++" << endl;
for (Json::Value::ArrayIndex i=0; i < parsedFromString["channels"].size(); ++ i) {
//cout << "name " << parsedFromString["channels"][i]["name"].asString() << endl;
//cout << "enco " << parsedFromString["channels"][i]["encoding"] << endl;
//cout << "type " << parsedFromString["channels"][i]["type"] << endl;
bsPV.push_back( (parsedFromString["channels"][i]["name"]).asString());
}
/*
cout << "LIST OF PVS " << endl;
for (size_t i=0; i< bsPV.size(); ++i ) {
cout << i << " // " << bsPV[i].c_str() << " " << endl;
}
cout << endl;
*/
//cout << "NEW FILL: size of bsPV " << bsPV.size() << endl;
fillBSPV=false;
}
}
else {
cout << "HEADER IS SOMETHING ELSE: " << endl;
cout << parsedFromString["htype"] << endl;
exit(1);
}
cout << "/----------------------------------/" << endl;
}
}
if (nSequentialHeader >3 && is_text==1) {
cout << "WARNING: ZEROMQ SUB-MESSAGE DOES NOT CLOSE " << endl;
cout << "WARNING: FORCING ZMQ_MSG_CLOSE " << endl;
cout << "No of sequential headers " << nSequentialHeader << endl;
cout << "is_text " << is_text << endl;
//zmq_getsockopt (socket, ZMQ_RCVMORE, &more, &more_size);
//zmq_msg_close (&message);
//cout << "message mulipart --> more == " << more << endl;
//nSequentialHeader=0;
//cannot break; results in seqmentation fault
//if (!more) {
// dbpm.status=ERRNO_EAGAIN; //ICAFE_ERRNO_BASE +zmq_errno() ;
// cout << "EARLY BREAK subMessage total: " << subMessage << endl;
// puts ("//------------------------------------END-------------------------------------//");
// break; // Last message
//}
}
union foo
{
char c[sizeof(double)];
double d;
} bar;
//SIZE 16 is timestamp
//SIZE 8 is x,y,Q
//SIZE 2 is valid
if (subMessage > 1430) {
cout << " SIZE " << size << " subMessage " << subMessage << endl;
cout << "size of bsPV " << bsPV.size() << endl;
}
if (subMessage > 0 && subMessage%2 ==0) {
if (size==8) {
// big endian
for (char_nbr = 0; char_nbr < size; char_nbr++) {
bar.c[char_nbr]=data[size-1-char_nbr]; // THis works for big engian
}
// little endian
//for (char_nbr = 0; char_nbr < size; char_nbr++) {
// bar.c[char_nbr]=data[char_nbr];
//}
//cout << "UNION D " << bar.d << endl;
double v; // = (double*) data;
memcpy(&v, bar.c, sizeof(double));
//cout << " double val " << v << endl;
//This is BPM Data - value
++bsPVIdx;
if (dbpm.getPVIdx(bsPV[bsPVIdx]) <0) {
cout << " WARNING--> THIS CHANNEL WAS NOT REQUESTED IN CONFIGURATION FILE " << endl;
cout << " bsPV index = " << bsPVIdx << endl;
cout << " pv from bs = " << bsPV[bsPVIdx] << endl;
cout << " Illegal index Value =" << dbpm.getPVIdx(bsPV[bsPVIdx]) << endl;
cout << " SKIPPING THIS BPM... " << endl;
continue;
}
dbpm.pvd[dbpm.getPVIdx(bsPV[bsPVIdx])].set(v);
dbpm.pvd[dbpm.getPVIdx(bsPV[bsPVIdx])].setBSStatus(ICAFE_NORMAL);
//cout << " readback of value that was set = " << dbpm.pvd[dbpm.getPVIdx(bsPV[bsPVIdx])].val[0].d << endl;
}
else if (size==2) {
unsigned short iv;
//memcpy(&iv, cmd, size);
//big endian
for (size_t n=0; n < size; n++) {
iv = (iv << 8) + data[n];
}
//little endian
//for (size_t n = size; n >= 0; n--) {
// iv = (iv << 8) + data[n];
//}
//This is BPM Data - VALID/INVALID
//cout << "uint val (1 means valid) " << iv << endl;
/*
std::copy(data, data + 32, reinterpret_cast<char *>(&i));
cout << "uint16 val " << i << endl;
std::copy(data, data + 8, reinterpret_cast<char *>(&i));
cout << "uint16 val " << i << endl;
std::copy(data, data + 4, reinterpret_cast<char *>(&i));
cout << "uint16 val " << i << endl;
std::copy(data, data + 2, reinterpret_cast<char *>(&i));
cout << "uint16 val " << i << endl;
std::copy(data, data + 1, reinterpret_cast<char *>(&i));
cout << "uint16 val " << i << endl;
*/
++bsPVIdx;
if (dbpm.getPVIdx(bsPV[bsPVIdx]) <0) {
cout << " WARNING--> THIS CHANNEL WAS NOT REQUESTED IN CONFIGURATION FILE " << endl;
cout << " bsPV index = " << bsPVIdx << endl;
cout << " pv from bs = " << bsPV[bsPVIdx] << endl;
cout << " Illegal index Value =" << dbpm.getPVIdx(bsPV[bsPVIdx]) << endl;
cout << " SKIPPING THIS BPM ENUM TYPE " << endl;
continue;
}
if (iv==1) {
dbpm.pvd[dbpm.getPVIdx(bsPV[bsPVIdx])].set((std::string) "VALID");
}
else {
dbpm.pvd[dbpm.getPVIdx(bsPV[bsPVIdx])].set((std::string) "INVALID");
}
//cout << "value DBPM = " << dbpm.pvd[dbpm.getPVIdx(bsPV[bsPVIdx])].val[0].str << endl;
dbpm.pvd[dbpm.getPVIdx(bsPV[bsPVIdx])].setBSStatus(ICAFE_NORMAL);
}
}
else if (subMessage > 1 && subMessage%2 ==1) {
//cout << "timestamp " << endl;
unsigned int a,b;
for (size_t n=0; n < size/2; n++) {
a = (a << 8) + data[n];
}
for (size_t n=size/2; n < size; n++) {
b = (b << 8) + data[n];
}
//cout << "a " << a << " b " << b << endl;
if (dbpm.getPVIdx(bsPV[bsPVIdx]) <0) {
cout << " WARNING--> THIS CHANNEL WAS NOT REQUESTED IN CONFIGURATION FILE " << endl;
cout << " bsPV index = " << bsPVIdx << endl;
cout << " pv from bs = " << bsPV[bsPVIdx] << endl;
cout << " Illegal index Value =" << dbpm.getPVIdx(bsPV[bsPVIdx]) << endl;
cout << " SKIPPING THIS BPM TIMESTAMP " << endl;
continue;
}
dbpm.pvd[dbpm.getPVIdx(bsPV[bsPVIdx])].ts.secPastEpoch=a;
dbpm.pvd[dbpm.getPVIdx(bsPV[bsPVIdx])].ts.nsec=b;
}
//cout << "subMessage above: " << subMessage << endl;
++subMessage;
} //ifelse
zmq_getsockopt (socket, ZMQ_RCVMORE, &more, &more_size);
zmq_msg_close (&message);
//cout << "value of more " << more << endl;
if (!more) {
dbpm.status=ICAFE_NORMAL;
cout << "subMessage total: " << subMessage << endl;
cout << " of which 0 size: " << nZeroSize << endl;
cout << " Percentage good: " << (subMessage-nZeroSize-2)*100/(subMessage-2);
puts ("//------------------------------------END-------------------------------------//");
break; // Last message part
}
} //while 1
inDumpFlag=0;
if (subMessage>2) {
dbpm.status=ICAFE_NORMAL;
cout << "subMessage total: " << subMessage << endl;
cout << " of which 0 size: " << nZeroSize << endl;
cout << " Percentage good: " << (subMessage-nZeroSize-2)*100/(subMessage-2);
puts ("//------------------------------------END-------------------------------------//");
}
cout << "end of loop " << endl;
return;
}
// Receives all message parts from socket, prints neatly
//
static void
s_dump (void *socket)
{
puts ("//START----------------------------------------//");
int subMessage=0;
#if HAVE_JSON
Json::Value parsedFromString;
Json::Reader reader;
bool parsingSuccessful;
Json::FastWriter fastWriter;
#endif
while (1) {
// Process all parts of the message
zmq_msg_t message;
zmq_msg_init (&message);
size_t size = zmq_msg_recv (&message, socket, 0);
if (size == -1) {
cout << " Error is " << zmq_errno() << " " << zmq_strerror(zmq_errno()) << endl;
//Resource unavailable means that there is nothing to read now
zmq_msg_close (&message);
break;
}
else {
// Dump the message as text or binary
char *data = (char*)zmq_msg_data (&message);
int is_text = 1;
int char_nbr;
//char cmd[5000]="";
for (char_nbr = 0; char_nbr < size; char_nbr++)
if ((unsigned char) data [char_nbr] < 32
|| (unsigned char) data [char_nbr] > 127)
is_text = 0;
printf ("[%03d] ", size);
for (char_nbr = 0; char_nbr < size; char_nbr++) {
if (is_text) {
printf ("%c", data [char_nbr]);
//snprintf(cmd + strlen(cmd), (sizeof cmd) - strlen(cmd), "%c", data [char_nbr]);
}
else {
printf ("%02X", (unsigned char) data [char_nbr]);
//printf ("%d", (unsigned char) data [char_nbr]);
//snprintf(cmd + strlen(cmd), (sizeof cmd) - strlen(cmd), "%d", (unsigned char)data [char_nbr]);
//if (data[0] == '\x7') {
// cout << " little endian " << endl;
//}
//else {
// cout << "big endian " << endl;
//}
}
}//for
printf ("\n");
/*
for (char_nbr = 0; char_nbr < size; char_nbr++) {
if (is_text) {
printf ("%c", data [char_nbr]);
snprintf(cmd + strlen(cmd), (sizeof cmd) - strlen(cmd), "%c", data [char_nbr]);
}
else {
printf ("%02X", (unsigned char) data [char_nbr]);
snprintf(cmd + strlen(cmd), (sizeof cmd) - strlen(cmd), "%02X", (unsigned char)data [size-1-char_nbr]);
}
}
*/
if (is_text) {
parsingSuccessful=reader.parse(data, parsedFromString);
if (parsingSuccessful) {
Json::StyledWriter styledWriter;
cout << "STYLED: --------------------------------" << endl;
cout << styledWriter.write(parsedFromString) << endl;
cout << "----------------------------------" << endl;
cout << parsedFromString["htype"] << endl;
if (fastWriter.write(parsedFromString["htype"]).find("bsr_m-1.1") != std::string::npos) {
cout << "hash " << parsedFromString["hash"] << endl;
cout << "p id " << parsedFromString["pulse_id"].asUInt64() << endl;
cout << "g ts " << parsedFromString["global_timestamp"] << endl;
cout << "comp " << parsedFromString["dh_compression"] << endl;
cout << "sec " << parsedFromString["global_timestamp"]["sec"].asUInt() << endl;
cout << "nsec " << parsedFromString["global_timestamp"]["ns"].asUInt() << endl;
}
else if (fastWriter.write(parsedFromString["htype"]).find("bsr_d-1.1") != std::string::npos) {
cout << "chan " << parsedFromString["channels"] << endl;
for (Json::Value::ArrayIndex i=0; i < parsedFromString["channels"].size(); ++ i) {
cout << "name " << parsedFromString["channels"][i]["name"] << endl;
cout << "enco " << parsedFromString["channels"][i]["encoding"] << endl;
cout << "type " << parsedFromString["channels"][i]["type"] << endl;
}
}
cout << "----------------------------------" << endl;
}
}
union foo
{
char c[sizeof(double)];
double d;
} bar;
if (subMessage > 0 && subMessage%2 ==0) {
if (size==8) {
// big endian
for (char_nbr = 0; char_nbr < size; char_nbr++) {
bar.c[char_nbr]=data[size-1-char_nbr]; // THis works for big engian
}
// little endian
//for (char_nbr = 0; char_nbr < size; char_nbr++) {
// bar.c[char_nbr]=data[char_nbr];
//}
cout << "UNION D " << bar.d << endl;
double v; // = (double*) data;
memcpy(&v, bar.c, sizeof(double));
cout << "double val " << v << endl;
}
else if (size==2) {
unsigned short i;
//memcpy(&i, cmd, size);
//big endian
for (size_t n=0; n < size; n++) {
i = (i << 8) + data[n];
}
//little endian
//for (size_t n = size; n >= 0; n--) {
// i = (i << 8) + data[n];
//}
cout << "uint val " << i << endl;
/*
std::copy(data, data + 32, reinterpret_cast<char *>(&i));
cout << "uint16 val " << i << endl;
std::copy(data, data + 8, reinterpret_cast<char *>(&i));
cout << "uint16 val " << i << endl;
std::copy(data, data + 4, reinterpret_cast<char *>(&i));
cout << "uint16 val " << i << endl;
std::copy(data, data + 2, reinterpret_cast<char *>(&i));
cout << "uint16 val " << i << endl;
std::copy(data, data + 1, reinterpret_cast<char *>(&i));
cout << "uint16 val " << i << endl;
*/
}
}
else if (subMessage > 1 && subMessage%2 ==1) {
cout << "timestamp " << endl;
unsigned int a,b;
for (size_t n=0; n < size/2; n++) {
a = (a << 8) + data[n];
}
for (size_t n=size/2; n < size; n++) {
b = (b << 8) + data[n];
}
cout << "a " << a << " b " << b << endl;
}
++subMessage;
} //ifelse
int64_t more; // Multipart detection
more = 0;
size_t more_size = sizeof (more);
zmq_getsockopt (socket, ZMQ_RCVMORE, &more, &more_size);
zmq_msg_close (&message);
if (!more) {
puts ("//END----------------------------------------//");
break; // Last message part
}
} //while 1
}
#endif // ZHELPERS_H

View File

@@ -1,830 +0,0 @@
/* =====================================================================
zhelpers.h
Helper header file for example applications.
=====================================================================
*/
#ifndef __ZHELPERS_H_INCLUDED__
#define __ZHELPERS_H_INCLUDED__
#if HAVE_ZEROMQ
// Include a bunch of headers that we will need in the examples
#include <zmq.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#if (defined (WIN32))
# include <time.h>
#else
# include <sys/time.h>
#endif
#include <assert.h>
#include <signal.h>
// Version checking, and patch up missing constants to match 2.1
#if ZMQ_VERSION_MAJOR == 2
# error "Please upgrade to ZeroMQ/3.2 for these examples"
#endif
// Provide random number from 0..(num-1)
#if (defined (WIN32))
# define randof(num) (int) ((float) (num) * rand () / (RAND_MAX + 1.0))
#else
# define randof(num) (int) ((float) (num) * random () / (RAND_MAX + 1.0))
#endif
#if HAVE_JSON
#include <json/json.h>
#endif
#include <cafeService.h>
unsigned short inDumpFlag=2;
string hashIs="";
string hashOriginal="";
unsigned short hashOriginalFlag=0;
bool fillBSPV=false;
vector<std::string> bsPV;
// Receive 0MQ string from socket and convert into C string
// Caller must free returned string. Returns NULL if the context
// is being terminated.
static char *
s_recv (void *socket) {
char buffer [4096];
int size = zmq_recv (socket, buffer, 4096, 0); //ZMQ_DONTWAIT);
if (size == -1)
return NULL;
if (size > 4096)
size = 4096;
buffer [size] = 0;
return strdup (buffer);
}
// Convert C string to 0MQ string and send to socket
static int
s_send (void *socket, char *string) {
int size = zmq_send (socket, string, strlen (string), 0);
return size;
}
// Sends string as 0MQ string, as multipart non-terminal
static int
s_sendmore (void *socket, char *string) {
int size = zmq_send (socket, string, strlen (string), ZMQ_SNDMORE);
return size;
}
// Receives all message parts from socket, prints neatly
//
static void
s_dump (DBPMKeeper & dbpm)
{
if (inDumpFlag==1) {
cout << "zeroMQ socket is busy " << endl;
cout << "waiting got zmq timeout " << endl;
}
puts ("//START----------------------------------------//");
void * socket = dbpm.subscriber;
#if HAVE_JSON
Json::Value parsedFromString;
Json::Reader reader;
bool parsingSuccessful;
Json::FastWriter fastWriter;
#endif
int64_t more; // Multipart detection
more = 0;
size_t more_size = sizeof (more);
int bsPVIdx=-1;
dbpm.status=ICAFE_NORMAL;
int nZeroSize=0;
cout << "df = " << inDumpFlag << endl;
while (inDumpFlag==1) {
cout << "df/ = " << inDumpFlag << endl;
cout << " sleeping " << endl;
sleep(1);
}
int subMessage=0;
int nSequentialHeader=0;
while (1) {
inDumpFlag=1;
// puts ("//WHILE LOOP ----------------------------------------//");
//cout << "subMessage " << subMessage << endl;
// Process all parts of the message
zmq_msg_t message;
zmq_msg_init (&message);
size_t size = zmq_msg_recv (&message, socket, 0);
//puts ("//MESSAGE RECEIVED ----------------------------------------//");
if (size == -1) {
cout << " Error is " << zmq_errno() << " " << zmq_strerror(zmq_errno()) << endl;
//Resource unavailable means that there is nothing to read now
zmq_msg_close (&message);
dbpm.status=ICAFE_LINUX_ERROR+zmq_errno() ;
break;
}
else if (size == 0) {
//cout << " Data of Zero SIZE for submessage " << subMessage << endl;
++nZeroSize;
//zmq_msg_close (&message);
//dbpm.status=ECAFE_NODATA;
//break;
//Comes in pairs; one for val one for timestamp
if (nZeroSize%2==1) {
++bsPVIdx;
// cout << " pv with zero size: " << bsPV[bsPVIdx] << endl;
}
++subMessage;
continue;
}
else {
// Dump the message as text or binary
char *data = (char*)zmq_msg_data (&message);
int is_text = 1;
int char_nbr;
//char cmd[5000]="";
for (char_nbr = 0; char_nbr < size; char_nbr++)
if ((unsigned char) data [char_nbr] < 32
|| (unsigned char) data [char_nbr] > 127)
is_text = 0;
// printf (" SIZE [%03d] ", size);
/*
if (is_text) {
cout << " TEXT +++++++++++ " << endl;
}
else {
cout << " NOT TEXT +++++++++++ " << endl;
}
for (char_nbr = 0; char_nbr < size; char_nbr++) {
if (is_text) {
printf ("%c", data [char_nbr]);
//snprintf(cmd + strlen(cmd), (sizeof cmd) - strlen(cmd), "%c", data [char_nbr]);
}
else {
printf ("%02X", (unsigned char) data [char_nbr]);
//printf ("%d", (unsigned char) data [char_nbr]);
//snprintf(cmd + strlen(cmd), (sizeof cmd) - strlen(cmd), "%d", (unsigned char)data [char_nbr]);
//if (data[0] == '\x7') {
// cout << " little endian " << endl;
//}
//else {
// cout << "big endian " << endl;
//}
}
}//for
printf ("\n");
*/
if (is_text) {
parsingSuccessful=reader.parse(data, parsedFromString);
if (parsingSuccessful) {
Json::StyledWriter styledWriter;
//cout << "STYLED: --------------------------------" << endl;
//cout << styledWriter.write(parsedFromString) << endl;
//cout << "----------------------------------" << endl;
cout << parsedFromString["htype"] << endl;
if (fastWriter.write(parsedFromString["htype"]).find("bsr_m-1.1") != std::string::npos) {
++nSequentialHeader;
hashIs=parsedFromString["hash"].asString();
if (hashOriginalFlag<2) {
cout << hashIs << " is different to original/// " << hashOriginal << endl;
hashOriginal=hashIs;
++hashOriginalFlag;
fillBSPV=true;
}
if (hashOriginal.compare(hashIs)!=0) {
cout << hashIs << " is different to original " << hashOriginal << endl;
fillBSPV=true;
}
cout << "p id " << parsedFromString["pulse_id"].asUInt64() << endl;
//Reset values as a change of hash signifies that data from two pulse ids
//is being sent in one zeromq messages
subMessage=0;
bsPVIdx=-1;
dbpm.status=ICAFE_NORMAL;
nZeroSize=0;
/*
cout << "(1)++++++++++++++++++++++++++++++++++++++++MAIN++++++++++++++++++++++++++++++++++++++++++" << endl;
cout << "hash " << parsedFromString["hash"] << endl;
cout << "p id " << parsedFromString["pulse_id"].asUInt64() << endl;
cout << "g ts " << parsedFromString["global_timestamp"] << endl;
cout << "comp " << parsedFromString["dh_compression"] << endl;
cout << "sec " << parsedFromString["global_timestamp"]["sec"].asUInt() << endl;
cout << "nsec " << parsedFromString["global_timestamp"]["ns"].asUInt() << endl;
*/
}
else if (fastWriter.write(parsedFromString["htype"]).find("bsr_d-1.1") != std::string::npos) {
//if (fillBSPV) {
bsPV.clear();
bsPV.reserve(dbpm.getNPV());
/*
if (dbpm.getNPV() != parsedFromString["channels"].size() ) {
cout << "No of CONFIGURED BPMS: " << dbpm.getNPV()
<< " is diffent to that being channeled " << parsedFromString["channels"].size() << endl;
bsPV.reserve( max( (size_t) parsedFromString["channels"].size(),dbpm.getNPV()) );
}
*/
//cout << "chan " << parsedFromString["channels"] << endl;
cout << "No of channels " << parsedFromString["channels"].size() << endl;
cout << "(2)++++++++++++++++++++++++++++++++++++++++HEADER++++++++++++++++++++++++++++++++++++++++++" << endl;
for (Json::Value::ArrayIndex i=0; i < parsedFromString["channels"].size(); ++ i) {
//cout << "name " << parsedFromString["channels"][i]["name"].asString() << endl;
//cout << "enco " << parsedFromString["channels"][i]["encoding"] << endl;
//cout << "type " << parsedFromString["channels"][i]["type"] << endl;
bsPV.push_back( (parsedFromString["channels"][i]["name"]).asString());
}
/*
cout << "LIST OF PVS " << endl;
for (size_t i=0; i< bsPV.size(); ++i ) {
cout << i << " // " << bsPV[i].c_str() << " " << endl;
}
cout << endl;
*/
//cout << "NEW FILL: size of bsPV " << bsPV.size() << endl;
fillBSPV=false;
//}
}
else {
cout << "HEADER IS SOMETHING ELSE: " << endl;
cout << parsedFromString["htype"] << endl;
exit(1);
}
//cout << "----------------------------------" << endl;
}
}
if (nSequentialHeader >5) {
cout << "WARNING: ZEROMQ SUB-MESSAGE DOES NOT CLOSE " << endl;
cout << "WARNING: FORCING CLOSE AND BREAKING FROM LOOP " << endl;
zmq_getsockopt (socket, ZMQ_RCVMORE, &more, &more_size);
zmq_msg_close (&message);
cout << "message mulipart --> more == " << more << endl;
dbpm.status=LINUX_EAGAIN; //ICAFE_LINUX_ERROR +zmq_errno() ;
//break;
}
union foo
{
char c[sizeof(double)];
double d;
} bar;
//SIZE 16 is timestamp
//SIZE 8 is x,y,Q
//SIZE 2 is valid
if (subMessage > 1430) {
cout << " SIZE " << size << " subMessage " << subMessage << endl;
cout << "size of bsPV " << bsPV.size() << endl;
}
if (subMessage > 0 && subMessage%2 ==0) {
if (size==8) {
// big endian
for (char_nbr = 0; char_nbr < size; char_nbr++) {
bar.c[char_nbr]=data[size-1-char_nbr]; // THis works for big engian
}
// little endian
//for (char_nbr = 0; char_nbr < size; char_nbr++) {
// bar.c[char_nbr]=data[char_nbr];
//}
//cout << "UNION D " << bar.d << endl;
double v; // = (double*) data;
memcpy(&v, bar.c, sizeof(double));
//cout << " double val " << v << endl;
//This is BPM Data - value
++bsPVIdx;
if (dbpm.getPVIdx(bsPV[bsPVIdx]) <0) {
cout << " WARNING--> THIS CHANNEL WAS NOT REQUESTED IN CONFIGURATION FILE " << endl;
cout << " bsPV index = " << bsPVIdx << endl;
cout << " pv from bs = " << bsPV[bsPVIdx] << endl;
cout << " Illegal index Value =" << dbpm.getPVIdx(bsPV[bsPVIdx]) << endl;
cout << " SKIPPING THIS BPM... " << endl;
continue;
}
dbpm.pvd[dbpm.getPVIdx(bsPV[bsPVIdx])].set(v);
//cout << " readback of value that was set = " << dbpm.pvd[dbpm.getPVIdx(bsPV[bsPVIdx])].val[0].d << endl;
}
else if (size==2) {
unsigned short iv;
//memcpy(&iv, cmd, size);
//big endian
for (size_t n=0; n < size; n++) {
iv = (iv << 8) + data[n];
}
//little endian
//for (size_t n = size; n >= 0; n--) {
// iv = (iv << 8) + data[n];
//}
//This is BPM Data - VALID/INVALID
//cout << "uint val (1 means valid) " << iv << endl;
/*
std::copy(data, data + 32, reinterpret_cast<char *>(&i));
cout << "uint16 val " << i << endl;
std::copy(data, data + 8, reinterpret_cast<char *>(&i));
cout << "uint16 val " << i << endl;
std::copy(data, data + 4, reinterpret_cast<char *>(&i));
cout << "uint16 val " << i << endl;
std::copy(data, data + 2, reinterpret_cast<char *>(&i));
cout << "uint16 val " << i << endl;
std::copy(data, data + 1, reinterpret_cast<char *>(&i));
cout << "uint16 val " << i << endl;
*/
++bsPVIdx;
if (dbpm.getPVIdx(bsPV[bsPVIdx]) <0) {
cout << " WARNING--> THIS CHANNEL WAS NOT REQUESTED IN CONFIGURATION FILE " << endl;
cout << " bsPV index = " << bsPVIdx << endl;
cout << " pv from bs = " << bsPV[bsPVIdx] << endl;
cout << " Illegal index Value =" << dbpm.getPVIdx(bsPV[bsPVIdx]) << endl;
cout << " SKIPPING THIS BPM ENUM TYPE " << endl;
continue;
}
if (iv==1) {
dbpm.pvd[dbpm.getPVIdx(bsPV[bsPVIdx])].set((std::string) "VALID");
}
else {
dbpm.pvd[dbpm.getPVIdx(bsPV[bsPVIdx])].set((std::string) "INVALID");
}
//cout << "value DBPM = " << dbpm.pvd[dbpm.getPVIdx(bsPV[bsPVIdx])].val[0].str << endl;
}
}
else if (subMessage > 1 && subMessage%2 ==1) {
//cout << "timestamp " << endl;
unsigned int a,b;
for (size_t n=0; n < size/2; n++) {
a = (a << 8) + data[n];
}
for (size_t n=size/2; n < size; n++) {
b = (b << 8) + data[n];
}
//cout << "a " << a << " b " << b << endl;
if (dbpm.getPVIdx(bsPV[bsPVIdx]) <0) {
cout << " WARNING--> THIS CHANNEL WAS NOT REQUESTED IN CONFIGURATION FILE " << endl;
cout << " bsPV index = " << bsPVIdx << endl;
cout << " pv from bs = " << bsPV[bsPVIdx] << endl;
cout << " Illegal index Value =" << dbpm.getPVIdx(bsPV[bsPVIdx]) << endl;
cout << " SKIPPING THIS BPM TIMESTAMP " << endl;
continue;
}
dbpm.pvd[dbpm.getPVIdx(bsPV[bsPVIdx])].ts.secPastEpoch=a;
dbpm.pvd[dbpm.getPVIdx(bsPV[bsPVIdx])].ts.nsec=b;
}
//cout << "subMessage above: " << subMessage << endl;
++subMessage;
} //ifelse
zmq_getsockopt (socket, ZMQ_RCVMORE, &more, &more_size);
zmq_msg_close (&message);
if (!more) {
cout << "subMessage total: " << subMessage << endl;
puts ("//------------------------------------END-------------------------------------//");
break; // Last message part
}
} //while 1
inDumpFlag=0;
return;
}
// Receives all message parts from socket, prints neatly
//
static void
s_dump (void *socket)
{
puts ("//START----------------------------------------//");
int subMessage=0;
#if HAVE_JSON
Json::Value parsedFromString;
Json::Reader reader;
bool parsingSuccessful;
Json::FastWriter fastWriter;
#endif
while (1) {
// Process all parts of the message
zmq_msg_t message;
zmq_msg_init (&message);
size_t size = zmq_msg_recv (&message, socket, 0);
if (size == -1) {
cout << " Error is " << zmq_errno() << " " << zmq_strerror(zmq_errno()) << endl;
//Resource unavailable means that there is nothing to read now
zmq_msg_close (&message);
break;
}
else {
// Dump the message as text or binary
char *data = (char*)zmq_msg_data (&message);
int is_text = 1;
int char_nbr;
//char cmd[5000]="";
for (char_nbr = 0; char_nbr < size; char_nbr++)
if ((unsigned char) data [char_nbr] < 32
|| (unsigned char) data [char_nbr] > 127)
is_text = 0;
printf ("[%03d] ", size);
for (char_nbr = 0; char_nbr < size; char_nbr++) {
if (is_text) {
printf ("%c", data [char_nbr]);
//snprintf(cmd + strlen(cmd), (sizeof cmd) - strlen(cmd), "%c", data [char_nbr]);
}
else {
printf ("%02X", (unsigned char) data [char_nbr]);
//printf ("%d", (unsigned char) data [char_nbr]);
//snprintf(cmd + strlen(cmd), (sizeof cmd) - strlen(cmd), "%d", (unsigned char)data [char_nbr]);
//if (data[0] == '\x7') {
// cout << " little endian " << endl;
//}
//else {
// cout << "big endian " << endl;
//}
}
}//for
printf ("\n");
/*
for (char_nbr = 0; char_nbr < size; char_nbr++) {
if (is_text) {
printf ("%c", data [char_nbr]);
snprintf(cmd + strlen(cmd), (sizeof cmd) - strlen(cmd), "%c", data [char_nbr]);
}
else {
printf ("%02X", (unsigned char) data [char_nbr]);
snprintf(cmd + strlen(cmd), (sizeof cmd) - strlen(cmd), "%02X", (unsigned char)data [size-1-char_nbr]);
}
}
*/
if (is_text) {
parsingSuccessful=reader.parse(data, parsedFromString);
if (parsingSuccessful) {
Json::StyledWriter styledWriter;
cout << "STYLED: --------------------------------" << endl;
cout << styledWriter.write(parsedFromString) << endl;
cout << "----------------------------------" << endl;
cout << parsedFromString["htype"] << endl;
if (fastWriter.write(parsedFromString["htype"]).find("bsr_m-1.1") != std::string::npos) {
cout << "hash " << parsedFromString["hash"] << endl;
cout << "p id " << parsedFromString["pulse_id"].asUInt64() << endl;
cout << "g ts " << parsedFromString["global_timestamp"] << endl;
cout << "comp " << parsedFromString["dh_compression"] << endl;
cout << "sec " << parsedFromString["global_timestamp"]["sec"].asUInt() << endl;
cout << "nsec " << parsedFromString["global_timestamp"]["ns"].asUInt() << endl;
}
else if (fastWriter.write(parsedFromString["htype"]).find("bsr_d-1.1") != std::string::npos) {
cout << "chan " << parsedFromString["channels"] << endl;
for (Json::Value::ArrayIndex i=0; i < parsedFromString["channels"].size(); ++ i) {
cout << "name " << parsedFromString["channels"][i]["name"] << endl;
cout << "enco " << parsedFromString["channels"][i]["encoding"] << endl;
cout << "type " << parsedFromString["channels"][i]["type"] << endl;
}
}
cout << "----------------------------------" << endl;
}
}
union foo
{
char c[sizeof(double)];
double d;
} bar;
if (subMessage > 0 && subMessage%2 ==0) {
if (size==8) {
// big endian
for (char_nbr = 0; char_nbr < size; char_nbr++) {
bar.c[char_nbr]=data[size-1-char_nbr]; // THis works for big engian
}
// little endian
//for (char_nbr = 0; char_nbr < size; char_nbr++) {
// bar.c[char_nbr]=data[char_nbr];
//}
cout << "UNION D " << bar.d << endl;
double v; // = (double*) data;
memcpy(&v, bar.c, sizeof(double));
cout << "double val " << v << endl;
}
else if (size==2) {
unsigned short i;
//memcpy(&i, cmd, size);
//big endian
for (size_t n=0; n < size; n++) {
i = (i << 8) + data[n];
}
//little endian
//for (size_t n = size; n >= 0; n--) {
// i = (i << 8) + data[n];
//}
cout << "uint val " << i << endl;
/*
std::copy(data, data + 32, reinterpret_cast<char *>(&i));
cout << "uint16 val " << i << endl;
std::copy(data, data + 8, reinterpret_cast<char *>(&i));
cout << "uint16 val " << i << endl;
std::copy(data, data + 4, reinterpret_cast<char *>(&i));
cout << "uint16 val " << i << endl;
std::copy(data, data + 2, reinterpret_cast<char *>(&i));
cout << "uint16 val " << i << endl;
std::copy(data, data + 1, reinterpret_cast<char *>(&i));
cout << "uint16 val " << i << endl;
*/
}
}
else if (subMessage > 1 && subMessage%2 ==1) {
cout << "timestamp " << endl;
unsigned int a,b;
for (size_t n=0; n < size/2; n++) {
a = (a << 8) + data[n];
}
for (size_t n=size/2; n < size; n++) {
b = (b << 8) + data[n];
}
cout << "a " << a << " b " << b << endl;
}
++subMessage;
} //ifelse
int64_t more; // Multipart detection
more = 0;
size_t more_size = sizeof (more);
zmq_getsockopt (socket, ZMQ_RCVMORE, &more, &more_size);
zmq_msg_close (&message);
if (!more) {
puts ("//END----------------------------------------//");
break; // Last message part
}
} //while 1
}
// Set simple random printable identity on socket
//
static void
s_set_id (void *socket)
{
char identity [10];
sprintf (identity, "%04X-%04X", randof (0x10000), randof (0x10000));
zmq_setsockopt (socket, ZMQ_IDENTITY, identity, strlen (identity));
}
/*
// Sleep for a number of milliseconds
static void
s_sleep (int msecs)
{
#if (defined (WIN32))
Sleep (msecs);
#else
struct timespec t;
t.tv_sec = msecs / 1000;
t.tv_nsec = (msecs % 1000) * 1000000;
nanosleep (&t, NULL);
#endif
}
*/
// Return current system clock as milliseconds
static int64_t
s_clock (void)
{
#if (defined (WIN32))
SYSTEMTIME st;
GetSystemTime (&st);
return (int64_t) st.wSecond * 1000 + st.wMilliseconds;
#else
struct timeval tv;
gettimeofday (&tv, NULL);
return (int64_t) (tv.tv_sec * 1000 + tv.tv_usec / 1000);
#endif
}
// Print formatted string to stdout, prefixed by date/time and
// terminated with a newline.
/*
static void
s_console (const char *format, ...)
{
time_t curtime = time (NULL);
struct tm *loctime = localtime (&curtime);
char *formatted = (char*)malloc (20);
strftime (formatted, 20, "%y-%m-%d %H:%M:%S ", loctime);
printf ("%s", formatted);
free (formatted);
va_list argptr;
va_start (argptr, format);
vprintf (format, argptr);
va_end (argptr);
printf ("\n");
}
*/
#endif // __ZHELPERS_H_INCLUDED__
#endif

View File

@@ -1,383 +0,0 @@
///
/// \file cafeService.cpp
/// \author Jan Chrin, PSI
/// \date Release July: 2017
/// \version CAFE 1.3.0
///
#include <cafe.h>
#if HAVE_ZEROMQ
#include <zhelpers.h>
#endif
string globalZmqStream="";
string contentsS="";
unsigned long nCBs=0;
int CAFE::calcDBPMStatus(int statusDATA, int statusVALID, string valueVALID) {
if (statusDATA != ICAFE_NORMAL) {
return statusDATA;
}
else if (statusVALID != ICAFE_NORMAL) {
return statusVALID;
}
else if ( valueVALID.compare("VALID")!=0) {
//cout << "calcDBPMStatus " << valueVALID << endl;
return ECAFE_BPM_DATA_IS_INVALID;
}
return ICAFE_NORMAL;
}
int CAFE::prepareDBPM(vector<string> &_glist, vector<unsigned int> &_hV, std::vector<std::string> &dev, std::vector<float> &pos ) {
int localStatus=ICAFE_NORMAL;
if (!CAFE::isCollection("cDBPM")) {
localStatus=CAFE::loadCollectionsFromXML("cNodes.xml");
if (localStatus != ICAFE_NORMAL) {return localStatus;}
}
if (!CAFE::isGroup("gDBPM")) {
localStatus=CAFE::loadGroupsFromXML("gDBPM.xml");
if (localStatus != ICAFE_NORMAL) {return localStatus;}
}
CAFE::groupMemberList("gDBPM", _glist);
CAFE::devicePositionV("cDBPM", dev, pos);
/*
std::map<float, std::string>::iterator iter;
std::map<float, std::string> posDev;
CAFE::devicePositionMap("cDBPM", posDev);
for (iter =posDev.begin(); iter != posDev.end(); ++iter) {
//cout << "position= " << iter->first << " Dev " << iter->second << endl;
pos.push_back(iter->first) ;
dev.push_back(iter->second) ;
}
*/
CAFE::openPrepare();
CAFE::open(_glist, _hV);
CAFE::openNowAndWait(2.0); //wait for specified time, here 2.0 seconds
//CAFE::printDisconnectedHandles();
/*
for (int ij=0; ij<5; ++ij) {
if (!initCallbackComplete(_hV) ) {
cout << "Will wait for " << 1+ij << " SECONDS " << endl;
CAFE::openNowAndWait(1+ij);
}
}
*/
std::size_t found;
std::string attribute;
vector<int> statusV;
//CAFE::get(_hV, statusV); // do Get just to warm up
//CAFE::flushNow();
CAFE::openMonitorPrepare();
for (std::size_t i=0; i < _hV.size(); ++i) {
handleHelper.getChannelAttribute(_hV[i], attribute);
found=attribute.find("VALID");
//if (found != std::string::npos) {
if (handleHelper.getNmonitorData(_hV[i])==0) {
CAFE::monitorStart(_hV[i]);
}
//}
}
//Give plenty of time for all callback functions to report
CAFE::openMonitorNowAndWait(1.0);
return localStatus;
}
int CAFE::prepareDBPM(vector<string> &_glist, vector<unsigned int> &_hV, std::map<float, std::string> &posDev) {
int localStatus=ICAFE_NORMAL;
if (!CAFE::isCollection("cDBPM")) {
localStatus=CAFE::loadCollectionsFromXML("cNodes.xml");
if (localStatus != ICAFE_NORMAL) {return localStatus;}
}
if (!CAFE::isGroup("gDBPM")) {
localStatus=CAFE::loadGroupsFromXML("gDBPM.xml");
if (localStatus != ICAFE_NORMAL) {return localStatus;}
}
CAFE::groupMemberList("gDBPM", _glist);
CAFE::openPrepare();
CAFE::open(_glist, _hV);
//open BPM Reference
CAFE::openNowAndWait(1.5); //wait for specified time, here 1.5 seconds
std::size_t found;
std::string attribute;
CAFE::openMonitorPrepare();
for (std::size_t i=0; i < _hV.size(); ++i) {
handleHelper.getChannelAttribute(_hV[i], attribute);
found=attribute.find("VALID");
//if (found != std::string::npos) {
if (handleHelper.getNmonitorData(_hV[i])==0) {
CAFE::monitorStart(_hV[i]);
}
//}
}
CAFE::openMonitorNowAndWait(1.5);
std::map<float, std::string>::iterator pos;
CAFE::devicePositionMap("cDBPM", posDev);
//for (pos =posDev.begin(); pos != posDev.end(); ++pos) {
// cout << "position= " << pos->first << " Dev " << pos->second << endl;
//}
// cout << " END " << endl;
return localStatus;
}
int CAFE::readDBPMOffsets(DBPMKeeper &dbpm) {
vector<unsigned int> hx;
vector<unsigned int> hy;
vector<string> devOffsetX;
vector<string> devOffsetY;
devOffsetX.clear();
devOffsetY.clear();
devOffsetX.reserve(dbpm.device.size());
devOffsetY.reserve(dbpm.device.size());
string devOffx="";
string devOffy="";
for (size_t i=0; i<dbpm.device.size(); ++i) {
devOffx=dbpm.device[i];
devOffx.append(":OFFS-X");
devOffy=dbpm.device[i];
devOffy.append(":OFFS-Y");
devOffsetX.push_back(devOffx);
devOffsetY.push_back(devOffy);
}
CAFE::openPrepare();
CAFE::open(devOffsetX, hx);
CAFE::open(devOffsetY, hy);
CAFE::openNowAndWait(1.0);
vector<int> statusV;
int status1=CAFE::getScalars(hx, dbpm.offs_x, statusV);
statusV.clear();
int status2=CAFE::getScalars(hy, dbpm.offs_y, statusV);
CAFE::closeHandles(hx);
CAFE::closeHandles(hy);
return max(status1, status2);
}
int CAFE::getDBPM(DBPMKeeper &dbpm) {
if(MUTEX){cafeMutex.lock();}
cout << "-------------------------------------------MUTEX LOCKED " << endl;
dbpm.x.clear();
dbpm.y.clear();
dbpm.q.clear();
dbpm.energy.clear();
dbpm.x.reserve(dbpm.nDBPM);
dbpm.y.reserve(dbpm.nDBPM);
dbpm.q.reserve(dbpm.nDBPM);
dbpm.energy.reserve(dbpm.nDBPM);
for (size_t i=0; i<dbpm.nDBPM; ++i) {
dbpm.pvd[dbpm.xIdx+i].set(0);
dbpm.pvd[dbpm.yIdx+i].set(0);
dbpm.pvd[dbpm.qIdx+i].set(0);
dbpm.pvd[dbpm.xValidIdx+i].set((std::string) "INVALID");
dbpm.pvd[dbpm.yValidIdx+i].set((std::string) "INVALID");
dbpm.pvd[dbpm.qValidIdx+i].set((std::string) "INVALID");
}
if (!dbpm.isBS){
//From Channel Access:
dbpm.status=CAFE::getCachePVArray(dbpm.handle, dbpm.pvd);
}
else {
#if HAVE_ZEROMQ
s_dump(dbpm);
if (dbpm.status > ICAFE_LINUX_ERROR) {
cout << "status from cafeService.cpp -------------------------------------------------> " << dbpm.status << endl;
}
#endif
}
dbpm.isAllXOK=true;
dbpm.isAllYOK=true;
dbpm.isAllQOK=true;
dbpm.isAllEOK=true;
dbpm.isAllOK =true;
DBPMData ddx, ddy, ddq, dde;
for (size_t i=0; i<dbpm.nDBPM; ++i) {
ddx.val=dbpm.pvd[dbpm.xIdx+i].getAsDouble();
ddx.ets=dbpm.pvd[dbpm.xIdx+i].getEpicsTimeStamp();
if (!dbpm.isBS) {
ddx.status=CAFE::calcDBPMStatus(dbpm.pvd[dbpm.xIdx+i].getStatus(), dbpm.pvd[dbpm.xValidIdx+i].getStatus(), dbpm.pvd[dbpm.xValidIdx+i].getAsString());
}
else {
ddx.status=CAFE::calcDBPMStatus(ICAFE_NORMAL, ICAFE_NORMAL, dbpm.pvd[dbpm.xValidIdx+i].getAsString());
//cout << " IDX " << dbpm.xValidIdx+i << "STATUS " << dbpm.pvd[dbpm.xValidIdx+i].getAsString() << endl;
//cout << "ddx.status " << ddx.status << endl;
}
if (dbpm.isAllXOK && ddx.status != ICAFE_NORMAL) {
dbpm.isAllXOK=false;
dbpm.isAllOK=false;
}
ddy.val=dbpm.pvd[dbpm.yIdx+i].getAsDouble();
ddy.ets=dbpm.pvd[dbpm.yIdx+i].getEpicsTimeStamp();
if (!dbpm.isBS) {
ddy.status=CAFE::calcDBPMStatus(dbpm.pvd[dbpm.yIdx+i].getStatus(), dbpm.pvd[dbpm.yValidIdx+i].getStatus(), dbpm.pvd[dbpm.yValidIdx+i].getAsString()) ;
}
else {
ddy.status=CAFE::calcDBPMStatus(ICAFE_NORMAL, ICAFE_NORMAL, dbpm.pvd[dbpm.yValidIdx+i].getAsString()) ;
}
if (dbpm.isAllYOK && ddy.status != ICAFE_NORMAL) {
dbpm.isAllYOK=false;
dbpm.isAllOK=false;
}
ddq.val=dbpm.pvd[dbpm.qIdx+i].getAsDouble();
ddq.ets=dbpm.pvd[dbpm.qIdx+i].getEpicsTimeStamp();
if (!dbpm.isBS) {
ddq.status=CAFE::calcDBPMStatus(dbpm.pvd[dbpm.qIdx+i].getStatus(), dbpm.pvd[dbpm.qValidIdx+i].getStatus(), dbpm.pvd[dbpm.qValidIdx+i].getAsString());
}
else {
ddq.status=CAFE::calcDBPMStatus(ICAFE_NORMAL, ICAFE_NORMAL,dbpm.pvd[dbpm.qValidIdx+i].getAsString());
}
if (dbpm.isAllQOK && ddq.status != ICAFE_NORMAL) {
dbpm.isAllQOK=false;
dbpm.isAllOK =false;
}
dde.val =dbpm.pvd[dbpm.energyIdx+i].getAsDouble();
dde.ets =dbpm.pvd[dbpm.energyIdx+i].getEpicsTimeStamp();
dde.status=dbpm.pvd[dbpm.energyIdx+i].getStatus();
if (dbpm.isAllEOK && dbpm.status != ICAFE_NORMAL) {
dbpm.isAllEOK=false;
dbpm.isAllOK=false;
}
dbpm.x.push_back(ddx);
dbpm.y.push_back(ddy);
dbpm.q.push_back(ddq);
dbpm.energy.push_back(dde);
//}
}
if(MUTEX){cafeMutex.unlock();}
cout << "-------------------------------------------MUTEX UNLOCKED " << endl;
return dbpm.status;
}