diff --git a/Pipfile.lock b/Pipfile.lock index f7ce05f4..f8851ffa 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -16,44 +16,122 @@ "default": { "aiohttp": { "hashes": [ - "sha256:173267050501e1537293df06723bc5e719990889e2820ba3932969983892e960", - "sha256:438f1f1555c02c50894604d94944cff188fe138b46467b7fa99fdceb51ab5842", - "sha256:90bed250d1435aef33a1f8c439c5056d5d25a44fe6caf33fcafafed805bad4dc", - "sha256:93c3b14747413f38f094a60e98f55e73831f0c9a23ae7faa3dc97d8963e13021", - "sha256:a6e70a38d883185b1921d8122759661c39ade54949770394412a9e713fec6fa7", - "sha256:b5036133c1ba77ed5a70208d2a021a90b76fdf8bf523ae33dae46d4f4380d86f", - "sha256:c138451a82cdbf65cddf952941d5c7a1a2cac8ce3bc618dee8d889e5251ec7a5", - "sha256:c94770383e49f9cc5912b926364ad022a6c8a5dbf5498933ca3a5713c6daf738", - "sha256:ea26536ae06df6dac021303a0df72c79e55512070e6a304ba93ad468a3a754dc" + "sha256:01d7bdb774a9acc838e6b8f1d114f45303841b89b95984cbb7d80ea41172a9e3", + "sha256:03a6d5349c9ee8f79ab3ff3694d6ce1cfc3ced1c9d36200cb8f08ba06bd3b782", + "sha256:04d48b8ce6ab3cf2097b1855e1505181bdd05586ca275f2505514a6e274e8e75", + "sha256:0770e2806a30e744b4e21c9d73b7bee18a1cfa3c47991ee2e5a65b887c49d5cf", + "sha256:07b05cd3305e8a73112103c834e91cd27ce5b4bd07850c4b4dbd1877d3f45be7", + "sha256:086f92daf51a032d062ec5f58af5ca6a44d082c35299c96376a41cbb33034675", + "sha256:099ebd2c37ac74cce10a3527d2b49af80243e2a4fa39e7bce41617fbc35fa3c1", + "sha256:0c7ebbbde809ff4e970824b2b6cb7e4222be6b95a296e46c03cf050878fc1785", + "sha256:102e487eeb82afac440581e5d7f8f44560b36cf0bdd11abc51a46c1cd88914d4", + "sha256:11691cf4dc5b94236ccc609b70fec991234e7ef8d4c02dd0c9668d1e486f5abf", + "sha256:11a67c0d562e07067c4e86bffc1553f2cf5b664d6111c894671b2b8712f3aba5", + "sha256:12de6add4038df8f72fac606dff775791a60f113a725c960f2bab01d8b8e6b15", + "sha256:13487abd2f761d4be7c8ff9080de2671e53fff69711d46de703c310c4c9317ca", + "sha256:15b09b06dae900777833fe7fc4b4aa426556ce95847a3e8d7548e2d19e34edb8", + "sha256:1c182cb873bc91b411e184dab7a2b664d4fea2743df0e4d57402f7f3fa644bac", + "sha256:1ed0b6477896559f17b9eaeb6d38e07f7f9ffe40b9f0f9627ae8b9926ae260a8", + "sha256:28d490af82bc6b7ce53ff31337a18a10498303fe66f701ab65ef27e143c3b0ef", + "sha256:2e5d962cf7e1d426aa0e528a7e198658cdc8aa4fe87f781d039ad75dcd52c516", + "sha256:2ed076098b171573161eb146afcb9129b5ff63308960aeca4b676d9d3c35e700", + "sha256:2f2f69dca064926e79997f45b2f34e202b320fd3782f17a91941f7eb85502ee2", + "sha256:31560d268ff62143e92423ef183680b9829b1b482c011713ae941997921eebc8", + "sha256:31d1e1c0dbf19ebccbfd62eff461518dcb1e307b195e93bba60c965a4dcf1ba0", + "sha256:37951ad2f4a6df6506750a23f7cbabad24c73c65f23f72e95897bb2cecbae676", + "sha256:3af642b43ce56c24d063325dd2cf20ee012d2b9ba4c3c008755a301aaea720ad", + "sha256:44db35a9e15d6fe5c40d74952e803b1d96e964f683b5a78c3cc64eb177878155", + "sha256:473d93d4450880fe278696549f2e7aed8cd23708c3c1997981464475f32137db", + "sha256:477c3ea0ba410b2b56b7efb072c36fa91b1e6fc331761798fa3f28bb224830dd", + "sha256:4a4a4e30bf1edcad13fb0804300557aedd07a92cabc74382fdd0ba6ca2661091", + "sha256:4aed991a28ea3ce320dc8ce655875e1e00a11bdd29fe9444dd4f88c30d558602", + "sha256:51467000f3647d519272392f484126aa716f747859794ac9924a7aafa86cd411", + "sha256:55c3d1072704d27401c92339144d199d9de7b52627f724a949fc7d5fc56d8b93", + "sha256:589c72667a5febd36f1315aa6e5f56dd4aa4862df295cb51c769d16142ddd7cd", + "sha256:5bfde62d1d2641a1f5173b8c8c2d96ceb4854f54a44c23102e2ccc7e02f003ec", + "sha256:5c23b1ad869653bc818e972b7a3a79852d0e494e9ab7e1a701a3decc49c20d51", + "sha256:61bfc23df345d8c9716d03717c2ed5e27374e0fe6f659ea64edcd27b4b044cf7", + "sha256:6ae828d3a003f03ae31915c31fa684b9890ea44c9c989056fea96e3d12a9fa17", + "sha256:6c7cefb4b0640703eb1069835c02486669312bf2f12b48a748e0a7756d0de33d", + "sha256:6d69f36d445c45cda7b3b26afef2fc34ef5ac0cdc75584a87ef307ee3c8c6d00", + "sha256:6f0d5f33feb5f69ddd57a4a4bd3d56c719a141080b445cbf18f238973c5c9923", + "sha256:6f8b01295e26c68b3a1b90efb7a89029110d3a4139270b24fda961893216c440", + "sha256:713ac174a629d39b7c6a3aa757b337599798da4c1157114a314e4e391cd28e32", + "sha256:718626a174e7e467f0558954f94af117b7d4695d48eb980146016afa4b580b2e", + "sha256:7187a76598bdb895af0adbd2fb7474d7f6025d170bc0a1130242da817ce9e7d1", + "sha256:71927042ed6365a09a98a6377501af5c9f0a4d38083652bcd2281a06a5976724", + "sha256:7d08744e9bae2ca9c382581f7dce1273fe3c9bae94ff572c3626e8da5b193c6a", + "sha256:7dadf3c307b31e0e61689cbf9e06be7a867c563d5a63ce9dca578f956609abf8", + "sha256:81e3d8c34c623ca4e36c46524a3530e99c0bc95ed068fd6e9b55cb721d408fb2", + "sha256:844a9b460871ee0a0b0b68a64890dae9c415e513db0f4a7e3cab41a0f2fedf33", + "sha256:8b7ef7cbd4fec9a1e811a5de813311ed4f7ac7d93e0fda233c9b3e1428f7dd7b", + "sha256:97ef77eb6b044134c0b3a96e16abcb05ecce892965a2124c566af0fd60f717e2", + "sha256:99b5eeae8e019e7aad8af8bb314fb908dd2e028b3cdaad87ec05095394cce632", + "sha256:a25fa703a527158aaf10dafd956f7d42ac6d30ec80e9a70846253dd13e2f067b", + "sha256:a2f635ce61a89c5732537a7896b6319a8fcfa23ba09bec36e1b1ac0ab31270d2", + "sha256:a79004bb58748f31ae1cbe9fa891054baaa46fb106c2dc7af9f8e3304dc30316", + "sha256:a996d01ca39b8dfe77440f3cd600825d05841088fd6bc0144cc6c2ec14cc5f74", + "sha256:b0e20cddbd676ab8a64c774fefa0ad787cc506afd844de95da56060348021e96", + "sha256:b6613280ccedf24354406caf785db748bebbddcf31408b20c0b48cb86af76866", + "sha256:b9d00268fcb9f66fbcc7cd9fe423741d90c75ee029a1d15c09b22d23253c0a44", + "sha256:bb01ba6b0d3f6c68b89fce7305080145d4877ad3acaed424bae4d4ee75faa950", + "sha256:c2aef4703f1f2ddc6df17519885dbfa3514929149d3ff900b73f45998f2532fa", + "sha256:c34dc4958b232ef6188c4318cb7b2c2d80521c9a56c52449f8f93ab7bc2a8a1c", + "sha256:c3630c3ef435c0a7c549ba170a0633a56e92629aeed0e707fec832dee313fb7a", + "sha256:c3d6a4d0619e09dcd61021debf7059955c2004fa29f48788a3dfaf9c9901a7cd", + "sha256:d15367ce87c8e9e09b0f989bfd72dc641bcd04ba091c68cd305312d00962addd", + "sha256:d2f9b69293c33aaa53d923032fe227feac867f81682f002ce33ffae978f0a9a9", + "sha256:e999f2d0e12eea01caeecb17b653f3713d758f6dcc770417cf29ef08d3931421", + "sha256:ea302f34477fda3f85560a06d9ebdc7fa41e82420e892fc50b577e35fc6a50b2", + "sha256:eaba923151d9deea315be1f3e2b31cc39a6d1d2f682f942905951f4e40200922", + "sha256:ef9612483cb35171d51d9173647eed5d0069eaa2ee812793a75373447d487aa4", + "sha256:f5315a2eb0239185af1bddb1abf472d877fede3cc8d143c6cddad37678293237", + "sha256:fa0ffcace9b3aa34d205d8130f7873fcfefcb6a4dd3dd705b0dab69af6712642", + "sha256:fc5471e1a54de15ef71c1bc6ebe80d4dc681ea600e68bfd1cbce40427f0b7578" ], "markers": "python_version >= '3.6'", - "version": "==4.0.0a1" + "version": "==3.8.1" }, "aiokafka": { "hashes": [ - "sha256:16731e8aa0fc70dc35c31041599c9a5237dd5d2c1a4d04af58f30a942191a281", - "sha256:1a9b6ecb606062b3595bc5104b85b42b62621a86d179b75d708279041152f461", - "sha256:34eda0b6eb794c36f4100be772f3b120a3c00daaf342f593f32994a762aed7e8", - "sha256:383cc7d45b47676fea60dbedee747c5c08dde5c10b1be0afc6598fb21a7891b4", - "sha256:3b1f1e9ad66883ed809d737d57edfb13f1aeb9b08c6fd6b71afefce712c13dad", - "sha256:5371bd663f545ced555775e7e49f39a54b243435098a9699582bb3b32884e332", - "sha256:594d2a29875f78d56251141ff95a982c5be64844dc9ae619c285f36c57a08c6e", - "sha256:6116b68ca975caafd7efd338ffdaec63789e1c334af6174e20edc1d16d14e463", - "sha256:7d56627c3250ba2359dfa90f2c8a3ab995795e0116038905b2f8a608cd1fd606", - "sha256:7fe02a3868236d84356d5fa7c7625ed3a27e52699477c5ee8bd5dc9b5adb592f", - "sha256:a3bfe4ad7d3829a98c8391a9a28f179b47df4f66e26ea5b1c665f872b6e21809", - "sha256:a8fc41d18731d8879483aecb93ae7ebf5457f63daf4c8923ddc046792c2c3096", - "sha256:b1958277eaa702509591c0674790a8c9aced8fef7723dafae0f9aec6d2da71a5", - "sha256:b19f077e12fe23e359f7a7dca9baf8532c63f4c8149703ce4c56de372d17e26c", - "sha256:be43d7ddd700d501a6f4c59c859baa9888c2d086b69882f542951bae41234f6a", - "sha256:c96824cef1a480fd2ab4bbd9e9aa737c9191211bab5f7787ef401926d5fda95d", - "sha256:cda55f5cfb19ea7d2f55a51d320a57312f152dab3e333fa1fbfcdde7a9e25a53", - "sha256:ce23baeaacf501f619967067d2c0d4c2b2b761012f9f9c8a49593e96c7550aff", - "sha256:d801bb2f5a4ae726a433ae74a5d34e7e0d44128de53c9c7eea5cb4cdaaf80175", - "sha256:e6e78206e5d031e6644d3a46153a146d2d2afff4cf9da9a81edb9f8714114b62", - "sha256:ebbb258840f134bad0e6ca8681a87cd292a1f4ed7253a821c16b4e9f2610a04a" - ], - "version": "==0.7.2" + "sha256:02156dee5156a0c5283d45df0f0e8aa516ec7f3d966d7dfeb35f8ada7c8f8557", + "sha256:02f67258a78e5d9d17470816ea879a653c5efecc0c6686e18d792fbd38e1f70c", + "sha256:035d1fb4cb22273bb0a47f31040fabfd9b248f8026dd306dd50e7e69f005a71d", + "sha256:061799f1b8b005f950012a11948ff8a6ab48114eac91341acd8feec5430f0f31", + "sha256:09cef9cf579193b497d3c65644b71ba1523660b7677805d0efea6c3206e4e643", + "sha256:120d3c477e7e9a53dd55f1a16b9c67e8a51cdc38e5e46fc25aae7d20f78519f2", + "sha256:2294ba68ff87fdf6cf70a5603afb4020c4fc7a39053ccd8e6abdf0aa34ba1ca3", + "sha256:2f1a2fcb5f0643527d77446437d27ed93ae94844c1b324e904a813acce675db8", + "sha256:45704e5a8c81e4db6333ab6315effc1b83feec1dfc2fc3a28e7c7600b0d80a23", + "sha256:47cda205e8fe16edf126c362a59071d0a4b74dd07bee6f070b26e5d2580cc37b", + "sha256:49517e2309826c27eaff940384e90773d89c69da023907663cda7853a00fb9ee", + "sha256:4c463265252236b7759920998862b56bad3d6eedfdfd3fce0774ad99bb2c4877", + "sha256:4cb2544ca8d5d5a4055c57fbb6c4ecfc82e6f3b670485c291b256c90d506acf3", + "sha256:567a3b856639bff36b8c74a92dfecd64ace8d07d755bb3ee6d5332273d2a8c6e", + "sha256:5fac6f1168c15b08f3fcb951347343a78d8c130292127d8a4e23466a5d2510f7", + "sha256:6e7d031b8bc08f9d9c4149c6afaedb650082309f01a3b79f0619814cc299fc4d", + "sha256:8b5e71d6da8edf0f592080488b198af42fbe9778de077762e4452d574e694efa", + "sha256:8ebb032a05a6696b25abbe5db677890adca9a3284d13e1975842009c1d7678dd", + "sha256:90a4cb54ae23ff55758a9ce8f3ba1ec67c6f2328f9197c3bacc61a24f812cf04", + "sha256:90a91155aeb28c872b74ecb3c9f671253db10cf23dc3af858bd9ed1630c0d1ae", + "sha256:95edb38631bf5dbb8cd65fecd8620e11a15534cd6dd22e0dc45488b4266b5452", + "sha256:b19d00b16637d02cfcee3d5cfdbcfd497702c09ae1f63e194830798cd223f910", + "sha256:b5a6fb1cfd77eac4b397ef5af3765d1d881c86b157137b12ca4f12aef1db433c", + "sha256:b7390a9d9d03a2a3dbee0f8fa6735b008408e0f561a279b3df13e9758ab6d67f", + "sha256:c70ed4b09e01d774d1821db30f6fbc6475a41224d0dc1488d018ef97610dc3da", + "sha256:dfd8d58f7418aabc07f1e8c1b904f478bf955919b743d4d44607dbf18a2c54b2", + "sha256:e8276baed94281ef4548f19e039b9b4a8af79afee324bd259d8898638ca15da6", + "sha256:edcf1cdcf9246edd5c4c1b649609a7ac5bfe4276da586aede470b73f9d00b809", + "sha256:f3a2138649ca2427a91dfc0927ddd445a9a6aaf9a9b0972d683cb230923f821f" + ], + "version": "==0.7.1" + }, + "aiosignal": { + "hashes": [ + "sha256:26e62109036cd181df6e6ad646f91f0dcfd05fe16d0cb924138ff2ab75d64e3a", + "sha256:78ed67db6c7b7ced4f98e495e572106d5c432a93e1ddd1bf475e1dc05f5b7df2" + ], + "version": "==1.2.0" }, "aiozmq": { "hashes": [ @@ -72,11 +150,11 @@ }, "async-timeout": { "hashes": [ - "sha256:0c3c816a028d47f659d6ff5c745cb2acf1f966da1fe5c19c77a70282b25f4c5f", - "sha256:4291ca197d287d274d0b6cb5d6f8f8f82d434ed288f962539ff18cc9012f9ea3" + "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15", + "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c" ], "markers": "python_full_version >= '3.5.3'", - "version": "==3.0.1" + "version": "==4.0.2" }, "attrs": { "hashes": [ @@ -86,12 +164,12 @@ "markers": "python_version >= '3.5'", "version": "==22.1.0" }, - "chardet": { + "charset-normalizer": { "hashes": [ - "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", - "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" + "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845", + "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f" ], - "version": "==3.0.4" + "version": "==2.1.1" }, "click": { "hashes": [ @@ -138,73 +216,116 @@ "epicsdbbuilder": { "hashes": [ "sha256:32321c0eff5209a1604464a19e30a73429f597efe4df69f1f859758c3a14ebc7", + "sha256:40e01ca308b667d17b31dc1907816df20c31b389415268d9ec6e2be6c3b8f283", "sha256:698ad5882de4a626a82086139ff95204e8de72e63d03d9f22d4418da3a6c8566", "sha256:ae8dc724c72478d2c6a68b08145d027a50af98702d17e4692f2d73f145818e74" ], "version": "==1.5" }, + "frozenlist": { + "hashes": [ + "sha256:006d3595e7d4108a12025ddf415ae0f6c9e736e726a5db0183326fd191b14c5e", + "sha256:01a73627448b1f2145bddb6e6c2259988bb8aee0fb361776ff8604b99616cd08", + "sha256:03a7dd1bfce30216a3f51a84e6dd0e4a573d23ca50f0346634916ff105ba6e6b", + "sha256:0437fe763fb5d4adad1756050cbf855bbb2bf0d9385c7bb13d7a10b0dd550486", + "sha256:04cb491c4b1c051734d41ea2552fde292f5f3a9c911363f74f39c23659c4af78", + "sha256:0c36e78b9509e97042ef869c0e1e6ef6429e55817c12d78245eb915e1cca7468", + "sha256:25af28b560e0c76fa41f550eacb389905633e7ac02d6eb3c09017fa1c8cdfde1", + "sha256:2fdc3cd845e5a1f71a0c3518528bfdbfe2efaf9886d6f49eacc5ee4fd9a10953", + "sha256:30530930410855c451bea83f7b272fb1c495ed9d5cc72895ac29e91279401db3", + "sha256:31977f84828b5bb856ca1eb07bf7e3a34f33a5cddce981d880240ba06639b94d", + "sha256:3c62964192a1c0c30b49f403495911298810bada64e4f03249ca35a33ca0417a", + "sha256:3f7c935c7b58b0d78c0beea0c7358e165f95f1fd8a7e98baa40d22a05b4a8141", + "sha256:40dff8962b8eba91fd3848d857203f0bd704b5f1fa2b3fc9af64901a190bba08", + "sha256:40ec383bc194accba825fbb7d0ef3dda5736ceab2375462f1d8672d9f6b68d07", + "sha256:436496321dad302b8b27ca955364a439ed1f0999311c393dccb243e451ff66aa", + "sha256:4406cfabef8f07b3b3af0f50f70938ec06d9f0fc26cbdeaab431cbc3ca3caeaa", + "sha256:45334234ec30fc4ea677f43171b18a27505bfb2dba9aca4398a62692c0ea8868", + "sha256:47be22dc27ed933d55ee55845d34a3e4e9f6fee93039e7f8ebadb0c2f60d403f", + "sha256:4a44ebbf601d7bac77976d429e9bdb5a4614f9f4027777f9e54fd765196e9d3b", + "sha256:4eda49bea3602812518765810af732229b4291d2695ed24a0a20e098c45a707b", + "sha256:57f4d3f03a18facacb2a6bcd21bccd011e3b75d463dc49f838fd699d074fabd1", + "sha256:603b9091bd70fae7be28bdb8aa5c9990f4241aa33abb673390a7f7329296695f", + "sha256:65bc6e2fece04e2145ab6e3c47428d1bbc05aede61ae365b2c1bddd94906e478", + "sha256:691ddf6dc50480ce49f68441f1d16a4c3325887453837036e0fb94736eae1e58", + "sha256:6983a31698490825171be44ffbafeaa930ddf590d3f051e397143a5045513b01", + "sha256:6a202458d1298ced3768f5a7d44301e7c86defac162ace0ab7434c2e961166e8", + "sha256:6eb275c6385dd72594758cbe96c07cdb9bd6becf84235f4a594bdf21e3596c9d", + "sha256:754728d65f1acc61e0f4df784456106e35afb7bf39cfe37227ab00436fb38676", + "sha256:768efd082074bb203c934e83a61654ed4931ef02412c2fbdecea0cff7ecd0274", + "sha256:772965f773757a6026dea111a15e6e2678fbd6216180f82a48a40b27de1ee2ab", + "sha256:871d42623ae15eb0b0e9df65baeee6976b2e161d0ba93155411d58ff27483ad8", + "sha256:88aafd445a233dbbf8a65a62bc3249a0acd0d81ab18f6feb461cc5a938610d24", + "sha256:8c905a5186d77111f02144fab5b849ab524f1e876a1e75205cd1386a9be4b00a", + "sha256:8cf829bd2e2956066dd4de43fd8ec881d87842a06708c035b37ef632930505a2", + "sha256:92e650bd09b5dda929523b9f8e7f99b24deac61240ecc1a32aeba487afcd970f", + "sha256:93641a51f89473837333b2f8100f3f89795295b858cd4c7d4a1f18e299dc0a4f", + "sha256:94c7a8a9fc9383b52c410a2ec952521906d355d18fccc927fca52ab575ee8b93", + "sha256:9f892d6a94ec5c7b785e548e42722e6f3a52f5f32a8461e82ac3e67a3bd073f1", + "sha256:acb267b09a509c1df5a4ca04140da96016f40d2ed183cdc356d237286c971b51", + "sha256:adac9700675cf99e3615eb6a0eb5e9f5a4143c7d42c05cea2e7f71c27a3d0846", + "sha256:aff388be97ef2677ae185e72dc500d19ecaf31b698986800d3fc4f399a5e30a5", + "sha256:b5009062d78a8c6890d50b4e53b0ddda31841b3935c1937e2ed8c1bda1c7fb9d", + "sha256:b684c68077b84522b5c7eafc1dc735bfa5b341fb011d5552ebe0968e22ed641c", + "sha256:b9e3e9e365991f8cc5f5edc1fd65b58b41d0514a6a7ad95ef5c7f34eb49b3d3e", + "sha256:bd89acd1b8bb4f31b47072615d72e7f53a948d302b7c1d1455e42622de180eae", + "sha256:bde99812f237f79eaf3f04ebffd74f6718bbd216101b35ac7955c2d47c17da02", + "sha256:c6c321dd013e8fc20735b92cb4892c115f5cdb82c817b1e5b07f6b95d952b2f0", + "sha256:ce6f2ba0edb7b0c1d8976565298ad2deba6f8064d2bebb6ffce2ca896eb35b0b", + "sha256:d2257aaba9660f78c7b1d8fea963b68f3feffb1a9d5d05a18401ca9eb3e8d0a3", + "sha256:d26b650b71fdc88065b7a21f8ace70175bcf3b5bdba5ea22df4bfd893e795a3b", + "sha256:d6d32ff213aef0fd0bcf803bffe15cfa2d4fde237d1d4838e62aec242a8362fa", + "sha256:e1e26ac0a253a2907d654a37e390904426d5ae5483150ce3adedb35c8c06614a", + "sha256:e30b2f9683812eb30cf3f0a8e9f79f8d590a7999f731cf39f9105a7c4a39489d", + "sha256:e84cb61b0ac40a0c3e0e8b79c575161c5300d1d89e13c0e02f76193982f066ed", + "sha256:e982878792c971cbd60ee510c4ee5bf089a8246226dea1f2138aa0bb67aff148", + "sha256:f20baa05eaa2bcd5404c445ec51aed1c268d62600362dc6cfe04fae34a424bd9", + "sha256:f7353ba3367473d1d616ee727945f439e027f0bb16ac1a750219a8344d1d5d3c", + "sha256:f96293d6f982c58ebebb428c50163d010c2f05de0cde99fd681bfdc18d4b2dc2", + "sha256:ff9310f05b9d9c5c4dd472983dc956901ee6cb2c3ec1ab116ecdde25f3ce4951" + ], + "version": "==1.3.0" + }, "idna": { "hashes": [ - "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff", - "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d" + "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", + "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2" ], "markers": "python_version >= '3.5'", - "version": "==3.3" + "version": "==3.4" }, "immutables": { "hashes": [ - "sha256:03696193b276db3a9b619629685198886ddd7c4098c544bd8d0f87532c74120b", - "sha256:13159cedb698fdd243d9f2a7469c1628e075a180fc02f865dd98322b92a14aaf", - "sha256:1330f96eb6a3a11f5d02f30b2c6393ef30d01a79f7144d63d2a3e6ff05cb99db", - "sha256:1338aad6fd69f11442adcbb3402a028c90f6e945682ddb8aba462a3827f2d427", - "sha256:1acbbc333f1643fd1ed21bcc3e09aad2ef6648478a0cae76a2ca5823764a7d3b", - "sha256:1d6821d7718cf9f4a7b1d9e765fc22a9d1ae0fad3fabd8724b4e614d2a6e0b54", - "sha256:210efea163a704597cfdb2d30713d3c0963c30f0d997539c9ab5da40e3d6a886", - "sha256:29a5886845cd0ca8263b721337750a895e28feee2f16694a526977a791909db5", - "sha256:2aa5292630b08c874972931bac06ee381cb6fb7382d7be1856234d7bd4a8e676", - "sha256:2b6c820c9bb5aac62b76de703384bb8bb706108be90c3def4a7f047f185a92bb", - "sha256:45bd862a5dfb952eaff4a9c2448712c5a550dd956575e23cbfc512010fb06c74", - "sha256:525fe9001b5a96c325eec41677efaeb8c3610776e834ce7f31fbe3d33cc05252", - "sha256:5336c7974084cce62f7e29aaff81a3c3f75e0fd0a23a2faeb986ae0ea08d8cf4", - "sha256:535616ad7ca1174a27ade637192c970bfedb0b0e0467e69ce415b40d7cf7ba0c", - "sha256:53fccddd28cc3214aa48ca564702311c07eac069190dd890e097802c5d69b33a", - "sha256:54577e46c5332d7390212040c084335b7d667504847ed2788428d44f20e595ce", - "sha256:5caf9c670e6851e7f310716c7dcdf8705236d13056eda1fab3deaad5d7198468", - "sha256:5d43b16b6adbe1327c6688e14b125cb3b940e748790b305de96c8d55668ac25f", - "sha256:5f32b5933393e4cc204d8f9e7d9f503ec052e30f612090be0de0dd31b1464b35", - "sha256:69352b45a115808219feaf0bb7a551e9aa76c72684db93cd03f11474165f4569", - "sha256:6baf4dc11ba0e9f41a6cbde7ecaa7af9cb482559b92ba3254e3e37a518b1970e", - "sha256:6e979a9225507e3cd830ea73ac68b69fe82f495313a891485800daa5b6567e05", - "sha256:6ee2d6f8816fce53fa89b6a1ba2d4a96b344bf584d6ed0b10a871b17fff46e49", - "sha256:734ec4467dd15f9135ca5ecccc91e796a67d27c227e81554f9e06b1bb3b28d6d", - "sha256:74456c579cfd53f883cdcc0700e3871648a3316767efc1adf8c723ad3d8addec", - "sha256:77bdc96dc24e32839557cde3785f8039a369c95529ff9179044b81d0ba4bd02c", - "sha256:798b4d6c388116effa7523591e4e39865292e4fa74e169b05a0759a16f604ce1", - "sha256:853d63f4a07b2ea2131ba0831aeec11f6a6ee5e290e8f175bf56842762d7412e", - "sha256:8b650d779a46441dccd02e7ee8326dbd0dec633c6bd75e9fe13373a6b19570dd", - "sha256:90da9dea0a1c0a907d511f124cd87fe090c0e30a951c3fe68bc9782ae4f2c77f", - "sha256:989606e440492736112b471dcd80586e3d4a63bc6f8ff4f9d1d612e0f96cb683", - "sha256:98f67bd36532582751dcc9021fdb60e7efc82e5717ae5927b84d0b86ea58fe12", - "sha256:9949f704b80d0e601587d0a3b1a0cc6ff5d49528f6dfc1c8a1476b2137bb925e", - "sha256:9a86dcca4bb406f80e7a18c233aec0e76a7530c456e24aa1e19a708a34f2aac1", - "sha256:9d72527fde329e3b566b67c954237be52b07d6e84ff23dcc1e94499755cacff6", - "sha256:9f17407491164beb689d426f7985f79ae9dfa69868653cfbdb95645f6bf05cb0", - "sha256:a29e3aa0fe05fb2cc6b31039f448aa6206d7f0cdb660c98aa9be6d12070d6840", - "sha256:a3bad4d43009fa61ea40d887e6fa89ae7c4e62dff5e4a878d60b76cf245720bb", - "sha256:ac9e05f846392e983fb59f74ed2334031b366251d16d24122e4c85f70fb6e2da", - "sha256:b3621256bc8058a7973f736b9e2c940e17133476265a0a83b8df8c0f446ca32f", - "sha256:bc830a689a55e404f0e23d7d69e01c218fa8a0be54a6ca5df45b6fbfeeac648a", - "sha256:d11da4946e19f3b24a873b2ba2891cc226a89bb398561c62dfb966a9b6501a4a", - "sha256:d841dfa15b932bdad27f5149bce86b32d0dd8a29679ed61405677317b6893447", - "sha256:de1a091ab89b7ba50501a915a0fbdceb52b079c752f4f7c76d2060237774a714", - "sha256:e04b61ddffd4ccb4d7ab823b2e55dbb4ad47c37697e311fae4b98b3c023ab194", - "sha256:e4c2110173649acf67bd763bbd2a9c3a863a1d20fd7f3db3493ce4e0fb04fae5", - "sha256:f6edb73619aa0a5fe4a77d97dd9d39bfeef61a5afe71aa5bdceccf59b933999e", - "sha256:fade8ccf7afbc1e7ea353159fa90cc04395f2f4f57658160d7a02f6aa60c4e77", - "sha256:ffced8535cc673fcfb411d28ba5744689a6978fa596c803725a76f43c1bda911" + "sha256:0020aaa4010b136056c20a46ce53204e1407a9e4464246cb2cf95b90808d9161", + "sha256:064001638ab5d36f6aa05b6101446f4a5793fb71e522bc81b8fc65a1894266ff", + "sha256:0a396314b9024fa55bf83a27813fd76cf9f27dce51f53b0f19b51de035146251", + "sha256:19bdede174847c2ef1292df0f23868ab3918b560febb09fcac6eec621bd4812b", + "sha256:1de393f1b188740ca7b38f946f2bbc7edf3910d2048f03bbb8d01f17a038d67c", + "sha256:2505d93395d3f8ae4223e21465994c3bc6952015a38dc4f03cb3e07a2b8d8325", + "sha256:298a301f85f307b4c056a0825eb30f060e64d73605e783289f3df37dd762bab8", + "sha256:29c9ed003eacb92e630ef200e31f47236c2139b39476894f7963b32bd39bafa3", + "sha256:4a2a71678348fb95b13ca108d447f559a754c41b47bd1e7e4fb23974e735682d", + "sha256:50793a44ba0d228ed8cad4d0925e00dfd62ea32f44ddee8854f8066447272d05", + "sha256:511c93d8b1bbbf103ff3f1f120c5a68a9866ce03dea6ac406537f93ca9b19139", + "sha256:734c269e82e5f307fb6e17945953b67659d1731e65309787b8f7ba267d1468f2", + "sha256:798b095381eb42cf40db6876339e7bed84093e5868018a9e73d8e1f7ab4bb21e", + "sha256:799621dcdcdcbb2516546a40123b87bf88de75fe7459f7bd8144f079ace6ec3e", + "sha256:7a58825ff2254e2612c5a932174398a4ea8fbddd8a64a02c880cc32ee28b8820", + "sha256:7bcf52aeb983bd803b7c6106eae1b2d9a0c7ab1241bc6b45e2174ba2b7283031", + "sha256:9ccf4c0e3e2e3237012b516c74c49de8872ccdf9129739f7a0b9d7444a8c4862", + "sha256:a307eb0984eb43e815dcacea3ac50c11d00a936ecf694c46991cd5a23bcb0ec0", + "sha256:a454d5d3fee4b7cc627345791eb2ca4b27fa3bbb062ccf362ecaaa51679a07ed", + "sha256:aa7bf572ae1e006104c584be70dc634849cf0dc62f42f4ee194774f97e7fd17d", + "sha256:acbfa79d44228d96296279068441f980dc63dbed52522d9227ff9f4d96c6627e", + "sha256:b651b61c1af6cda2ee201450f2ffe048a5959bc88e43e6c312f4c93e69c9e929", + "sha256:b779617f5b94486bfd0f22162cd72eb5f2beb0214a14b75fdafb7b2c908ed0cb", + "sha256:d59beef203a3765db72b1d0943547425c8318ecf7d64c451fd1e130b653c2fbb", + "sha256:d67e86859598eed0d926562da33325dac7767b7b1eff84e232c22abea19f4360", + "sha256:edd9f67671555af1eb99ad3c7550238487dd7ac0ac5205b40204ed61c9a922ac", + "sha256:fcf678a3074613119385a02a07c469ec5130559f5ea843c85a0840c80b5b71c6" ], "markers": "python_version >= '3.6'", - "version": "==0.18" + "version": "==0.16" }, "kafka-python": { "hashes": [ @@ -215,57 +336,87 @@ }, "multidict": { "hashes": [ - "sha256:1ece5a3369835c20ed57adadc663400b5525904e53bae59ec854a5d36b39b21a", - "sha256:275ca32383bc5d1894b6975bb4ca6a7ff16ab76fa622967625baeebcf8079000", - "sha256:3750f2205b800aac4bb03b5ae48025a64e474d2c6cc79547988ba1d4122a09e2", - "sha256:4538273208e7294b2659b1602490f4ed3ab1c8cf9dbdd817e0e9db8e64be2507", - "sha256:5141c13374e6b25fe6bf092052ab55c0c03d21bd66c94a0e3ae371d3e4d865a5", - "sha256:51a4d210404ac61d32dada00a50ea7ba412e6ea945bbe992e4d7a595276d2ec7", - "sha256:5cf311a0f5ef80fe73e4f4c0f0998ec08f954a6ec72b746f3c179e37de1d210d", - "sha256:6513728873f4326999429a8b00fc7ceddb2509b01d5fd3f3be7881a257b8d463", - "sha256:7388d2ef3c55a8ba80da62ecfafa06a1c097c18032a501ffd4cabbc52d7f2b19", - "sha256:9456e90649005ad40558f4cf51dbb842e32807df75146c6d940b6f5abb4a78f3", - "sha256:c026fe9a05130e44157b98fea3ab12969e5b60691a276150db9eda71710cd10b", - "sha256:d14842362ed4cf63751648e7672f7174c9818459d169231d03c56e84daf90b7c", - "sha256:e0d072ae0f2a179c375f67e3da300b47e1a83293c554450b29c900e50afaae87", - "sha256:f07acae137b71af3bb548bd8da720956a3bc9f9a0b87733e0899226a2317aeb7", - "sha256:fbb77a75e529021e7c4a8d4e823d88ef4d23674a202be4f5addffc72cbb91430", - "sha256:fcfbb44c59af3f8ea984de67ec7c306f618a3ec771c2843804069917a8f2e255", - "sha256:feed85993dbdb1dbc29102f50bca65bdc68f2c0c8d352468c25b54874f23c39d" + "sha256:018132dbd8688c7a69ad89c4a3f39ea2f9f33302ebe567a879da8f4ca73f0d0a", + "sha256:051012ccee979b2b06be928a6150d237aec75dd6bf2d1eeeb190baf2b05abc93", + "sha256:05c20b68e512166fddba59a918773ba002fdd77800cad9f55b59790030bab632", + "sha256:07b42215124aedecc6083f1ce6b7e5ec5b50047afa701f3442054373a6deb656", + "sha256:0e3c84e6c67eba89c2dbcee08504ba8644ab4284863452450520dad8f1e89b79", + "sha256:0e929169f9c090dae0646a011c8b058e5e5fb391466016b39d21745b48817fd7", + "sha256:1ab820665e67373de5802acae069a6a05567ae234ddb129f31d290fc3d1aa56d", + "sha256:25b4e5f22d3a37ddf3effc0710ba692cfc792c2b9edfb9c05aefe823256e84d5", + "sha256:2e68965192c4ea61fff1b81c14ff712fc7dc15d2bd120602e4a3494ea6584224", + "sha256:2f1a132f1c88724674271d636e6b7351477c27722f2ed789f719f9e3545a3d26", + "sha256:37e5438e1c78931df5d3c0c78ae049092877e5e9c02dd1ff5abb9cf27a5914ea", + "sha256:3a041b76d13706b7fff23b9fc83117c7b8fe8d5fe9e6be45eee72b9baa75f348", + "sha256:3a4f32116f8f72ecf2a29dabfb27b23ab7cdc0ba807e8459e59a93a9be9506f6", + "sha256:46c73e09ad374a6d876c599f2328161bcd95e280f84d2060cf57991dec5cfe76", + "sha256:46dd362c2f045095c920162e9307de5ffd0a1bfbba0a6e990b344366f55a30c1", + "sha256:4b186eb7d6ae7c06eb4392411189469e6a820da81447f46c0072a41c748ab73f", + "sha256:54fd1e83a184e19c598d5e70ba508196fd0bbdd676ce159feb412a4a6664f952", + "sha256:585fd452dd7782130d112f7ddf3473ffdd521414674c33876187e101b588738a", + "sha256:5cf3443199b83ed9e955f511b5b241fd3ae004e3cb81c58ec10f4fe47c7dce37", + "sha256:6a4d5ce640e37b0efcc8441caeea8f43a06addace2335bd11151bc02d2ee31f9", + "sha256:7df80d07818b385f3129180369079bd6934cf70469f99daaebfac89dca288359", + "sha256:806068d4f86cb06af37cd65821554f98240a19ce646d3cd24e1c33587f313eb8", + "sha256:830f57206cc96ed0ccf68304141fec9481a096c4d2e2831f311bde1c404401da", + "sha256:929006d3c2d923788ba153ad0de8ed2e5ed39fdbe8e7be21e2f22ed06c6783d3", + "sha256:9436dc58c123f07b230383083855593550c4d301d2532045a17ccf6eca505f6d", + "sha256:9dd6e9b1a913d096ac95d0399bd737e00f2af1e1594a787e00f7975778c8b2bf", + "sha256:ace010325c787c378afd7f7c1ac66b26313b3344628652eacd149bdd23c68841", + "sha256:b47a43177a5e65b771b80db71e7be76c0ba23cc8aa73eeeb089ed5219cdbe27d", + "sha256:b797515be8743b771aa868f83563f789bbd4b236659ba52243b735d80b29ed93", + "sha256:b7993704f1a4b204e71debe6095150d43b2ee6150fa4f44d6d966ec356a8d61f", + "sha256:d5c65bdf4484872c4af3150aeebe101ba560dcfb34488d9a8ff8dbcd21079647", + "sha256:d81eddcb12d608cc08081fa88d046c78afb1bf8107e6feab5d43503fea74a635", + "sha256:dc862056f76443a0db4509116c5cd480fe1b6a2d45512a653f9a855cc0517456", + "sha256:ecc771ab628ea281517e24fd2c52e8f31c41e66652d07599ad8818abaad38cda", + "sha256:f200755768dc19c6f4e2b672421e0ebb3dd54c38d5a4f262b872d8cfcc9e93b5", + "sha256:f21756997ad8ef815d8ef3d34edd98804ab5ea337feedcd62fb52d22bf531281", + "sha256:fc13a9524bc18b6fb6e0dbec3533ba0496bbed167c56d0aabefd965584557d80" ], "markers": "python_version >= '3.5'", - "version": "==4.7.6" + "version": "==5.1.0" }, "numpy": { "hashes": [ - "sha256:1408c3527a74a0209c781ac82bde2182b0f0bf54dea6e6a363fe0cc4488a7ce7", - "sha256:173f28921b15d341afadf6c3898a34f20a0569e4ad5435297ba262ee8941e77b", - "sha256:1865fdf51446839ca3fffaab172461f2b781163f6f395f1aed256b1ddc253622", - "sha256:3119daed207e9410eaf57dcf9591fdc68045f60483d94956bee0bfdcba790953", - "sha256:35590b9c33c0f1c9732b3231bb6a72d1e4f77872390c47d50a615686ae7ed3fd", - "sha256:37e5ebebb0eb54c5b4a9b04e6f3018e16b8ef257d26c8945925ba8105008e645", - "sha256:37ece2bd095e9781a7156852e43d18044fd0d742934833335599c583618181b9", - "sha256:3ab67966c8d45d55a2bdf40701536af6443763907086c0a6d1232688e27e5447", - "sha256:47f10ab202fe4d8495ff484b5561c65dd59177949ca07975663f4494f7269e3e", - "sha256:55df0f7483b822855af67e38fb3a526e787adf189383b4934305565d71c4b148", - "sha256:5d732d17b8a9061540a10fda5bfeabca5785700ab5469a5e9b93aca5e2d3a5fb", - "sha256:68b69f52e6545af010b76516f5daaef6173e73353e3295c5cb9f96c35d755641", - "sha256:7e8229f3687cdadba2c4faef39204feb51ef7c1a9b669247d49a24f3e2e1617c", - "sha256:8002574a6b46ac3b5739a003b5233376aeac5163e5dcd43dd7ad062f3e186129", - "sha256:876f60de09734fbcb4e27a97c9a286b51284df1326b1ac5f1bf0ad3678236b22", - "sha256:9ce242162015b7e88092dccd0e854548c0926b75c7924a3495e02c6067aba1f5", - "sha256:a35c4e64dfca659fe4d0f1421fc0f05b8ed1ca8c46fb73d9e5a7f175f85696bb", - "sha256:aeba539285dcf0a1ba755945865ec61240ede5432df41d6e29fab305f4384db2", - "sha256:b15c3f1ed08df4980e02cc79ee058b788a3d0bef2fb3c9ca90bb8cbd5b8a3a04", - "sha256:c2f91f88230042a130ceb1b496932aa717dcbd665350beb821534c5c7e15881c", - "sha256:d748ef349bfef2e1194b59da37ed5a29c19ea8d7e6342019921ba2ba4fd8b624", - "sha256:e0d7447679ae9a7124385ccf0ea990bb85bb869cef217e2ea6c844b6a6855073" + "sha256:1dbe1c91269f880e364526649a52eff93ac30035507ae980d2fed33aaee633ac", + "sha256:357768c2e4451ac241465157a3e929b265dfac85d9214074985b1786244f2ef3", + "sha256:3820724272f9913b597ccd13a467cc492a0da6b05df26ea09e78b171a0bb9da6", + "sha256:4391bd07606be175aafd267ef9bea87cf1b8210c787666ce82073b05f202add1", + "sha256:4aa48afdce4660b0076a00d80afa54e8a97cd49f457d68a4342d188a09451c1a", + "sha256:58459d3bad03343ac4b1b42ed14d571b8743dc80ccbf27444f266729df1d6f5b", + "sha256:5c3c8def4230e1b959671eb959083661b4a0d2e9af93ee339c7dada6759a9470", + "sha256:5f30427731561ce75d7048ac254dbe47a2ba576229250fb60f0fb74db96501a1", + "sha256:643843bcc1c50526b3a71cd2ee561cf0d8773f062c8cbaf9ffac9fdf573f83ab", + "sha256:67c261d6c0a9981820c3a149d255a76918278a6b03b6a036800359aba1256d46", + "sha256:67f21981ba2f9d7ba9ade60c9e8cbaa8cf8e9ae51673934480e45cf55e953673", + "sha256:6aaf96c7f8cebc220cdfc03f1d5a31952f027dda050e5a703a0d1c396075e3e7", + "sha256:7c4068a8c44014b2d55f3c3f574c376b2494ca9cc73d2f1bd692382b6dffe3db", + "sha256:7c7e5fa88d9ff656e067876e4736379cc962d185d5cd808014a8a928d529ef4e", + "sha256:7f5ae4f304257569ef3b948810816bc87c9146e8c446053539947eedeaa32786", + "sha256:82691fda7c3f77c90e62da69ae60b5ac08e87e775b09813559f8901a88266552", + "sha256:8737609c3bbdd48e380d463134a35ffad3b22dc56295eff6f79fd85bd0eeeb25", + "sha256:9f411b2c3f3d76bba0865b35a425157c5dcf54937f82bbeb3d3c180789dd66a6", + "sha256:a6be4cb0ef3b8c9250c19cc122267263093eee7edd4e3fa75395dfda8c17a8e2", + "sha256:bcb238c9c96c00d3085b264e5c1a1207672577b93fa666c3b14a45240b14123a", + "sha256:bf2ec4b75d0e9356edea834d1de42b31fe11f726a81dfb2c2112bc1eaa508fcf", + "sha256:d136337ae3cc69aa5e447e78d8e1514be8c3ec9b54264e680cf0b4bd9011574f", + "sha256:d4bf4d43077db55589ffc9009c0ba0a94fa4908b9586d6ccce2e0b164c86303c", + "sha256:d6a96eef20f639e6a97d23e57dd0c1b1069a7b4fd7027482a4c5c451cd7732f4", + "sha256:d9caa9d5e682102453d96a0ee10c7241b72859b01a941a397fd965f23b3e016b", + "sha256:dd1c8f6bd65d07d3810b90d02eba7997e32abbdf1277a481d698969e921a3be0", + "sha256:e31f0bb5928b793169b87e3d1e070f2342b22d5245c755e2b81caa29756246c3", + "sha256:ecb55251139706669fdec2ff073c98ef8e9a84473e51e716211b41aa0f18e656", + "sha256:ee5ec40fdd06d62fe5d4084bef4fd50fd4bb6bfd2bf519365f569dc470163ab0", + "sha256:f17e562de9edf691a42ddb1eb4a5541c20dd3f9e65b09ded2beb0799c0cf29bb", + "sha256:fdffbfb6832cd0b300995a2b08b8f6fa9f6e856d562800fea9182316d99c4e8e" ], "markers": "python_version >= '3.8'", - "version": "==1.23.1" + "version": "==1.21.6" }, "pyyaml": { "hashes": [ + "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf", "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", @@ -277,26 +428,32 @@ "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", + "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782", "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", + "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1", "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", + "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d", "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", + "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7", "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", + "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358", "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", + "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f", "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5" ], @@ -338,7 +495,7 @@ "sha256:f1a25a61495b6f7bb986accc5b597a3541d9bd3ef0016f50be16dbb32025b302", "sha256:fa411b1d8f371d3a49d31b0789eb6da2537dadbb2aef74a43aa99a78195c3f76" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==19.0.2" }, "setuptools-dso": { @@ -373,84 +530,54 @@ }, "tickit": { "git": "https://github.com/dls-controls/tickit.git", - "ref": "eac7366430c094c811b68bb8bce17a356844b780" + "ref": "13d1e3a973c3330231a56815663944df89894afa" }, "tickit-devices": { "editable": true, "path": "." }, - "typing-extensions": { - "hashes": [ - "sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02", - "sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6" - ], - "markers": "python_version >= '3.7'", - "version": "==4.3.0" - }, "yarl": { "hashes": [ - "sha256:076eede537ab978b605f41db79a56cad2e7efeea2aa6e0fa8f05a26c24a034fb", - "sha256:07b21e274de4c637f3e3b7104694e53260b5fc10d51fb3ec5fed1da8e0f754e3", - "sha256:0ab5a138211c1c366404d912824bdcf5545ccba5b3ff52c42c4af4cbdc2c5035", - "sha256:0c03f456522d1ec815893d85fccb5def01ffaa74c1b16ff30f8aaa03eb21e453", - "sha256:12768232751689c1a89b0376a96a32bc7633c08da45ad985d0c49ede691f5c0d", - "sha256:19cd801d6f983918a3f3a39f3a45b553c015c5aac92ccd1fac619bd74beece4a", - "sha256:1ca7e596c55bd675432b11320b4eacc62310c2145d6801a1f8e9ad160685a231", - "sha256:1e4808f996ca39a6463f45182e2af2fae55e2560be586d447ce8016f389f626f", - "sha256:205904cffd69ae972a1707a1bd3ea7cded594b1d773a0ce66714edf17833cdae", - "sha256:20df6ff4089bc86e4a66e3b1380460f864df3dd9dccaf88d6b3385d24405893b", - "sha256:21ac44b763e0eec15746a3d440f5e09ad2ecc8b5f6dcd3ea8cb4773d6d4703e3", - "sha256:29e256649f42771829974e742061c3501cc50cf16e63f91ed8d1bf98242e5507", - "sha256:2d800b9c2eaf0684c08be5f50e52bfa2aa920e7163c2ea43f4f431e829b4f0fd", - "sha256:2d93a049d29df172f48bcb09acf9226318e712ce67374f893b460b42cc1380ae", - "sha256:31a9a04ecccd6b03e2b0e12e82131f1488dea5555a13a4d32f064e22a6003cfe", - "sha256:3d1a50e461615747dd93c099f297c1994d472b0f4d2db8a64e55b1edf704ec1c", - "sha256:449c957ffc6bc2309e1fbe67ab7d2c1efca89d3f4912baeb8ead207bb3cc1cd4", - "sha256:4a88510731cd8d4befaba5fbd734a7dd914de5ab8132a5b3dde0bbd6c9476c64", - "sha256:4c322cbaa4ed78a8aac89b2174a6df398faf50e5fc12c4c191c40c59d5e28357", - "sha256:5395da939ffa959974577eff2cbfc24b004a2fb6c346918f39966a5786874e54", - "sha256:5587bba41399854703212b87071c6d8638fa6e61656385875f8c6dff92b2e461", - "sha256:56c11efb0a89700987d05597b08a1efcd78d74c52febe530126785e1b1a285f4", - "sha256:5999c4662631cb798496535afbd837a102859568adc67d75d2045e31ec3ac497", - "sha256:59ddd85a1214862ce7c7c66457f05543b6a275b70a65de366030d56159a979f0", - "sha256:6347f1a58e658b97b0a0d1ff7658a03cb79bdbda0331603bed24dd7054a6dea1", - "sha256:6628d750041550c5d9da50bb40b5cf28a2e63b9388bac10fedd4f19236ef4957", - "sha256:6afb336e23a793cd3b6476c30f030a0d4c7539cd81649683b5e0c1b0ab0bf350", - "sha256:6c8148e0b52bf9535c40c48faebb00cb294ee577ca069d21bd5c48d302a83780", - "sha256:76577f13333b4fe345c3704811ac7509b31499132ff0181f25ee26619de2c843", - "sha256:7c0da7e44d0c9108d8b98469338705e07f4bb7dab96dbd8fa4e91b337db42548", - "sha256:7de89c8456525650ffa2bb56a3eee6af891e98f498babd43ae307bd42dca98f6", - "sha256:7ec362167e2c9fd178f82f252b6d97669d7245695dc057ee182118042026da40", - "sha256:7fce6cbc6c170ede0221cc8c91b285f7f3c8b9fe28283b51885ff621bbe0f8ee", - "sha256:85cba594433915d5c9a0d14b24cfba0339f57a2fff203a5d4fd070e593307d0b", - "sha256:8b0af1cf36b93cee99a31a545fe91d08223e64390c5ecc5e94c39511832a4bb6", - "sha256:9130ddf1ae9978abe63808b6b60a897e41fccb834408cde79522feb37fb72fb0", - "sha256:99449cd5366fe4608e7226c6cae80873296dfa0cde45d9b498fefa1de315a09e", - "sha256:9de955d98e02fab288c7718662afb33aab64212ecb368c5dc866d9a57bf48880", - "sha256:a0fb2cb4204ddb456a8e32381f9a90000429489a25f64e817e6ff94879d432fc", - "sha256:a165442348c211b5dea67c0206fc61366212d7082ba8118c8c5c1c853ea4d82e", - "sha256:ab2a60d57ca88e1d4ca34a10e9fb4ab2ac5ad315543351de3a612bbb0560bead", - "sha256:abc06b97407868ef38f3d172762f4069323de52f2b70d133d096a48d72215d28", - "sha256:af887845b8c2e060eb5605ff72b6f2dd2aab7a761379373fd89d314f4752abbf", - "sha256:b19255dde4b4f4c32e012038f2c169bb72e7f081552bea4641cab4d88bc409dd", - "sha256:b3ded839a5c5608eec8b6f9ae9a62cb22cd037ea97c627f38ae0841a48f09eae", - "sha256:c1445a0c562ed561d06d8cbc5c8916c6008a31c60bc3655cdd2de1d3bf5174a0", - "sha256:d0272228fabe78ce00a3365ffffd6f643f57a91043e119c289aaba202f4095b0", - "sha256:d0b51530877d3ad7a8d47b2fff0c8df3b8f3b8deddf057379ba50b13df2a5eae", - "sha256:d0f77539733e0ec2475ddcd4e26777d08996f8cd55d2aef82ec4d3896687abda", - "sha256:d2b8f245dad9e331540c350285910b20dd913dc86d4ee410c11d48523c4fd546", - "sha256:dd032e8422a52e5a4860e062eb84ac94ea08861d334a4bcaf142a63ce8ad4802", - "sha256:de49d77e968de6626ba7ef4472323f9d2e5a56c1d85b7c0e2a190b2173d3b9be", - "sha256:de839c3a1826a909fdbfe05f6fe2167c4ab033f1133757b5936efe2f84904c07", - "sha256:e80ed5a9939ceb6fda42811542f31c8602be336b1fb977bccb012e83da7e4936", - "sha256:ea30a42dc94d42f2ba4d0f7c0ffb4f4f9baa1b23045910c0c32df9c9902cb272", - "sha256:ea513a25976d21733bff523e0ca836ef1679630ef4ad22d46987d04b372d57fc", - "sha256:ed19b74e81b10b592084a5ad1e70f845f0aacb57577018d31de064e71ffa267a", - "sha256:f5af52738e225fcc526ae64071b7e5342abe03f42e0e8918227b38c9aa711e28", - "sha256:fae37373155f5ef9b403ab48af5136ae9851151f7aacd9926251ab26b953118b" + "sha256:00d7ad91b6583602eb9c1d085a2cf281ada267e9a197e8b7cae487dadbfa293e", + "sha256:0355a701b3998dcd832d0dc47cc5dedf3874f966ac7f870e0f3a6788d802d434", + "sha256:15263c3b0b47968c1d90daa89f21fcc889bb4b1aac5555580d74565de6836366", + "sha256:2ce4c621d21326a4a5500c25031e102af589edb50c09b321049e388b3934eec3", + "sha256:31ede6e8c4329fb81c86706ba8f6bf661a924b53ba191b27aa5fcee5714d18ec", + "sha256:324ba3d3c6fee56e2e0b0d09bf5c73824b9f08234339d2b788af65e60040c959", + "sha256:329412812ecfc94a57cd37c9d547579510a9e83c516bc069470db5f75684629e", + "sha256:4736eaee5626db8d9cda9eb5282028cc834e2aeb194e0d8b50217d707e98bb5c", + "sha256:4953fb0b4fdb7e08b2f3b3be80a00d28c5c8a2056bb066169de00e6501b986b6", + "sha256:4c5bcfc3ed226bf6419f7a33982fb4b8ec2e45785a0561eb99274ebbf09fdd6a", + "sha256:547f7665ad50fa8563150ed079f8e805e63dd85def6674c97efd78eed6c224a6", + "sha256:5b883e458058f8d6099e4420f0cc2567989032b5f34b271c0827de9f1079a424", + "sha256:63f90b20ca654b3ecc7a8d62c03ffa46999595f0167d6450fa8383bab252987e", + "sha256:68dc568889b1c13f1e4745c96b931cc94fdd0defe92a72c2b8ce01091b22e35f", + "sha256:69ee97c71fee1f63d04c945f56d5d726483c4762845400a6795a3b75d56b6c50", + "sha256:6d6283d8e0631b617edf0fd726353cb76630b83a089a40933043894e7f6721e2", + "sha256:72a660bdd24497e3e84f5519e57a9ee9220b6f3ac4d45056961bf22838ce20cc", + "sha256:73494d5b71099ae8cb8754f1df131c11d433b387efab7b51849e7e1e851f07a4", + "sha256:7356644cbed76119d0b6bd32ffba704d30d747e0c217109d7979a7bc36c4d970", + "sha256:8a9066529240171b68893d60dca86a763eae2139dd42f42106b03cf4b426bf10", + "sha256:8aa3decd5e0e852dc68335abf5478a518b41bf2ab2f330fe44916399efedfae0", + "sha256:97b5bdc450d63c3ba30a127d018b866ea94e65655efaf889ebeabc20f7d12406", + "sha256:9ede61b0854e267fd565e7527e2f2eb3ef8858b301319be0604177690e1a3896", + "sha256:b2e9a456c121e26d13c29251f8267541bd75e6a1ccf9e859179701c36a078643", + "sha256:b5dfc9a40c198334f4f3f55880ecf910adebdcb2a0b9a9c23c9345faa9185721", + "sha256:bafb450deef6861815ed579c7a6113a879a6ef58aed4c3a4be54400ae8871478", + "sha256:c49ff66d479d38ab863c50f7bb27dee97c6627c5fe60697de15529da9c3de724", + "sha256:ce3beb46a72d9f2190f9e1027886bfc513702d748047b548b05dab7dfb584d2e", + "sha256:d26608cf178efb8faa5ff0f2d2e77c208f471c5a3709e577a7b3fd0445703ac8", + "sha256:d597767fcd2c3dc49d6eea360c458b65643d1e4dbed91361cf5e36e53c1f8c96", + "sha256:d5c32c82990e4ac4d8150fd7652b972216b204de4e83a122546dce571c1bdf25", + "sha256:d8d07d102f17b68966e2de0e07bfd6e139c7c02ef06d3a0f8d2f0f055e13bb76", + "sha256:e46fba844f4895b36f4c398c5af062a9808d1f26b2999c58909517384d5deda2", + "sha256:e6b5460dc5ad42ad2b36cca524491dfcaffbfd9c8df50508bddc354e787b8dc2", + "sha256:f040bcc6725c821a4c0665f3aa96a4d0805a7aaf2caf266d256b8ed71b9f041c", + "sha256:f0b059678fd549c66b89bed03efcabb009075bd131c248ecdf087bdb6faba24a", + "sha256:fcbb48a93e8699eae920f8d92f7160c03567b421bc17362a9ffbbd706a816f71" ], "markers": "python_version >= '3.7'", - "version": "==1.8.1" + "version": "==1.6.3" } }, "develop": { @@ -463,44 +590,122 @@ }, "aiohttp": { "hashes": [ - "sha256:173267050501e1537293df06723bc5e719990889e2820ba3932969983892e960", - "sha256:438f1f1555c02c50894604d94944cff188fe138b46467b7fa99fdceb51ab5842", - "sha256:90bed250d1435aef33a1f8c439c5056d5d25a44fe6caf33fcafafed805bad4dc", - "sha256:93c3b14747413f38f094a60e98f55e73831f0c9a23ae7faa3dc97d8963e13021", - "sha256:a6e70a38d883185b1921d8122759661c39ade54949770394412a9e713fec6fa7", - "sha256:b5036133c1ba77ed5a70208d2a021a90b76fdf8bf523ae33dae46d4f4380d86f", - "sha256:c138451a82cdbf65cddf952941d5c7a1a2cac8ce3bc618dee8d889e5251ec7a5", - "sha256:c94770383e49f9cc5912b926364ad022a6c8a5dbf5498933ca3a5713c6daf738", - "sha256:ea26536ae06df6dac021303a0df72c79e55512070e6a304ba93ad468a3a754dc" + "sha256:01d7bdb774a9acc838e6b8f1d114f45303841b89b95984cbb7d80ea41172a9e3", + "sha256:03a6d5349c9ee8f79ab3ff3694d6ce1cfc3ced1c9d36200cb8f08ba06bd3b782", + "sha256:04d48b8ce6ab3cf2097b1855e1505181bdd05586ca275f2505514a6e274e8e75", + "sha256:0770e2806a30e744b4e21c9d73b7bee18a1cfa3c47991ee2e5a65b887c49d5cf", + "sha256:07b05cd3305e8a73112103c834e91cd27ce5b4bd07850c4b4dbd1877d3f45be7", + "sha256:086f92daf51a032d062ec5f58af5ca6a44d082c35299c96376a41cbb33034675", + "sha256:099ebd2c37ac74cce10a3527d2b49af80243e2a4fa39e7bce41617fbc35fa3c1", + "sha256:0c7ebbbde809ff4e970824b2b6cb7e4222be6b95a296e46c03cf050878fc1785", + "sha256:102e487eeb82afac440581e5d7f8f44560b36cf0bdd11abc51a46c1cd88914d4", + "sha256:11691cf4dc5b94236ccc609b70fec991234e7ef8d4c02dd0c9668d1e486f5abf", + "sha256:11a67c0d562e07067c4e86bffc1553f2cf5b664d6111c894671b2b8712f3aba5", + "sha256:12de6add4038df8f72fac606dff775791a60f113a725c960f2bab01d8b8e6b15", + "sha256:13487abd2f761d4be7c8ff9080de2671e53fff69711d46de703c310c4c9317ca", + "sha256:15b09b06dae900777833fe7fc4b4aa426556ce95847a3e8d7548e2d19e34edb8", + "sha256:1c182cb873bc91b411e184dab7a2b664d4fea2743df0e4d57402f7f3fa644bac", + "sha256:1ed0b6477896559f17b9eaeb6d38e07f7f9ffe40b9f0f9627ae8b9926ae260a8", + "sha256:28d490af82bc6b7ce53ff31337a18a10498303fe66f701ab65ef27e143c3b0ef", + "sha256:2e5d962cf7e1d426aa0e528a7e198658cdc8aa4fe87f781d039ad75dcd52c516", + "sha256:2ed076098b171573161eb146afcb9129b5ff63308960aeca4b676d9d3c35e700", + "sha256:2f2f69dca064926e79997f45b2f34e202b320fd3782f17a91941f7eb85502ee2", + "sha256:31560d268ff62143e92423ef183680b9829b1b482c011713ae941997921eebc8", + "sha256:31d1e1c0dbf19ebccbfd62eff461518dcb1e307b195e93bba60c965a4dcf1ba0", + "sha256:37951ad2f4a6df6506750a23f7cbabad24c73c65f23f72e95897bb2cecbae676", + "sha256:3af642b43ce56c24d063325dd2cf20ee012d2b9ba4c3c008755a301aaea720ad", + "sha256:44db35a9e15d6fe5c40d74952e803b1d96e964f683b5a78c3cc64eb177878155", + "sha256:473d93d4450880fe278696549f2e7aed8cd23708c3c1997981464475f32137db", + "sha256:477c3ea0ba410b2b56b7efb072c36fa91b1e6fc331761798fa3f28bb224830dd", + "sha256:4a4a4e30bf1edcad13fb0804300557aedd07a92cabc74382fdd0ba6ca2661091", + "sha256:4aed991a28ea3ce320dc8ce655875e1e00a11bdd29fe9444dd4f88c30d558602", + "sha256:51467000f3647d519272392f484126aa716f747859794ac9924a7aafa86cd411", + "sha256:55c3d1072704d27401c92339144d199d9de7b52627f724a949fc7d5fc56d8b93", + "sha256:589c72667a5febd36f1315aa6e5f56dd4aa4862df295cb51c769d16142ddd7cd", + "sha256:5bfde62d1d2641a1f5173b8c8c2d96ceb4854f54a44c23102e2ccc7e02f003ec", + "sha256:5c23b1ad869653bc818e972b7a3a79852d0e494e9ab7e1a701a3decc49c20d51", + "sha256:61bfc23df345d8c9716d03717c2ed5e27374e0fe6f659ea64edcd27b4b044cf7", + "sha256:6ae828d3a003f03ae31915c31fa684b9890ea44c9c989056fea96e3d12a9fa17", + "sha256:6c7cefb4b0640703eb1069835c02486669312bf2f12b48a748e0a7756d0de33d", + "sha256:6d69f36d445c45cda7b3b26afef2fc34ef5ac0cdc75584a87ef307ee3c8c6d00", + "sha256:6f0d5f33feb5f69ddd57a4a4bd3d56c719a141080b445cbf18f238973c5c9923", + "sha256:6f8b01295e26c68b3a1b90efb7a89029110d3a4139270b24fda961893216c440", + "sha256:713ac174a629d39b7c6a3aa757b337599798da4c1157114a314e4e391cd28e32", + "sha256:718626a174e7e467f0558954f94af117b7d4695d48eb980146016afa4b580b2e", + "sha256:7187a76598bdb895af0adbd2fb7474d7f6025d170bc0a1130242da817ce9e7d1", + "sha256:71927042ed6365a09a98a6377501af5c9f0a4d38083652bcd2281a06a5976724", + "sha256:7d08744e9bae2ca9c382581f7dce1273fe3c9bae94ff572c3626e8da5b193c6a", + "sha256:7dadf3c307b31e0e61689cbf9e06be7a867c563d5a63ce9dca578f956609abf8", + "sha256:81e3d8c34c623ca4e36c46524a3530e99c0bc95ed068fd6e9b55cb721d408fb2", + "sha256:844a9b460871ee0a0b0b68a64890dae9c415e513db0f4a7e3cab41a0f2fedf33", + "sha256:8b7ef7cbd4fec9a1e811a5de813311ed4f7ac7d93e0fda233c9b3e1428f7dd7b", + "sha256:97ef77eb6b044134c0b3a96e16abcb05ecce892965a2124c566af0fd60f717e2", + "sha256:99b5eeae8e019e7aad8af8bb314fb908dd2e028b3cdaad87ec05095394cce632", + "sha256:a25fa703a527158aaf10dafd956f7d42ac6d30ec80e9a70846253dd13e2f067b", + "sha256:a2f635ce61a89c5732537a7896b6319a8fcfa23ba09bec36e1b1ac0ab31270d2", + "sha256:a79004bb58748f31ae1cbe9fa891054baaa46fb106c2dc7af9f8e3304dc30316", + "sha256:a996d01ca39b8dfe77440f3cd600825d05841088fd6bc0144cc6c2ec14cc5f74", + "sha256:b0e20cddbd676ab8a64c774fefa0ad787cc506afd844de95da56060348021e96", + "sha256:b6613280ccedf24354406caf785db748bebbddcf31408b20c0b48cb86af76866", + "sha256:b9d00268fcb9f66fbcc7cd9fe423741d90c75ee029a1d15c09b22d23253c0a44", + "sha256:bb01ba6b0d3f6c68b89fce7305080145d4877ad3acaed424bae4d4ee75faa950", + "sha256:c2aef4703f1f2ddc6df17519885dbfa3514929149d3ff900b73f45998f2532fa", + "sha256:c34dc4958b232ef6188c4318cb7b2c2d80521c9a56c52449f8f93ab7bc2a8a1c", + "sha256:c3630c3ef435c0a7c549ba170a0633a56e92629aeed0e707fec832dee313fb7a", + "sha256:c3d6a4d0619e09dcd61021debf7059955c2004fa29f48788a3dfaf9c9901a7cd", + "sha256:d15367ce87c8e9e09b0f989bfd72dc641bcd04ba091c68cd305312d00962addd", + "sha256:d2f9b69293c33aaa53d923032fe227feac867f81682f002ce33ffae978f0a9a9", + "sha256:e999f2d0e12eea01caeecb17b653f3713d758f6dcc770417cf29ef08d3931421", + "sha256:ea302f34477fda3f85560a06d9ebdc7fa41e82420e892fc50b577e35fc6a50b2", + "sha256:eaba923151d9deea315be1f3e2b31cc39a6d1d2f682f942905951f4e40200922", + "sha256:ef9612483cb35171d51d9173647eed5d0069eaa2ee812793a75373447d487aa4", + "sha256:f5315a2eb0239185af1bddb1abf472d877fede3cc8d143c6cddad37678293237", + "sha256:fa0ffcace9b3aa34d205d8130f7873fcfefcb6a4dd3dd705b0dab69af6712642", + "sha256:fc5471e1a54de15ef71c1bc6ebe80d4dc681ea600e68bfd1cbce40427f0b7578" ], "markers": "python_version >= '3.6'", - "version": "==4.0.0a1" + "version": "==3.8.1" }, "aiokafka": { "hashes": [ - "sha256:16731e8aa0fc70dc35c31041599c9a5237dd5d2c1a4d04af58f30a942191a281", - "sha256:1a9b6ecb606062b3595bc5104b85b42b62621a86d179b75d708279041152f461", - "sha256:34eda0b6eb794c36f4100be772f3b120a3c00daaf342f593f32994a762aed7e8", - "sha256:383cc7d45b47676fea60dbedee747c5c08dde5c10b1be0afc6598fb21a7891b4", - "sha256:3b1f1e9ad66883ed809d737d57edfb13f1aeb9b08c6fd6b71afefce712c13dad", - "sha256:5371bd663f545ced555775e7e49f39a54b243435098a9699582bb3b32884e332", - "sha256:594d2a29875f78d56251141ff95a982c5be64844dc9ae619c285f36c57a08c6e", - "sha256:6116b68ca975caafd7efd338ffdaec63789e1c334af6174e20edc1d16d14e463", - "sha256:7d56627c3250ba2359dfa90f2c8a3ab995795e0116038905b2f8a608cd1fd606", - "sha256:7fe02a3868236d84356d5fa7c7625ed3a27e52699477c5ee8bd5dc9b5adb592f", - "sha256:a3bfe4ad7d3829a98c8391a9a28f179b47df4f66e26ea5b1c665f872b6e21809", - "sha256:a8fc41d18731d8879483aecb93ae7ebf5457f63daf4c8923ddc046792c2c3096", - "sha256:b1958277eaa702509591c0674790a8c9aced8fef7723dafae0f9aec6d2da71a5", - "sha256:b19f077e12fe23e359f7a7dca9baf8532c63f4c8149703ce4c56de372d17e26c", - "sha256:be43d7ddd700d501a6f4c59c859baa9888c2d086b69882f542951bae41234f6a", - "sha256:c96824cef1a480fd2ab4bbd9e9aa737c9191211bab5f7787ef401926d5fda95d", - "sha256:cda55f5cfb19ea7d2f55a51d320a57312f152dab3e333fa1fbfcdde7a9e25a53", - "sha256:ce23baeaacf501f619967067d2c0d4c2b2b761012f9f9c8a49593e96c7550aff", - "sha256:d801bb2f5a4ae726a433ae74a5d34e7e0d44128de53c9c7eea5cb4cdaaf80175", - "sha256:e6e78206e5d031e6644d3a46153a146d2d2afff4cf9da9a81edb9f8714114b62", - "sha256:ebbb258840f134bad0e6ca8681a87cd292a1f4ed7253a821c16b4e9f2610a04a" - ], - "version": "==0.7.2" + "sha256:02156dee5156a0c5283d45df0f0e8aa516ec7f3d966d7dfeb35f8ada7c8f8557", + "sha256:02f67258a78e5d9d17470816ea879a653c5efecc0c6686e18d792fbd38e1f70c", + "sha256:035d1fb4cb22273bb0a47f31040fabfd9b248f8026dd306dd50e7e69f005a71d", + "sha256:061799f1b8b005f950012a11948ff8a6ab48114eac91341acd8feec5430f0f31", + "sha256:09cef9cf579193b497d3c65644b71ba1523660b7677805d0efea6c3206e4e643", + "sha256:120d3c477e7e9a53dd55f1a16b9c67e8a51cdc38e5e46fc25aae7d20f78519f2", + "sha256:2294ba68ff87fdf6cf70a5603afb4020c4fc7a39053ccd8e6abdf0aa34ba1ca3", + "sha256:2f1a2fcb5f0643527d77446437d27ed93ae94844c1b324e904a813acce675db8", + "sha256:45704e5a8c81e4db6333ab6315effc1b83feec1dfc2fc3a28e7c7600b0d80a23", + "sha256:47cda205e8fe16edf126c362a59071d0a4b74dd07bee6f070b26e5d2580cc37b", + "sha256:49517e2309826c27eaff940384e90773d89c69da023907663cda7853a00fb9ee", + "sha256:4c463265252236b7759920998862b56bad3d6eedfdfd3fce0774ad99bb2c4877", + "sha256:4cb2544ca8d5d5a4055c57fbb6c4ecfc82e6f3b670485c291b256c90d506acf3", + "sha256:567a3b856639bff36b8c74a92dfecd64ace8d07d755bb3ee6d5332273d2a8c6e", + "sha256:5fac6f1168c15b08f3fcb951347343a78d8c130292127d8a4e23466a5d2510f7", + "sha256:6e7d031b8bc08f9d9c4149c6afaedb650082309f01a3b79f0619814cc299fc4d", + "sha256:8b5e71d6da8edf0f592080488b198af42fbe9778de077762e4452d574e694efa", + "sha256:8ebb032a05a6696b25abbe5db677890adca9a3284d13e1975842009c1d7678dd", + "sha256:90a4cb54ae23ff55758a9ce8f3ba1ec67c6f2328f9197c3bacc61a24f812cf04", + "sha256:90a91155aeb28c872b74ecb3c9f671253db10cf23dc3af858bd9ed1630c0d1ae", + "sha256:95edb38631bf5dbb8cd65fecd8620e11a15534cd6dd22e0dc45488b4266b5452", + "sha256:b19d00b16637d02cfcee3d5cfdbcfd497702c09ae1f63e194830798cd223f910", + "sha256:b5a6fb1cfd77eac4b397ef5af3765d1d881c86b157137b12ca4f12aef1db433c", + "sha256:b7390a9d9d03a2a3dbee0f8fa6735b008408e0f561a279b3df13e9758ab6d67f", + "sha256:c70ed4b09e01d774d1821db30f6fbc6475a41224d0dc1488d018ef97610dc3da", + "sha256:dfd8d58f7418aabc07f1e8c1b904f478bf955919b743d4d44607dbf18a2c54b2", + "sha256:e8276baed94281ef4548f19e039b9b4a8af79afee324bd259d8898638ca15da6", + "sha256:edcf1cdcf9246edd5c4c1b649609a7ac5bfe4276da586aede470b73f9d00b809", + "sha256:f3a2138649ca2427a91dfc0927ddd445a9a6aaf9a9b0972d683cb230923f821f" + ], + "version": "==0.7.1" + }, + "aiosignal": { + "hashes": [ + "sha256:26e62109036cd181df6e6ad646f91f0dcfd05fe16d0cb924138ff2ab75d64e3a", + "sha256:78ed67db6c7b7ced4f98e495e572106d5c432a93e1ddd1bf475e1dc05f5b7df2" + ], + "version": "==1.2.0" }, "aiozmq": { "hashes": [ @@ -526,11 +731,11 @@ }, "async-timeout": { "hashes": [ - "sha256:0c3c816a028d47f659d6ff5c745cb2acf1f966da1fe5c19c77a70282b25f4c5f", - "sha256:4291ca197d287d274d0b6cb5d6f8f8f82d434ed288f962539ff18cc9012f9ea3" + "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15", + "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c" ], "markers": "python_full_version >= '3.5.3'", - "version": "==3.0.1" + "version": "==4.0.2" }, "attrs": { "hashes": [ @@ -579,26 +784,18 @@ }, "certifi": { "hashes": [ - "sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d", - "sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412" + "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14", + "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382" ], "markers": "python_version >= '3.6'", - "version": "==2022.6.15" - }, - "chardet": { - "hashes": [ - "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", - "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" - ], - "version": "==3.0.4" + "version": "==2022.9.24" }, "charset-normalizer": { "hashes": [ - "sha256:5189b6f22b01957427f35b6a08d9a0bc45b46d3788ef5a92e978433c7a35f8a5", - "sha256:575e708016ff3a5e3681541cb9d79312c416835686d054a23accb873b254f413" + "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845", + "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f" ], - "markers": "python_version >= '3.6'", - "version": "==2.1.0" + "version": "==2.1.1" }, "click": { "hashes": [ @@ -613,50 +810,59 @@ "toml" ], "hashes": [ - "sha256:04010af3c06ce2bfeb3b1e4e05d136f88d88c25f76cd4faff5d1fd84d11581ea", - "sha256:05de0762c1caed4a162b3e305f36cf20a548ff4da0be6766ad5c870704be3660", - "sha256:068d6f2a893af838291b8809c876973d885543411ea460f3e6886ac0ee941732", - "sha256:0a84376e4fd13cebce2c0ef8c2f037929c8307fb94af1e5dbe50272a1c651b5d", - "sha256:0e34247274bde982bbc613894d33f9e36358179db2ed231dd101c48dd298e7b0", - "sha256:0e3a41aad5919613483aad9ebd53336905cab1bd6788afd3995c2a972d89d795", - "sha256:306788fd019bb90e9cbb83d3f3c6becad1c048dd432af24f8320cf38ac085684", - "sha256:39ebd8e120cb77a06ee3d5fc26f9732670d1c397d7cd3acf02f6f62693b89b80", - "sha256:411fdd9f4203afd93b056c0868c8f9e5e16813e765de962f27e4e5798356a052", - "sha256:4822327b35cb032ff16af3bec27f73985448f08e874146b5b101e0e558b613dd", - "sha256:52f8b9fcf3c5e427d51bbab1fb92b575a9a9235d516f175b24712bcd4b5be917", - "sha256:53c8edd3b83a4ddba3d8c506f1359401e7770b30f2188f15c17a338adf5a14db", - "sha256:555a498999c44f5287cc95500486cd0d4f021af9162982cbe504d4cb388f73b5", - "sha256:59fc88bc13e30f25167e807b8cad3c41b7218ef4473a20c86fd98a7968733083", - "sha256:5a559aab40c716de80c7212295d0dc96bc1b6c719371c20dd18c5187c3155518", - "sha256:5de1e9335e2569974e20df0ce31493d315a830d7987e71a24a2a335a8d8459d3", - "sha256:6630d8d943644ea62132789940ca97d05fac83f73186eaf0930ffa715fbdab6b", - "sha256:73a10939dc345460ca0655356a470dd3de9759919186a82383c87b6eb315faf2", - "sha256:7856ea39059d75f822ff0df3a51ea6d76307c897048bdec3aad1377e4e9dca20", - "sha256:877ee5478fd78e100362aed56db47ccc5f23f6e7bb035a8896855f4c3e49bc9b", - "sha256:920a734fe3d311ca01883b4a19aa386c97b82b69fbc023458899cff0a0d621b9", - "sha256:923f9084d7e1d31b5f74c92396b05b18921ed01ee5350402b561a79dce3ea48d", - "sha256:a0d2df4227f645a879010461df2cea6b7e3fb5a97d7eafa210f7fb60345af9e8", - "sha256:a2738ba1ee544d6f294278cfb6de2dc1f9a737a780469b5366e662a218f806c3", - "sha256:a42eaaae772f14a5194f181740a67bfd48e8806394b8c67aa4399e09d0d6b5db", - "sha256:ab2b1a89d2bc7647622e9eaf06128a5b5451dccf7c242deaa31420b055716481", - "sha256:ab9ef0187d6c62b09dec83a84a3b94f71f9690784c84fd762fb3cf2d2b44c914", - "sha256:adf1a0d272633b21d645dd6e02e3293429c1141c7d65a58e4cbcd592d53b8e01", - "sha256:b104b6b1827d6a22483c469e3983a204bcf9c6bf7544bf90362c4654ebc2edf3", - "sha256:bc698580216050b5f4a34d2cdd2838b429c53314f1c4835fab7338200a8396f2", - "sha256:cdf7b83f04a313a21afb1f8730fe4dd09577fefc53bbdfececf78b2006f4268e", - "sha256:d5191d53afbe5b6059895fa7f58223d3751c42b8101fb3ce767e1a0b1a1d8f87", - "sha256:d75314b00825d70e1e34b07396e23f47ed1d4feedc0122748f9f6bd31a544840", - "sha256:e4d64304acf79766e650f7acb81d263a3ea6e2d0d04c5172b7189180ff2c023c", - "sha256:ec2ae1f398e5aca655b7084392d23e80efb31f7a660d2eecf569fb9f79b3fb94", - "sha256:eff095a5aac7011fdb51a2c82a8fae9ec5211577f4b764e1e59cfa27ceeb1b59", - "sha256:f1eda5cae434282712e40b42aaf590b773382afc3642786ac3ed39053973f61f", - "sha256:f217850ac0e046ede611312703423767ca032a7b952b5257efac963942c055de", - "sha256:f50d3a822947572496ea922ee7825becd8e3ae6fbd2400cd8236b7d64b17f285", - "sha256:fc294de50941d3da66a09dca06e206297709332050973eca17040278cb0918ff", - "sha256:ff9832434a9193fbd716fbe05f9276484e18d26cc4cf850853594bb322807ac3" + "sha256:027018943386e7b942fa832372ebc120155fd970837489896099f5cfa2890f79", + "sha256:11b990d520ea75e7ee8dcab5bc908072aaada194a794db9f6d7d5cfd19661e5a", + "sha256:12adf310e4aafddc58afdb04d686795f33f4d7a6fa67a7a9d4ce7d6ae24d949f", + "sha256:1431986dac3923c5945271f169f59c45b8802a114c8f548d611f2015133df77a", + "sha256:1ef221513e6f68b69ee9e159506d583d31aa3567e0ae84eaad9d6ec1107dddaa", + "sha256:20c8ac5386253717e5ccc827caad43ed66fea0efe255727b1053a8154d952398", + "sha256:2198ea6fc548de52adc826f62cb18554caedfb1d26548c1b7c88d8f7faa8f6ba", + "sha256:255758a1e3b61db372ec2736c8e2a1fdfaf563977eedbdf131de003ca5779b7d", + "sha256:265de0fa6778d07de30bcf4d9dc471c3dc4314a23a3c6603d356a3c9abc2dfcf", + "sha256:33a7da4376d5977fbf0a8ed91c4dffaaa8dbf0ddbf4c8eea500a2486d8bc4d7b", + "sha256:42eafe6778551cf006a7c43153af1211c3aaab658d4d66fa5fcc021613d02518", + "sha256:4433b90fae13f86fafff0b326453dd42fc9a639a0d9e4eec4d366436d1a41b6d", + "sha256:4a5375e28c5191ac38cca59b38edd33ef4cc914732c916f2929029b4bfb50795", + "sha256:4a8dbc1f0fbb2ae3de73eb0bdbb914180c7abfbf258e90b311dcd4f585d44bd2", + "sha256:59f53f1dc5b656cafb1badd0feb428c1e7bc19b867479ff72f7a9dd9b479f10e", + "sha256:5dbec3b9095749390c09ab7c89d314727f18800060d8d24e87f01fb9cfb40b32", + "sha256:633713d70ad6bfc49b34ead4060531658dc6dfc9b3eb7d8a716d5873377ab745", + "sha256:6b07130585d54fe8dff3d97b93b0e20290de974dc8177c320aeaf23459219c0b", + "sha256:6c4459b3de97b75e3bd6b7d4b7f0db13f17f504f3d13e2a7c623786289dd670e", + "sha256:6d4817234349a80dbf03640cec6109cd90cba068330703fa65ddf56b60223a6d", + "sha256:723e8130d4ecc8f56e9a611e73b31219595baa3bb252d539206f7bbbab6ffc1f", + "sha256:784f53ebc9f3fd0e2a3f6a78b2be1bd1f5575d7863e10c6e12504f240fd06660", + "sha256:7b6be138d61e458e18d8e6ddcddd36dd96215edfe5f1168de0b1b32635839b62", + "sha256:7ccf362abd726b0410bf8911c31fbf97f09f8f1061f8c1cf03dfc4b6372848f6", + "sha256:83516205e254a0cb77d2d7bb3632ee019d93d9f4005de31dca0a8c3667d5bc04", + "sha256:851cf4ff24062c6aec510a454b2584f6e998cada52d4cb58c5e233d07172e50c", + "sha256:8f830ed581b45b82451a40faabb89c84e1a998124ee4212d440e9c6cf70083e5", + "sha256:94e2565443291bd778421856bc975d351738963071e9b8839ca1fc08b42d4bef", + "sha256:95203854f974e07af96358c0b261f1048d8e1083f2de9b1c565e1be4a3a48cfc", + "sha256:97117225cdd992a9c2a5515db1f66b59db634f59d0679ca1fa3fe8da32749cae", + "sha256:98e8a10b7a314f454d9eff4216a9a94d143a7ee65018dd12442e898ee2310578", + "sha256:a1170fa54185845505fbfa672f1c1ab175446c887cce8212c44149581cf2d466", + "sha256:a6b7d95969b8845250586f269e81e5dfdd8ff828ddeb8567a4a2eaa7313460c4", + "sha256:a8fb6cf131ac4070c9c5a3e21de0f7dc5a0fbe8bc77c9456ced896c12fcdad91", + "sha256:af4fffaffc4067232253715065e30c5a7ec6faac36f8fc8d6f64263b15f74db0", + "sha256:b4a5be1748d538a710f87542f22c2cad22f80545a847ad91ce45e77417293eb4", + "sha256:b5604380f3415ba69de87a289a2b56687faa4fe04dbee0754bfcae433489316b", + "sha256:b9023e237f4c02ff739581ef35969c3739445fb059b060ca51771e69101efffe", + "sha256:bc8ef5e043a2af066fa8cbfc6e708d58017024dc4345a1f9757b329a249f041b", + "sha256:c4ed2820d919351f4167e52425e096af41bfabacb1857186c1ea32ff9983ed75", + "sha256:cca4435eebea7962a52bdb216dec27215d0df64cf27fc1dd538415f5d2b9da6b", + "sha256:d900bb429fdfd7f511f868cedd03a6bbb142f3f9118c09b99ef8dc9bf9643c3c", + "sha256:d9ecf0829c6a62b9b573c7bb6d4dcd6ba8b6f80be9ba4fc7ed50bf4ac9aecd72", + "sha256:dbdb91cd8c048c2b09eb17713b0c12a54fbd587d79adcebad543bc0cd9a3410b", + "sha256:de3001a203182842a4630e7b8d1a2c7c07ec1b45d3084a83d5d227a3806f530f", + "sha256:e07f4a4a9b41583d6eabec04f8b68076ab3cd44c20bd29332c6572dda36f372e", + "sha256:ef8674b0ee8cc11e2d574e3e2998aea5df5ab242e012286824ea3c6970580e53", + "sha256:f4f05d88d9a80ad3cac6244d36dd89a3c00abc16371769f1340101d3cb899fc3", + "sha256:f642e90754ee3e06b0e7e51bce3379590e76b7f76b708e1a71ff043f87025c84", + "sha256:fc2af30ed0d5ae0b1abdb4ebdce598eafd5b35397d4d75deb341a614d333d987" ], "markers": "python_version >= '3.7'", - "version": "==6.4.3" + "version": "==6.5.0" }, "docutils": { "hashes": [ @@ -703,6 +909,7 @@ "epicsdbbuilder": { "hashes": [ "sha256:32321c0eff5209a1604464a19e30a73429f597efe4df69f1f859758c3a14ebc7", + "sha256:40e01ca308b667d17b31dc1907816df20c31b389415268d9ec6e2be6c3b8f283", "sha256:698ad5882de4a626a82086139ff95204e8de72e63d03d9f22d4418da3a6c8566", "sha256:ae8dc724c72478d2c6a68b08145d027a50af98702d17e4692f2d73f145818e74" ], @@ -726,18 +933,82 @@ }, "flake8-isort": { "hashes": [ - "sha256:26571500cd54976bbc0cf1006ffbcd1a68dd102f816b7a1051b219616ba9fee0", - "sha256:5b87630fb3719bf4c1833fd11e0d9534f43efdeba524863e15d8f14a7ef6adbf" - ], - "version": "==4.2.0" + "sha256:c73f9cbd1bf209887f602a27b827164ccfeba1676801b2aa23cb49051a1be79c", + "sha256:e336f928c7edc509684930ab124414194b7f4e237c712af8fcbdf49d8747b10c" + ], + "version": "==5.0.0" + }, + "frozenlist": { + "hashes": [ + "sha256:006d3595e7d4108a12025ddf415ae0f6c9e736e726a5db0183326fd191b14c5e", + "sha256:01a73627448b1f2145bddb6e6c2259988bb8aee0fb361776ff8604b99616cd08", + "sha256:03a7dd1bfce30216a3f51a84e6dd0e4a573d23ca50f0346634916ff105ba6e6b", + "sha256:0437fe763fb5d4adad1756050cbf855bbb2bf0d9385c7bb13d7a10b0dd550486", + "sha256:04cb491c4b1c051734d41ea2552fde292f5f3a9c911363f74f39c23659c4af78", + "sha256:0c36e78b9509e97042ef869c0e1e6ef6429e55817c12d78245eb915e1cca7468", + "sha256:25af28b560e0c76fa41f550eacb389905633e7ac02d6eb3c09017fa1c8cdfde1", + "sha256:2fdc3cd845e5a1f71a0c3518528bfdbfe2efaf9886d6f49eacc5ee4fd9a10953", + "sha256:30530930410855c451bea83f7b272fb1c495ed9d5cc72895ac29e91279401db3", + "sha256:31977f84828b5bb856ca1eb07bf7e3a34f33a5cddce981d880240ba06639b94d", + "sha256:3c62964192a1c0c30b49f403495911298810bada64e4f03249ca35a33ca0417a", + "sha256:3f7c935c7b58b0d78c0beea0c7358e165f95f1fd8a7e98baa40d22a05b4a8141", + "sha256:40dff8962b8eba91fd3848d857203f0bd704b5f1fa2b3fc9af64901a190bba08", + "sha256:40ec383bc194accba825fbb7d0ef3dda5736ceab2375462f1d8672d9f6b68d07", + "sha256:436496321dad302b8b27ca955364a439ed1f0999311c393dccb243e451ff66aa", + "sha256:4406cfabef8f07b3b3af0f50f70938ec06d9f0fc26cbdeaab431cbc3ca3caeaa", + "sha256:45334234ec30fc4ea677f43171b18a27505bfb2dba9aca4398a62692c0ea8868", + "sha256:47be22dc27ed933d55ee55845d34a3e4e9f6fee93039e7f8ebadb0c2f60d403f", + "sha256:4a44ebbf601d7bac77976d429e9bdb5a4614f9f4027777f9e54fd765196e9d3b", + "sha256:4eda49bea3602812518765810af732229b4291d2695ed24a0a20e098c45a707b", + "sha256:57f4d3f03a18facacb2a6bcd21bccd011e3b75d463dc49f838fd699d074fabd1", + "sha256:603b9091bd70fae7be28bdb8aa5c9990f4241aa33abb673390a7f7329296695f", + "sha256:65bc6e2fece04e2145ab6e3c47428d1bbc05aede61ae365b2c1bddd94906e478", + "sha256:691ddf6dc50480ce49f68441f1d16a4c3325887453837036e0fb94736eae1e58", + "sha256:6983a31698490825171be44ffbafeaa930ddf590d3f051e397143a5045513b01", + "sha256:6a202458d1298ced3768f5a7d44301e7c86defac162ace0ab7434c2e961166e8", + "sha256:6eb275c6385dd72594758cbe96c07cdb9bd6becf84235f4a594bdf21e3596c9d", + "sha256:754728d65f1acc61e0f4df784456106e35afb7bf39cfe37227ab00436fb38676", + "sha256:768efd082074bb203c934e83a61654ed4931ef02412c2fbdecea0cff7ecd0274", + "sha256:772965f773757a6026dea111a15e6e2678fbd6216180f82a48a40b27de1ee2ab", + "sha256:871d42623ae15eb0b0e9df65baeee6976b2e161d0ba93155411d58ff27483ad8", + "sha256:88aafd445a233dbbf8a65a62bc3249a0acd0d81ab18f6feb461cc5a938610d24", + "sha256:8c905a5186d77111f02144fab5b849ab524f1e876a1e75205cd1386a9be4b00a", + "sha256:8cf829bd2e2956066dd4de43fd8ec881d87842a06708c035b37ef632930505a2", + "sha256:92e650bd09b5dda929523b9f8e7f99b24deac61240ecc1a32aeba487afcd970f", + "sha256:93641a51f89473837333b2f8100f3f89795295b858cd4c7d4a1f18e299dc0a4f", + "sha256:94c7a8a9fc9383b52c410a2ec952521906d355d18fccc927fca52ab575ee8b93", + "sha256:9f892d6a94ec5c7b785e548e42722e6f3a52f5f32a8461e82ac3e67a3bd073f1", + "sha256:acb267b09a509c1df5a4ca04140da96016f40d2ed183cdc356d237286c971b51", + "sha256:adac9700675cf99e3615eb6a0eb5e9f5a4143c7d42c05cea2e7f71c27a3d0846", + "sha256:aff388be97ef2677ae185e72dc500d19ecaf31b698986800d3fc4f399a5e30a5", + "sha256:b5009062d78a8c6890d50b4e53b0ddda31841b3935c1937e2ed8c1bda1c7fb9d", + "sha256:b684c68077b84522b5c7eafc1dc735bfa5b341fb011d5552ebe0968e22ed641c", + "sha256:b9e3e9e365991f8cc5f5edc1fd65b58b41d0514a6a7ad95ef5c7f34eb49b3d3e", + "sha256:bd89acd1b8bb4f31b47072615d72e7f53a948d302b7c1d1455e42622de180eae", + "sha256:bde99812f237f79eaf3f04ebffd74f6718bbd216101b35ac7955c2d47c17da02", + "sha256:c6c321dd013e8fc20735b92cb4892c115f5cdb82c817b1e5b07f6b95d952b2f0", + "sha256:ce6f2ba0edb7b0c1d8976565298ad2deba6f8064d2bebb6ffce2ca896eb35b0b", + "sha256:d2257aaba9660f78c7b1d8fea963b68f3feffb1a9d5d05a18401ca9eb3e8d0a3", + "sha256:d26b650b71fdc88065b7a21f8ace70175bcf3b5bdba5ea22df4bfd893e795a3b", + "sha256:d6d32ff213aef0fd0bcf803bffe15cfa2d4fde237d1d4838e62aec242a8362fa", + "sha256:e1e26ac0a253a2907d654a37e390904426d5ae5483150ce3adedb35c8c06614a", + "sha256:e30b2f9683812eb30cf3f0a8e9f79f8d590a7999f731cf39f9105a7c4a39489d", + "sha256:e84cb61b0ac40a0c3e0e8b79c575161c5300d1d89e13c0e02f76193982f066ed", + "sha256:e982878792c971cbd60ee510c4ee5bf089a8246226dea1f2138aa0bb67aff148", + "sha256:f20baa05eaa2bcd5404c445ec51aed1c268d62600362dc6cfe04fae34a424bd9", + "sha256:f7353ba3367473d1d616ee727945f439e027f0bb16ac1a750219a8344d1d5d3c", + "sha256:f96293d6f982c58ebebb428c50163d010c2f05de0cde99fd681bfdc18d4b2dc2", + "sha256:ff9310f05b9d9c5c4dd472983dc956901ee6cb2c3ec1ab116ecdde25f3ce4951" + ], + "version": "==1.3.0" }, "idna": { "hashes": [ - "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff", - "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d" + "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", + "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2" ], "markers": "python_version >= '3.5'", - "version": "==3.3" + "version": "==3.4" }, "imagesize": { "hashes": [ @@ -749,66 +1020,44 @@ }, "immutables": { "hashes": [ - "sha256:03696193b276db3a9b619629685198886ddd7c4098c544bd8d0f87532c74120b", - "sha256:13159cedb698fdd243d9f2a7469c1628e075a180fc02f865dd98322b92a14aaf", - "sha256:1330f96eb6a3a11f5d02f30b2c6393ef30d01a79f7144d63d2a3e6ff05cb99db", - "sha256:1338aad6fd69f11442adcbb3402a028c90f6e945682ddb8aba462a3827f2d427", - "sha256:1acbbc333f1643fd1ed21bcc3e09aad2ef6648478a0cae76a2ca5823764a7d3b", - "sha256:1d6821d7718cf9f4a7b1d9e765fc22a9d1ae0fad3fabd8724b4e614d2a6e0b54", - "sha256:210efea163a704597cfdb2d30713d3c0963c30f0d997539c9ab5da40e3d6a886", - "sha256:29a5886845cd0ca8263b721337750a895e28feee2f16694a526977a791909db5", - "sha256:2aa5292630b08c874972931bac06ee381cb6fb7382d7be1856234d7bd4a8e676", - "sha256:2b6c820c9bb5aac62b76de703384bb8bb706108be90c3def4a7f047f185a92bb", - "sha256:45bd862a5dfb952eaff4a9c2448712c5a550dd956575e23cbfc512010fb06c74", - "sha256:525fe9001b5a96c325eec41677efaeb8c3610776e834ce7f31fbe3d33cc05252", - "sha256:5336c7974084cce62f7e29aaff81a3c3f75e0fd0a23a2faeb986ae0ea08d8cf4", - "sha256:535616ad7ca1174a27ade637192c970bfedb0b0e0467e69ce415b40d7cf7ba0c", - "sha256:53fccddd28cc3214aa48ca564702311c07eac069190dd890e097802c5d69b33a", - "sha256:54577e46c5332d7390212040c084335b7d667504847ed2788428d44f20e595ce", - "sha256:5caf9c670e6851e7f310716c7dcdf8705236d13056eda1fab3deaad5d7198468", - "sha256:5d43b16b6adbe1327c6688e14b125cb3b940e748790b305de96c8d55668ac25f", - "sha256:5f32b5933393e4cc204d8f9e7d9f503ec052e30f612090be0de0dd31b1464b35", - "sha256:69352b45a115808219feaf0bb7a551e9aa76c72684db93cd03f11474165f4569", - "sha256:6baf4dc11ba0e9f41a6cbde7ecaa7af9cb482559b92ba3254e3e37a518b1970e", - "sha256:6e979a9225507e3cd830ea73ac68b69fe82f495313a891485800daa5b6567e05", - "sha256:6ee2d6f8816fce53fa89b6a1ba2d4a96b344bf584d6ed0b10a871b17fff46e49", - "sha256:734ec4467dd15f9135ca5ecccc91e796a67d27c227e81554f9e06b1bb3b28d6d", - "sha256:74456c579cfd53f883cdcc0700e3871648a3316767efc1adf8c723ad3d8addec", - "sha256:77bdc96dc24e32839557cde3785f8039a369c95529ff9179044b81d0ba4bd02c", - "sha256:798b4d6c388116effa7523591e4e39865292e4fa74e169b05a0759a16f604ce1", - "sha256:853d63f4a07b2ea2131ba0831aeec11f6a6ee5e290e8f175bf56842762d7412e", - "sha256:8b650d779a46441dccd02e7ee8326dbd0dec633c6bd75e9fe13373a6b19570dd", - "sha256:90da9dea0a1c0a907d511f124cd87fe090c0e30a951c3fe68bc9782ae4f2c77f", - "sha256:989606e440492736112b471dcd80586e3d4a63bc6f8ff4f9d1d612e0f96cb683", - "sha256:98f67bd36532582751dcc9021fdb60e7efc82e5717ae5927b84d0b86ea58fe12", - "sha256:9949f704b80d0e601587d0a3b1a0cc6ff5d49528f6dfc1c8a1476b2137bb925e", - "sha256:9a86dcca4bb406f80e7a18c233aec0e76a7530c456e24aa1e19a708a34f2aac1", - "sha256:9d72527fde329e3b566b67c954237be52b07d6e84ff23dcc1e94499755cacff6", - "sha256:9f17407491164beb689d426f7985f79ae9dfa69868653cfbdb95645f6bf05cb0", - "sha256:a29e3aa0fe05fb2cc6b31039f448aa6206d7f0cdb660c98aa9be6d12070d6840", - "sha256:a3bad4d43009fa61ea40d887e6fa89ae7c4e62dff5e4a878d60b76cf245720bb", - "sha256:ac9e05f846392e983fb59f74ed2334031b366251d16d24122e4c85f70fb6e2da", - "sha256:b3621256bc8058a7973f736b9e2c940e17133476265a0a83b8df8c0f446ca32f", - "sha256:bc830a689a55e404f0e23d7d69e01c218fa8a0be54a6ca5df45b6fbfeeac648a", - "sha256:d11da4946e19f3b24a873b2ba2891cc226a89bb398561c62dfb966a9b6501a4a", - "sha256:d841dfa15b932bdad27f5149bce86b32d0dd8a29679ed61405677317b6893447", - "sha256:de1a091ab89b7ba50501a915a0fbdceb52b079c752f4f7c76d2060237774a714", - "sha256:e04b61ddffd4ccb4d7ab823b2e55dbb4ad47c37697e311fae4b98b3c023ab194", - "sha256:e4c2110173649acf67bd763bbd2a9c3a863a1d20fd7f3db3493ce4e0fb04fae5", - "sha256:f6edb73619aa0a5fe4a77d97dd9d39bfeef61a5afe71aa5bdceccf59b933999e", - "sha256:fade8ccf7afbc1e7ea353159fa90cc04395f2f4f57658160d7a02f6aa60c4e77", - "sha256:ffced8535cc673fcfb411d28ba5744689a6978fa596c803725a76f43c1bda911" + "sha256:0020aaa4010b136056c20a46ce53204e1407a9e4464246cb2cf95b90808d9161", + "sha256:064001638ab5d36f6aa05b6101446f4a5793fb71e522bc81b8fc65a1894266ff", + "sha256:0a396314b9024fa55bf83a27813fd76cf9f27dce51f53b0f19b51de035146251", + "sha256:19bdede174847c2ef1292df0f23868ab3918b560febb09fcac6eec621bd4812b", + "sha256:1de393f1b188740ca7b38f946f2bbc7edf3910d2048f03bbb8d01f17a038d67c", + "sha256:2505d93395d3f8ae4223e21465994c3bc6952015a38dc4f03cb3e07a2b8d8325", + "sha256:298a301f85f307b4c056a0825eb30f060e64d73605e783289f3df37dd762bab8", + "sha256:29c9ed003eacb92e630ef200e31f47236c2139b39476894f7963b32bd39bafa3", + "sha256:4a2a71678348fb95b13ca108d447f559a754c41b47bd1e7e4fb23974e735682d", + "sha256:50793a44ba0d228ed8cad4d0925e00dfd62ea32f44ddee8854f8066447272d05", + "sha256:511c93d8b1bbbf103ff3f1f120c5a68a9866ce03dea6ac406537f93ca9b19139", + "sha256:734c269e82e5f307fb6e17945953b67659d1731e65309787b8f7ba267d1468f2", + "sha256:798b095381eb42cf40db6876339e7bed84093e5868018a9e73d8e1f7ab4bb21e", + "sha256:799621dcdcdcbb2516546a40123b87bf88de75fe7459f7bd8144f079ace6ec3e", + "sha256:7a58825ff2254e2612c5a932174398a4ea8fbddd8a64a02c880cc32ee28b8820", + "sha256:7bcf52aeb983bd803b7c6106eae1b2d9a0c7ab1241bc6b45e2174ba2b7283031", + "sha256:9ccf4c0e3e2e3237012b516c74c49de8872ccdf9129739f7a0b9d7444a8c4862", + "sha256:a307eb0984eb43e815dcacea3ac50c11d00a936ecf694c46991cd5a23bcb0ec0", + "sha256:a454d5d3fee4b7cc627345791eb2ca4b27fa3bbb062ccf362ecaaa51679a07ed", + "sha256:aa7bf572ae1e006104c584be70dc634849cf0dc62f42f4ee194774f97e7fd17d", + "sha256:acbfa79d44228d96296279068441f980dc63dbed52522d9227ff9f4d96c6627e", + "sha256:b651b61c1af6cda2ee201450f2ffe048a5959bc88e43e6c312f4c93e69c9e929", + "sha256:b779617f5b94486bfd0f22162cd72eb5f2beb0214a14b75fdafb7b2c908ed0cb", + "sha256:d59beef203a3765db72b1d0943547425c8318ecf7d64c451fd1e130b653c2fbb", + "sha256:d67e86859598eed0d926562da33325dac7767b7b1eff84e232c22abea19f4360", + "sha256:edd9f67671555af1eb99ad3c7550238487dd7ac0ac5205b40204ed61c9a922ac", + "sha256:fcf678a3074613119385a02a07c469ec5130559f5ea843c85a0840c80b5b71c6" ], "markers": "python_version >= '3.6'", - "version": "==0.18" + "version": "==0.16" }, "importlib-metadata": { "hashes": [ - "sha256:637245b8bab2b6502fcbc752cc4b7a6f6243bb02b31c5c26156ad103d3d45670", - "sha256:7401a975809ea1fdc658c3aa4f78cc2195a0e019c5cbc4c06122884e9ae80c23" + "sha256:da31db32b304314d044d3c12c79bd59e307889b287ad12ff387b3500835fc2ab", + "sha256:ddb0e35065e8938f867ed4928d0ae5bf2a53b7773871bfe6bcc7e4fcdc7dea43" ], "markers": "python_version < '3.10'", - "version": "==4.12.0" + "version": "==5.0.0" }, "iniconfig": { "hashes": [ @@ -822,7 +1071,7 @@ "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7", "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951" ], - "markers": "python_full_version >= '3.6.1' and python_version < '4'", + "markers": "python_version < '4' and python_full_version >= '3.6.1'", "version": "==5.10.1" }, "jinja2": { @@ -903,55 +1152,76 @@ }, "multidict": { "hashes": [ - "sha256:1ece5a3369835c20ed57adadc663400b5525904e53bae59ec854a5d36b39b21a", - "sha256:275ca32383bc5d1894b6975bb4ca6a7ff16ab76fa622967625baeebcf8079000", - "sha256:3750f2205b800aac4bb03b5ae48025a64e474d2c6cc79547988ba1d4122a09e2", - "sha256:4538273208e7294b2659b1602490f4ed3ab1c8cf9dbdd817e0e9db8e64be2507", - "sha256:5141c13374e6b25fe6bf092052ab55c0c03d21bd66c94a0e3ae371d3e4d865a5", - "sha256:51a4d210404ac61d32dada00a50ea7ba412e6ea945bbe992e4d7a595276d2ec7", - "sha256:5cf311a0f5ef80fe73e4f4c0f0998ec08f954a6ec72b746f3c179e37de1d210d", - "sha256:6513728873f4326999429a8b00fc7ceddb2509b01d5fd3f3be7881a257b8d463", - "sha256:7388d2ef3c55a8ba80da62ecfafa06a1c097c18032a501ffd4cabbc52d7f2b19", - "sha256:9456e90649005ad40558f4cf51dbb842e32807df75146c6d940b6f5abb4a78f3", - "sha256:c026fe9a05130e44157b98fea3ab12969e5b60691a276150db9eda71710cd10b", - "sha256:d14842362ed4cf63751648e7672f7174c9818459d169231d03c56e84daf90b7c", - "sha256:e0d072ae0f2a179c375f67e3da300b47e1a83293c554450b29c900e50afaae87", - "sha256:f07acae137b71af3bb548bd8da720956a3bc9f9a0b87733e0899226a2317aeb7", - "sha256:fbb77a75e529021e7c4a8d4e823d88ef4d23674a202be4f5addffc72cbb91430", - "sha256:fcfbb44c59af3f8ea984de67ec7c306f618a3ec771c2843804069917a8f2e255", - "sha256:feed85993dbdb1dbc29102f50bca65bdc68f2c0c8d352468c25b54874f23c39d" + "sha256:018132dbd8688c7a69ad89c4a3f39ea2f9f33302ebe567a879da8f4ca73f0d0a", + "sha256:051012ccee979b2b06be928a6150d237aec75dd6bf2d1eeeb190baf2b05abc93", + "sha256:05c20b68e512166fddba59a918773ba002fdd77800cad9f55b59790030bab632", + "sha256:07b42215124aedecc6083f1ce6b7e5ec5b50047afa701f3442054373a6deb656", + "sha256:0e3c84e6c67eba89c2dbcee08504ba8644ab4284863452450520dad8f1e89b79", + "sha256:0e929169f9c090dae0646a011c8b058e5e5fb391466016b39d21745b48817fd7", + "sha256:1ab820665e67373de5802acae069a6a05567ae234ddb129f31d290fc3d1aa56d", + "sha256:25b4e5f22d3a37ddf3effc0710ba692cfc792c2b9edfb9c05aefe823256e84d5", + "sha256:2e68965192c4ea61fff1b81c14ff712fc7dc15d2bd120602e4a3494ea6584224", + "sha256:2f1a132f1c88724674271d636e6b7351477c27722f2ed789f719f9e3545a3d26", + "sha256:37e5438e1c78931df5d3c0c78ae049092877e5e9c02dd1ff5abb9cf27a5914ea", + "sha256:3a041b76d13706b7fff23b9fc83117c7b8fe8d5fe9e6be45eee72b9baa75f348", + "sha256:3a4f32116f8f72ecf2a29dabfb27b23ab7cdc0ba807e8459e59a93a9be9506f6", + "sha256:46c73e09ad374a6d876c599f2328161bcd95e280f84d2060cf57991dec5cfe76", + "sha256:46dd362c2f045095c920162e9307de5ffd0a1bfbba0a6e990b344366f55a30c1", + "sha256:4b186eb7d6ae7c06eb4392411189469e6a820da81447f46c0072a41c748ab73f", + "sha256:54fd1e83a184e19c598d5e70ba508196fd0bbdd676ce159feb412a4a6664f952", + "sha256:585fd452dd7782130d112f7ddf3473ffdd521414674c33876187e101b588738a", + "sha256:5cf3443199b83ed9e955f511b5b241fd3ae004e3cb81c58ec10f4fe47c7dce37", + "sha256:6a4d5ce640e37b0efcc8441caeea8f43a06addace2335bd11151bc02d2ee31f9", + "sha256:7df80d07818b385f3129180369079bd6934cf70469f99daaebfac89dca288359", + "sha256:806068d4f86cb06af37cd65821554f98240a19ce646d3cd24e1c33587f313eb8", + "sha256:830f57206cc96ed0ccf68304141fec9481a096c4d2e2831f311bde1c404401da", + "sha256:929006d3c2d923788ba153ad0de8ed2e5ed39fdbe8e7be21e2f22ed06c6783d3", + "sha256:9436dc58c123f07b230383083855593550c4d301d2532045a17ccf6eca505f6d", + "sha256:9dd6e9b1a913d096ac95d0399bd737e00f2af1e1594a787e00f7975778c8b2bf", + "sha256:ace010325c787c378afd7f7c1ac66b26313b3344628652eacd149bdd23c68841", + "sha256:b47a43177a5e65b771b80db71e7be76c0ba23cc8aa73eeeb089ed5219cdbe27d", + "sha256:b797515be8743b771aa868f83563f789bbd4b236659ba52243b735d80b29ed93", + "sha256:b7993704f1a4b204e71debe6095150d43b2ee6150fa4f44d6d966ec356a8d61f", + "sha256:d5c65bdf4484872c4af3150aeebe101ba560dcfb34488d9a8ff8dbcd21079647", + "sha256:d81eddcb12d608cc08081fa88d046c78afb1bf8107e6feab5d43503fea74a635", + "sha256:dc862056f76443a0db4509116c5cd480fe1b6a2d45512a653f9a855cc0517456", + "sha256:ecc771ab628ea281517e24fd2c52e8f31c41e66652d07599ad8818abaad38cda", + "sha256:f200755768dc19c6f4e2b672421e0ebb3dd54c38d5a4f262b872d8cfcc9e93b5", + "sha256:f21756997ad8ef815d8ef3d34edd98804ab5ea337feedcd62fb52d22bf531281", + "sha256:fc13a9524bc18b6fb6e0dbec3533ba0496bbed167c56d0aabefd965584557d80" ], "markers": "python_version >= '3.5'", - "version": "==4.7.6" + "version": "==5.1.0" }, "mypy": { "hashes": [ - "sha256:02ef476f6dcb86e6f502ae39a16b93285fef97e7f1ff22932b657d1ef1f28655", - "sha256:0d054ef16b071149917085f51f89555a576e2618d5d9dd70bd6eea6410af3ac9", - "sha256:19830b7dba7d5356d3e26e2427a2ec91c994cd92d983142cbd025ebe81d69cf3", - "sha256:1f7656b69974a6933e987ee8ffb951d836272d6c0f81d727f1d0e2696074d9e6", - "sha256:23488a14a83bca6e54402c2e6435467a4138785df93ec85aeff64c6170077fb0", - "sha256:23c7ff43fff4b0df93a186581885c8512bc50fc4d4910e0f838e35d6bb6b5e58", - "sha256:25c5750ba5609a0c7550b73a33deb314ecfb559c350bb050b655505e8aed4103", - "sha256:2ad53cf9c3adc43cf3bea0a7d01a2f2e86db9fe7596dfecb4496a5dda63cbb09", - "sha256:3fa7a477b9900be9b7dd4bab30a12759e5abe9586574ceb944bc29cddf8f0417", - "sha256:40b0f21484238269ae6a57200c807d80debc6459d444c0489a102d7c6a75fa56", - "sha256:4b21e5b1a70dfb972490035128f305c39bc4bc253f34e96a4adf9127cf943eb2", - "sha256:5a361d92635ad4ada1b1b2d3630fc2f53f2127d51cf2def9db83cba32e47c856", - "sha256:77a514ea15d3007d33a9e2157b0ba9c267496acf12a7f2b9b9f8446337aac5b0", - "sha256:855048b6feb6dfe09d3353466004490b1872887150c5bb5caad7838b57328cc8", - "sha256:9796a2ba7b4b538649caa5cecd398d873f4022ed2333ffde58eaf604c4d2cb27", - "sha256:98e02d56ebe93981c41211c05adb630d1d26c14195d04d95e49cd97dbc046dc5", - "sha256:b793b899f7cf563b1e7044a5c97361196b938e92f0a4343a5d27966a53d2ec71", - "sha256:d1ea5d12c8e2d266b5fb8c7a5d2e9c0219fedfeb493b7ed60cd350322384ac27", - "sha256:d2022bfadb7a5c2ef410d6a7c9763188afdb7f3533f22a0a32be10d571ee4bbe", - "sha256:d3348e7eb2eea2472db611486846742d5d52d1290576de99d59edeb7cd4a42ca", - "sha256:d744f72eb39f69312bc6c2abf8ff6656973120e2eb3f3ec4f758ed47e414a4bf", - "sha256:ef943c72a786b0f8d90fd76e9b39ce81fb7171172daf84bf43eaf937e9f220a9", - "sha256:f2899a3cbd394da157194f913a931edfd4be5f274a88041c9dc2d9cdcb1c315c" + "sha256:1021c241e8b6e1ca5a47e4d52601274ac078a89845cfde66c6d5f769819ffa1d", + "sha256:14d53cdd4cf93765aa747a7399f0961a365bcddf7855d9cef6306fa41de01c24", + "sha256:175f292f649a3af7082fe36620369ffc4661a71005aa9f8297ea473df5772046", + "sha256:26ae64555d480ad4b32a267d10cab7aec92ff44de35a7cd95b2b7cb8e64ebe3e", + "sha256:41fd1cf9bc0e1c19b9af13a6580ccb66c381a5ee2cf63ee5ebab747a4badeba3", + "sha256:5085e6f442003fa915aeb0a46d4da58128da69325d8213b4b35cc7054090aed5", + "sha256:58f27ebafe726a8e5ccb58d896451dd9a662a511a3188ff6a8a6a919142ecc20", + "sha256:6389af3e204975d6658de4fb8ac16f58c14e1bacc6142fee86d1b5b26aa52bda", + "sha256:724d36be56444f569c20a629d1d4ee0cb0ad666078d59bb84f8f887952511ca1", + "sha256:75838c649290d83a2b83a88288c1eb60fe7a05b36d46cbea9d22efc790002146", + "sha256:7b35ce03a289480d6544aac85fa3674f493f323d80ea7226410ed065cd46f206", + "sha256:85f7a343542dc8b1ed0a888cdd34dca56462654ef23aa673907305b260b3d746", + "sha256:86ebe67adf4d021b28c3f547da6aa2cce660b57f0432617af2cca932d4d378a6", + "sha256:8ee8c2472e96beb1045e9081de8e92f295b89ac10c4109afdf3a23ad6e644f3e", + "sha256:91781eff1f3f2607519c8b0e8518aad8498af1419e8442d5d0afb108059881fc", + "sha256:a692a8e7d07abe5f4b2dd32d731812a0175626a90a223d4b58f10f458747dd8a", + "sha256:a705a93670c8b74769496280d2fe6cd59961506c64f329bb179970ff1d24f9f8", + "sha256:c6e564f035d25c99fd2b863e13049744d96bd1947e3d3d2f16f5828864506763", + "sha256:cebca7fd333f90b61b3ef7f217ff75ce2e287482206ef4a8b18f32b49927b1a2", + "sha256:d6af646bd46f10d53834a8e8983e130e47d8ab2d4b7a97363e35b24e1d588947", + "sha256:e7aeaa763c7ab86d5b66ff27f68493d672e44c8099af636d433a7f3fa5596d40", + "sha256:eaa97b9ddd1dd9901a22a879491dbb951b5dec75c3b90032e2baa7336777363b", + "sha256:eb7a068e503be3543c4bd329c994103874fa543c1727ba5288393c21d912d795", + "sha256:f793e3dd95e166b66d50e7b63e69e58e88643d80a3dcc3bcd81368e0478b089c" ], "markers": "python_version >= '3.9'", - "version": "==0.971" + "version": "==0.982" }, "mypy-extensions": { "hashes": [ @@ -962,31 +1232,40 @@ }, "numpy": { "hashes": [ - "sha256:1408c3527a74a0209c781ac82bde2182b0f0bf54dea6e6a363fe0cc4488a7ce7", - "sha256:173f28921b15d341afadf6c3898a34f20a0569e4ad5435297ba262ee8941e77b", - "sha256:1865fdf51446839ca3fffaab172461f2b781163f6f395f1aed256b1ddc253622", - "sha256:3119daed207e9410eaf57dcf9591fdc68045f60483d94956bee0bfdcba790953", - "sha256:35590b9c33c0f1c9732b3231bb6a72d1e4f77872390c47d50a615686ae7ed3fd", - "sha256:37e5ebebb0eb54c5b4a9b04e6f3018e16b8ef257d26c8945925ba8105008e645", - "sha256:37ece2bd095e9781a7156852e43d18044fd0d742934833335599c583618181b9", - "sha256:3ab67966c8d45d55a2bdf40701536af6443763907086c0a6d1232688e27e5447", - "sha256:47f10ab202fe4d8495ff484b5561c65dd59177949ca07975663f4494f7269e3e", - "sha256:55df0f7483b822855af67e38fb3a526e787adf189383b4934305565d71c4b148", - "sha256:5d732d17b8a9061540a10fda5bfeabca5785700ab5469a5e9b93aca5e2d3a5fb", - "sha256:68b69f52e6545af010b76516f5daaef6173e73353e3295c5cb9f96c35d755641", - "sha256:7e8229f3687cdadba2c4faef39204feb51ef7c1a9b669247d49a24f3e2e1617c", - "sha256:8002574a6b46ac3b5739a003b5233376aeac5163e5dcd43dd7ad062f3e186129", - "sha256:876f60de09734fbcb4e27a97c9a286b51284df1326b1ac5f1bf0ad3678236b22", - "sha256:9ce242162015b7e88092dccd0e854548c0926b75c7924a3495e02c6067aba1f5", - "sha256:a35c4e64dfca659fe4d0f1421fc0f05b8ed1ca8c46fb73d9e5a7f175f85696bb", - "sha256:aeba539285dcf0a1ba755945865ec61240ede5432df41d6e29fab305f4384db2", - "sha256:b15c3f1ed08df4980e02cc79ee058b788a3d0bef2fb3c9ca90bb8cbd5b8a3a04", - "sha256:c2f91f88230042a130ceb1b496932aa717dcbd665350beb821534c5c7e15881c", - "sha256:d748ef349bfef2e1194b59da37ed5a29c19ea8d7e6342019921ba2ba4fd8b624", - "sha256:e0d7447679ae9a7124385ccf0ea990bb85bb869cef217e2ea6c844b6a6855073" + "sha256:1dbe1c91269f880e364526649a52eff93ac30035507ae980d2fed33aaee633ac", + "sha256:357768c2e4451ac241465157a3e929b265dfac85d9214074985b1786244f2ef3", + "sha256:3820724272f9913b597ccd13a467cc492a0da6b05df26ea09e78b171a0bb9da6", + "sha256:4391bd07606be175aafd267ef9bea87cf1b8210c787666ce82073b05f202add1", + "sha256:4aa48afdce4660b0076a00d80afa54e8a97cd49f457d68a4342d188a09451c1a", + "sha256:58459d3bad03343ac4b1b42ed14d571b8743dc80ccbf27444f266729df1d6f5b", + "sha256:5c3c8def4230e1b959671eb959083661b4a0d2e9af93ee339c7dada6759a9470", + "sha256:5f30427731561ce75d7048ac254dbe47a2ba576229250fb60f0fb74db96501a1", + "sha256:643843bcc1c50526b3a71cd2ee561cf0d8773f062c8cbaf9ffac9fdf573f83ab", + "sha256:67c261d6c0a9981820c3a149d255a76918278a6b03b6a036800359aba1256d46", + "sha256:67f21981ba2f9d7ba9ade60c9e8cbaa8cf8e9ae51673934480e45cf55e953673", + "sha256:6aaf96c7f8cebc220cdfc03f1d5a31952f027dda050e5a703a0d1c396075e3e7", + "sha256:7c4068a8c44014b2d55f3c3f574c376b2494ca9cc73d2f1bd692382b6dffe3db", + "sha256:7c7e5fa88d9ff656e067876e4736379cc962d185d5cd808014a8a928d529ef4e", + "sha256:7f5ae4f304257569ef3b948810816bc87c9146e8c446053539947eedeaa32786", + "sha256:82691fda7c3f77c90e62da69ae60b5ac08e87e775b09813559f8901a88266552", + "sha256:8737609c3bbdd48e380d463134a35ffad3b22dc56295eff6f79fd85bd0eeeb25", + "sha256:9f411b2c3f3d76bba0865b35a425157c5dcf54937f82bbeb3d3c180789dd66a6", + "sha256:a6be4cb0ef3b8c9250c19cc122267263093eee7edd4e3fa75395dfda8c17a8e2", + "sha256:bcb238c9c96c00d3085b264e5c1a1207672577b93fa666c3b14a45240b14123a", + "sha256:bf2ec4b75d0e9356edea834d1de42b31fe11f726a81dfb2c2112bc1eaa508fcf", + "sha256:d136337ae3cc69aa5e447e78d8e1514be8c3ec9b54264e680cf0b4bd9011574f", + "sha256:d4bf4d43077db55589ffc9009c0ba0a94fa4908b9586d6ccce2e0b164c86303c", + "sha256:d6a96eef20f639e6a97d23e57dd0c1b1069a7b4fd7027482a4c5c451cd7732f4", + "sha256:d9caa9d5e682102453d96a0ee10c7241b72859b01a941a397fd965f23b3e016b", + "sha256:dd1c8f6bd65d07d3810b90d02eba7997e32abbdf1277a481d698969e921a3be0", + "sha256:e31f0bb5928b793169b87e3d1e070f2342b22d5245c755e2b81caa29756246c3", + "sha256:ecb55251139706669fdec2ff073c98ef8e9a84473e51e716211b41aa0f18e656", + "sha256:ee5ec40fdd06d62fe5d4084bef4fd50fd4bb6bfd2bf519365f569dc470163ab0", + "sha256:f17e562de9edf691a42ddb1eb4a5541c20dd3f9e65b09ded2beb0799c0cf29bb", + "sha256:fdffbfb6832cd0b300995a2b08b8f6fa9f6e856d562800fea9182316d99c4e8e" ], "markers": "python_version >= '3.8'", - "version": "==1.23.1" + "version": "==1.21.6" }, "packaging": { "hashes": [ @@ -998,10 +1277,10 @@ }, "pathspec": { "hashes": [ - "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a", - "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1" + "sha256:46846318467efc4556ccfd27816e004270a9eeeeb4d062ce5e6fc7a87c573f93", + "sha256:7ace6161b621d31e7902eb6b5ae148d12cfd23f4a249b9ffb6b9fee12084323d" ], - "version": "==0.9.0" + "version": "==0.10.1" }, "platformdirs": { "hashes": [ @@ -1053,11 +1332,11 @@ }, "pygments": { "hashes": [ - "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb", - "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519" + "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1", + "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42" ], "markers": "python_version >= '3.6'", - "version": "==2.12.0" + "version": "==2.13.0" }, "pyparsing": { "hashes": [ @@ -1069,19 +1348,19 @@ }, "pytest": { "hashes": [ - "sha256:13d0e3ccfc2b6e26be000cb6568c832ba67ba32e719443bfe725814d3c42433c", - "sha256:a06a0425453864a270bc45e71f783330a7428defb4230fb5e6a731fde06ecd45" + "sha256:1377bda3466d70b55e3f5cecfa55bb7cfcf219c7964629b967c37cf0bda818b7", + "sha256:4f365fec2dff9c1162f834d9f18af1ba13062db0c708bf7b946f8a5c76180c39" ], - "markers": "python_version >= '3.6' and python_version < '3.10'", - "version": "==7.1.2" + "markers": "python_version < '3.10' and python_version >= '3.6'", + "version": "==7.1.3" }, "pytest-asyncio": { "hashes": [ - "sha256:7a97e37cfe1ed296e2e84941384bdd37c376453912d397ed39293e0916f521fa", - "sha256:ac4ebf3b6207259750bc32f4c1d8fcd7e79739edbc67ad0c58dd150b1d072fed" + "sha256:6d895b02432c028e6957d25fc936494e78c6305736e785d9fee408b1efbc7ff4", + "sha256:e0fe5dbea40516b661ef1bcfe0bd9461c2847c4ef4bb40012324f2454fb7d56d" ], "markers": "python_version >= '3.7'", - "version": "==0.19.0" + "version": "==0.17.2" }, "pytest-black": { "hashes": [ @@ -1092,11 +1371,11 @@ }, "pytest-cov": { "hashes": [ - "sha256:578d5d15ac4a25e5f961c938b85a05b09fdaae9deef3bb6de9a6e766622ca7a6", - "sha256:e7f0f5b1617d2210a2cabc266dfe2f4c75a8d32fb89eafb7ad9d06f6d076d470" + "sha256:2feb1b751d66a8bd934e5edfa2e961d11309dc37b73b0eabe73b5945fee20f6b", + "sha256:996b79efde6433cdbd0088872dbc5fb3ed7fe1578b68cdbba634f14bb8dd0470" ], "markers": "python_version >= '3.6'", - "version": "==3.0.0" + "version": "==4.0.0" }, "pytest-flake8": { "hashes": [ @@ -1107,28 +1386,29 @@ }, "pytest-mypy": { "hashes": [ - "sha256:9ffa3bf405c12c5c6be9e92e22bebb6ab2c91b9c32f45b0f0c93af473269ab5c", - "sha256:a2505fcf61f1c0c51f950d4623ea8ca2daf6fb2101a5603554bad2e130202083" + "sha256:1fa55723a4bf1d054fcba1c3bd694215a2a65cc95ab10164f5808afd893f3b11", + "sha256:6e68e8eb7ceeb7d1c83a1590912f784879f037b51adfb9c17b95c6b2fc57466b" ], "markers": "python_version >= '3.5'", - "version": "==0.9.1" + "version": "==0.8.1" }, "pytest-pydocstyle": { "hashes": [ - "sha256:1f2d937349cfeb4965c530a0c0f2442b48c03299558db435b65549719510d32b" + "sha256:58228aef833dc4ed0a3a3216ebc8586f9798c7d0a98832eaf70a17269f773d4e" ], "markers": "python_version ~= '3.7'", - "version": "==2.3.0" + "version": "==2.3.1" }, "pytz": { "hashes": [ - "sha256:bc824559e43e8ab983426a49525079d186b25372ff63aa3430ccd527d95edc3a", - "sha256:d9b245e63af49c4e51afdec5402f56b99c0cb483a84a12bb8b7db980386baade" + "sha256:2c0784747071402c6e99f0bafdb7da0fa22645f06554c7ae06bf6358897e9c91", + "sha256:48ce799d83b6f8aab2020e369b627446696619e79645419610b9facd909b3174" ], - "version": "==2022.2" + "version": "==2022.4" }, "pyyaml": { "hashes": [ + "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf", "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", @@ -1140,26 +1420,32 @@ "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", + "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782", "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", + "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1", "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", + "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d", "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", + "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7", "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", + "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358", "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", + "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f", "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5" ], @@ -1201,7 +1487,7 @@ "sha256:f1a25a61495b6f7bb986accc5b597a3541d9bd3ef0016f50be16dbb32025b302", "sha256:fa411b1d8f371d3a49d31b0789eb6da2537dadbb2aef74a43aa99a78195c3f76" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==19.0.2" }, "requests": { @@ -1251,11 +1537,11 @@ }, "sphinx": { "hashes": [ - "sha256:309a8da80cb6da9f4713438e5b55861877d5d7976b69d87e336733637ea12693", - "sha256:ba3224a4e206e1fbdecf98a4fae4992ef9b24b85ebf7b584bb340156eaf08d89" + "sha256:7bf8ca9637a4ee15af412d1a1d9689fec70523a68ca9bb9127c2f3eeb344e2e6", + "sha256:ebf612653238bcc8f4359627a9b7ce44ede6fdd75d9d30f68255c7383d3a6226" ], "markers": "python_version >= '3.6'", - "version": "==5.1.1" + "version": "==4.5.0" }, "sphinx-rtd-theme": { "hashes": [ @@ -1267,6 +1553,7 @@ }, "sphinx-rtd-theme-github-versions": { "hashes": [ + "sha256:0df27ae9a9cd902468c808dbee5a43f4db8ce43cbcf2ecc78d2fe47698bb0ded", "sha256:23018e51a5d27ef4f69dd86314f73b19088f2cfd91c74a24db1517832233dc07", "sha256:7f67ba75cac8ddd51326f0b2f314bf653e72b4c96a5adc6e779acc8c01da81ab" ], @@ -1323,7 +1610,7 @@ }, "tickit": { "git": "https://github.com/dls-controls/tickit.git", - "ref": "eac7366430c094c811b68bb8bce17a356844b780" + "ref": "13d1e3a973c3330231a56815663944df89894afa" }, "tickit-devices": { "editable": true, @@ -1334,7 +1621,7 @@ "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==0.10.2" }, "tomli": { @@ -1353,99 +1640,77 @@ }, "types-pyyaml": { "hashes": [ - "sha256:7f7da2fd11e9bc1e5e9eb3ea1be84f4849747017a59fc2eee0ea34ed1147c2e0", - "sha256:8f890028123607379c63550179ddaec4517dc751f4c527a52bb61934bf495989" + "sha256:2e7b81b2b7af751634425107b986086c6ba7cb61270a43a5c290c58be8cdbc3a", + "sha256:bca83cbfc0be48600a8abf1e3d87fb762a91e6d35d724029a3321dd2dce2ceb1" ], - "version": "==6.0.11" + "version": "==5.4.3" }, "typing-extensions": { "hashes": [ - "sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02", - "sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6" + "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa", + "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e" ], - "markers": "python_version >= '3.7'", - "version": "==4.3.0" + "markers": "python_version < '3.10'", + "version": "==4.4.0" }, "urllib3": { "hashes": [ - "sha256:c33ccba33c819596124764c23a97d25f32b28433ba0dedeb77d873a38722c9bc", - "sha256:ea6e8fb210b19d950fab93b60c9009226c63a28808bc8386e05301e25883ac0a" + "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e", + "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' and python_version < '4'", - "version": "==1.26.11" + "version": "==1.26.12" }, "yarl": { "hashes": [ - "sha256:076eede537ab978b605f41db79a56cad2e7efeea2aa6e0fa8f05a26c24a034fb", - "sha256:07b21e274de4c637f3e3b7104694e53260b5fc10d51fb3ec5fed1da8e0f754e3", - "sha256:0ab5a138211c1c366404d912824bdcf5545ccba5b3ff52c42c4af4cbdc2c5035", - "sha256:0c03f456522d1ec815893d85fccb5def01ffaa74c1b16ff30f8aaa03eb21e453", - "sha256:12768232751689c1a89b0376a96a32bc7633c08da45ad985d0c49ede691f5c0d", - "sha256:19cd801d6f983918a3f3a39f3a45b553c015c5aac92ccd1fac619bd74beece4a", - "sha256:1ca7e596c55bd675432b11320b4eacc62310c2145d6801a1f8e9ad160685a231", - "sha256:1e4808f996ca39a6463f45182e2af2fae55e2560be586d447ce8016f389f626f", - "sha256:205904cffd69ae972a1707a1bd3ea7cded594b1d773a0ce66714edf17833cdae", - "sha256:20df6ff4089bc86e4a66e3b1380460f864df3dd9dccaf88d6b3385d24405893b", - "sha256:21ac44b763e0eec15746a3d440f5e09ad2ecc8b5f6dcd3ea8cb4773d6d4703e3", - "sha256:29e256649f42771829974e742061c3501cc50cf16e63f91ed8d1bf98242e5507", - "sha256:2d800b9c2eaf0684c08be5f50e52bfa2aa920e7163c2ea43f4f431e829b4f0fd", - "sha256:2d93a049d29df172f48bcb09acf9226318e712ce67374f893b460b42cc1380ae", - "sha256:31a9a04ecccd6b03e2b0e12e82131f1488dea5555a13a4d32f064e22a6003cfe", - "sha256:3d1a50e461615747dd93c099f297c1994d472b0f4d2db8a64e55b1edf704ec1c", - "sha256:449c957ffc6bc2309e1fbe67ab7d2c1efca89d3f4912baeb8ead207bb3cc1cd4", - "sha256:4a88510731cd8d4befaba5fbd734a7dd914de5ab8132a5b3dde0bbd6c9476c64", - "sha256:4c322cbaa4ed78a8aac89b2174a6df398faf50e5fc12c4c191c40c59d5e28357", - "sha256:5395da939ffa959974577eff2cbfc24b004a2fb6c346918f39966a5786874e54", - "sha256:5587bba41399854703212b87071c6d8638fa6e61656385875f8c6dff92b2e461", - "sha256:56c11efb0a89700987d05597b08a1efcd78d74c52febe530126785e1b1a285f4", - "sha256:5999c4662631cb798496535afbd837a102859568adc67d75d2045e31ec3ac497", - "sha256:59ddd85a1214862ce7c7c66457f05543b6a275b70a65de366030d56159a979f0", - "sha256:6347f1a58e658b97b0a0d1ff7658a03cb79bdbda0331603bed24dd7054a6dea1", - "sha256:6628d750041550c5d9da50bb40b5cf28a2e63b9388bac10fedd4f19236ef4957", - "sha256:6afb336e23a793cd3b6476c30f030a0d4c7539cd81649683b5e0c1b0ab0bf350", - "sha256:6c8148e0b52bf9535c40c48faebb00cb294ee577ca069d21bd5c48d302a83780", - "sha256:76577f13333b4fe345c3704811ac7509b31499132ff0181f25ee26619de2c843", - "sha256:7c0da7e44d0c9108d8b98469338705e07f4bb7dab96dbd8fa4e91b337db42548", - "sha256:7de89c8456525650ffa2bb56a3eee6af891e98f498babd43ae307bd42dca98f6", - "sha256:7ec362167e2c9fd178f82f252b6d97669d7245695dc057ee182118042026da40", - "sha256:7fce6cbc6c170ede0221cc8c91b285f7f3c8b9fe28283b51885ff621bbe0f8ee", - "sha256:85cba594433915d5c9a0d14b24cfba0339f57a2fff203a5d4fd070e593307d0b", - "sha256:8b0af1cf36b93cee99a31a545fe91d08223e64390c5ecc5e94c39511832a4bb6", - "sha256:9130ddf1ae9978abe63808b6b60a897e41fccb834408cde79522feb37fb72fb0", - "sha256:99449cd5366fe4608e7226c6cae80873296dfa0cde45d9b498fefa1de315a09e", - "sha256:9de955d98e02fab288c7718662afb33aab64212ecb368c5dc866d9a57bf48880", - "sha256:a0fb2cb4204ddb456a8e32381f9a90000429489a25f64e817e6ff94879d432fc", - "sha256:a165442348c211b5dea67c0206fc61366212d7082ba8118c8c5c1c853ea4d82e", - "sha256:ab2a60d57ca88e1d4ca34a10e9fb4ab2ac5ad315543351de3a612bbb0560bead", - "sha256:abc06b97407868ef38f3d172762f4069323de52f2b70d133d096a48d72215d28", - "sha256:af887845b8c2e060eb5605ff72b6f2dd2aab7a761379373fd89d314f4752abbf", - "sha256:b19255dde4b4f4c32e012038f2c169bb72e7f081552bea4641cab4d88bc409dd", - "sha256:b3ded839a5c5608eec8b6f9ae9a62cb22cd037ea97c627f38ae0841a48f09eae", - "sha256:c1445a0c562ed561d06d8cbc5c8916c6008a31c60bc3655cdd2de1d3bf5174a0", - "sha256:d0272228fabe78ce00a3365ffffd6f643f57a91043e119c289aaba202f4095b0", - "sha256:d0b51530877d3ad7a8d47b2fff0c8df3b8f3b8deddf057379ba50b13df2a5eae", - "sha256:d0f77539733e0ec2475ddcd4e26777d08996f8cd55d2aef82ec4d3896687abda", - "sha256:d2b8f245dad9e331540c350285910b20dd913dc86d4ee410c11d48523c4fd546", - "sha256:dd032e8422a52e5a4860e062eb84ac94ea08861d334a4bcaf142a63ce8ad4802", - "sha256:de49d77e968de6626ba7ef4472323f9d2e5a56c1d85b7c0e2a190b2173d3b9be", - "sha256:de839c3a1826a909fdbfe05f6fe2167c4ab033f1133757b5936efe2f84904c07", - "sha256:e80ed5a9939ceb6fda42811542f31c8602be336b1fb977bccb012e83da7e4936", - "sha256:ea30a42dc94d42f2ba4d0f7c0ffb4f4f9baa1b23045910c0c32df9c9902cb272", - "sha256:ea513a25976d21733bff523e0ca836ef1679630ef4ad22d46987d04b372d57fc", - "sha256:ed19b74e81b10b592084a5ad1e70f845f0aacb57577018d31de064e71ffa267a", - "sha256:f5af52738e225fcc526ae64071b7e5342abe03f42e0e8918227b38c9aa711e28", - "sha256:fae37373155f5ef9b403ab48af5136ae9851151f7aacd9926251ab26b953118b" + "sha256:00d7ad91b6583602eb9c1d085a2cf281ada267e9a197e8b7cae487dadbfa293e", + "sha256:0355a701b3998dcd832d0dc47cc5dedf3874f966ac7f870e0f3a6788d802d434", + "sha256:15263c3b0b47968c1d90daa89f21fcc889bb4b1aac5555580d74565de6836366", + "sha256:2ce4c621d21326a4a5500c25031e102af589edb50c09b321049e388b3934eec3", + "sha256:31ede6e8c4329fb81c86706ba8f6bf661a924b53ba191b27aa5fcee5714d18ec", + "sha256:324ba3d3c6fee56e2e0b0d09bf5c73824b9f08234339d2b788af65e60040c959", + "sha256:329412812ecfc94a57cd37c9d547579510a9e83c516bc069470db5f75684629e", + "sha256:4736eaee5626db8d9cda9eb5282028cc834e2aeb194e0d8b50217d707e98bb5c", + "sha256:4953fb0b4fdb7e08b2f3b3be80a00d28c5c8a2056bb066169de00e6501b986b6", + "sha256:4c5bcfc3ed226bf6419f7a33982fb4b8ec2e45785a0561eb99274ebbf09fdd6a", + "sha256:547f7665ad50fa8563150ed079f8e805e63dd85def6674c97efd78eed6c224a6", + "sha256:5b883e458058f8d6099e4420f0cc2567989032b5f34b271c0827de9f1079a424", + "sha256:63f90b20ca654b3ecc7a8d62c03ffa46999595f0167d6450fa8383bab252987e", + "sha256:68dc568889b1c13f1e4745c96b931cc94fdd0defe92a72c2b8ce01091b22e35f", + "sha256:69ee97c71fee1f63d04c945f56d5d726483c4762845400a6795a3b75d56b6c50", + "sha256:6d6283d8e0631b617edf0fd726353cb76630b83a089a40933043894e7f6721e2", + "sha256:72a660bdd24497e3e84f5519e57a9ee9220b6f3ac4d45056961bf22838ce20cc", + "sha256:73494d5b71099ae8cb8754f1df131c11d433b387efab7b51849e7e1e851f07a4", + "sha256:7356644cbed76119d0b6bd32ffba704d30d747e0c217109d7979a7bc36c4d970", + "sha256:8a9066529240171b68893d60dca86a763eae2139dd42f42106b03cf4b426bf10", + "sha256:8aa3decd5e0e852dc68335abf5478a518b41bf2ab2f330fe44916399efedfae0", + "sha256:97b5bdc450d63c3ba30a127d018b866ea94e65655efaf889ebeabc20f7d12406", + "sha256:9ede61b0854e267fd565e7527e2f2eb3ef8858b301319be0604177690e1a3896", + "sha256:b2e9a456c121e26d13c29251f8267541bd75e6a1ccf9e859179701c36a078643", + "sha256:b5dfc9a40c198334f4f3f55880ecf910adebdcb2a0b9a9c23c9345faa9185721", + "sha256:bafb450deef6861815ed579c7a6113a879a6ef58aed4c3a4be54400ae8871478", + "sha256:c49ff66d479d38ab863c50f7bb27dee97c6627c5fe60697de15529da9c3de724", + "sha256:ce3beb46a72d9f2190f9e1027886bfc513702d748047b548b05dab7dfb584d2e", + "sha256:d26608cf178efb8faa5ff0f2d2e77c208f471c5a3709e577a7b3fd0445703ac8", + "sha256:d597767fcd2c3dc49d6eea360c458b65643d1e4dbed91361cf5e36e53c1f8c96", + "sha256:d5c32c82990e4ac4d8150fd7652b972216b204de4e83a122546dce571c1bdf25", + "sha256:d8d07d102f17b68966e2de0e07bfd6e139c7c02ef06d3a0f8d2f0f055e13bb76", + "sha256:e46fba844f4895b36f4c398c5af062a9808d1f26b2999c58909517384d5deda2", + "sha256:e6b5460dc5ad42ad2b36cca524491dfcaffbfd9c8df50508bddc354e787b8dc2", + "sha256:f040bcc6725c821a4c0665f3aa96a4d0805a7aaf2caf266d256b8ed71b9f041c", + "sha256:f0b059678fd549c66b89bed03efcabb009075bd131c248ecdf087bdb6faba24a", + "sha256:fcbb48a93e8699eae920f8d92f7160c03567b421bc17362a9ffbbd706a816f71" ], "markers": "python_version >= '3.7'", - "version": "==1.8.1" + "version": "==1.6.3" }, "zipp": { "hashes": [ - "sha256:05b45f1ee8f807d0cc928485ca40a07cb491cf092ff587c0df9cb1fd154848d2", - "sha256:47c40d7fe183a6f21403a199b3e4192cca5774656965b0a4988ad2f8feb5f009" + "sha256:3a7af91c3db40ec72dd9d154ae18e008c69efe8ca88dde4f9a731bb82fe2f9eb", + "sha256:972cfa31bc2fedd3fa838a51e9bc7e64b7fb725a8c00e7431554311f180e9980" ], "markers": "python_version >= '3.7'", - "version": "==3.8.1" + "version": "==3.9.0" } } } diff --git a/s03_configs/oav.yaml b/s03_configs/oav.yaml new file mode 100644 index 00000000..a6b1fd73 --- /dev/null +++ b/s03_configs/oav.yaml @@ -0,0 +1,30 @@ +- tickit_devices.oav.oav_edge_detection.OAV_DI_OAV: + name: oav_di_oav + inputs: {} + ioc_name: "BLO3S-DI-OAV-01" + db_file: "tickit_devices/oav/db_files/DI-OAV.db" + port: 25570 +- tickit_devices.oav.oav_edge_detection.OAV_DEVICE_DEFAULT: + name: oav_di_ioc + inputs: {} + ioc_name: "BLO3S-DI-IOC-01" + db_file: "tickit_devices/oav/db_files/DI-IOC.db" + port: 25569 +- tickit_devices.oav.oav_edge_detection.OAV_DEVICE_DEFAULT: + name: oav_ea_fscn + inputs: {} + ioc_name: "BLO3S-EA-FSCN-01" + db_file: "tickit_devices/oav/db_files/EA-FSCN.db" + port: 25568 +- tickit_devices.oav.oav_edge_detection.OAV_DEVICE_DEFAULT: + name: oav_ea_oav + inputs: {} + ioc_name: "BLO3S-EA-OAV-01" + db_file: "tickit_devices/oav/db_files/EA-OAV.db" + port: 25567 +- tickit_devices.oav.oav_edge_detection.OAV_DEVICE_DEFAULT: + name: oav_ea_bl + inputs: {} + ioc_name: "BL03S-EA-BL-01" + db_file: "tickit_devices/oav/db_files/EA-BL.db" + port: 25566 diff --git a/tickit_devices/oav/__init__.py b/tickit_devices/oav/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tickit_devices/oav/db_files/DI-IOC.db b/tickit_devices/oav/db_files/DI-IOC.db new file mode 100755 index 00000000..d2337d25 --- /dev/null +++ b/tickit_devices/oav/db_files/DI-IOC.db @@ -0,0 +1,943 @@ +#% macro, __doc__, Create some records for reading IOC statistics and details. +#% macro, IOC, Device prefix + +# Used by Channel Access Security to determine access to this IOC. +record(mbbo, "BL03S-DI-IOC-01:ACCESS") +{ + field(DESC, "BL03S-DI-IOC-01 Acc Mode") + field(PINI, "YES") + field(ZRST, "Running") + field(ZRSV, "NO_ALARM") + field(ONST, "Maintenance") + field(ONSV, "MINOR") + field(TWST, "Test") + field(TWSV, "MINOR") + field(THST, "OFFLINE") + field(THSV, "MAJOR") + info(autosaveFields, "VAL") +} +record(stringin, "BL03S-DI-IOC-01:STARTTOD") +{ + field(DESC, "Time and date of startup") + field(DTYP, "Soft Timestamp") + field(PINI, "YES") + field(INP, "@%Y-%m-%d %H:%M:%S") +} +record(stringin, "BL03S-DI-IOC-01:TOD") +{ + field(DESC, "Current time and date") + field(DTYP, "Soft Timestamp") + field(SCAN, "1 second") + field(INP, "@%Y-%m-%d %H:%M:%S") +} +record(calcout, "BL03S-DI-IOC-01:HEARTBEAT") +{ + field(DESC, "1 Hz counter since startup") + field(CALC, "(A<2147483647)?A+1:1") + field(SCAN, "1 second") + field(INPA, "BL03S-DI-IOC-01:HEARTBEAT") +} +# if autosave is working, START_CNT creates a running count of +# number of times the IOC was started. +record(calcout, "BL03S-DI-IOC-01:START_CNT") +{ + field(DESC, "Increments at startup") + field(CALC, "A+1") + field(PINI, "YES") + field(INPA, "BL03S-DI-IOC-01:START_CNT") + info(autosaveFields_pass0, "VAL") +} +# +# Using an existing internal set of subroutines, this +# PV updates the Access Security mechanism dynamically. +# The .acf file is re-read. +# +record( sub, "BL03S-DI-IOC-01:READACF") +{ + field( DESC, "BL03S-DI-IOC-01 ACF Update") + field( INAM, "asSubInit") + field( SNAM, "asSubProcess") + field( BRSV, "INVALID") +} +record(sub, "BL03S-DI-IOC-01:SYSRESET") +{ + alias("BL03S-DI-IOC-01:SysReset") + field(DESC, "IOC Restart" ) + field(SNAM, "rebootProc") + field(BRSV,"INVALID") + field(L,"1") +} + +#% archiver 1 Monitor +#% alh +record(ai, "BL03S-DI-IOC-01:CA_CLNT_CNT") { + field(DESC, "Number of CA Clients") + field(SCAN, "I/O Intr") + field(DTYP, "IOC stats") + field(INP, "@ca_clients") + field(HOPR, "200") + field(HIHI, "175") + field(HIGH, "100") + field(HHSV, "MAJOR") + field(HSV, "MINOR") + info(autosaveFields_pass0, "HOPR LOPR HIHI HIGH LOW LOLO HHSV HSV LSV LLSV") +} + +#% archiver 1 Monitor +#% alh +record(ai, "BL03S-DI-IOC-01:CA_CONN_CNT") { + field(DESC, "Number of CA Connections") + field(SCAN, "I/O Intr") + field(DTYP, "IOC stats") + field(INP, "@ca_connections") + field(HOPR, "5000") + field(HIHI, "4500") + field(HIGH, "4000") + field(HHSV, "MAJOR") + field(HSV, "MINOR") + info(autosaveFields_pass0, "HOPR LOPR HIHI HIGH LOW LOLO HHSV HSV LSV LLSV") +} + +record(ai, "BL03S-DI-IOC-01:RECORD_CNT") { + field(DESC, "Number of Records") + field(PINI, "YES") + field(DTYP, "IOC stats") + field(INP, "@records") +} + +record(ai, "BL03S-DI-IOC-01:FD_MAX") { + field(DESC, "Max File Descriptors") + field(PINI, "YES") + field(DTYP, "IOC stats") + field(INP, "@maxfd") +} + +record(ai, "BL03S-DI-IOC-01:FD_CNT") { + field(DESC, "Allocated File Descriptors") + field(SCAN, "I/O Intr") + field(DTYP, "IOC stats") + field(FLNK, "BL03S-DI-IOC-01:FD_FREE PP MS") + field(INP, "@fd") +} + +#% archiver 1 Monitor +#% alh +record(calc, "BL03S-DI-IOC-01:FD_FREE") { + field(DESC, "Available FDs") + field(CALC, "B>0?B-A:C") + field(INPA, "BL03S-DI-IOC-01:FD_CNT NPP MS") + field(INPB, "BL03S-DI-IOC-01:FD_MAX NPP MS") + field(INPC, "1000") + field(HOPR, "150") + field(LOLO, "5") + field(LOW, "20") + field(LLSV, "MAJOR") + field(LSV, "MINOR") + info(autosaveFields_pass0, "HOPR LOPR LOW LOLO LSV LLSV") +} + +#% archiver 1 Monitor +record(ai, "BL03S-DI-IOC-01:SYS_CPU_LOAD") { + field(DESC, "System CPU Load") + field(SCAN, "I/O Intr") + field(DTYP, "IOC stats") + field(INP, "@sys_cpuload") + field(EGU, "%") + field(PREC, "1") + field(HOPR, "100") + field(HIHI, "80") + field(HIGH, "70") + field(HHSV, "MAJOR") + field(HSV, "MINOR") + info(autosaveFields_pass0, "HOPR LOPR HIHI HIGH LOW LOLO HHSV HSV LSV LLSV") +} + +#% archiver 1 Monitor +#% alh +record(ai, "BL03S-DI-IOC-01:IOC_CPU_LOAD") { + alias("BL03S-DI-IOC-01:LOAD") + field(DESC, "IOC CPU Load") + field(SCAN, "I/O Intr") + field(DTYP, "IOC stats") + field(INP, "@ioc_cpuload") + field(EGU, "%") + field(PREC, "1") + field(HOPR, "100") + field(HIHI, "80") + field(HIGH, "70") + field(HHSV, "MAJOR") + field(HSV, "MINOR") + info(autosaveFields_pass0, "HOPR LOPR HIHI HIGH LOW LOLO HHSV HSV LSV LLSV") +} + +record(ai, "BL03S-DI-IOC-01:CPU_CNT") { + field(DESC, "Number of CPUs") + field(DTYP, "IOC stats") + field(INP, "@no_of_cpus") + field(PINI, "YES") +} + +#% archiver 1 Monitor +#% alh +record(ai, "BL03S-DI-IOC-01:SUSP_TASK_CNT") { + field(DESC, "Number Suspended Tasks") + field(SCAN, "I/O Intr") + field(DTYP, "IOC stats") + field(INP, "@suspended_tasks") + field(HIHI, "1") + field(HHSV, "MAJOR") + info(autosaveFields_pass0, "HOPR LOPR HIHI HIGH LOW LOLO HHSV HSV LSV LLSV") +} + +#% archiver 1 Monitor +record(ai, "BL03S-DI-IOC-01:MEM_USED") { + field(DESC, "Allocated Memory") + field(SCAN, "I/O Intr") + field(DTYP, "IOC stats") + field(INP, "@allocated_bytes") + field(EGU, "byte") +} + +#% archiver 1 Monitor +record(ai, "BL03S-DI-IOC-01:MEM_FREE") { + field(DESC, "Free Memory") + field(SCAN, "I/O Intr") + field(DTYP, "IOC stats") + field(INP, "@free_bytes") + field(EGU, "byte") + field(LLSV, "MAJOR") + field(LSV, "MINOR") + info(autosaveFields_pass0, "HOPR LOPR LOW LOLO LSV LLSV") +} + +record(ai, "BL03S-DI-IOC-01:MEM_MAX") { + field(DESC, "Maximum Memory") + field(SCAN, "I/O Intr") + field(DTYP, "IOC stats") + field(INP, "@total_bytes") + field(EGU, "byte") +} + +record(ao, "BL03S-DI-IOC-01:CA_UPD_TIME") { + field(DESC, "CA Check Update Period") + field(DTYP, "IOC stats") + field(OUT, "@ca_scan_rate") + field(EGU, "sec") + field(DRVH, "60") + field(DRVL, "1") + field(HOPR, "60") + field(VAL, "15") + field(PINI, "YES") +} + +record(ao, "BL03S-DI-IOC-01:FD_UPD_TIME") { + field(DESC, "FD Check Update Period") + field(DTYP, "IOC stats") + field(OUT, "@fd_scan_rate") + field(EGU, "sec") + field(DRVH, "60") + field(DRVL, "1") + field(HOPR, "60") + field(VAL, "20") + field(PINI, "YES") +} + +record(ao, "BL03S-DI-IOC-01:LOAD_UPD_TIME") { + field(DESC, "CPU Check Update Period") + field(DTYP, "IOC stats") + field(OUT, "@cpu_scan_rate") + field(EGU, "sec") + field(DRVH, "60") + field(DRVL, "1") + field(HOPR, "60") + field(VAL, "10") + field(PINI, "YES") +} + +record(ao, "BL03S-DI-IOC-01:MEM_UPD_TIME") { + field(DESC, "Memory Check Update Period") + field(DTYP, "IOC stats") + field(OUT, "@memory_scan_rate") + field(EGU, "sec") + field(DRVH, "60") + field(DRVL, "1") + field(HOPR, "60") + field(VAL, "10") + field(PINI, "YES") +} + +record(stringin, "BL03S-DI-IOC-01:ST_SCRIPT1") { + field(DESC, "Startup Script Part1") + field(DTYP, "IOC stats") + field(INP, "@startup_script_1") + field(PINI, "YES") +} + +record(stringin, "BL03S-DI-IOC-01:ST_SCRIPT2") { + field(DESC, "Startup Script Part2") + field(DTYP, "IOC stats") + field(INP, "@startup_script_2") + field(PINI, "YES") +} + +record(waveform, "BL03S-DI-IOC-01:ST_SCRIPT") { + field(DESC, "Startup Script") + field(DTYP, "IOC stats") + field(INP, "@startup_script") + field(NELM, "120") + field(FTVL, "CHAR") + field(PINI, "YES") +} + +record(stringin, "BL03S-DI-IOC-01:KERNEL_VERS") { + field(DESC, "Kernel Version") + field(DTYP, "IOC stats") + field(INP, "@kernel_ver") + field(PINI, "YES") +} + +record(stringin, "BL03S-DI-IOC-01:EPICS_VERS") { + field(DESC, "EPICS Version") + field(DTYP, "IOC stats") + field(INP, "@epics_ver") + field(PINI, "YES") +} + +record(waveform, "BL03S-DI-IOC-01:EPICS_VERSION") { + field(DESC, "EPICS Version") + field(DTYP, "IOC stats") + field(INP, "@epics_ver") + field(NELM, "120") + field(FTVL, "CHAR") + field(PINI, "YES") +} + +record(stringin, "BL03S-DI-IOC-01:HOSTNAME") { + field(DESC, "Host Name") + field(DTYP, "IOC stats") + field(INP, "@hostname") + field(PINI, "YES") +} + +record(stringin, "BL03S-DI-IOC-01:APP_DIR1") { + field(DESC, "Application Directory Part 1") + field(DTYP, "IOC stats") + field(INP, "@pwd1") + field(PINI, "YES") +} + +record(stringin, "BL03S-DI-IOC-01:APP_DIR2") { + field(DESC, "Application Directory Part 2") + field(DTYP, "IOC stats") + field(INP, "@pwd2") + field(PINI, "YES") +} + +record(waveform, "BL03S-DI-IOC-01:APP_DIR") { + field(DESC, "Application Directory") + field(DTYP, "IOC stats") + field(INP, "@pwd") + field(NELM, "160") + field(FTVL, "CHAR") + field(PINI, "YES") +} + +record(stringin, "BL03S-DI-IOC-01:UPTIME") { + field(DESC, "Elapsed Time since Start") + field(SCAN, "1 second") + field(DTYP, "IOC stats") + field(INP, "@up_time") + field(PINI, "YES") +} + +record(stringin, "BL03S-DI-IOC-01:ENGINEER") { + field(DESC, "Engineer") + field(DTYP, "IOC stats") + field(INP, "@engineer") + field(PINI, "YES") +} + +record(stringin, "BL03S-DI-IOC-01:LOCATION") { + field(DESC, "Location") + field(DTYP, "IOC stats") + field(INP, "@location") + field(PINI, "YES") +} + +record(ai, "BL03S-DI-IOC-01:PROCESS_ID") { + field(DESC, "Process ID") + field(PINI, "YES") + field(DTYP, "IOC stats") + field(INP, "@proc_id") +} + +record(ai, "BL03S-DI-IOC-01:PARENT_ID") { + field(DESC, "Parent Process ID") + field(PINI, "YES") + field(DTYP, "IOC stats") + field(INP, "@parent_proc_id") +} + +record(stringin, "BL03S-DI-IOC-01:DLSVER") { + field(DESC, "IOC version") + field(DTYP, "IOC stats") + field(INP, "@dlsver") + field(PINI, "YES") +} +record(ai, "BL03S-DI-IOC-01:GTIM_TIME") { + field(DESC, "Gen Time Secs since 1990") + field(SCAN, "1 second") + field(DTYP, "General Time") + field(PREC, "3") + field(INP, "@TIME") + field(EGU, "sec") +} + +record(bo, "BL03S-DI-IOC-01:GTIM_RESET") { + field(DESC, "Gen Time Error Reset") + field(DTYP, "General Time") + field(OUT, "@RSTERRCNT") + field(ZNAM, "Reset") + field(ONAM, "Reset") +} + +record(longin, "BL03S-DI-IOC-01:GTIM_ERR_CNT") { + field(DESC, "Gen Time Error Count") + field(DTYP, "General Time") + field(INP, "@GETERRCNT") + field(SCAN, "1 second") + field(HIHI, "1") + field(HHSV, "MAJOR") +} + +record(stringin, "BL03S-DI-IOC-01:GTIM_CUR_SRC") { + field(DESC, "Gen Time Current Provider") + field(DTYP, "General Time") + field(INP, "@BESTTCP") + field(SCAN, "1 second") +} + +record(stringin, "BL03S-DI-IOC-01:GTIM_EVT_SRC") { + field(DESC, "Gen Time Event Provider") + field(DTYP, "General Time") + field(INP, "@BESTTEP") + field(SCAN, "1 second") +} + +record(stringin, "BL03S-DI-IOC-01:GTIM_HI_SRC") { + field(DESC, "Gen Time Highest Provider") + field(DTYP, "General Time") + field(INP, "@TOPTCP") + field(SCAN, "1 second") +} +record(stringin, "BL03S-DI-IOC-01:CA_ADDR_LIST") { + field(DESC, "EPICS_CA_ADDR_LIST") + field(DTYP, "IOC epics var") + field(INP, "@EPICS_CA_ADDR_LIST") + field(PINI, "YES") +} +record(stringin, "BL03S-DI-IOC-01:CA_CONN_TIME") { + field(DESC, "EPICS_CA_CONN_TMO") + field(DTYP, "IOC epics var") + field(INP, "@EPICS_CA_CONN_TMO") + field(PINI, "YES") +} +record(stringin, "BL03S-DI-IOC-01:CA_AUTO_ADDR") { + field(DESC, "EPICS_CA_AUTO_ADDR_LIST") + field(DTYP, "IOC epics var") + field(INP, "@EPICS_CA_AUTO_ADDR_LIST") + field(PINI, "YES") +} +record(stringin, "BL03S-DI-IOC-01:CA_RPTR_PORT") { + field(DESC, "EPICS_CA_REPEATER_PORT") + field(DTYP, "IOC epics var") + field(INP, "@EPICS_CA_REPEATER_PORT") + field(PINI, "YES") +} +record(stringin, "BL03S-DI-IOC-01:CA_SRVR_PORT") { + field(DESC, "EPICS_CA_SERVER_PORT") + field(DTYP, "IOC epics var") + field(INP, "@EPICS_CA_SERVER_PORT") + field(PINI, "YES") +} +record(stringin, "BL03S-DI-IOC-01:CA_MAX_ARRAY") { + field(DESC, "EPICS_CA_MAX_ARRAY_BYTES") + field(DTYP, "IOC epics var") + field(INP, "@EPICS_CA_MAX_ARRAY_BYTES") + field(PINI, "YES") +} +record(stringin, "BL03S-DI-IOC-01:CA_SRCH_TIME") { + field(DESC, "EPICS_CA_MAX_SEARCH_PERIOD") + field(DTYP, "IOC epics var") + field(INP, "@EPICS_CA_MAX_SEARCH_PERIOD") + field(PINI, "YES") +} +record(stringin, "BL03S-DI-IOC-01:CA_BEAC_TIME") { + field(DESC, "EPICS_CA_BEACON_PERIOD") + field(DTYP, "IOC epics var") + field(INP, "@EPICS_CA_BEACON_PERIOD") + field(PINI, "YES") +} +record(stringin, "BL03S-DI-IOC-01:TIMEZONE") { + field(DESC, "EPICS_TIMEZONE") + field(DTYP, "IOC epics var") + field(INP, "@EPICS_TIMEZONE") + field(PINI, "YES") +} +record(stringin, "BL03S-DI-IOC-01:TS_NTP_INET") { + field(DESC, "EPICS_TS_NTP_INET") + field(DTYP, "IOC epics var") + field(INP, "@EPICS_TS_NTP_INET") + field(PINI, "YES") +} +record(stringin, "BL03S-DI-IOC-01:IOC_LOG_PORT") { + field(DESC, "EPICS_IOC_LOG_PORT") + field(DTYP, "IOC epics var") + field(INP, "@EPICS_IOC_LOG_PORT") + field(PINI, "YES") +} +record(stringin, "BL03S-DI-IOC-01:IOC_LOG_INET") { + field(DESC, "EPICS_IOC_LOG_INET") + field(DTYP, "IOC epics var") + field(INP, "@EPICS_IOC_LOG_INET") + field(PINI, "YES") +} +#% macro, __doc__, Create some records for reading IOC statistics and details. +#% macro, IOC, Device prefix + +record(bo, "BL03S-DI-IOC-01:01HZ_MODE") { + field(DESC, "01HZ Mode") + field(DOL, "1") + field(PINI, "YES") + field(ZNAM, "Relative") + field(ONAM, "Absolute") +} +record(sub, "BL03S-DI-IOC-01:01HZ_UPD_TIME") { + field(DESC, "01HZ Update Time") + field(SCAN, "10 second") + field(EGU, "second") + field(PREC, "5") + field(MDEL, "0.00001") + field(HYST, "0.00002") + field(INAM, "scanMonInit") + field(SNAM, "scanMon") + field(HHSV, "MAJOR") + field(HSV, "MINOR") + field(LSV, "MINOR") + field(LLSV, "MAJOR") + field(BRSV, "INVALID") + field(INPA, "BL03S-DI-IOC-01:01HZ_MODE") + field(B, "1.0") + field(C, "5.0") +} +#% macro, __doc__, Create some records for reading IOC statistics and details. +#% macro, IOC, Device prefix + +record(bo, "BL03S-DI-IOC-01:02HZ_MODE") { + field(DESC, "02HZ Mode") + field(DOL, "1") + field(PINI, "YES") + field(ZNAM, "Relative") + field(ONAM, "Absolute") +} +record(sub, "BL03S-DI-IOC-01:02HZ_UPD_TIME") { + field(DESC, "02HZ Update Time") + field(SCAN, "5 second") + field(EGU, "second") + field(PREC, "5") + field(MDEL, "0.00001") + field(HYST, "0.00002") + field(INAM, "scanMonInit") + field(SNAM, "scanMon") + field(HHSV, "MAJOR") + field(HSV, "MINOR") + field(LSV, "MINOR") + field(LLSV, "MAJOR") + field(BRSV, "INVALID") + field(INPA, "BL03S-DI-IOC-01:02HZ_MODE") + field(B, "1.0") + field(C, "5.0") +} +#% macro, __doc__, Create some records for reading IOC statistics and details. +#% macro, IOC, Device prefix + +record(bo, "BL03S-DI-IOC-01:05HZ_MODE") { + field(DESC, "05HZ Mode") + field(DOL, "1") + field(PINI, "YES") + field(ZNAM, "Relative") + field(ONAM, "Absolute") +} +record(sub, "BL03S-DI-IOC-01:05HZ_UPD_TIME") { + field(DESC, "05HZ Update Time") + field(SCAN, "2 second") + field(EGU, "second") + field(PREC, "5") + field(MDEL, "0.00001") + field(HYST, "0.00002") + field(INAM, "scanMonInit") + field(SNAM, "scanMon") + field(HHSV, "MAJOR") + field(HSV, "MINOR") + field(LSV, "MINOR") + field(LLSV, "MAJOR") + field(BRSV, "INVALID") + field(INPA, "BL03S-DI-IOC-01:05HZ_MODE") + field(B, "1.0") + field(C, "5.0") +} +#% macro, __doc__, Create some records for reading IOC statistics and details. +#% macro, IOC, Device prefix + +record(bo, "BL03S-DI-IOC-01:1HZ_MODE") { + field(DESC, "1HZ Mode") + field(DOL, "1") + field(PINI, "YES") + field(ZNAM, "Relative") + field(ONAM, "Absolute") +} +record(sub, "BL03S-DI-IOC-01:1HZ_UPD_TIME") { + field(DESC, "1HZ Update Time") + field(SCAN, "1 second") + field(EGU, "second") + field(PREC, "5") + field(MDEL, "0.00001") + field(HYST, "0.00002") + field(INAM, "scanMonInit") + field(SNAM, "scanMon") + field(HHSV, "MAJOR") + field(HSV, "MINOR") + field(LSV, "MINOR") + field(LLSV, "MAJOR") + field(BRSV, "INVALID") + field(INPA, "BL03S-DI-IOC-01:1HZ_MODE") + field(B, "1.0") + field(C, "5.0") +} +#% macro, __doc__, Create some records for reading IOC statistics and details. +#% macro, IOC, Device prefix + +record(bo, "BL03S-DI-IOC-01:2HZ_MODE") { + field(DESC, "2HZ Mode") + field(DOL, "1") + field(PINI, "YES") + field(ZNAM, "Relative") + field(ONAM, "Absolute") +} +record(sub, "BL03S-DI-IOC-01:2HZ_UPD_TIME") { + field(DESC, "2HZ Update Time") + field(SCAN, ".5 second") + field(EGU, "second") + field(PREC, "5") + field(MDEL, "0.00001") + field(HYST, "0.00002") + field(INAM, "scanMonInit") + field(SNAM, "scanMon") + field(HHSV, "MAJOR") + field(HSV, "MINOR") + field(LSV, "MINOR") + field(LLSV, "MAJOR") + field(BRSV, "INVALID") + field(INPA, "BL03S-DI-IOC-01:2HZ_MODE") + field(B, "1.0") + field(C, "5.0") +} +#% macro, __doc__, Create some records for reading IOC statistics and details. +#% macro, IOC, Device prefix + +record(bo, "BL03S-DI-IOC-01:5HZ_MODE") { + field(DESC, "5HZ Mode") + field(DOL, "1") + field(PINI, "YES") + field(ZNAM, "Relative") + field(ONAM, "Absolute") +} +record(sub, "BL03S-DI-IOC-01:5HZ_UPD_TIME") { + field(DESC, "5HZ Update Time") + field(SCAN, ".2 second") + field(EGU, "second") + field(PREC, "5") + field(MDEL, "0.00001") + field(HYST, "0.00002") + field(INAM, "scanMonInit") + field(SNAM, "scanMon") + field(HHSV, "MAJOR") + field(HSV, "MINOR") + field(LSV, "MINOR") + field(LLSV, "MAJOR") + field(BRSV, "INVALID") + field(INPA, "BL03S-DI-IOC-01:5HZ_MODE") + field(B, "1.0") + field(C, "5.0") +} +#% macro, __doc__, Create some records for reading IOC statistics and details. +#% macro, IOC, Device prefix + +record(bo, "BL03S-DI-IOC-01:10HZ_MODE") { + field(DESC, "10HZ Mode") + field(DOL, "1") + field(PINI, "YES") + field(ZNAM, "Relative") + field(ONAM, "Absolute") +} +record(sub, "BL03S-DI-IOC-01:10HZ_UPD_TIME") { + field(DESC, "10HZ Update Time") + field(SCAN, ".1 second") + field(EGU, "second") + field(PREC, "5") + field(MDEL, "0.00001") + field(HYST, "0.00002") + field(INAM, "scanMonInit") + field(SNAM, "scanMon") + field(HHSV, "MAJOR") + field(HSV, "MINOR") + field(LSV, "MINOR") + field(LLSV, "MAJOR") + field(BRSV, "INVALID") + field(INPA, "BL03S-DI-IOC-01:10HZ_MODE") + field(B, "1.0") + field(C, "5.0") +} + +record(calc, "BL03S-DI-IOC-01:SCANMON_SEVR") { + field(DESC, "ScanMon Max Severity") + field(SCAN, "1 second") + field(CALC, "0") + field(INPA, "BL03S-DI-IOC-01:01HZ_UPD_TIME.SEVR MS") + field(INPB, "BL03S-DI-IOC-01:02HZ_UPD_TIME.SEVR MS") + field(INPC, "BL03S-DI-IOC-01:05HZ_UPD_TIME.SEVR MS") + field(INPD, "BL03S-DI-IOC-01:1HZ_UPD_TIME.SEVR MS") + field(INPE, "BL03S-DI-IOC-01:2HZ_UPD_TIME.SEVR MS") + field(INPF, "BL03S-DI-IOC-01:5HZ_UPD_TIME.SEVR MS") + field(INPG, "BL03S-DI-IOC-01:10HZ_UPD_TIME.SEVR MS") +} + +# % macro, name, name for gui elements +# % macro, EDM_FILE, edm screen, defaults to ioc_stats_softdls.edl +# % macro, IOC, ioc name + +# % gui, DI1, edm, ioc_stats_softdls.edl, ioc=BL03S-DI-IOC-01 +# % gui, DI1, edmembed, ioc_embed.edl, ioc=BL03S-DI-IOC-01,EDM_FILE=ioc_stats_softdls.edl + + + +# This associates BOY screens with the template +# % gui, DI1, boydetail, devIocStatsApp_opi/iocStats_detail.opi, desc=BL03S-DI-IOC-01, IOC=BL03S-DI-IOC-01, name=DI1 +# % gui, DI1, boyembed, devIocStatsApp_opi/iocStats_embed.opi, desc=BL03S-DI-IOC-01, IOC=BL03S-DI-IOC-01, name=DI1 +# % gui, DI1, boyembed, devIocStatsApp_opi/iocStats_embed_box.opi, desc=BL03S-DI-IOC-01, IOC=BL03S-DI-IOC-01, name=DI1 + +# These define what PVs a detail screen should contain +# % gui, DI1, readback, Startup Time,BL03S-DI-IOC-01:STARTOD +# % gui, DI1, readback, Current Time,BL03S-DI-IOC-01:TOD +# % gui, DI1, readback, Up Time,BL03S-DI-IOC-01:UPTIME +# % gui, DI1, readback, Heartbeat,BL03S-DI-IOC-01:HEARTBEAT +# % gui, DI1, readback, Records,BL03S-DI-IOC-01:RECORD_CNT +# % gui, DI1, readback, Host Name,BL03S-DI-IOC-01:HOSTNAME +# % gui, DI1, readback, User Name,BL03S-DI-IOC-01:ENGINEER +# % gui, DI1, readback, Location,BL03S-DI-IOC-01:LOCATION +# % gui, DI1, readback, CA Clients,BL03S-DI-IOC-01:CA_CLNT_CNT +# % gui, DI1, readback, CA PV Conns,BL03S-DI-IOC-01:CA_CONN_CNT +# % gui, DI1, readback, Susp Tasks,BL03S-DI-IOC-01:SUSP_TASK_CNT +# % gui, DI1, readback, EPICS Version,BL03S-DI-IOC-01:EPICS_VERS +# % gui, DI1, readback, OS Version,BL03S-DI-IOC-01:KERNEL_VERS +# % gui, DI1, readback, Application Directory,BL03S-DI-IOC-01:APP_DIR1 +# % gui, DI1, readback, Startup Script,BL03S-DI-IOC-01:ST_SCRIPT1 +# % gui, DI1, readback, Memory Free,BL03S-DI-IOC-01:MEM_FREE +# % gui, DI1, readback, Memory Used,BL03S-DI-IOC-01:MEM_USED +# % gui, DI1, readback, Memory Max,BL03S-DI-IOC-01:MEM_MAX +# % gui, DI1, readback, File Handles Free,BL03S-DI-IOC-01:FD_FREE +# % gui, DI1, readback, File Handles Max,BL03S-DI-IOC-01:FD_MAX +# % gui, DI1, readback, IOC CPU Load,BL03S-DI-IOC-01:IOC_CPU_LOAD +# % gui, DI1, readback, All CPUs Load,BL03S-DI-IOC-01:SYS_CPU_LOAD +# % gui, DI1, readback, System CPUs,BL03S-DI-IOC-01:CPU_CNT + +record(stringout,"BL03S-DI-IOC-01:0:NAME") { + field(VAL,"Not In Use") + field(DTYP,"Soft Channel") +} +record(longout,"BL03S-DI-IOC-01:0:STATE") { + field(DTYP,"Soft Channel") +} + +#% archiver 10 Monitor VAL +#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL03S-DI-IOC-01:0:STATUS +record(mbbo,"BL03S-DI-IOC-01:0:STATUS") { + field(DTYP,"Soft Channel") + field(NOBT,"3") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(FRVL,"4") + field(ZRST,"No Status") + field(ONST,"Failure") + field(TWST,"Warning") + field(THST,"Seq Fail") + field(FRST,"Ok") + field(ONSV, "MAJOR") + field(TWSV, "MINOR") + field(THSV, "MINOR") +} +record(stringout,"BL03S-DI-IOC-01:0:STATUSST") { + field(DTYP,"Soft Channel") + field(VAL,"Status unknown") +} +record(stringout,"BL03S-DI-IOC-01:0:TIME") { + field(DTYP,"Soft Channel") + field(VAL,"Not yet saved") +} +record(stringout,"BL03S-DI-IOC-01:1:NAME") { + field(VAL,"Not In Use") + field(DTYP,"Soft Channel") +} +record(longout,"BL03S-DI-IOC-01:1:STATE") { + field(DTYP,"Soft Channel") +} + +#% archiver 10 Monitor VAL +#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL03S-DI-IOC-01:1:STATUS +record(mbbo,"BL03S-DI-IOC-01:1:STATUS") { + field(DTYP,"Soft Channel") + field(NOBT,"3") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(FRVL,"4") + field(ZRST,"No Status") + field(ONST,"Failure") + field(TWST,"Warning") + field(THST,"Seq Fail") + field(FRST,"Ok") + field(ONSV, "MAJOR") + field(TWSV, "MINOR") + field(THSV, "MINOR") +} +record(stringout,"BL03S-DI-IOC-01:1:STATUSST") { + field(DTYP,"Soft Channel") + field(VAL,"Status unknown") +} +record(stringout,"BL03S-DI-IOC-01:1:TIME") { + field(DTYP,"Soft Channel") + field(VAL,"Not yet saved") +} +record(stringout,"BL03S-DI-IOC-01:2:NAME") { + field(VAL,"Not In Use") + field(DTYP,"Soft Channel") +} +record(longout,"BL03S-DI-IOC-01:2:STATE") { + field(DTYP,"Soft Channel") +} + +#% archiver 10 Monitor VAL +#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL03S-DI-IOC-01:2:STATUS +record(mbbo,"BL03S-DI-IOC-01:2:STATUS") { + field(DTYP,"Soft Channel") + field(NOBT,"3") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(FRVL,"4") + field(ZRST,"No Status") + field(ONST,"Failure") + field(TWST,"Warning") + field(THST,"Seq Fail") + field(FRST,"Ok") + field(ONSV, "MAJOR") + field(TWSV, "MINOR") + field(THSV, "MINOR") +} +record(stringout,"BL03S-DI-IOC-01:2:STATUSST") { + field(DTYP,"Soft Channel") + field(VAL,"Status unknown") +} +record(stringout,"BL03S-DI-IOC-01:2:TIME") { + field(DTYP,"Soft Channel") + field(VAL,"Not yet saved") +} +# This associates an edm screen with the template +# % gui, None, edm, save_restoreStatus_more.edl, P=BL03S-DI-IOC-01 + +# This associates BOY screens with the template +# % gui, None, boydetail, asApp_opi/autosave_detail.opi, desc=BL03S-DI-IOC-01, device=BL03S-DI-IOC-01, name=None +# % gui, None, boyembed, asApp_opi/autosave_embed.opi, desc=BL03S-DI-IOC-01, device=BL03S-DI-IOC-01, name=None +# % gui, None, boyembed, asApp_opi/autosave_embed_box.opi, desc=BL03S-DI-IOC-01, device=BL03S-DI-IOC-01, name=None + +# These define what PVs a detail screen should contain +# % gui, None, readback, General Status, BL03S-DI-IOC-01:SRSTATUSST +# % gui, None, readback, Recently, BL03S-DI-IOC-01:SRRECENTST +# % gui, None, readback, Reboot Status, BL03S-DI-IOC-01:RRSTATUSST +# % gui, None, readback, Reboot time, BL03S-DI-IOC-01:RRTIME +# % gui, None, readback, File 0 Status, BL03S-DI-IOC-01:0:STATUSST +# % gui, None, readback, File 0 Name, BL03S-DI-IOC-01:0:NAME +# % gui, None, readback, File 0 Written, BL03S-DI-IOC-01:0:TIME +# % gui, None, readback, File 1 Status, BL03S-DI-IOC-01:1:STATUSST +# % gui, None, readback, File 1 Name, BL03S-DI-IOC-01:1:NAME +# % gui, None, readback, File 1 Written, BL03S-DI-IOC-01:1:TIME +# % gui, None, readback, File 2 Status, BL03S-DI-IOC-01:2:STATUSST +# % gui, None, readback, File 2 Name, BL03S-DI-IOC-01:2:NAME +# % gui, None, readback, File 2 Written, BL03S-DI-IOC-01:2:TIME + + +# This makes the component icon reflect the status and severity +# % gui, None, sevr +#% archiver 10 Monitor VAL +#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL03S-DI-IOC-01:RRSTATUS +record(mbbo,"BL03S-DI-IOC-01:RRSTATUS") { + field(DTYP,"Soft Channel") + field(NOBT,"3") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(FRVL,"4") + field(ZRST,"No Status") + field(ONST,"Failure") + field(TWST,"Warning") + field(THST,"Seq Fail") + field(FRST,"Ok") + field(ONSV, "MAJOR") + field(TWSV, "MINOR") + field(THSV, "MINOR") +} + +record(stringout,"BL03S-DI-IOC-01:RRSTATUSST") { + field(DTYP,"Soft Channel") + field(VAL,"Status unknown") +} + +record(stringout,"BL03S-DI-IOC-01:RRTIME") { + field(DTYP,"Soft Channel") + field(VAL,"Not yet saved") +} + +# % gui, None, sevr +#% archiver 10 Monitor VAL +#% None $SEVRCOMMAND UP_ANY dls-alh-handler.py BL03S-DI-IOC-01:SRSTATUS +record(mbbo,"BL03S-DI-IOC-01:SRSTATUS") { + field(DTYP,"Soft Channel") + field(NOBT,"3") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(FRST,"4") + field(ZRST,"No Status") + field(ONST,"Failure") + field(TWST,"Warning") + field(THST,"Seq Fail") + field(FRST,"Ok") + field(ONSV, "MAJOR") + field(TWSV, "MINOR") + field(THSV, "MINOR") +} + +record(bo,"BL03S-DI-IOC-01:SRHEARTBT") { + field(DTYP,"Soft Channel") +} + +record(stringout,"BL03S-DI-IOC-01:SRSTATUSST") { + field(DTYP,"Soft Channel") + field(VAL,"Status unknown") +} + +record(stringout,"BL03S-DI-IOC-01:SRRECENTST") { + field(DTYP,"Soft Channel") + field(VAL,"Status unknown") +} diff --git a/tickit_devices/oav/db_files/DI-OAV.db b/tickit_devices/oav/db_files/DI-OAV.db new file mode 100755 index 00000000..0d9ccb7a --- /dev/null +++ b/tickit_devices/oav/db_files/DI-OAV.db @@ -0,0 +1,5651 @@ +# Database for the records specific to the ADAravis driver +# Macros: +#% macro, P, Device Prefix +#% macro, R, Device Suffix +#% macro, PORT, Asyn Port name +#% macro, TIMEOUT, Timeout, default 1 +#% macro, ADDR, Asyn Port address, default 0 + +# This associates a BOY screen with the template +# % gui, OAV.CAM, boydetail, aravisApp_opi/aravis_detail.opi, P=BL03S-DI-OAV-01, R=:CAM:, DESC=Camera +# % gui, OAV.CAM, boyembed, aravisApp_opi/aravis_embed_box.opi, P=BL03S-DI-OAV-01, R=:CAM:, DESC=Camera +# % gui, OAV.CAM, boyembed, aravisApp_opi/aravis_embed.opi, P=BL03S-DI-OAV-01, R=:CAM:, DESC=Camera + +## ADGenICam.template +## Template database file to control some features of ADGenICam. +## +## Note: this file contains only the records that are not handled by the camera-specific GenICam autogenerated database + +#=================================================================# +# Template file: ADBase.template +# Database for area detector control using asyn driver and standard asyn device support +# Mark Rivers +# March 9, 2008 + +# Macros: +# % macro, P, Device Prefix +# % macro, R, Device Suffix +# % macro, PORT, Asyn Port name +# % macro, TIMEOUT, Timeout +# % macro, ADDR, Asyn Port address +# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs + +# Using SCANRATE:The ImageJ EPICS_AD_Viewer plugin monitors ArrayCounter_RBV to decide +# when there is a new image to display. That means that it will not display faster than +# the SCANRATE you select. + +#=================================================================# +# Template file: NDArrayBase.template +# Database for area detector control using asyn driver and standard asyn device support +# Mark Rivers +# March 9, 2008 + +################################################################### +# This record contains the version of ADCore # +################################################################### + +record(stringin, "BL03S-DI-OAV-01:CAM:ADCoreVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.CAM,0,1)ADCORE_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains the version of the driver or plugin # +################################################################### + +record(stringin, "BL03S-DI-OAV-01:CAM:DriverVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.CAM,0,1)DRIVER_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains the asyn port name of this detector # +################################################################### + +record(stringin, "BL03S-DI-OAV-01:CAM:PortName_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.CAM,0,1)PORT_NAME_SELF") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records contain basic information about the detector # +################################################################### + +record(stringin, "BL03S-DI-OAV-01:CAM:Manufacturer_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.CAM,0,1)MANUFACTURER") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-DI-OAV-01:CAM:Model_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.CAM,0,1)MODEL") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-DI-OAV-01:CAM:SerialNumber_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.CAM,0,1)SERIAL_NUMBER") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-DI-OAV-01:CAM:SDKVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.CAM,0,1)SDK_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-DI-OAV-01:CAM:FirmwareVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.CAM,0,1)FIRMWARE_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control acquisition start and stop # +################################################################### + +record(bi, "BL03S-DI-OAV-01:CAM:Acquire") { + field(DTYP, "asynInt32") + field(ZNAM, "Done") + field(VAL, "0") + field(FLNK, "BL03S-DI-OAV-01:CAM:SetAcquireBusy") + info(bi:READBACK, "1") +} + +record(bi, "BL03S-DI-OAV-01:CAM:Acquire_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)ACQUIRE") + field(ZNAM, "Done") + field(ZSV, "NO_ALARM") + field(ONAM, "Acquiring") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +record(calcout, "BL03S-DI-OAV-01:CAM:SetAcquireBusy") +{ + field(INPA, "BL03S-DI-OAV-01:CAM:Acquire NPP") + field(CALC, "A") + field(OOPT, "Transition To Non-zero") + field(OUT, "BL03S-DI-OAV-01:CAM:AcquireBusy PP") +} + +record(bi, "BL03S-DI-OAV-01:CAM:AcquireBusy") { + field(ZNAM, "Done") + field(ZSV, "NO_ALARM") + field(ONAM, "Acquiring") + field(OSV, "MINOR") + field(VAL, "0") +} + +record(bi, "BL03S-DI-OAV-01:CAM:AcquireBusyCB") { + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)ACQUIRE_BUSY") + field(ZNAM, "Done") + field(ZSV, "NO_ALARM") + field(ONAM, "Acquiring") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +record(calcout, "BL03S-DI-OAV-01:CAM:ClearAcquireBusy") { + field(INPA, "BL03S-DI-OAV-01:CAM:AcquireBusyCB CP") + field(CALC, "A") + field(OOPT, "Transition To Zero") + field(OUT, "BL03S-DI-OAV-01:CAM:AcquireBusy PP") +} + +record(bo, "BL03S-DI-OAV-01:CAM:WaitForPlugins") { + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)WAIT_FOR_PLUGINS") + field(ZNAM, "No") + field(ONAM, "Yes") + field(VAL, "0") +} + +################################################################### +# These records are the array size and data type # +################################################################### +# The number of dimensions +record(longout, "BL03S-DI-OAV-01:CAM:NDimensions") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)ARRAY_NDIMENSIONS") +} + +record(longin, "BL03S-DI-OAV-01:CAM:NDimensions_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)ARRAY_NDIMENSIONS") + field(SCAN, "I/O Intr") +} + +# The array dimensions waveform records +record(waveform, "BL03S-DI-OAV-01:CAM:Dimensions") +{ + field(DTYP, "asynInt32ArrayOut") + field(INP, "@asyn(OAV.CAM,0,1)ARRAY_DIMENSIONS") + field(FTVL, "LONG") + field(NELM, "10") + field(FLNK, "BL03S-DI-OAV-01:CAM:Dim0SA") +} + +record(subArray, "BL03S-DI-OAV-01:CAM:Dim0SA") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "0") + field(FLNK, "BL03S-DI-OAV-01:CAM:ArraySize0") +} + +record(longin, "BL03S-DI-OAV-01:CAM:ArraySize0") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dim0SA") + field(FLNK, "BL03S-DI-OAV-01:CAM:Dim1SA") +} + +record(subArray, "BL03S-DI-OAV-01:CAM:Dim1SA") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "1") + field(FLNK, "BL03S-DI-OAV-01:CAM:ArraySize1") +} + +record(longin, "BL03S-DI-OAV-01:CAM:ArraySize1") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dim1SA") + field(FLNK, "BL03S-DI-OAV-01:CAM:Dim2SA") +} + +record(subArray, "BL03S-DI-OAV-01:CAM:Dim2SA") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "2") + field(FLNK, "BL03S-DI-OAV-01:CAM:ArraySize2") +} + +record(longin, "BL03S-DI-OAV-01:CAM:ArraySize2") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dim2SA") + field(FLNK, "BL03S-DI-OAV-01:CAM:Dim3SA") +} + +record(subArray, "BL03S-DI-OAV-01:CAM:Dim3SA") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "3") + field(FLNK, "BL03S-DI-OAV-01:CAM:ArraySize3") +} + +record(longin, "BL03S-DI-OAV-01:CAM:ArraySize3") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dim3SA") + field(FLNK, "BL03S-DI-OAV-01:CAM:Dim4SA") +} + +record(subArray, "BL03S-DI-OAV-01:CAM:Dim4SA") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "4") + field(FLNK, "BL03S-DI-OAV-01:CAM:ArraySize4") +} + +record(longin, "BL03S-DI-OAV-01:CAM:ArraySize4") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dim4SA") + field(FLNK, "BL03S-DI-OAV-01:CAM:Dim5SA") +} + +record(subArray, "BL03S-DI-OAV-01:CAM:Dim5SA") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "5") + field(FLNK, "BL03S-DI-OAV-01:CAM:ArraySize5") +} + +record(longin, "BL03S-DI-OAV-01:CAM:ArraySize5") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dim5SA") + field(FLNK, "BL03S-DI-OAV-01:CAM:Dim6SA") +} + +record(subArray, "BL03S-DI-OAV-01:CAM:Dim6SA") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "6") + field(FLNK, "BL03S-DI-OAV-01:CAM:ArraySize6") +} + +record(longin, "BL03S-DI-OAV-01:CAM:ArraySize6") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dim6SA") + field(FLNK, "BL03S-DI-OAV-01:CAM:Dim7SA") +} + +record(subArray, "BL03S-DI-OAV-01:CAM:Dim7SA") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "7") + field(FLNK, "BL03S-DI-OAV-01:CAM:ArraySize7") +} + +record(longin, "BL03S-DI-OAV-01:CAM:ArraySize7") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dim7SA") + field(FLNK, "BL03S-DI-OAV-01:CAM:Dim8SA") +} + +record(subArray, "BL03S-DI-OAV-01:CAM:Dim8SA") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "8") + field(FLNK, "BL03S-DI-OAV-01:CAM:ArraySize8") +} + +record(longin, "BL03S-DI-OAV-01:CAM:ArraySize8") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dim8SA") + field(FLNK, "BL03S-DI-OAV-01:CAM:Dim9SA") +} + +record(subArray, "BL03S-DI-OAV-01:CAM:Dim9SA") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "9") + field(FLNK, "BL03S-DI-OAV-01:CAM:ArraySize9") +} + +record(longin, "BL03S-DI-OAV-01:CAM:ArraySize9") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dim9SA") +} + + +record(waveform, "BL03S-DI-OAV-01:CAM:Dimensions_RBV") +{ + field(DTYP, "asynInt32ArrayIn") + field(INP, "@asyn(OAV.CAM,0,1)ARRAY_DIMENSIONS") + field(FTVL, "LONG") + field(NELM, "10") + field(FLNK, "BL03S-DI-OAV-01:CAM:Dim0SA_RBV") + field(SCAN, "I/O Intr") +} + +record(subArray, "BL03S-DI-OAV-01:CAM:Dim0SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "0") + field(FLNK, "BL03S-DI-OAV-01:CAM:ArraySize0_RBV") +} + +record(longin, "BL03S-DI-OAV-01:CAM:ArraySize0_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dim0SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:CAM:Dim1SA_RBV") +} + +record(subArray, "BL03S-DI-OAV-01:CAM:Dim1SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "1") + field(FLNK, "BL03S-DI-OAV-01:CAM:ArraySize1_RBV") +} + +record(longin, "BL03S-DI-OAV-01:CAM:ArraySize1_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dim1SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:CAM:Dim2SA_RBV") +} + +record(subArray, "BL03S-DI-OAV-01:CAM:Dim2SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "2") + field(FLNK, "BL03S-DI-OAV-01:CAM:ArraySize2_RBV") +} + +record(longin, "BL03S-DI-OAV-01:CAM:ArraySize2_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dim2SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:CAM:Dim3SA_RBV") +} + +record(subArray, "BL03S-DI-OAV-01:CAM:Dim3SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "3") + field(FLNK, "BL03S-DI-OAV-01:CAM:ArraySize3_RBV") +} + +record(longin, "BL03S-DI-OAV-01:CAM:ArraySize3_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dim3SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:CAM:Dim4SA_RBV") +} + +record(subArray, "BL03S-DI-OAV-01:CAM:Dim4SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "4") + field(FLNK, "BL03S-DI-OAV-01:CAM:ArraySize4_RBV") +} + +record(longin, "BL03S-DI-OAV-01:CAM:ArraySize4_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dim4SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:CAM:Dim5SA_RBV") +} + +record(subArray, "BL03S-DI-OAV-01:CAM:Dim5SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "5") + field(FLNK, "BL03S-DI-OAV-01:CAM:ArraySize5_RBV") +} + +record(longin, "BL03S-DI-OAV-01:CAM:ArraySize5_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dim5SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:CAM:Dim6SA_RBV") +} + +record(subArray, "BL03S-DI-OAV-01:CAM:Dim6SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "6") + field(FLNK, "BL03S-DI-OAV-01:CAM:ArraySize6_RBV") +} + +record(longin, "BL03S-DI-OAV-01:CAM:ArraySize6_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dim6SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:CAM:Dim7SA_RBV") +} + +record(subArray, "BL03S-DI-OAV-01:CAM:Dim7SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "7") + field(FLNK, "BL03S-DI-OAV-01:CAM:ArraySize7_RBV") +} + +record(longin, "BL03S-DI-OAV-01:CAM:ArraySize7_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dim7SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:CAM:Dim8SA_RBV") +} + +record(subArray, "BL03S-DI-OAV-01:CAM:Dim8SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "8") + field(FLNK, "BL03S-DI-OAV-01:CAM:ArraySize8_RBV") +} + +record(longin, "BL03S-DI-OAV-01:CAM:ArraySize8_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dim8SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:CAM:Dim9SA_RBV") +} + +record(subArray, "BL03S-DI-OAV-01:CAM:Dim9SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "9") + field(FLNK, "BL03S-DI-OAV-01:CAM:ArraySize9_RBV") +} + +record(longin, "BL03S-DI-OAV-01:CAM:ArraySize9_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CAM:Dim9SA_RBV") +} + + +record(mbbi, "BL03S-DI-OAV-01:CAM:BayerPattern_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)BAYER_PATTERN") + field(ZRST, "RGGB") + field(ZRVL, "0") + field(ONST, "GBRG") + field(ONVL, "1") + field(TWST, "GRBG") + field(TWVL, "2") + field(THST, "BGGR") + field(THVL, "3") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:CAM:ArraySizeX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)ARRAY_SIZE_X") + field(SCAN, "I/O Intr") + field(VAL, 1024) +} + +record(longin, "BL03S-DI-OAV-01:CAM:ArraySizeY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)ARRAY_SIZE_Y") + field(SCAN, "I/O Intr") + field(VAL, 768) +} + +record(longin, "BL03S-DI-OAV-01:CAM:ArraySizeZ_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)ARRAY_SIZE_Z") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:CAM:ArraySize_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)ARRAY_SIZE") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records have information on the compression # +################################################################### +record(stringin, "BL03S-DI-OAV-01:CAM:Codec_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.CAM,0,1)CODEC") + field(VAL, "") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:CAM:CompressedSize_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)COMPRESSED_SIZE") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the data type # +################################################################### + +record(mbbo, "BL03S-DI-OAV-01:CAM:DataType") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)DATA_TYPE") + field(ZRST, "Int8") + field(ZRVL, "0") + field(ONST, "UInt8") + field(ONVL, "1") + field(TWST, "Int16") + field(TWVL, "2") + field(THST, "UInt16") + field(THVL, "3") + field(FRST, "Int32") + field(FRVL, "4") + field(FVST, "UInt32") + field(FVVL, "5") + field(SXST, "Int64") + field(SXVL, "6") + field(SVST, "UInt64") + field(SVVL, "7") + field(EIST, "Float32") + field(EIVL, "8") + field(NIST, "Float64") + field(NIVL, "9") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-DI-OAV-01:CAM:DataType_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)DATA_TYPE") + field(ZRST, "Int8") + field(ZRVL, "0") + field(ONST, "UInt8") + field(ONVL, "1") + field(TWST, "Int16") + field(TWVL, "2") + field(THST, "UInt16") + field(THVL, "3") + field(FRST, "Int32") + field(FRVL, "4") + field(FVST, "UInt32") + field(FVVL, "5") + field(SXST, "Int64") + field(SXVL, "6") + field(SVST, "UInt64") + field(SVVL, "7") + field(EIST, "Float32") + field(EIVL, "8") + field(NIST, "Float64") + field(NIVL, "9") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the color mode # +# These choices must agree with NDColorMode_t in NDArray.h # +################################################################### + +record(mbbo, "BL03S-DI-OAV-01:CAM:ColorMode") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)COLOR_MODE") + field(ZRST, "Mono") + field(ZRVL, "0") + field(ONST, "Bayer") + field(ONVL, "1") + field(TWST, "RGB1") + field(TWVL, "2") + field(THST, "RGB2") + field(THVL, "3") + field(FRST, "RGB3") + field(FRVL, "4") + field(FVST, "YUV444") + field(FVVL, "5") + field(SXST, "YUV422") + field(SXVL, "6") + field(SVST, "YUV421") + field(SVVL, "7") + info(autosaveFields, "VAL") + field(FLNK, "BL03S-DI-OAV-01:CAM:ColorMode_RBV PP") +} + +record(mbbi, "BL03S-DI-OAV-01:CAM:ColorMode_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CAM:ColorMode") + field(ZRST, "Mono") + field(ZRVL, "0") + field(ONST, "Bayer") + field(ONVL, "1") + field(TWST, "RGB1") + field(TWVL, "2") + field(THST, "RGB2") + field(THVL, "3") + field(FRST, "RGB3") + field(FRVL, "4") + field(FVST, "YUV444") + field(FVVL, "5") + field(SXST, "YUV422") + field(SXVL, "6") + field(SVST, "YUV421") + field(SVVL, "7") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records are the uniqueId and time stamps of the array # +################################################################### +record(longin, "BL03S-DI-OAV-01:CAM:UniqueId_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)UNIQUE_ID") + field(SCAN, "I/O Intr") +} + +record(ai, "BL03S-DI-OAV-01:CAM:TimeStamp_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.CAM,0,1)TIME_STAMP") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:CAM:EpicsTSSec_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)EPICS_TS_SEC") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:CAM:EpicsTSNsec_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)EPICS_TS_NSEC") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records provide statistics on array callbacks and # +# array callback rates # +################################################################### +record(longout, "BL03S-DI-OAV-01:CAM:ArrayCounter") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)ARRAY_COUNTER") +} + +record(longin, "BL03S-DI-OAV-01:CAM:ArrayCounter_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)ARRAY_COUNTER") + field(SCAN, "I/O Intr") +} + +# Updated rate calculation to use a smoothing factor w/ guard against negative values +record(calc, "BL03S-DI-OAV-01:CAM:ArrayRate_RBV") +{ + field(INPA, "BL03S-DI-OAV-01:CAM:ArrayRate_RBV.LB NPP NMS") # Previous counter value + field(INPB, "BL03S-DI-OAV-01:CAM:ArrayCounter_RBV NPP NMS") # Current counter value + field(INPC, "1.0") # Delta time in seconds + field(INPD, "BL03S-DI-OAV-01:CAM:ArrayRate_RBV.VAL NPP NMS") # Previous rate + field(INPE, "0.0") # Smoothing factor + field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") + field(PREC, "2" ) + field(EGU, "Hz" ) + field(SCAN, "1 second") +} + +################################################################### +# These records control NDArray callacks # +################################################################### +record(bo, "BL03S-DI-OAV-01:CAM:ArrayCallbacks") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)ARRAY_CALLBACKS") + field(ZNAM, "Disable") + field(ZSV, "NO_ALARM") + field(ONAM, "Enable") + field(OSV, "MINOR") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(bi, "BL03S-DI-OAV-01:CAM:ArrayCallbacks_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)ARRAY_CALLBACKS") + field(ZNAM, "Disable") + field(ZSV, "NO_ALARM") + field(ONAM, "Enable") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains macro definitions for the attributes # +################################################################### + +record(waveform, "BL03S-DI-OAV-01:CAM:NDAttributesMacros") +{ + field(PINI, "YES") + field(DTYP, "asynOctetWrite") + field(INP, "@asyn(OAV.CAM,0,1)ND_ATTRIBUTES_MACROS") + field(FTVL, "CHAR") + field(NELM, "256") + info(autosaveFields, "VAL") +} + +################################################################### +# This record is the name of a file defining attributes # +################################################################### + +record(waveform, "BL03S-DI-OAV-01:CAM:NDAttributesFile") +{ + field(PINI, "YES") + field(DTYP, "asynOctetWrite") + field(INP, "@asyn(OAV.CAM,0,1)ND_ATTRIBUTES_FILE") + field(FTVL, "CHAR") + field(NELM, "256") + info(autosaveFields, "VAL") +} + +################################################################### +# This record defines the status of reading attributes file # +################################################################### + +record(mbbi, "BL03S-DI-OAV-01:CAM:NDAttributesStatus") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)ND_ATTRIBUTES_STATUS") + field(ZRVL, "0") + field(ZRST, "Attributes file OK") + field(ZRSV, "NO_ALARM") + field(ONVL, "1") + field(ONST, "File not found") + field(ONSV, "MINOR") + field(TWVL, "2") + field(TWST, "XML syntax error") + field(TWSV, "MAJOR") + field(THVL, "3") + field(THST, "Macro substitution error") + field(THSV, "MAJOR") + field(SCAN, "I/O Intr") +} + +################################################################### +# Status of NDArrayPool - number of buffers, memory used etc. # +################################################################### + +record(ai, "BL03S-DI-OAV-01:CAM:PoolMaxMem") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.CAM,0,1)POOL_MAX_MEMORY") + field(PREC, "1") + field(EGU, "MB") + field(SCAN, "Passive") + field(PINI, "YES") +} + +record(ai, "BL03S-DI-OAV-01:CAM:PoolUsedMem") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.CAM,0,1)POOL_USED_MEMORY") + field(PREC, "1") + field(EGU, "MB") + field(SCAN, "1 second") + field(FLNK, "BL03S-DI-OAV-01:CAM:PoolAllocBuffers") + info(autosaveFields, "SCAN") +} + +record(longin, "BL03S-DI-OAV-01:CAM:PoolAllocBuffers") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)POOL_ALLOC_BUFFERS") + field(FLNK, "BL03S-DI-OAV-01:CAM:PoolFreeBuffers") +} + +record(longin, "BL03S-DI-OAV-01:CAM:PoolFreeBuffers") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)POOL_FREE_BUFFERS") + field(FLNK, "BL03S-DI-OAV-01:CAM:PoolUsedBuffers") +} + +record(calc, "BL03S-DI-OAV-01:CAM:PoolUsedBuffers") +{ + field(INPA, "BL03S-DI-OAV-01:CAM:PoolAllocBuffers NPP MS") + field(INPB, "BL03S-DI-OAV-01:CAM:PoolFreeBuffers NPP MS") + field(CALC, "A-B") +} + +record(bo, "BL03S-DI-OAV-01:CAM:EmptyFreeList") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)POOL_EMPTY_FREELIST") +} + +record(longin, "BL03S-DI-OAV-01:CAM:NumQueuedArrays") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)NUM_QUEUED_ARRAYS") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:CAM:MaxSizeX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)MAX_SIZE_X") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:CAM:MaxSizeY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)MAX_SIZE_Y") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the detector readout # +# including binning, region start and size # +################################################################### + +record(longout, "BL03S-DI-OAV-01:CAM:BinX") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)BIN_X") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-DI-OAV-01:CAM:BinX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)BIN_X") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-DI-OAV-01:CAM:BinY") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)BIN_Y") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-DI-OAV-01:CAM:BinY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)BIN_Y") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-DI-OAV-01:CAM:MinX") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)MIN_X") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-DI-OAV-01:CAM:MinX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)MIN_X") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-DI-OAV-01:CAM:MinY") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)MIN_Y") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-DI-OAV-01:CAM:MinY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)MIN_Y") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-DI-OAV-01:CAM:SizeX") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)SIZE_X") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-DI-OAV-01:CAM:SizeX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)SIZE_X") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-DI-OAV-01:CAM:SizeY") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)SIZE_Y") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-DI-OAV-01:CAM:SizeY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)SIZE_Y") + field(SCAN, "I/O Intr") +} + +record(bo, "BL03S-DI-OAV-01:CAM:ReverseX") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)REVERSE_X") + field(ZNAM, "No") + field(ONAM, "Yes") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(bi, "BL03S-DI-OAV-01:CAM:ReverseX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)REVERSE_X") + field(ZNAM, "No") + field(ONAM, "Yes") + field(SCAN, "I/O Intr") +} + +record(bo, "BL03S-DI-OAV-01:CAM:ReverseY") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)REVERSE_Y") + field(ZNAM, "No") + field(ONAM, "Yes") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(bi, "BL03S-DI-OAV-01:CAM:ReverseY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)REVERSE_Y") + field(ZNAM, "No") + field(ONAM, "Yes") + field(SCAN, "I/O Intr") +} + + +################################################################### +# These records control the acquisition time and # +# period # +################################################################### +record(ao, "BL03S-DI-OAV-01:CAM:AcquireTime") +{ + field(PINI, "YES") + field(PREC, "3") + field(VAL, "1.0") + info(autosaveFields, "VAL") + field(FLNK, "BL03S-DI-OAV-01:CAM:AcquireTime_RBV PP") +} + +record(ai, "BL03S-DI-OAV-01:CAM:AcquireTime_RBV") +{ + field(PREC, "3") + field(SCAN, "I/O Intr") + field(INP, "BL03S-DI-OAV-01:CAM:AcquireTime") +} + +record(ao, "BL03S-DI-OAV-01:CAM:AcquirePeriod") +{ + field(PINI, "YES") + field(PREC, "3") + field(VAL, "0") + info(autosaveFields, "VAL") + field(FLNK, "BL03S-DI-OAV-01:CAM:AcquirePeriod_RBV PP") +} + +record(ai, "BL03S-DI-OAV-01:CAM:AcquirePeriod_RBV") +{ + field(PREC, "3") + field(INP, "BL03S-DI-OAV-01:CAM:AcquirePeriod") +} + +record(ai, "BL03S-DI-OAV-01:CAM:TimeRemaining_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.CAM,0,1)TIME_REMAINING") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the gain # +################################################################### +record(ao, "BL03S-DI-OAV-01:CAM:Gain") +{ + field(VAL, "1.0") + field(PREC, "3") + info(autosaveFields, "VAL") + field(FLNK, "BL03S-DI-OAV-01:CAM:Gain_RBV PP") +} + +record(ai, "BL03S-DI-OAV-01:CAM:Gain_RBV") +{ + field(PREC, "3") + field(INP, "BL03S-DI-OAV-01:CAM:Gain") +} + +################################################################### +# These records control the frame type # +################################################################### +record(mbbo, "BL03S-DI-OAV-01:CAM:FrameType") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)FRAME_TYPE") + field(ZRST, "Normal") + field(ZRVL, "0") + field(ONST, "Background") + field(ONVL, "1") + field(TWST, "FlatField") + field(TWVL, "2") + field(THST, "DblCorrelation") + field(THVL, "3") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-DI-OAV-01:CAM:FrameType_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)FRAME_TYPE") + field(ZRST, "Normal") + field(ZRVL, "0") + field(ONST, "Background") + field(ONVL, "1") + field(TWST, "FlatField") + field(TWVL, "2") + field(THST, "DblCorrelation") + field(THVL, "3") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the acquisition mode # +################################################################### +record(mbbo, "BL03S-DI-OAV-01:CAM:ImageMode") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)IMAGE_MODE") + field(ZRST, "Single") + field(ZRVL, "0") + field(ONST, "Multiple") + field(ONVL, "1") + field(TWST, "Continuous") + field(TWVL, "2") + field(VAL, "2") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-DI-OAV-01:CAM:ImageMode_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)IMAGE_MODE") + field(ZRST, "Single") + field(ZRVL, "0") + field(ONST, "Multiple") + field(ONVL, "1") + field(TWST, "Continuous") + field(TWVL, "2") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the trigger mode # +################################################################### +record(mbbo, "BL03S-DI-OAV-01:CAM:TriggerMode") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)TRIGGER_MODE") + field(ZRST, "Internal") + field(ZRVL, "0") + field(ONST, "External") + field(ONVL, "1") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-DI-OAV-01:CAM:TriggerMode_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)TRIGGER_MODE") + field(ZRST, "Internal") + field(ZRVL, "0") + field(ONST, "External") + field(ONVL, "1") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the number of exposures and # +# number of images # +################################################################### +record(longout, "BL03S-DI-OAV-01:CAM:NumExposures") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)NEXPOSURES") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-DI-OAV-01:CAM:NumExposures_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)NEXPOSURES") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:CAM:NumExposuresCounter_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)NEXPOSURES_COUNTER") + field(SCAN, "I/O Intr") +} +record(longout, "BL03S-DI-OAV-01:CAM:NumImages") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)NIMAGES") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-DI-OAV-01:CAM:NumImages_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)NIMAGES") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:CAM:NumImagesCounter_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)NIMAGES_COUNTER") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records are for the detector state # +################################################################### + +record(mbbi, "BL03S-DI-OAV-01:CAM:DetectorState_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)STATUS") + field(ZRST, "Idle") + field(ZRVL, "0") + field(ZRSV, "NO_ALARM") + field(ONST, "Acquire") + field(ONVL, "1") + field(ONSV, "NO_ALARM") + field(TWST, "Readout") + field(TWVL, "2") + field(TWSV, "NO_ALARM") + field(THST, "Correct") + field(THVL, "3") + field(THSV, "NO_ALARM") + field(FRST, "Saving") + field(FRVL, "4") + field(FRSV, "NO_ALARM") + field(FVST, "Aborting") + field(FVVL, "5") + field(FVSV, "MINOR") + field(SXST, "Error") + field(SXVL, "6") + field(SXSV, "MAJOR") + field(SVST, "Waiting") + field(SVVL, "7") + field(SVSV, "NO_ALARM") + field(EIST, "Initializing") + field(EIVL, "8") + field(EISV, "NO_ALARM") + field(NIST, "Disconnected") + field(NIVL, "9") + field(NISV, "INVALID") + field(TEST, "Aborted") + field(TEVL, "10") + field(TESV, "MINOR") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records provide status information # +################################################################### + +# Status message. +record(waveform, "BL03S-DI-OAV-01:CAM:StatusMessage_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.CAM,0,1)STATUS_MESSAGE") + field(FTVL, "CHAR") + field(NELM, "256") + field(SCAN, "I/O Intr") +} + +record(waveform, "BL03S-DI-OAV-01:CAM:StringToServer_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.CAM,0,1)STRING_TO_SERVER") + field(FTVL, "CHAR") + field(NELM, "256") + field(SCAN, "I/O Intr") +} + +record(waveform, "BL03S-DI-OAV-01:CAM:StringFromServer_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.CAM,0,1)STRING_FROM_SERVER") + field(FTVL, "CHAR") + field(NELM, "256") + field(SCAN, "I/O Intr") +} + +################################################################@### +# This record can be used to force a read of the detector status # +#################################################################### +record(bo,"BL03S-DI-OAV-01:CAM:ReadStatus") { + field(DTYP,"asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)READ_STATUS") + field(VAL, "1") + field(SCAN,"Passive") + info(autosaveFields, "SCAN") +} + +################################################################### +# These records control the shutter # +################################################################### + +record(mbbo, "BL03S-DI-OAV-01:CAM:ShutterMode") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)SHUTTER_MODE") + field(ZRST, "None") + field(ZRVL, "0") + field(ONST, "EPICS PV") + field(ONVL, "1") + field(TWST, "Detector output") + field(TWVL, "2") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-DI-OAV-01:CAM:ShutterMode_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)SHUTTER_MODE") + field(ZRST, "None") + field(ZRVL, "0") + field(ONST, "EPICS PV") + field(ONVL, "1") + field(TWST, "Camera output") + field(TWVL, "2") + field(SCAN, "I/O Intr") +} + +record(bo, "BL03S-DI-OAV-01:CAM:ShutterControl") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)SHUTTER_CONTROL") + field(ZNAM, "Close") + field(ONAM, "Open") + field(VAL, "0") +} + +record(bi, "BL03S-DI-OAV-01:CAM:ShutterControl_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)SHUTTER_CONTROL") + field(ZNAM, "Close") + field(ONAM, "Open") + field(SCAN, "I/O Intr") +} + +record(bi, "BL03S-DI-OAV-01:CAM:ShutterStatus_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)SHUTTER_STATUS") + field(ZNAM, "Closed") + field(ZSV, "NO_ALARM") + field(ONAM, "Open") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +record(ao, "BL03S-DI-OAV-01:CAM:ShutterOpenDelay") +{ + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(OAV.CAM,0,1)SHUTTER_OPEN_DELAY") + field(PREC, "3") + field(VAL, "0.0") + info(autosaveFields, "VAL") +} + +record(ai, "BL03S-DI-OAV-01:CAM:ShutterOpenDelay_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.CAM,0,1)SHUTTER_OPEN_DELAY") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(ao, "BL03S-DI-OAV-01:CAM:ShutterCloseDelay") +{ + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(OAV.CAM,0,1)SHUTTER_CLOSE_DELAY") + field(PREC, "3") + field(VAL, "0.0") + info(autosaveFields, "VAL") +} + +record(ai, "BL03S-DI-OAV-01:CAM:ShutterCloseDelay_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.CAM,0,1)SHUTTER_CLOSE_DELAY") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +# This record changes state when the driver opens/closes an EPICS shutter +record(bi, "BL03S-DI-OAV-01:CAM:ShutterControlEPICS") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)SHUTTER_CONTROL_EPICS") + field(ZNAM, "Closed") + field(ZSV, "NO_ALARM") + field(ONAM, "Open") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") + field(FLNK, "BL03S-DI-OAV-01:CAM:ShutterFanout.PROC") +} + +record(fanout, "BL03S-DI-OAV-01:CAM:ShutterFanout") +{ + field(LNK1, "BL03S-DI-OAV-01:CAM:ShutterOpenEPICS.PROC PP MS") + field(LNK2, "BL03S-DI-OAV-01:CAM:ShutterCloseEPICS.PROC PP MS") +} + +record(calcout, "BL03S-DI-OAV-01:CAM:ShutterOpenEPICS") +{ + field(INPA, "BL03S-DI-OAV-01:CAM:ShutterControlEPICS.VAL NPP NMS") + field(CALC, "A") + field(OOPT, "Transition To Non-zero") + field(DOPT, "Use OCAL") + field(OCAL, "1") + field(OUT, "") + info(autosaveFields, "OUT OCAL") +} + +record(calcout, "BL03S-DI-OAV-01:CAM:ShutterCloseEPICS") +{ + field(INPA, "BL03S-DI-OAV-01:CAM:ShutterControlEPICS.VAL NPP NMS") + field(CALC, "A") + field(OOPT, "Transition To Zero") + field(DOPT, "Use OCAL") + field(OCAL, "0") + field(OUT, "") + info(autosaveFields, "OUT OCAL") +} + +record(mbbi, "BL03S-DI-OAV-01:CAM:ShutterStatusEPICS_RBV") +{ + field(DTYP, "Raw Soft Channel") + field(INP, "test CP MS") + field(ZRVL, "0") + field(ZRST, "Closed") + field(ZRSV, "NO_ALARM") + field(ONVL, "1") + field(ONST, "Open") + field(ONSV, "MINOR") + info(autosaveFields, "INP ZRVL ONVL") +} + +################################################################### +# These records control the detector temperature # +################################################################### + +record(ao, "BL03S-DI-OAV-01:CAM:Temperature") +{ + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(OAV.CAM,0,1)TEMPERATURE") + field(PREC, "1") + field(EGU, "C") + field(VAL, "25.0") + info(autosaveFields, "VAL") +} + +record(ai, "BL03S-DI-OAV-01:CAM:Temperature_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.CAM,0,1)TEMPERATURE") + field(PREC, "1") + field(EGU, "C") + field(SCAN, "I/O Intr") +} + +record(ai, "BL03S-DI-OAV-01:CAM:TemperatureActual") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.CAM,0,1)TEMPERATURE_ACTUAL") + field(PREC, "1") + field(EGU, "C") + field(SCAN, "I/O Intr") +} + + +################################################################### +# The asynRecord is used for mainly for trace mask # +################################################################### + +## These are the records from ADBase.template that we modify + +# Some cameras use both AcquisitionFrameRate and AcquirePeriod. +# Make AcquirePeriod update if FrameRate is changed. +record(ao, "BL03S-DI-OAV-01:CAM:AcquirePeriod") +{ + info(ai:READBACK, "1") +} + +# This record hides the fact that some cameras use FrameRate and some use FrameRateAbs +# This is not PINI=YES because AcquirePeriod is and they control the same thing +record(ao, "BL03S-DI-OAV-01:CAM:FrameRate") +{ + field(DTYP, "asynFloat64") + field(OUT, "@asyn(OAV.CAM 0)GC_FRAMERATE") + field(PREC, "3") +} + +record(ai, "BL03S-DI-OAV-01:CAM:FrameRate_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.CAM 0)GC_FRAMERATE") + field(SCAN, "I/O Intr") + field(PREC, "3") +} + +# Some cameras (Basler, Point Grey, FLIR) use AcquisitionFrameRateEnable or AcquisitionFrameRateEnabled +# This record hides the fact that the feature name may differ; the record name is always the same. +record(bo, "BL03S-DI-OAV-01:CAM:FrameRateEnable") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM 0)GC_FRAMERATE_ENABLE") + field(ZNAM, "No") + field(ONAM, "Yes") +} + +record(bi, "BL03S-DI-OAV-01:CAM:FrameRateEnable_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM 0)GC_FRAMERATE_ENABLE") + field(SCAN, "I/O Intr") + field(ZNAM, "No") + field(ONAM, "Yes") +} + +# This record is used to ensure there is a record for TriggerSource even if there is no such GenICam feature +record(mbbo, "BL03S-DI-OAV-01:CAM:TriggerSource") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM 0)GC_TRIGGER_SOURCE") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +record(mbbi, "BL03S-DI-OAV-01:CAM:TriggerSource_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM 0)GC_TRIGGER_SOURCE") + field(ZRST, "N.A.") + field(ZRVL, "0") + field(SCAN, "I/O Intr") +} + +# This record is used to ensure there is a record for TriggerOverlap even if there is no such GenICam feature +record(mbbo, "BL03S-DI-OAV-01:CAM:TriggerOverlap") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM 0)GC_TRIGGER_OVERLAP") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +record(mbbi, "BL03S-DI-OAV-01:CAM:TriggerOverlap_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM 0)GC_TRIGGER_OVERLAP") + field(SCAN, "I/O Intr") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +# This record is used to ensure there is a record for TriggerSoftware even if there is no such GenICam feature +record(bo, "BL03S-DI-OAV-01:CAM:TriggerSoftware") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM 0)GC_TRIGGER_SOFTWARE") + field(ZNAM, "Done") + field(ONAM, "Trigger") +} + +# This record is used to ensure there is a record for ExposureMode even if there is no such GenICam feature +record(mbbo, "BL03S-DI-OAV-01:CAM:ExposureMode") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM 0)GC_EXPOSURE_MODE") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +record(mbbi, "BL03S-DI-OAV-01:CAM:ExposureMode_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM 0)GC_EXPOSURE_MODE") + field(ZRST, "N.A.") + field(ZRVL, "0") + field(SCAN, "I/O Intr") +} + +# This record is used to ensure there is a record for ExposureAuto even if there is no such GenICam feature +record(mbbo, "BL03S-DI-OAV-01:CAM:ExposureAuto") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM 0)GC_EXPOSURE_AUTO") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +record(mbbi, "BL03S-DI-OAV-01:CAM:ExposureAuto_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM 0)GC_EXPOSURE_AUTO") + field(SCAN, "I/O Intr") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +# This record is used to ensure there is a record for GainAuto even if there is no such GenICam feature +record(mbbo, "BL03S-DI-OAV-01:CAM:GainAuto") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM 0)GC_GAIN_AUTO") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +record(mbbi, "BL03S-DI-OAV-01:CAM:GainAuto_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM 0)GC_GAIN_AUTO") + field(SCAN, "I/O Intr") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +# This record is used to ensure there is a record for PixelFormat even if there is no such GenICam feature +record(mbbo, "BL03S-DI-OAV-01:CAM:PixelFormat") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM 0)GC_PIXEL_FORMAT") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +record(mbbi, "BL03S-DI-OAV-01:CAM:PixelFormat_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM 0)GC_PIXEL_FORMAT") + field(ZRST, "N.A.") + field(ZRVL, "0") + field(SCAN, "I/O Intr") +} + +record(ai, "BL03S-DI-OAV-01:CAM:ARFramesCompleted") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.CAM,0,1)ARAVIS_COMPLETED") + field(SCAN, "I/O Intr") + info(autosaveFields, "DESC LLSV LOLO LOW LSV") +} + +record(ai, "BL03S-DI-OAV-01:CAM:ARFrameFailures") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.CAM,0,1)ARAVIS_FAILURES") + field(SCAN, "I/O Intr") + info(autosaveFields, "DESC HHSV HIHI HIGH HSV") +} + +record(ai, "BL03S-DI-OAV-01:CAM:ARFrameUnderruns") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.CAM,0,1)ARAVIS_UNDERRUNS") + field(SCAN, "I/O Intr") + info(autosaveFields, "DESC HHSV HIHI HIGH HSV") +} + +record(longin, "BL03S-DI-OAV-01:CAM:ARMissingPackets") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)ARAVIS_MISSING_PKTS") + field(SCAN, "I/O Intr") + info(autosaveFields, "DESC HHSV HIHI HIGH HSV") +} + +record(longin, "BL03S-DI-OAV-01:CAM:ARResentPackets") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)ARAVIS_RESENT_PKTS") + field(SCAN, "I/O Intr") + info(autosaveFields, "DESC HHSV HIHI HIGH HSV") +} + +record(mbbo, "BL03S-DI-OAV-01:CAM:ARPacketResendEnable") +{ + field(DESC, "Packet resend enable") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)ARAVIS_PKT_RESEND") + field(ZRST, "Never") + field(ZRVL, "0") + field(ONST, "Always") + field(ONVL, "1") + field(VAL, "1") + field(PINI, "1") + info(autosaveFields, "DESC ONSV ZRSV PINI VAL") +} + +record(longout, "BL03S-DI-OAV-01:CAM:ARPacketTimeout") +{ + field(DESC, "Delay in us before packet resend request") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)ARAVIS_PKT_TIMEOUT") + field(VAL, "20000") + field(EGU, "us") + field(PINI, "1") + info(autosaveFields, "DESC HHSV HIHI HIGH HSV LLSV LOLO LOW LSV PINI VAL") +} + +record(longout, "BL03S-DI-OAV-01:CAM:ARFrameRetention") +{ + field(DESC, "Frame timeout in us after last packet") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)ARAVIS_FRAME_RETENTION") + field(VAL, "100000") + field(EGU, "us") + field(PINI, "1") + info(autosaveFields, "DESC HHSV HIHI HIGH HSV LLSV LOLO LOW LSV PINI VAL") +} + +record(longout, "BL03S-DI-OAV-01:CAM:ARResetCamera") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)ARAVIS_RESET") + field(FLNK, "BL03S-DI-OAV-01:CAM:ARConnectCamera") +} + +record(longout, "BL03S-DI-OAV-01:CAM:ARConnectCamera") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)ARAVIS_CONNECTION") + field(VAL, "1") + field(PINI, "1") +} + +record(calcout, "BL03S-DI-OAV-01:CAM:ARCheckConnection") +{ + field(SCAN, "1 second") + field(INPA, "BL03S-DI-OAV-01:CAM:ARConnectCamera.SEVR CP") + field(CALC, "A==0") + field(OOPT, "When Non-zero") + field(OUT, "BL03S-DI-OAV-01:CAM:ARConnectCamera.PROC PP") +} + +record(mbbi, "BL03S-DI-OAV-01:CAM:ARConvertPixelFormat_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)ARAVIS_CONVERT_PIXEL_FORMAT") + field(ZRST, "Mono16Low") + field(ZRVL, "0") + field(ONST, "Mono16High") + field(ONVL, "1") + field(SCAN, "I/O Intr") + info(autosaveFields, "DESC ZRSV ONSV") +} + + +## When unpacking Mono12Packed or Mono12p selects whether 16-bit output is +## left shifted by 4 bits (Mono16High) or not (Mono16Low) +record(mbbo, "BL03S-DI-OAV-01:CAM:ARConvertPixelFormat") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)ARAVIS_CONVERT_PIXEL_FORMAT") + field(ZRST, "Mono16Low") + field(ZRVL, "0") + field(ONST, "Mono16High") + field(ONVL, "1") + field(PINI, "1") + info(autosaveFields, "DESC ZRSV ONSV VAL") +} + + +record(mbbi, "BL03S-DI-OAV-01:CAM:ARShiftDir_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)ARAVIS_SHIFT_DIR") + field(ZRST, "None") + field(ZRVL, "0") + field(ONST, "Left") + field(ONVL, "1") + field(TWST, "Right") + field(TWVL, "2") + field(SCAN, "I/O Intr") + info(autosaveFields, "DESC ZRSV ONSV") +} + +## Select no shift, left shift, or right shift when reading data +record(mbbo, "BL03S-DI-OAV-01:CAM:ARShiftDir") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)ARAVIS_SHIFT_DIR") + field(ZRST, "None") + field(ZRVL, "0") + field(ONST, "Left") + field(ONVL, "1") + field(TWST, "Right") + field(TWVL, "2") + field(PINI, "1") + info(autosaveFields, "DESC ZRSV ONSV VAL") +} + +record(mbbi, "BL03S-DI-OAV-01:CAM:ARShiftBits_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CAM,0,1)ARAVIS_SHIFT_BITS") + field(ZRST, "1") + field(ZRVL, "1") + field(ONST, "2") + field(ONVL, "2") + field(TWST, "3") + field(TWVL, "3") + field(THST, "4") + field(THVL, "4") + field(FRST, "5") + field(FRVL, "5") + field(FVST, "6") + field(FVVL, "6") + field(SXST, "7") + field(SXVL, "7") + field(SVST, "8") + field(SVVL, "8") + field(SCAN, "I/O Intr") + info(autosaveFields, "DESC ZRSV ONSV") +} + +## Selects how many bits to shift left or right when reading data +record(mbbo, "BL03S-DI-OAV-01:CAM:ARShiftBits") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CAM,0,1)ARAVIS_SHIFT_BITS") + field(ZRST, "1") + field(ZRVL, "1") + field(ONST, "2") + field(ONVL, "2") + field(TWST, "3") + field(TWVL, "3") + field(THST, "4") + field(THVL, "4") + field(FRST, "5") + field(FRVL, "5") + field(FVST, "6") + field(FVVL, "6") + field(SXST, "7") + field(SXVL, "7") + field(SVST, "8") + field(SVVL, "8") + field(PINI, "1") + info(autosaveFields, "DESC ZRSV ONSV VAL") +} +# Macros: +#% macro, P, Device Prefix +#% macro, R, Device Suffix + + + +# % macro, P, Device Prefix +# % macro, R, Device Suffix +# % macro, PORT, Asyn Port name +# % macro, TIMEOUT, Timeout + +#=================================================================# +# Template file: NDPluginBase.template +# Database for NDPluginBase, i.e. records common to all plugins +# Mark Rivers +# April 25, 2008 + +# Macros: +# % macro, P, Device Prefix +# % macro, R, Device Suffix +# % macro, PORT, Asyn Port name +# % macro, TIMEOUT, Timeout +# % macro, ADDR, Asyn Port address +# % macro, NDARRAY_PORT, Input Array Port +# % macro, NDARRAY_ADDR, Input Array Address +# % macro, ENABLED, Plugin Enabled at startup? +# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs + +#=================================================================# +# Template file: NDArrayBase.template +# Database for area detector control using asyn driver and standard asyn device support +# Mark Rivers +# March 9, 2008 + +################################################################### +# This record contains the version of ADCore # +################################################################### + +record(stringin, "BL03S-DI-OAV-01:MXSC:ADCoreVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.MXSC,0,1)ADCORE_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains the version of the driver or plugin # +################################################################### + +record(stringin, "BL03S-DI-OAV-01:MXSC:DriverVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.MXSC,0,1)DRIVER_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains the asyn port name of this detector # +################################################################### + +record(stringin, "BL03S-DI-OAV-01:MXSC:PortName_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.MXSC,0,1)PORT_NAME_SELF") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records contain basic information about the detector # +################################################################### + +record(stringin, "BL03S-DI-OAV-01:MXSC:Manufacturer_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.MXSC,0,1)MANUFACTURER") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-DI-OAV-01:MXSC:Model_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.MXSC,0,1)MODEL") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-DI-OAV-01:MXSC:SerialNumber_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.MXSC,0,1)SERIAL_NUMBER") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-DI-OAV-01:MXSC:SDKVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.MXSC,0,1)SDK_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-DI-OAV-01:MXSC:FirmwareVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.MXSC,0,1)FIRMWARE_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control acquisition start and stop # +################################################################### + +record(bo, "BL03S-DI-OAV-01:MXSC:Acquire") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)ACQUIRE") + field(ZNAM, "Done") + field(ONAM, "Acquire") + field(VAL, "0") + field(FLNK, "BL03S-DI-OAV-01:MXSC:SetAcquireBusy") + info(ai:READBACK, "1") +} + +record(bi, "BL03S-DI-OAV-01:MXSC:Acquire_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)ACQUIRE") + field(ZNAM, "Done") + field(ZSV, "NO_ALARM") + field(ONAM, "Acquiring") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +record(calcout, "BL03S-DI-OAV-01:MXSC:SetAcquireBusy") +{ + field(INPA, "BL03S-DI-OAV-01:MXSC:Acquire NPP") + field(CALC, "A") + field(OOPT, "Transition To Non-zero") + field(OUT, "BL03S-DI-OAV-01:MXSC:AcquireBusy PP") +} + +record(bi, "BL03S-DI-OAV-01:MXSC:AcquireBusy") { + field(ZNAM, "Done") + field(ZSV, "NO_ALARM") + field(ONAM, "Acquiring") + field(OSV, "MINOR") + field(VAL, "0") +} + +record(bi, "BL03S-DI-OAV-01:MXSC:AcquireBusyCB") { + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)ACQUIRE_BUSY") + field(ZNAM, "Done") + field(ZSV, "NO_ALARM") + field(ONAM, "Acquiring") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +record(calcout, "BL03S-DI-OAV-01:MXSC:ClearAcquireBusy") { + field(INPA, "BL03S-DI-OAV-01:MXSC:AcquireBusyCB CP") + field(CALC, "A") + field(OOPT, "Transition To Zero") + field(OUT, "BL03S-DI-OAV-01:MXSC:AcquireBusy PP") +} + +record(bo, "BL03S-DI-OAV-01:MXSC:WaitForPlugins") { + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)WAIT_FOR_PLUGINS") + field(ZNAM, "No") + field(ONAM, "Yes") + field(VAL, "0") +} + +################################################################### +# These records are the array size and data type # +################################################################### +# The number of dimensions +record(longout, "BL03S-DI-OAV-01:MXSC:NDimensions") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)ARRAY_NDIMENSIONS") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:NDimensions_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)ARRAY_NDIMENSIONS") + field(SCAN, "I/O Intr") +} + +# The array dimensions waveform records +record(waveform, "BL03S-DI-OAV-01:MXSC:Dimensions") +{ + field(DTYP, "asynInt32ArrayOut") + field(INP, "@asyn(OAV.MXSC,0,1)ARRAY_DIMENSIONS") + field(FTVL, "LONG") + field(NELM, "10") + field(FLNK, "BL03S-DI-OAV-01:MXSC:Dim0SA") +} + +record(subArray, "BL03S-DI-OAV-01:MXSC:Dim0SA") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "0") + field(FLNK, "BL03S-DI-OAV-01:MXSC:ArraySize0") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:ArraySize0") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dim0SA") + field(FLNK, "BL03S-DI-OAV-01:MXSC:Dim1SA") +} + +record(subArray, "BL03S-DI-OAV-01:MXSC:Dim1SA") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "1") + field(FLNK, "BL03S-DI-OAV-01:MXSC:ArraySize1") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:ArraySize1") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dim1SA") + field(FLNK, "BL03S-DI-OAV-01:MXSC:Dim2SA") + field(VAL, 1024) +} + +record(subArray, "BL03S-DI-OAV-01:MXSC:Dim2SA") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "2") + field(FLNK, "BL03S-DI-OAV-01:MXSC:ArraySize2") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:ArraySize2") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dim2SA") + field(FLNK, "BL03S-DI-OAV-01:MXSC:Dim3SA") + field(VAL, 768) +} + +record(subArray, "BL03S-DI-OAV-01:MXSC:Dim3SA") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "3") + field(FLNK, "BL03S-DI-OAV-01:MXSC:ArraySize3") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:ArraySize3") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dim3SA") + field(FLNK, "BL03S-DI-OAV-01:MXSC:Dim4SA") +} + +record(subArray, "BL03S-DI-OAV-01:MXSC:Dim4SA") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "4") + field(FLNK, "BL03S-DI-OAV-01:MXSC:ArraySize4") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:ArraySize4") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dim4SA") + field(FLNK, "BL03S-DI-OAV-01:MXSC:Dim5SA") +} + +record(subArray, "BL03S-DI-OAV-01:MXSC:Dim5SA") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "5") + field(FLNK, "BL03S-DI-OAV-01:MXSC:ArraySize5") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:ArraySize5") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dim5SA") + field(FLNK, "BL03S-DI-OAV-01:MXSC:Dim6SA") +} + +record(subArray, "BL03S-DI-OAV-01:MXSC:Dim6SA") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "6") + field(FLNK, "BL03S-DI-OAV-01:MXSC:ArraySize6") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:ArraySize6") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dim6SA") + field(FLNK, "BL03S-DI-OAV-01:MXSC:Dim7SA") +} + +record(subArray, "BL03S-DI-OAV-01:MXSC:Dim7SA") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "7") + field(FLNK, "BL03S-DI-OAV-01:MXSC:ArraySize7") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:ArraySize7") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dim7SA") + field(FLNK, "BL03S-DI-OAV-01:MXSC:Dim8SA") +} + +record(subArray, "BL03S-DI-OAV-01:MXSC:Dim8SA") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "8") + field(FLNK, "BL03S-DI-OAV-01:MXSC:ArraySize8") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:ArraySize8") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dim8SA") + field(FLNK, "BL03S-DI-OAV-01:MXSC:Dim9SA") +} + +record(subArray, "BL03S-DI-OAV-01:MXSC:Dim9SA") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "9") + field(FLNK, "BL03S-DI-OAV-01:MXSC:ArraySize9") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:ArraySize9") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dim9SA") +} + + +record(waveform, "BL03S-DI-OAV-01:MXSC:Dimensions_RBV") +{ + field(DTYP, "asynInt32ArrayIn") + field(INP, "@asyn(OAV.MXSC,0,1)ARRAY_DIMENSIONS") + field(FTVL, "LONG") + field(NELM, "10") + field(FLNK, "BL03S-DI-OAV-01:MXSC:Dim0SA_RBV") + field(SCAN, "I/O Intr") +} + +record(subArray, "BL03S-DI-OAV-01:MXSC:Dim0SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "0") + field(FLNK, "BL03S-DI-OAV-01:MXSC:ArraySize0_RBV") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:ArraySize0_RBV") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dim0SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:MXSC:Dim1SA_RBV") +} + +record(subArray, "BL03S-DI-OAV-01:MXSC:Dim1SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "1") + field(FLNK, "BL03S-DI-OAV-01:MXSC:ArraySize1_RBV") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:ArraySize1_RBV") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dim1SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:MXSC:Dim2SA_RBV") + field(VAL, 1024) +} + +record(subArray, "BL03S-DI-OAV-01:MXSC:Dim2SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "2") + field(FLNK, "BL03S-DI-OAV-01:MXSC:ArraySize2_RBV") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:ArraySize2_RBV") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dim2SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:MXSC:Dim3SA_RBV") + field(VAL, 768) +} + +record(subArray, "BL03S-DI-OAV-01:MXSC:Dim3SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "3") + field(FLNK, "BL03S-DI-OAV-01:MXSC:ArraySize3_RBV") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:ArraySize3_RBV") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dim3SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:MXSC:Dim4SA_RBV") +} + +record(subArray, "BL03S-DI-OAV-01:MXSC:Dim4SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "4") + field(FLNK, "BL03S-DI-OAV-01:MXSC:ArraySize4_RBV") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:ArraySize4_RBV") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dim4SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:MXSC:Dim5SA_RBV") +} + +record(subArray, "BL03S-DI-OAV-01:MXSC:Dim5SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "5") + field(FLNK, "BL03S-DI-OAV-01:MXSC:ArraySize5_RBV") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:ArraySize5_RBV") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dim5SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:MXSC:Dim6SA_RBV") +} + +record(subArray, "BL03S-DI-OAV-01:MXSC:Dim6SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "6") + field(FLNK, "BL03S-DI-OAV-01:MXSC:ArraySize6_RBV") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:ArraySize6_RBV") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dim6SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:MXSC:Dim7SA_RBV") +} + +record(subArray, "BL03S-DI-OAV-01:MXSC:Dim7SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "7") + field(FLNK, "BL03S-DI-OAV-01:MXSC:ArraySize7_RBV") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:ArraySize7_RBV") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dim7SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:MXSC:Dim8SA_RBV") +} + +record(subArray, "BL03S-DI-OAV-01:MXSC:Dim8SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "8") + field(FLNK, "BL03S-DI-OAV-01:MXSC:ArraySize8_RBV") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:ArraySize8_RBV") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dim8SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:MXSC:Dim9SA_RBV") +} + +record(subArray, "BL03S-DI-OAV-01:MXSC:Dim9SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "9") + field(FLNK, "BL03S-DI-OAV-01:MXSC:ArraySize9_RBV") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:ArraySize9_RBV") +{ + field(INP, "BL03S-DI-OAV-01:MXSC:Dim9SA_RBV") +} + + +record(mbbi, "BL03S-DI-OAV-01:MXSC:BayerPattern_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)BAYER_PATTERN") + field(ZRST, "RGGB") + field(ZRVL, "0") + field(ONST, "GBRG") + field(ONVL, "1") + field(TWST, "GRBG") + field(TWVL, "2") + field(THST, "BGGR") + field(THVL, "3") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:ArraySizeX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)ARRAY_SIZE_X") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:ArraySizeY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)ARRAY_SIZE_Y") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:ArraySizeZ_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)ARRAY_SIZE_Z") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:ArraySize_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)ARRAY_SIZE") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records have information on the compression # +################################################################### +record(stringin, "BL03S-DI-OAV-01:MXSC:Codec_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.MXSC,0,1)CODEC") + field(VAL, "") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:CompressedSize_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)COMPRESSED_SIZE") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the data type # +################################################################### + +record(mbbo, "BL03S-DI-OAV-01:MXSC:DataType") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)DATA_TYPE") + field(ZRST, "Int8") + field(ZRVL, "0") + field(ONST, "UInt8") + field(ONVL, "1") + field(TWST, "Int16") + field(TWVL, "2") + field(THST, "UInt16") + field(THVL, "3") + field(FRST, "Int32") + field(FRVL, "4") + field(FVST, "UInt32") + field(FVVL, "5") + field(SXST, "Int64") + field(SXVL, "6") + field(SVST, "UInt64") + field(SVVL, "7") + field(EIST, "Float32") + field(EIVL, "8") + field(NIST, "Float64") + field(NIVL, "9") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-DI-OAV-01:MXSC:DataType_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)DATA_TYPE") + field(ZRST, "Int8") + field(ZRVL, "0") + field(ONST, "UInt8") + field(ONVL, "1") + field(TWST, "Int16") + field(TWVL, "2") + field(THST, "UInt16") + field(THVL, "3") + field(FRST, "Int32") + field(FRVL, "4") + field(FVST, "UInt32") + field(FVVL, "5") + field(SXST, "Int64") + field(SXVL, "6") + field(SVST, "UInt64") + field(SVVL, "7") + field(EIST, "Float32") + field(EIVL, "8") + field(NIST, "Float64") + field(NIVL, "9") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the color mode # +# These choices must agree with NDColorMode_t in NDArray.h # +################################################################### + +record(mbbo, "BL03S-DI-OAV-01:MXSC:ColorMode") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)COLOR_MODE") + field(ZRST, "Mono") + field(ZRVL, "0") + field(ONST, "Bayer") + field(ONVL, "1") + field(TWST, "RGB1") + field(TWVL, "2") + field(THST, "RGB2") + field(THVL, "3") + field(FRST, "RGB3") + field(FRVL, "4") + field(FVST, "YUV444") + field(FVVL, "5") + field(SXST, "YUV422") + field(SXVL, "6") + field(SVST, "YUV421") + field(SVVL, "7") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-DI-OAV-01:MXSC:ColorMode_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)COLOR_MODE") + field(ZRST, "Mono") + field(ZRVL, "0") + field(ONST, "Bayer") + field(ONVL, "1") + field(TWST, "RGB1") + field(TWVL, "2") + field(THST, "RGB2") + field(THVL, "3") + field(FRST, "RGB3") + field(FRVL, "4") + field(FVST, "YUV444") + field(FVVL, "5") + field(SXST, "YUV422") + field(SXVL, "6") + field(SVST, "YUV421") + field(SVVL, "7") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records are the uniqueId and time stamps of the array # +################################################################### +record(longin, "BL03S-DI-OAV-01:MXSC:UniqueId_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)UNIQUE_ID") + field(SCAN, "I/O Intr") +} + +record(ai, "BL03S-DI-OAV-01:MXSC:TimeStamp_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.MXSC,0,1)TIME_STAMP") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:EpicsTSSec_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)EPICS_TS_SEC") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:EpicsTSNsec_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)EPICS_TS_NSEC") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records provide statistics on array callbacks and # +# array callback rates # +################################################################### +record(longout, "BL03S-DI-OAV-01:MXSC:ArrayCounter") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)ARRAY_COUNTER") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:ArrayCounter_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)ARRAY_COUNTER") + field(SCAN, "I/O Intr") +} + +# Updated rate calculation to use a smoothing factor w/ guard against negative values +record(calc, "BL03S-DI-OAV-01:MXSC:ArrayRate_RBV") +{ + field(INPA, "BL03S-DI-OAV-01:MXSC:ArrayRate_RBV.LB NPP NMS") # Previous counter value + field(INPB, "BL03S-DI-OAV-01:MXSC:ArrayCounter_RBV NPP NMS") # Current counter value + field(INPC, "1.0") # Delta time in seconds + field(INPD, "BL03S-DI-OAV-01:MXSC:ArrayRate_RBV.VAL NPP NMS") # Previous rate + field(INPE, "0.0") # Smoothing factor + field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") + field(PREC, "2" ) + field(EGU, "Hz" ) + field(SCAN, "1 second") +} + +################################################################### +# These records control NDArray callacks # +################################################################### +record(bo, "BL03S-DI-OAV-01:MXSC:ArrayCallbacks") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)ARRAY_CALLBACKS") + field(ZNAM, "Disable") + field(ZSV, "NO_ALARM") + field(ONAM, "Enable") + field(OSV, "MINOR") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(bi, "BL03S-DI-OAV-01:MXSC:ArrayCallbacks_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)ARRAY_CALLBACKS") + field(ZNAM, "Disable") + field(ZSV, "NO_ALARM") + field(ONAM, "Enable") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains macro definitions for the attributes # +################################################################### + +record(waveform, "BL03S-DI-OAV-01:MXSC:NDAttributesMacros") +{ + field(PINI, "YES") + field(DTYP, "asynOctetWrite") + field(INP, "@asyn(OAV.MXSC,0,1)ND_ATTRIBUTES_MACROS") + field(FTVL, "CHAR") + field(NELM, "256") + info(autosaveFields, "VAL") +} + +################################################################### +# This record is the name of a file defining attributes # +################################################################### + +record(waveform, "BL03S-DI-OAV-01:MXSC:NDAttributesFile") +{ + field(PINI, "YES") + field(DTYP, "asynOctetWrite") + field(INP, "@asyn(OAV.MXSC,0,1)ND_ATTRIBUTES_FILE") + field(FTVL, "CHAR") + field(NELM, "256") + info(autosaveFields, "VAL") +} + +################################################################### +# This record defines the status of reading attributes file # +################################################################### + +record(mbbi, "BL03S-DI-OAV-01:MXSC:NDAttributesStatus") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)ND_ATTRIBUTES_STATUS") + field(ZRVL, "0") + field(ZRST, "Attributes file OK") + field(ZRSV, "NO_ALARM") + field(ONVL, "1") + field(ONST, "File not found") + field(ONSV, "MINOR") + field(TWVL, "2") + field(TWST, "XML syntax error") + field(TWSV, "MAJOR") + field(THVL, "3") + field(THST, "Macro substitution error") + field(THSV, "MAJOR") + field(SCAN, "I/O Intr") +} + +################################################################### +# Status of NDArrayPool - number of buffers, memory used etc. # +################################################################### + +record(ai, "BL03S-DI-OAV-01:MXSC:PoolMaxMem") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.MXSC,0,1)POOL_MAX_MEMORY") + field(PREC, "1") + field(EGU, "MB") + field(SCAN, "Passive") + field(PINI, "YES") +} + +record(ai, "BL03S-DI-OAV-01:MXSC:PoolUsedMem") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.MXSC,0,1)POOL_USED_MEMORY") + field(PREC, "1") + field(EGU, "MB") + field(SCAN, "1 second") + field(FLNK, "BL03S-DI-OAV-01:MXSC:PoolAllocBuffers") + info(autosaveFields, "SCAN") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:PoolAllocBuffers") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)POOL_ALLOC_BUFFERS") + field(FLNK, "BL03S-DI-OAV-01:MXSC:PoolFreeBuffers") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:PoolFreeBuffers") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)POOL_FREE_BUFFERS") + field(FLNK, "BL03S-DI-OAV-01:MXSC:PoolUsedBuffers") +} + +record(calc, "BL03S-DI-OAV-01:MXSC:PoolUsedBuffers") +{ + field(INPA, "BL03S-DI-OAV-01:MXSC:PoolAllocBuffers NPP MS") + field(INPB, "BL03S-DI-OAV-01:MXSC:PoolFreeBuffers NPP MS") + field(CALC, "A-B") +} + +record(bo, "BL03S-DI-OAV-01:MXSC:EmptyFreeList") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)POOL_EMPTY_FREELIST") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:NumQueuedArrays") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)NUM_QUEUED_ARRAYS") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains the type of plugin # +################################################################### + +record(stringin, "BL03S-DI-OAV-01:MXSC:PluginType_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.MXSC,0,1)PLUGIN_TYPE") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the connection of the server to # +# an NDArray driver port and address # +################################################################### +# Array port name +record(stringout, "BL03S-DI-OAV-01:MXSC:NDArrayPort") +{ + field(PINI, "YES") + field(DTYP, "asynOctetWrite") + field(OUT, "@asyn(OAV.MXSC,0,1)NDARRAY_PORT") + field(VAL, "OAV.CAM") + info(autosaveFields, "VAL") +} + +record(stringin, "BL03S-DI-OAV-01:MXSC:NDArrayPort_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.MXSC,0,1)NDARRAY_PORT") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-DI-OAV-01:MXSC:NDArrayAddress") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)NDARRAY_ADDR") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:NDArrayAddress_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)NDARRAY_ADDR") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control whether callbacks are enabled and # +# minimum time between callbacks # +################################################################### +record(bo, "BL03S-DI-OAV-01:MXSC:EnableCallbacks") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)ENABLE_CALLBACKS") + field(ZNAM, "Disable") + field(ONAM, "Enable") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(bi, "BL03S-DI-OAV-01:MXSC:EnableCallbacks_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)ENABLE_CALLBACKS") + field(ZNAM, "Disable") + field(ONAM, "Enable") + field(ZSV, "NO_ALARM") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +record(ao, "BL03S-DI-OAV-01:MXSC:MinCallbackTime") +{ + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(OAV.MXSC,0,1)MIN_CALLBACK_TIME") + field(EGU, "s") + field(PREC, "3") + field(VAL, "0.0") + field(DRVL, "0") + info(autosaveFields, "VAL") +} + +record(ai, "BL03S-DI-OAV-01:MXSC:MinCallbackTime_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.MXSC,0,1)MIN_CALLBACK_TIME") + field(EGU, "s") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(ao, "BL03S-DI-OAV-01:MXSC:MaxArrayRate") +{ + field(DTYP, "Soft Channel") + field(OUT, "BL03S-DI-OAV-01:MXSC:MaxArrayRate_COUT PP") + field(EGU, "Hz") + field(PREC, "3") + field(VAL, "0.0") + info(autosaveFields, "VAL") +} + +record(calcout, "BL03S-DI-OAV-01:MXSC:MaxArrayRate_COUT") +{ + field(INPA, "BL03S-DI-OAV-01:MXSC:MaxArrayRate") + field(CALC, "A=0?0:1.0/A") + field(OUT, "BL03S-DI-OAV-01:MXSC:MinCallbackTime PP") +} + +record(calc, "BL03S-DI-OAV-01:MXSC:MaxArrayRate_RBV") +{ + field(INPA, "BL03S-DI-OAV-01:MXSC:MinCallbackTime_RBV CP") + field(CALC, "A=0?0:1.0/A") + field(EGU, "Hz") + field(PREC, "3") + field(SCAN, "Passive") +} + +record(ao, "BL03S-DI-OAV-01:MXSC:MaxByteRate") +{ + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(OAV.MXSC,0,1)MAX_BYTE_RATE") + field(EGU, "s") + field(PREC, "3") + field(VAL, "0.0") + field(DRVL, "0") + info(autosaveFields, "VAL") +} + +record(ai, "BL03S-DI-OAV-01:MXSC:MaxByteRate_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.MXSC,0,1)MAX_BYTE_RATE") + field(EGU, "s") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains the last execution time of the plugin # +################################################################### +record(ai, "BL03S-DI-OAV-01:MXSC:ExecutionTime_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.MXSC,0,1)EXECUTION_TIME") + field(EGU, "ms") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record requests that the plugin execute again with the # +# same NDArray # +################################################################### +record(bo, "BL03S-DI-OAV-01:MXSC:ProcessPlugin") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)PROCESS_PLUGIN") + field(VAL, "1") +} + +################################################################### +# These records control whether callbacks block or not # +################################################################### +record(bo, "BL03S-DI-OAV-01:MXSC:BlockingCallbacks") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)BLOCKING_CALLBACKS") + field(ZNAM, "No") + field(ONAM, "Yes") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(bi, "BL03S-DI-OAV-01:MXSC:BlockingCallbacks_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)BLOCKING_CALLBACKS") + field(ZNAM, "No") + field(ONAM, "Yes") + field(SCAN, "I/O Intr") +} + + +record(longout, "BL03S-DI-OAV-01:MXSC:DroppedArrays") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)DROPPED_ARRAYS") + field(VAL, "0") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:DroppedArrays_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)DROPPED_ARRAYS") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-DI-OAV-01:MXSC:QueueSize") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)QUEUE_SIZE") + field(PINI, "YES") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:QueueSize_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)QUEUE_SIZE") + field(FLNK, "BL03S-DI-OAV-01:MXSC:QueueFreeLow") + field(SCAN, "I/O Intr") +} + +record(calcout, "BL03S-DI-OAV-01:MXSC:QueueFreeLow") { + field(CALC, "A*0.25") + field(INPA, "BL03S-DI-OAV-01:MXSC:QueueSize") + field(OUT, "BL03S-DI-OAV-01:MXSC:QueueFree.LOW") + field(FLNK, "BL03S-DI-OAV-01:MXSC:QueueUseHIGH") +} + +# Set a HIGH warning level for the input queue fill level to 75% +# of the full size of the queue +record(calcout, "BL03S-DI-OAV-01:MXSC:QueueUseHIGH") { + field(CALC, "A*0.75") + field(INPA, "BL03S-DI-OAV-01:MXSC:QueueSize") + field(OUT, "BL03S-DI-OAV-01:MXSC:QueueUse.HIGH") + field(FLNK, "BL03S-DI-OAV-01:MXSC:QueueUseHIHI") +} + +# Set a HIHI level for the input queue fill level to indicate an error +# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) +record(calcout, "BL03S-DI-OAV-01:MXSC:QueueUseHIHI") { + field(CALC, "A*1.0") + field(INPA, "BL03S-DI-OAV-01:MXSC:QueueSize") + field(OUT, "BL03S-DI-OAV-01:MXSC:QueueUse.HIHI") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:QueueFree") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)QUEUE_FREE") + field(LLSV, "MAJOR") + field(LSV, "MINOR") + field(LOLO, "0") + field(HYST, "1") + field(SCAN, "I/O Intr") +} + +# Display the fill level on the plugins input queue +record(calc, "BL03S-DI-OAV-01:MXSC:QueueUse") { + field(CALC, "A-B") + field(INPA, "BL03S-DI-OAV-01:MXSC:QueueSize") + field(INPB, "BL03S-DI-OAV-01:MXSC:QueueFree CP") + field(SCAN, "Passive") + field(HHSV, "MAJOR") + field(HSV, "MINOR") + field(HYST, "1") +} + +record(longout, "BL03S-DI-OAV-01:MXSC:NumThreads") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)NUM_THREADS") + field(VAL, "1") + field(PINI, "YES") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:NumThreads_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)NUM_THREADS") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:MaxThreads_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)MAX_THREADS") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control output array sorting # +################################################################### +record(mbbo, "BL03S-DI-OAV-01:MXSC:SortMode") { + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)SORT_MODE") + field(ZRVL, "0") + field(ZRST, "Unsorted") + field(ONVL, "1") + field(ONST, "Sorted") +} + +record(mbbi, "BL03S-DI-OAV-01:MXSC:SortMode_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)SORT_MODE") + field(ZRVL, "0") + field(ZRST, "Unsorted") + field(ONVL, "1") + field(ONST, "Sorted") + field(SCAN, "I/O Intr") +} + +record(ao, "BL03S-DI-OAV-01:MXSC:SortTime") { + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(OAV.MXSC,0,1)SORT_TIME") + field(PREC, "3") + field(VAL, "0.1") +} + +record(ai, "BL03S-DI-OAV-01:MXSC:SortTime_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.MXSC,0,1)SORT_TIME") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-DI-OAV-01:MXSC:SortSize") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)SORT_SIZE") + field(VAL, "20") + field(PINI, "YES") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:SortSize_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)SORT_SIZE") + field(FLNK, "BL03S-DI-OAV-01:MXSC:SortFreeLow") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:SortFree") { + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)SORT_FREE") + field(LLSV, "MAJOR") + field(LSV, "MINOR") + field(LOLO, "0") + field(HYST, "1") + field(SCAN, "I/O Intr") +} + +record(calcout, "BL03S-DI-OAV-01:MXSC:SortFreeLow") { + field(CALC, "A*0.25") + field(INPA, "BL03S-DI-OAV-01:MXSC:SortSize") + field(OUT, "BL03S-DI-OAV-01:MXSC:SortFree.LOW") +} + +record(longout, "BL03S-DI-OAV-01:MXSC:DroppedOutputArrays") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)DROPPED_OUTPUT_ARRAYS") + field(VAL, "0") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:DroppedOutputArrays_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)DROPPED_OUTPUT_ARRAYS") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-DI-OAV-01:MXSC:DisorderedArrays") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)DISORDERED_ARRAYS") + field(PINI, "YES") +} + +record(longin, "BL03S-DI-OAV-01:MXSC:DisorderedArrays_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)DISORDERED_ARRAYS") + field(SCAN, "I/O Intr") +} + + + +################################################################### +# The asynRecord is used for mainly for trace mask # +################################################################### + + +record(ai, "BL03S-DI-OAV-01:MXSC:Time_RBV") +{ + field(DTYP, "asynFloat64") + field(DESC, "Time taken for plugin to run") + field(INP, "@asyn(OAV.MXSC,0,1)ADPYTHON_TIME") + field(SCAN, "I/O Intr") + field(PREC, "1") + field(EGU, "ms") +} + +# File path. +# % autosave 2 +record(waveform, "BL03S-DI-OAV-01:MXSC:Filename") +{ + field(DTYP, "asynOctetWrite") + field(INP, "@asyn(OAV.MXSC,0,1)ADPYTHON_FILENAME") + field(FTVL, "CHAR") + field(NELM, "256") +} + +record(waveform, "BL03S-DI-OAV-01:MXSC:Filename_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.MXSC,0,1)ADPYTHON_FILENAME") + field(FTVL, "CHAR") + field(NELM, "256") + field(SCAN, "I/O Intr") +} + +# Class name. +# % autosave 2 +record(waveform, "BL03S-DI-OAV-01:MXSC:Classname") +{ + field(DTYP, "asynOctetWrite") + field(INP, "@asyn(OAV.MXSC,0,1)ADPYTHON_CLASSNAME") + field(FTVL, "CHAR") + field(NELM, "256") +} + +record(waveform, "BL03S-DI-OAV-01:MXSC:Classname_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.MXSC,0,1)ADPYTHON_CLASSNAME") + field(FTVL, "CHAR") + field(NELM, "256") + field(SCAN, "I/O Intr") +} + +# Read file +record(bi, "BL03S-DI-OAV-01:MXSC:ReadFile") +{ + field(DTYP, "asynInt32") + field(ZNAM, "Done") + field(ONAM, "Read") +} + +record(bi, "BL03S-DI-OAV-01:MXSC:ReadFile_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)ADPYTHON_LOAD") + field(ZNAM, "Done") + field(ONAM, "Reading") + field(SCAN, "I/O Intr") +} + +record(mbbi, "BL03S-DI-OAV-01:MXSC:PluginState_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)ADPYTHON_STATE") + field(ZRST, "Good") + field(ZRSV, "NO_ALARM") + field(ZRVL, "0") + field(ONST, "Bad") + field(ONSV, "MAJOR") + field(ONVL, "1") + field(TWST, "Ugly") + field(TWSV, "MAJOR") + field(TWVL, "2") + field(SCAN, "I/O Intr") +} + +record(bo, "BL03S-DI-OAV-01:MXSC:AbortProcessing") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)ADPYTHON_PROC_ABORT") + field(ZNAM, "Aborted") + field(ONAM, "Abort") +} + +record(ao, "BL03S-DI-OAV-01:MXSC:Timeout") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)ADPYTHON_PROC_TIMEOUT") + field(EGU, "ms") +} + +record(ai, "BL03S-DI-OAV-01:MXSC:Timeout_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)ADPYTHON_PROC_TIMEOUT") + field(SCAN, "I/O Intr") + field(EGU, "ms") +}# % macro, P, Device Prefix +# % macro, R, Device Suffix +# % macro, PORT, Asyn Port name +# % macro, TIMEOUT, Timeout +# % macro, ADDR, Asyn Port address +# % gui, OAV.MXSC, edmtab, adPythonMxSampleDetect.edl, P=BL03S-DI-OAV-01,R=:MXSC: + + +# Records relating to preprocessing. + +record(mbbo, "BL03S-DI-OAV-01:MXSC:Preprocess") { + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)preprocess") + + field(ZRST, "Erode") + field(ZRVL, "0") + field(ONST, "Dilate") + field(ONVL, "1") + field(TWST, "Open") + field(TWVL, "2") + field(THST, "Close") + field(THVL, "3") + field(FRST, "Gradient") + field(FRVL, "4") + field(FVST, "Top hat") + field(FVVL, "5") + field(SXST, "Black hat") + field(SXVL, "6") + field(SVST, "Blur") + field(SVVL, "7") + field(EIST, "Gaussian blur") + field(EIVL, "8") + field(NIST, "Median blur") + field(NIVL, "9") + field(TEST, "None") + field(TEVL, "10") +} +record(mbbi, "BL03S-DI-OAV-01:MXSC:Preprocess_RBV") { + field(SCAN, "I/O Intr") + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)preprocess") + + field(ZRST, "Erode") + field(ZRVL, "0") + field(ONST, "Dilate") + field(ONVL, "1") + field(TWST, "Open") + field(TWVL, "2") + field(THST, "Close") + field(THVL, "3") + field(FRST, "Gradient") + field(FRVL, "4") + field(FVST, "Top hat") + field(FVVL, "5") + field(SXST, "Black hat") + field(SXVL, "6") + field(SVST, "Blur") + field(SVVL, "7") + field(EIST, "Gaussian blur") + field(EIVL, "8") + field(NIST, "Median blur") + field(NIVL, "9") + field(TEST, "None") + field(TEVL, "10") +} + +# Abuse a couple of mbbis to provide descriptions of preprocess parameters. +record(mbbi, "BL03S-DI-OAV-01:MXSC:PpParam1Name") { + field(SCAN, "I/O Intr") + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)preprocess") + + field(ZRST, "ksize (px)") + field(ZRVL, "0") + field(ONST, "ksize (px)") + field(ONVL, "1") + field(TWST, "ksize (px)") + field(TWVL, "2") + field(THST, "ksize (px)") + field(THVL, "3") + field(FRST, "ksize (px)") + field(FRVL, "4") + field(FVST, "ksize (px)") + field(FVVL, "5") + field(SXST, "ksize (px)") + field(SXVL, "6") + field(SVST, "ksize (px)") + field(SVVL, "7") + field(EIST, "ksize (px)") + field(EIVL, "8") + field(NIST, "ksize (px)") + field(NIVL, "9") + field(TEST, "(Unused)") + field(TEVL, "10") +} +record(mbbi, "BL03S-DI-OAV-01:MXSC:PpParam2Name") { + field(SCAN, "I/O Intr") + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)preprocess") + + field(ZRST, "Iterations") + field(ZRVL, "0") + field(ONST, "Iterations") + field(ONVL, "1") + field(TWST, "Iterations") + field(TWVL, "2") + field(THST, "Iterations") + field(THVL, "3") + field(FRST, "Iterations") + field(FRVL, "4") + field(FVST, "Iterations") + field(FVVL, "5") + field(SXST, "Iterations") + field(SXVL, "6") + field(SVST, "(Unused)") + field(SVVL, "7") + field(EIST, "(Unused)") + field(EIVL, "8") + field(NIST, "(Unused)") + field(NIVL, "9") + field(TEST, "(Unused)") + field(TEVL, "10") +} + +record(longout, "BL03S-DI-OAV-01:MXSC:PpParam1") { + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)pp_param1") +} +record(longin, "BL03S-DI-OAV-01:MXSC:PpParam1_RBV") { + field(SCAN, "I/O Intr") + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)pp_param1") +} + +record(longout, "BL03S-DI-OAV-01:MXSC:PpParam2") { + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)pp_param2") +} +record(longin, "BL03S-DI-OAV-01:MXSC:PpParam2_RBV") { + field(SCAN, "I/O Intr") + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)pp_param2") +} + + +# Records relating to edge detection. + +record(longout, "BL03S-DI-OAV-01:MXSC:CannyUpper") { + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)canny_upper") +} +record(longin, "BL03S-DI-OAV-01:MXSC:CannyUpper_RBV") { + field(SCAN, "I/O Intr") + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)canny_upper") +} + +record(longout, "BL03S-DI-OAV-01:MXSC:CannyLower") { + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)canny_lower") +} +record(longin, "BL03S-DI-OAV-01:MXSC:CannyLower_RBV") { + field(SCAN, "I/O Intr") + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)canny_lower") +} + + +# Records relating to "close" morphological operation. + +record(longout, "BL03S-DI-OAV-01:MXSC:CloseKsize") { + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)close_ksize") +} +record(longin, "BL03S-DI-OAV-01:MXSC:CloseKsize_RBV") { + field(SCAN, "I/O Intr") + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)close_ksize") +} + +record(longout, "BL03S-DI-OAV-01:MXSC:CloseIterations") { + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)close_iterations") +} +record(longin, "BL03S-DI-OAV-01:MXSC:CloseIterations_RBV") { + field(SCAN, "I/O Intr") + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)close_iterations") +} + + +# Records relating to sample detection. + +record(mbbo, "BL03S-DI-OAV-01:MXSC:ScanDirection") { + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)scan_direction") + + field(ZRST, "Left to right") + field(ZRVL, "1") + field(ONST, "Right to left") + field(ONVL, "-1") +} +record(mbbi, "BL03S-DI-OAV-01:MXSC:ScanDirection_RBV") { + field(SCAN, "I/O Intr") + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)scan_direction") + + field(ZRST, "Left to right") + field(ZRVL, "1") + field(ONST, "Right to left") + field(ONVL, "-1") +} + +record(longout, "BL03S-DI-OAV-01:MXSC:MinTipHeight") { + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)min_tip_height") +} +record(longin, "BL03S-DI-OAV-01:MXSC:MinTipHeight_RBV") { + field(SCAN, "I/O Intr") + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)min_tip_height") +} + + +# Records relating to output. + +record(mbbo, "BL03S-DI-OAV-01:MXSC:OutputArray") { + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)out_arr") + + field(ZRST, "Original") + field(ZRVL, "0") + field(ONST, "Greyscale") + field(ONVL, "1") + field(TWST, "Preprocessed") + field(TWVL, "2") + field(THST, "Canny edges") + field(THVL, "3") + field(FRST, "Closed edges") + field(FRVL, "4") +} +record(mbbi, "BL03S-DI-OAV-01:MXSC:OutputArray_RBV") { + field(SCAN, "I/O Intr") + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)out_arr") + + field(ZRST, "Original") + field(ZRVL, "0") + field(ONST, "Greyscale") + field(ONVL, "1") + field(TWST, "Preprocessed") + field(TWVL, "2") + field(THST, "Canny edges") + field(THVL, "3") + field(FRST, "Closed edges") + field(FRVL, "4") +} + +record(bo, "BL03S-DI-OAV-01:MXSC:DrawTip") { + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)draw_circle") + field(ZNAM, "Disabled") + field(ONAM, "Enabled") +} +record(bi, "BL03S-DI-OAV-01:MXSC:DrawTip_RBV") { + field(SCAN, "I/O Intr") + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)draw_circle") + field(ZNAM, "Disabled") + field(ONAM, "Enabled") +} + +record(bo, "BL03S-DI-OAV-01:MXSC:DrawEdges") { + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)draw_edges") + field(ZNAM, "Disabled") + field(ONAM, "Enabled") +} +record(bi, "BL03S-DI-OAV-01:MXSC:DrawEdges_RBV") { + field(SCAN, "I/O Intr") + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)draw_edges") + field(ZNAM, "Disabled") + field(ONAM, "Enabled") +} + +record(bo, "BL03S-DI-OAV-01:MXSC:ForceColor") { + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.MXSC,0,1)force_color") + field(ZNAM, "No") + field(ONAM, "Yes") +} +record(bi, "BL03S-DI-OAV-01:MXSC:ForceColor_RBV") { + field(SCAN, "I/O Intr") + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.MXSC,0,1)force_color") + field(ZNAM, "No") + field(ONAM, "Yes") +} +#=================================================================# +# Template file: NDColorConvert.template +# Database for the ColorConvert plugin +# Mark Rivers +# December 23, 2008 + +# Macros: +# % macro, P, Device Prefix +# % macro, R, Device Suffix +# % macro, PORT, Asyn Port name +# % macro, TIMEOUT, Timeout +# % macro, ADDR, Asyn Port address + +# This associates the template with an edm screen +# % gui, OAV.CCON, edmtab, NDColorConvert.edl, P=BL03S-DI-OAV-01,R=:CCON: + +#=================================================================# +# Template file: NDPluginBase.template +# Database for NDPluginBase, i.e. records common to all plugins +# Mark Rivers +# April 25, 2008 + +# Macros: +# % macro, P, Device Prefix +# % macro, R, Device Suffix +# % macro, PORT, Asyn Port name +# % macro, TIMEOUT, Timeout +# % macro, ADDR, Asyn Port address +# % macro, NDARRAY_PORT, Input Array Port +# % macro, NDARRAY_ADDR, Input Array Address +# % macro, ENABLED, Plugin Enabled at startup? +# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs + +#=================================================================# +# Template file: NDArrayBase.template +# Database for area detector control using asyn driver and standard asyn device support +# Mark Rivers +# March 9, 2008 + +################################################################### +# This record contains the version of ADCore # +################################################################### + +record(stringin, "BL03S-DI-OAV-01:CCON:ADCoreVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.CCON,0,1)ADCORE_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains the version of the driver or plugin # +################################################################### + +record(stringin, "BL03S-DI-OAV-01:CCON:DriverVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.CCON,0,1)DRIVER_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains the asyn port name of this detector # +################################################################### + +record(stringin, "BL03S-DI-OAV-01:CCON:PortName_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.CCON,0,1)PORT_NAME_SELF") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records contain basic information about the detector # +################################################################### + +record(stringin, "BL03S-DI-OAV-01:CCON:Manufacturer_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.CCON,0,1)MANUFACTURER") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-DI-OAV-01:CCON:Model_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.CCON,0,1)MODEL") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-DI-OAV-01:CCON:SerialNumber_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.CCON,0,1)SERIAL_NUMBER") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-DI-OAV-01:CCON:SDKVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.CCON,0,1)SDK_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-DI-OAV-01:CCON:FirmwareVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.CCON,0,1)FIRMWARE_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control acquisition start and stop # +################################################################### + +record(bo, "BL03S-DI-OAV-01:CCON:Acquire") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CCON,0,1)ACQUIRE") + field(ZNAM, "Done") + field(ONAM, "Acquire") + field(VAL, "0") + field(FLNK, "BL03S-DI-OAV-01:CCON:SetAcquireBusy") + info(ai:READBACK, "1") +} + +record(bi, "BL03S-DI-OAV-01:CCON:Acquire_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)ACQUIRE") + field(ZNAM, "Done") + field(ZSV, "NO_ALARM") + field(ONAM, "Acquiring") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +record(calcout, "BL03S-DI-OAV-01:CCON:SetAcquireBusy") +{ + field(INPA, "BL03S-DI-OAV-01:CCON:Acquire NPP") + field(CALC, "A") + field(OOPT, "Transition To Non-zero") + field(OUT, "BL03S-DI-OAV-01:CCON:AcquireBusy PP") +} + +record(bi, "BL03S-DI-OAV-01:CCON:AcquireBusy") { + field(ZNAM, "Done") + field(ZSV, "NO_ALARM") + field(ONAM, "Acquiring") + field(OSV, "MINOR") + field(VAL, "0") +} + +record(bi, "BL03S-DI-OAV-01:CCON:AcquireBusyCB") { + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)ACQUIRE_BUSY") + field(ZNAM, "Done") + field(ZSV, "NO_ALARM") + field(ONAM, "Acquiring") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +record(calcout, "BL03S-DI-OAV-01:CCON:ClearAcquireBusy") { + field(INPA, "BL03S-DI-OAV-01:CCON:AcquireBusyCB CP") + field(CALC, "A") + field(OOPT, "Transition To Zero") + field(OUT, "BL03S-DI-OAV-01:CCON:AcquireBusy PP") +} + +record(bo, "BL03S-DI-OAV-01:CCON:WaitForPlugins") { + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CCON,0,1)WAIT_FOR_PLUGINS") + field(ZNAM, "No") + field(ONAM, "Yes") + field(VAL, "0") +} + +################################################################### +# These records are the array size and data type # +################################################################### +# The number of dimensions +record(longout, "BL03S-DI-OAV-01:CCON:NDimensions") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CCON,0,1)ARRAY_NDIMENSIONS") +} + +record(longin, "BL03S-DI-OAV-01:CCON:NDimensions_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)ARRAY_NDIMENSIONS") + field(SCAN, "I/O Intr") +} + +# The array dimensions waveform records +record(waveform, "BL03S-DI-OAV-01:CCON:Dimensions") +{ + field(DTYP, "asynInt32ArrayOut") + field(INP, "@asyn(OAV.CCON,0,1)ARRAY_DIMENSIONS") + field(FTVL, "LONG") + field(NELM, "10") + field(FLNK, "BL03S-DI-OAV-01:CCON:Dim0SA") +} + +record(subArray, "BL03S-DI-OAV-01:CCON:Dim0SA") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "0") + field(FLNK, "BL03S-DI-OAV-01:CCON:ArraySize0") +} + +record(longin, "BL03S-DI-OAV-01:CCON:ArraySize0") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dim0SA") + field(FLNK, "BL03S-DI-OAV-01:CCON:Dim1SA") +} + +record(subArray, "BL03S-DI-OAV-01:CCON:Dim1SA") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "1") + field(FLNK, "BL03S-DI-OAV-01:CCON:ArraySize1") +} + +record(longin, "BL03S-DI-OAV-01:CCON:ArraySize1") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dim1SA") + field(FLNK, "BL03S-DI-OAV-01:CCON:Dim2SA") +} + +record(subArray, "BL03S-DI-OAV-01:CCON:Dim2SA") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "2") + field(FLNK, "BL03S-DI-OAV-01:CCON:ArraySize2") +} + +record(longin, "BL03S-DI-OAV-01:CCON:ArraySize2") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dim2SA") + field(FLNK, "BL03S-DI-OAV-01:CCON:Dim3SA") +} + +record(subArray, "BL03S-DI-OAV-01:CCON:Dim3SA") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "3") + field(FLNK, "BL03S-DI-OAV-01:CCON:ArraySize3") +} + +record(longin, "BL03S-DI-OAV-01:CCON:ArraySize3") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dim3SA") + field(FLNK, "BL03S-DI-OAV-01:CCON:Dim4SA") +} + +record(subArray, "BL03S-DI-OAV-01:CCON:Dim4SA") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "4") + field(FLNK, "BL03S-DI-OAV-01:CCON:ArraySize4") +} + +record(longin, "BL03S-DI-OAV-01:CCON:ArraySize4") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dim4SA") + field(FLNK, "BL03S-DI-OAV-01:CCON:Dim5SA") +} + +record(subArray, "BL03S-DI-OAV-01:CCON:Dim5SA") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "5") + field(FLNK, "BL03S-DI-OAV-01:CCON:ArraySize5") +} + +record(longin, "BL03S-DI-OAV-01:CCON:ArraySize5") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dim5SA") + field(FLNK, "BL03S-DI-OAV-01:CCON:Dim6SA") +} + +record(subArray, "BL03S-DI-OAV-01:CCON:Dim6SA") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "6") + field(FLNK, "BL03S-DI-OAV-01:CCON:ArraySize6") +} + +record(longin, "BL03S-DI-OAV-01:CCON:ArraySize6") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dim6SA") + field(FLNK, "BL03S-DI-OAV-01:CCON:Dim7SA") +} + +record(subArray, "BL03S-DI-OAV-01:CCON:Dim7SA") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "7") + field(FLNK, "BL03S-DI-OAV-01:CCON:ArraySize7") +} + +record(longin, "BL03S-DI-OAV-01:CCON:ArraySize7") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dim7SA") + field(FLNK, "BL03S-DI-OAV-01:CCON:Dim8SA") +} + +record(subArray, "BL03S-DI-OAV-01:CCON:Dim8SA") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "8") + field(FLNK, "BL03S-DI-OAV-01:CCON:ArraySize8") +} + +record(longin, "BL03S-DI-OAV-01:CCON:ArraySize8") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dim8SA") + field(FLNK, "BL03S-DI-OAV-01:CCON:Dim9SA") +} + +record(subArray, "BL03S-DI-OAV-01:CCON:Dim9SA") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "9") + field(FLNK, "BL03S-DI-OAV-01:CCON:ArraySize9") +} + +record(longin, "BL03S-DI-OAV-01:CCON:ArraySize9") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dim9SA") +} + + +record(waveform, "BL03S-DI-OAV-01:CCON:Dimensions_RBV") +{ + field(DTYP, "asynInt32ArrayIn") + field(INP, "@asyn(OAV.CCON,0,1)ARRAY_DIMENSIONS") + field(FTVL, "LONG") + field(NELM, "10") + field(FLNK, "BL03S-DI-OAV-01:CCON:Dim0SA_RBV") + field(SCAN, "I/O Intr") +} + +record(subArray, "BL03S-DI-OAV-01:CCON:Dim0SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "0") + field(FLNK, "BL03S-DI-OAV-01:CCON:ArraySize0_RBV") +} + +record(longin, "BL03S-DI-OAV-01:CCON:ArraySize0_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dim0SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:CCON:Dim1SA_RBV") +} + +record(subArray, "BL03S-DI-OAV-01:CCON:Dim1SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "1") + field(FLNK, "BL03S-DI-OAV-01:CCON:ArraySize1_RBV") +} + +record(longin, "BL03S-DI-OAV-01:CCON:ArraySize1_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dim1SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:CCON:Dim2SA_RBV") +} + +record(subArray, "BL03S-DI-OAV-01:CCON:Dim2SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "2") + field(FLNK, "BL03S-DI-OAV-01:CCON:ArraySize2_RBV") +} + +record(longin, "BL03S-DI-OAV-01:CCON:ArraySize2_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dim2SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:CCON:Dim3SA_RBV") +} + +record(subArray, "BL03S-DI-OAV-01:CCON:Dim3SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "3") + field(FLNK, "BL03S-DI-OAV-01:CCON:ArraySize3_RBV") +} + +record(longin, "BL03S-DI-OAV-01:CCON:ArraySize3_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dim3SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:CCON:Dim4SA_RBV") +} + +record(subArray, "BL03S-DI-OAV-01:CCON:Dim4SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "4") + field(FLNK, "BL03S-DI-OAV-01:CCON:ArraySize4_RBV") +} + +record(longin, "BL03S-DI-OAV-01:CCON:ArraySize4_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dim4SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:CCON:Dim5SA_RBV") +} + +record(subArray, "BL03S-DI-OAV-01:CCON:Dim5SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "5") + field(FLNK, "BL03S-DI-OAV-01:CCON:ArraySize5_RBV") +} + +record(longin, "BL03S-DI-OAV-01:CCON:ArraySize5_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dim5SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:CCON:Dim6SA_RBV") +} + +record(subArray, "BL03S-DI-OAV-01:CCON:Dim6SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "6") + field(FLNK, "BL03S-DI-OAV-01:CCON:ArraySize6_RBV") +} + +record(longin, "BL03S-DI-OAV-01:CCON:ArraySize6_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dim6SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:CCON:Dim7SA_RBV") +} + +record(subArray, "BL03S-DI-OAV-01:CCON:Dim7SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "7") + field(FLNK, "BL03S-DI-OAV-01:CCON:ArraySize7_RBV") +} + +record(longin, "BL03S-DI-OAV-01:CCON:ArraySize7_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dim7SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:CCON:Dim8SA_RBV") +} + +record(subArray, "BL03S-DI-OAV-01:CCON:Dim8SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "8") + field(FLNK, "BL03S-DI-OAV-01:CCON:ArraySize8_RBV") +} + +record(longin, "BL03S-DI-OAV-01:CCON:ArraySize8_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dim8SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:CCON:Dim9SA_RBV") +} + +record(subArray, "BL03S-DI-OAV-01:CCON:Dim9SA_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "9") + field(FLNK, "BL03S-DI-OAV-01:CCON:ArraySize9_RBV") +} + +record(longin, "BL03S-DI-OAV-01:CCON:ArraySize9_RBV") +{ + field(INP, "BL03S-DI-OAV-01:CCON:Dim9SA_RBV") +} + + +record(mbbi, "BL03S-DI-OAV-01:CCON:BayerPattern_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)BAYER_PATTERN") + field(ZRST, "RGGB") + field(ZRVL, "0") + field(ONST, "GBRG") + field(ONVL, "1") + field(TWST, "GRBG") + field(TWVL, "2") + field(THST, "BGGR") + field(THVL, "3") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:CCON:ArraySizeX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)ARRAY_SIZE_X") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:CCON:ArraySizeY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)ARRAY_SIZE_Y") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:CCON:ArraySizeZ_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)ARRAY_SIZE_Z") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:CCON:ArraySize_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)ARRAY_SIZE") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records have information on the compression # +################################################################### +record(stringin, "BL03S-DI-OAV-01:CCON:Codec_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.CCON,0,1)CODEC") + field(VAL, "") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:CCON:CompressedSize_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)COMPRESSED_SIZE") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the data type # +################################################################### + +record(mbbo, "BL03S-DI-OAV-01:CCON:DataType") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CCON,0,1)DATA_TYPE") + field(ZRST, "Int8") + field(ZRVL, "0") + field(ONST, "UInt8") + field(ONVL, "1") + field(TWST, "Int16") + field(TWVL, "2") + field(THST, "UInt16") + field(THVL, "3") + field(FRST, "Int32") + field(FRVL, "4") + field(FVST, "UInt32") + field(FVVL, "5") + field(SXST, "Int64") + field(SXVL, "6") + field(SVST, "UInt64") + field(SVVL, "7") + field(EIST, "Float32") + field(EIVL, "8") + field(NIST, "Float64") + field(NIVL, "9") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-DI-OAV-01:CCON:DataType_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)DATA_TYPE") + field(ZRST, "Int8") + field(ZRVL, "0") + field(ONST, "UInt8") + field(ONVL, "1") + field(TWST, "Int16") + field(TWVL, "2") + field(THST, "UInt16") + field(THVL, "3") + field(FRST, "Int32") + field(FRVL, "4") + field(FVST, "UInt32") + field(FVVL, "5") + field(SXST, "Int64") + field(SXVL, "6") + field(SVST, "UInt64") + field(SVVL, "7") + field(EIST, "Float32") + field(EIVL, "8") + field(NIST, "Float64") + field(NIVL, "9") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the color mode # +# These choices must agree with NDColorMode_t in NDArray.h # +################################################################### + +record(mbbo, "BL03S-DI-OAV-01:CCON:ColorMode") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CCON,0,1)COLOR_MODE") + field(ZRST, "Mono") + field(ZRVL, "0") + field(ONST, "Bayer") + field(ONVL, "1") + field(TWST, "RGB1") + field(TWVL, "2") + field(THST, "RGB2") + field(THVL, "3") + field(FRST, "RGB3") + field(FRVL, "4") + field(FVST, "YUV444") + field(FVVL, "5") + field(SXST, "YUV422") + field(SXVL, "6") + field(SVST, "YUV421") + field(SVVL, "7") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-DI-OAV-01:CCON:ColorMode_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)COLOR_MODE") + field(ZRST, "Mono") + field(ZRVL, "0") + field(ONST, "Bayer") + field(ONVL, "1") + field(TWST, "RGB1") + field(TWVL, "2") + field(THST, "RGB2") + field(THVL, "3") + field(FRST, "RGB3") + field(FRVL, "4") + field(FVST, "YUV444") + field(FVVL, "5") + field(SXST, "YUV422") + field(SXVL, "6") + field(SVST, "YUV421") + field(SVVL, "7") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records are the uniqueId and time stamps of the array # +################################################################### +record(longin, "BL03S-DI-OAV-01:CCON:UniqueId_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)UNIQUE_ID") + field(SCAN, "I/O Intr") +} + +record(ai, "BL03S-DI-OAV-01:CCON:TimeStamp_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.CCON,0,1)TIME_STAMP") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:CCON:EpicsTSSec_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)EPICS_TS_SEC") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:CCON:EpicsTSNsec_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)EPICS_TS_NSEC") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records provide statistics on array callbacks and # +# array callback rates # +################################################################### +record(longout, "BL03S-DI-OAV-01:CCON:ArrayCounter") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CCON,0,1)ARRAY_COUNTER") +} + +record(longin, "BL03S-DI-OAV-01:CCON:ArrayCounter_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)ARRAY_COUNTER") + field(SCAN, "I/O Intr") +} + +# Updated rate calculation to use a smoothing factor w/ guard against negative values +record(calc, "BL03S-DI-OAV-01:CCON:ArrayRate_RBV") +{ + field(INPA, "BL03S-DI-OAV-01:CCON:ArrayRate_RBV.LB NPP NMS") # Previous counter value + field(INPB, "BL03S-DI-OAV-01:CCON:ArrayCounter_RBV NPP NMS") # Current counter value + field(INPC, "1.0") # Delta time in seconds + field(INPD, "BL03S-DI-OAV-01:CCON:ArrayRate_RBV.VAL NPP NMS") # Previous rate + field(INPE, "0.0") # Smoothing factor + field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") + field(PREC, "2" ) + field(EGU, "Hz" ) + field(SCAN, "1 second") +} + +################################################################### +# These records control NDArray callacks # +################################################################### +record(bo, "BL03S-DI-OAV-01:CCON:ArrayCallbacks") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CCON,0,1)ARRAY_CALLBACKS") + field(ZNAM, "Disable") + field(ZSV, "NO_ALARM") + field(ONAM, "Enable") + field(OSV, "MINOR") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(bi, "BL03S-DI-OAV-01:CCON:ArrayCallbacks_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)ARRAY_CALLBACKS") + field(ZNAM, "Disable") + field(ZSV, "NO_ALARM") + field(ONAM, "Enable") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains macro definitions for the attributes # +################################################################### + +record(waveform, "BL03S-DI-OAV-01:CCON:NDAttributesMacros") +{ + field(PINI, "YES") + field(DTYP, "asynOctetWrite") + field(INP, "@asyn(OAV.CCON,0,1)ND_ATTRIBUTES_MACROS") + field(FTVL, "CHAR") + field(NELM, "256") + info(autosaveFields, "VAL") +} + +################################################################### +# This record is the name of a file defining attributes # +################################################################### + +record(waveform, "BL03S-DI-OAV-01:CCON:NDAttributesFile") +{ + field(PINI, "YES") + field(DTYP, "asynOctetWrite") + field(INP, "@asyn(OAV.CCON,0,1)ND_ATTRIBUTES_FILE") + field(FTVL, "CHAR") + field(NELM, "256") + info(autosaveFields, "VAL") +} + +################################################################### +# This record defines the status of reading attributes file # +################################################################### + +record(mbbi, "BL03S-DI-OAV-01:CCON:NDAttributesStatus") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)ND_ATTRIBUTES_STATUS") + field(ZRVL, "0") + field(ZRST, "Attributes file OK") + field(ZRSV, "NO_ALARM") + field(ONVL, "1") + field(ONST, "File not found") + field(ONSV, "MINOR") + field(TWVL, "2") + field(TWST, "XML syntax error") + field(TWSV, "MAJOR") + field(THVL, "3") + field(THST, "Macro substitution error") + field(THSV, "MAJOR") + field(SCAN, "I/O Intr") +} + +################################################################### +# Status of NDArrayPool - number of buffers, memory used etc. # +################################################################### + +record(ai, "BL03S-DI-OAV-01:CCON:PoolMaxMem") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.CCON,0,1)POOL_MAX_MEMORY") + field(PREC, "1") + field(EGU, "MB") + field(SCAN, "Passive") + field(PINI, "YES") +} + +record(ai, "BL03S-DI-OAV-01:CCON:PoolUsedMem") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.CCON,0,1)POOL_USED_MEMORY") + field(PREC, "1") + field(EGU, "MB") + field(SCAN, "1 second") + field(FLNK, "BL03S-DI-OAV-01:CCON:PoolAllocBuffers") + info(autosaveFields, "SCAN") +} + +record(longin, "BL03S-DI-OAV-01:CCON:PoolAllocBuffers") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)POOL_ALLOC_BUFFERS") + field(FLNK, "BL03S-DI-OAV-01:CCON:PoolFreeBuffers") +} + +record(longin, "BL03S-DI-OAV-01:CCON:PoolFreeBuffers") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)POOL_FREE_BUFFERS") + field(FLNK, "BL03S-DI-OAV-01:CCON:PoolUsedBuffers") +} + +record(calc, "BL03S-DI-OAV-01:CCON:PoolUsedBuffers") +{ + field(INPA, "BL03S-DI-OAV-01:CCON:PoolAllocBuffers NPP MS") + field(INPB, "BL03S-DI-OAV-01:CCON:PoolFreeBuffers NPP MS") + field(CALC, "A-B") +} + +record(bo, "BL03S-DI-OAV-01:CCON:EmptyFreeList") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CCON,0,1)POOL_EMPTY_FREELIST") +} + +record(longin, "BL03S-DI-OAV-01:CCON:NumQueuedArrays") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)NUM_QUEUED_ARRAYS") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains the type of plugin # +################################################################### + +record(stringin, "BL03S-DI-OAV-01:CCON:PluginType_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.CCON,0,1)PLUGIN_TYPE") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the connection of the server to # +# an NDArray driver port and address # +################################################################### +# Array port name +record(stringout, "BL03S-DI-OAV-01:CCON:NDArrayPort") +{ + field(PINI, "YES") + field(DTYP, "asynOctetWrite") + field(OUT, "@asyn(OAV.CCON,0,1)NDARRAY_PORT") + field(VAL, "OAV.CAM") + info(autosaveFields, "VAL") +} + +record(stringin, "BL03S-DI-OAV-01:CCON:NDArrayPort_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.CCON,0,1)NDARRAY_PORT") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-DI-OAV-01:CCON:NDArrayAddress") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CCON,0,1)NDARRAY_ADDR") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-DI-OAV-01:CCON:NDArrayAddress_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)NDARRAY_ADDR") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control whether callbacks are enabled and # +# minimum time between callbacks # +################################################################### +record(bo, "BL03S-DI-OAV-01:CCON:EnableCallbacks") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CCON,0,1)ENABLE_CALLBACKS") + field(ZNAM, "Disable") + field(ONAM, "Enable") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(bi, "BL03S-DI-OAV-01:CCON:EnableCallbacks_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)ENABLE_CALLBACKS") + field(ZNAM, "Disable") + field(ONAM, "Enable") + field(ZSV, "NO_ALARM") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +record(ao, "BL03S-DI-OAV-01:CCON:MinCallbackTime") +{ + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(OAV.CCON,0,1)MIN_CALLBACK_TIME") + field(EGU, "s") + field(PREC, "3") + field(VAL, "0.0") + field(DRVL, "0") + info(autosaveFields, "VAL") +} + +record(ai, "BL03S-DI-OAV-01:CCON:MinCallbackTime_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.CCON,0,1)MIN_CALLBACK_TIME") + field(EGU, "s") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(ao, "BL03S-DI-OAV-01:CCON:MaxArrayRate") +{ + field(DTYP, "Soft Channel") + field(OUT, "BL03S-DI-OAV-01:CCON:MaxArrayRate_COUT PP") + field(EGU, "Hz") + field(PREC, "3") + field(VAL, "0.0") + info(autosaveFields, "VAL") +} + +record(calcout, "BL03S-DI-OAV-01:CCON:MaxArrayRate_COUT") +{ + field(INPA, "BL03S-DI-OAV-01:CCON:MaxArrayRate") + field(CALC, "A=0?0:1.0/A") + field(OUT, "BL03S-DI-OAV-01:CCON:MinCallbackTime PP") +} + +record(calc, "BL03S-DI-OAV-01:CCON:MaxArrayRate_RBV") +{ + field(INPA, "BL03S-DI-OAV-01:CCON:MinCallbackTime_RBV CP") + field(CALC, "A=0?0:1.0/A") + field(EGU, "Hz") + field(PREC, "3") + field(SCAN, "Passive") +} + +record(ao, "BL03S-DI-OAV-01:CCON:MaxByteRate") +{ + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(OAV.CCON,0,1)MAX_BYTE_RATE") + field(EGU, "s") + field(PREC, "3") + field(VAL, "0.0") + field(DRVL, "0") + info(autosaveFields, "VAL") +} + +record(ai, "BL03S-DI-OAV-01:CCON:MaxByteRate_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.CCON,0,1)MAX_BYTE_RATE") + field(EGU, "s") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains the last execution time of the plugin # +################################################################### +record(ai, "BL03S-DI-OAV-01:CCON:ExecutionTime_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.CCON,0,1)EXECUTION_TIME") + field(EGU, "ms") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record requests that the plugin execute again with the # +# same NDArray # +################################################################### +record(bo, "BL03S-DI-OAV-01:CCON:ProcessPlugin") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CCON,0,1)PROCESS_PLUGIN") + field(VAL, "1") +} + +################################################################### +# These records control whether callbacks block or not # +################################################################### +record(bo, "BL03S-DI-OAV-01:CCON:BlockingCallbacks") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CCON,0,1)BLOCKING_CALLBACKS") + field(ZNAM, "No") + field(ONAM, "Yes") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(bi, "BL03S-DI-OAV-01:CCON:BlockingCallbacks_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)BLOCKING_CALLBACKS") + field(ZNAM, "No") + field(ONAM, "Yes") + field(SCAN, "I/O Intr") +} + + +record(longout, "BL03S-DI-OAV-01:CCON:DroppedArrays") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CCON,0,1)DROPPED_ARRAYS") + field(VAL, "0") +} + +record(longin, "BL03S-DI-OAV-01:CCON:DroppedArrays_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)DROPPED_ARRAYS") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-DI-OAV-01:CCON:QueueSize") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CCON,0,1)QUEUE_SIZE") + field(PINI, "YES") +} + +record(longin, "BL03S-DI-OAV-01:CCON:QueueSize_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)QUEUE_SIZE") + field(FLNK, "BL03S-DI-OAV-01:CCON:QueueFreeLow") + field(SCAN, "I/O Intr") +} + +record(calcout, "BL03S-DI-OAV-01:CCON:QueueFreeLow") { + field(CALC, "A*0.25") + field(INPA, "BL03S-DI-OAV-01:CCON:QueueSize") + field(OUT, "BL03S-DI-OAV-01:CCON:QueueFree.LOW") + field(FLNK, "BL03S-DI-OAV-01:CCON:QueueUseHIGH") +} + +# Set a HIGH warning level for the input queue fill level to 75% +# of the full size of the queue +record(calcout, "BL03S-DI-OAV-01:CCON:QueueUseHIGH") { + field(CALC, "A*0.75") + field(INPA, "BL03S-DI-OAV-01:CCON:QueueSize") + field(OUT, "BL03S-DI-OAV-01:CCON:QueueUse.HIGH") + field(FLNK, "BL03S-DI-OAV-01:CCON:QueueUseHIHI") +} + +# Set a HIHI level for the input queue fill level to indicate an error +# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) +record(calcout, "BL03S-DI-OAV-01:CCON:QueueUseHIHI") { + field(CALC, "A*1.0") + field(INPA, "BL03S-DI-OAV-01:CCON:QueueSize") + field(OUT, "BL03S-DI-OAV-01:CCON:QueueUse.HIHI") +} + +record(longin, "BL03S-DI-OAV-01:CCON:QueueFree") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)QUEUE_FREE") + field(LLSV, "MAJOR") + field(LSV, "MINOR") + field(LOLO, "0") + field(HYST, "1") + field(SCAN, "I/O Intr") +} + +# Display the fill level on the plugins input queue +record(calc, "BL03S-DI-OAV-01:CCON:QueueUse") { + field(CALC, "A-B") + field(INPA, "BL03S-DI-OAV-01:CCON:QueueSize") + field(INPB, "BL03S-DI-OAV-01:CCON:QueueFree CP") + field(SCAN, "Passive") + field(HHSV, "MAJOR") + field(HSV, "MINOR") + field(HYST, "1") +} + +record(longout, "BL03S-DI-OAV-01:CCON:NumThreads") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CCON,0,1)NUM_THREADS") + field(VAL, "1") + field(PINI, "YES") +} + +record(longin, "BL03S-DI-OAV-01:CCON:NumThreads_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)NUM_THREADS") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:CCON:MaxThreads_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)MAX_THREADS") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control output array sorting # +################################################################### +record(mbbo, "BL03S-DI-OAV-01:CCON:SortMode") { + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CCON,0,1)SORT_MODE") + field(ZRVL, "0") + field(ZRST, "Unsorted") + field(ONVL, "1") + field(ONST, "Sorted") +} + +record(mbbi, "BL03S-DI-OAV-01:CCON:SortMode_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)SORT_MODE") + field(ZRVL, "0") + field(ZRST, "Unsorted") + field(ONVL, "1") + field(ONST, "Sorted") + field(SCAN, "I/O Intr") +} + +record(ao, "BL03S-DI-OAV-01:CCON:SortTime") { + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(OAV.CCON,0,1)SORT_TIME") + field(PREC, "3") + field(VAL, "0.1") +} + +record(ai, "BL03S-DI-OAV-01:CCON:SortTime_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.CCON,0,1)SORT_TIME") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-DI-OAV-01:CCON:SortSize") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CCON,0,1)SORT_SIZE") + field(VAL, "20") + field(PINI, "YES") +} + +record(longin, "BL03S-DI-OAV-01:CCON:SortSize_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)SORT_SIZE") + field(FLNK, "BL03S-DI-OAV-01:CCON:SortFreeLow") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:CCON:SortFree") { + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)SORT_FREE") + field(LLSV, "MAJOR") + field(LSV, "MINOR") + field(LOLO, "0") + field(HYST, "1") + field(SCAN, "I/O Intr") +} + +record(calcout, "BL03S-DI-OAV-01:CCON:SortFreeLow") { + field(CALC, "A*0.25") + field(INPA, "BL03S-DI-OAV-01:CCON:SortSize") + field(OUT, "BL03S-DI-OAV-01:CCON:SortFree.LOW") +} + +record(longout, "BL03S-DI-OAV-01:CCON:DroppedOutputArrays") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CCON,0,1)DROPPED_OUTPUT_ARRAYS") + field(VAL, "0") +} + +record(longin, "BL03S-DI-OAV-01:CCON:DroppedOutputArrays_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)DROPPED_OUTPUT_ARRAYS") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-DI-OAV-01:CCON:DisorderedArrays") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CCON,0,1)DISORDERED_ARRAYS") + field(PINI, "YES") +} + +record(longin, "BL03S-DI-OAV-01:CCON:DisorderedArrays_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)DISORDERED_ARRAYS") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the color mode # +# These choices must agree with NDColorMode_t in NDArray.h # +################################################################### + +record(mbbo, "BL03S-DI-OAV-01:CCON:ColorModeOut") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CCON,0,1)COLOR_MODE_OUT") + field(ZRST, "Mono") + field(ZRVL, "0") + field(ONST, "Bayer") + field(ONVL, "1") + field(TWST, "RGB1") + field(TWVL, "2") + field(THST, "RGB2") + field(THVL, "3") + field(FRST, "RGB3") + field(FRVL, "4") + field(FVST, "YUV444") + field(FVVL, "5") + field(SXST, "YUV422") + field(SXVL, "6") + field(SVST, "YUV421") + field(SVVL, "7") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-DI-OAV-01:CCON:ColorModeOut_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)COLOR_MODE_OUT") + field(ZRST, "Mono") + field(ZRVL, "0") + field(ONST, "Bayer") + field(ONVL, "1") + field(TWST, "RGB1") + field(TWVL, "2") + field(THST, "RGB2") + field(THVL, "3") + field(FRST, "RGB3") + field(FRVL, "4") + field(FVST, "YUV444") + field(FVVL, "5") + field(SXST, "YUV422") + field(SXVL, "6") + field(SVST, "YUV421") + field(SVVL, "7") + field(SCAN, "I/O Intr") +} + +record(mbbo, "BL03S-DI-OAV-01:CCON:FalseColor") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.CCON,0,1)FALSE_COLOR") + field(ZRST, "None") + field(ZRVL, "0") + field(ONST, "Rainbow") + field(ONVL, "1") + field(TWST, "Iron") + field(TWVL, "2") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-DI-OAV-01:CCON:FalseColor_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.CCON,0,1)FALSE_COLOR") + field(ZRST, "None") + field(ZRVL, "0") + field(ONST, "Rainbow") + field(ONVL, "1") + field(TWST, "Iron") + field(TWVL, "2") + field(SCAN, "I/O Intr") +} + + +################################################################### +# These records control the overlay definition # +################################################################### + +record(longout, "BL03S-DI-OAV-01:OVER:2:PositionXLink") +{ + field(DOL, " CP MS") + field(OMSL, "closed_loop") + field(OUT, "BL03S-DI-OAV-01:OVER:2:PositionX PP") + info(autosaveFields, "DOL") +} + +record(longout, "BL03S-DI-OAV-01:OVER:2:PositionX") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.over,1,1)OVERLAY_POSITION_X") + info(asyn:READBACK, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-DI-OAV-01:OVER:2:PositionX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.over,1,1)OVERLAY_POSITION_X") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-DI-OAV-01:OVER:2:PositionYLink") +{ + field(DOL, " CP MS") + field(OMSL, "closed_loop") + field(OUT, "BL03S-DI-OAV-01:OVER:2:PositionY PP") + info(autosaveFields, "DOL") +} + +record(longout, "BL03S-DI-OAV-01:OVER:2:PositionY") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.over,1,1)OVERLAY_POSITION_Y") + info(asyn:READBACK, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-DI-OAV-01:OVER:2:PositionY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.over,1,1)OVERLAY_POSITION_Y") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-DI-OAV-01:OVER:2:CenterXLink") +{ + field(DOL, " CP MS") + field(OMSL, "closed_loop") + field(OUT, "BL03S-DI-OAV-01:OVER:2:CenterX PP") + info(autosaveFields, "DOL") +} + +record(longout, "BL03S-DI-OAV-01:OVER:2:CenterX") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.over,1,1)OVERLAY_CENTER_X") + info(asyn:READBACK, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-DI-OAV-01:OVER:2:CenterX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.over,1,1)OVERLAY_CENTER_X") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-DI-OAV-01:OVER:2:CenterYLink") +{ + field(DOL, " CP MS") + field(OMSL, "closed_loop") + field(OUT, "BL03S-DI-OAV-01:OVER:2:CenterY PP") + info(autosaveFields, "DOL") +} + +record(longout, "BL03S-DI-OAV-01:OVER:2:CenterY") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.over,1,1)OVERLAY_CENTER_Y") + info(asyn:READBACK, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-DI-OAV-01:OVER:2:CenterY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.over,1,1)OVERLAY_CENTER_Y") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-DI-OAV-01:OVER:2:SizeXLink") +{ + field(DOL, " CP MS") + field(OMSL, "closed_loop") + field(OUT, "BL03S-DI-OAV-01:OVER:2:SizeX PP") + info(autosaveFields, "DOL") +} + +record(longout, "BL03S-DI-OAV-01:OVER:2:SizeX") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.over,1,1)OVERLAY_SIZE_X") + field(LOPR, "1") + field(HOPR, "1024") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-DI-OAV-01:OVER:2:SizeX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.over,1,1)OVERLAY_SIZE_X") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-DI-OAV-01:OVER:2:SizeYLink") +{ + field(DOL, " CP MS") + field(OMSL, "closed_loop") + field(OUT, "BL03S-DI-OAV-01:OVER:2:SizeY PP") + info(autosaveFields, "DOL") +} + +record(longout, "BL03S-DI-OAV-01:OVER:2:SizeY") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.over,1,1)OVERLAY_SIZE_Y") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-DI-OAV-01:OVER:2:SizeY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.over,1,1)OVERLAY_SIZE_Y") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-DI-OAV-01:OVER:2:WidthXLink") +{ + field(DOL, " CP MS") + field(OMSL, "closed_loop") + field(OUT, "BL03S-DI-OAV-01:OVER:2:WidthX PP") + info(autosaveFields, "DOL") +} + +record(longout, "BL03S-DI-OAV-01:OVER:2:WidthX") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.over,1,1)OVERLAY_WIDTH_X") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-DI-OAV-01:OVER:2:WidthX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.over,1,1)OVERLAY_WIDTH_X") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-DI-OAV-01:OVER:2:WidthYLink") +{ + field(DOL, " CP MS") + field(OMSL, "closed_loop") + field(OUT, "BL03S-DI-OAV-01:OVER:2:WidthY PP") + info(autosaveFields, "DOL") +} + +record(longout, "BL03S-DI-OAV-01:OVER:2:WidthY") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.over,1,1)OVERLAY_WIDTH_Y") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-DI-OAV-01:OVER:2:WidthY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.over,1,1)OVERLAY_WIDTH_Y") + field(SCAN, "I/O Intr") +} + +record(mbbo, "BL03S-DI-OAV-01:OVER:2:Shape") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.over,1,1)OVERLAY_SHAPE") + field(ZRST, "Cross") + field(ZRVL, "0") + field(ONST, "Rectangle") + field(ONVL, "1") + field(TWST, "Ellipse") + field(TWVL, "3") + field(THST, "Text") + field(THVL, "2") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-DI-OAV-01:OVER:2:Shape_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.over,1,1)OVERLAY_SHAPE") + field(ZRST, "Cross") + field(ZRVL, "0") + field(ONST, "Rectangle") + field(ONVL, "1") + field(TWST, "Ellipse") + field(TWVL, "3") + field(THST, "Text") + field(THVL, "2") + field(SCAN, "I/O Intr") +} + +record(mbbo, "BL03S-DI-OAV-01:OVER:2:DrawMode") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.over,1,1)OVERLAY_DRAW_MODE") + field(ZRST, "Set") + field(ZRVL, "0") + field(ONST, "XOR") + field(ONVL, "1") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-DI-OAV-01:OVER:2:DrawMode_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.over,1,1)OVERLAY_DRAW_MODE") + field(ZRST, "Set") + field(ZRVL, "0") + field(ONST, "XOR") + field(ONVL, "1") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-DI-OAV-01:OVER:2:Red") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.over,1,1)OVERLAY_RED") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-DI-OAV-01:OVER:2:Red_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.over,1,1)OVERLAY_RED") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-DI-OAV-01:OVER:2:Green") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.over,1,1)OVERLAY_GREEN") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-DI-OAV-01:OVER:2:Green_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.over,1,1)OVERLAY_GREEN") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-DI-OAV-01:OVER:2:Blue") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.over,1,1)OVERLAY_BLUE") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-DI-OAV-01:OVER:2:Blue_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.over,1,1)OVERLAY_BLUE") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records set the HOPR and LOPR values for the position # +# and size to the maximum for the input array # +################################################################### + +record(longin, "BL03S-DI-OAV-01:OVER:2:MaxSizeX") +{ + field(INP, "BL03S-DI-OAV-01:OVER:MaxSizeX_RBV CP") + field(FLNK, "BL03S-DI-OAV-01:OVER:2:SetXHOPR.PROC PP") +} + +record(dfanout, "BL03S-DI-OAV-01:OVER:2:SetXHOPR") +{ + field(DOL, "BL03S-DI-OAV-01:OVER:2:MaxSizeX NPP") + field(OMSL, "closed_loop") + field(OUTA, "BL03S-DI-OAV-01:OVER:2:PositionX.HOPR NPP") + field(OUTB, "BL03S-DI-OAV-01:OVER:2:CenterX.HOPR NPP") + field(OUTC, "BL03S-DI-OAV-01:OVER:2:SizeX.HOPR NPP") +} + +record(longin, "BL03S-DI-OAV-01:OVER:2:MaxSizeY") +{ + field(INP, "BL03S-DI-OAV-01:OVER:MaxSizeY_RBV CP") + field(FLNK, "BL03S-DI-OAV-01:OVER:2:SetYHOPR.PROC PP") +} + +record(dfanout, "BL03S-DI-OAV-01:OVER:2:SetYHOPR") +{ + field(DOL, "BL03S-DI-OAV-01:OVER:2:MaxSizeY NPP") + field(OMSL, "closed_loop") + field(OUTA, "BL03S-DI-OAV-01:OVER:2:PositionY.HOPR NPP") + field(OUTB, "BL03S-DI-OAV-01:OVER:2:CenterY.HOPR NPP") + field(OUTC, "BL03S-DI-OAV-01:OVER:2:SizeY.HOPR NPP") +} + +################################################################### +# Text overlay (Keith Brister 2014-06-26) +################################################################### + +record(waveform, "BL03S-DI-OAV-01:OVER:2:DisplayText") +{ + field(PINI, "YES") + field(DTYP, "asynOctetWrite") + field(INP, "@asyn(OAV.over,1,1)OVERLAY_DISPLAY_TEXT") + field(FTVL, "CHAR") + field(NELM, "256") + info(autosaveFields, "VAL") +} + +record(waveform, "BL03S-DI-OAV-01:OVER:2:DisplayText_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.over,1,1)OVERLAY_DISPLAY_TEXT") + field(FTVL, "CHAR") + field(NELM, "256") + field(SCAN, "I/O Intr") +} + +record(stringout, "BL03S-DI-OAV-01:OVER:2:TimeStampFormat") +{ + field(PINI, "YES") + field(DTYP, "asynOctetWrite") + field(OUT, "@asyn(OAV.over,1,1)OVERLAY_TIMESTAMP_FORMAT") + field(VAL, "%Y-%m-%d %H:%M:%S.%03f") + info(autosaveFields, "VAL") +} + +record(stringin, "BL03S-DI-OAV-01:OVER:2:TimeStampFormat_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.over,1,1)OVERLAY_TIMESTAMP_FORMAT") + field(SCAN, "I/O Intr") +} + +record(mbbo, "BL03S-DI-OAV-01:OVER:2:Font") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.over,1,1)OVERLAY_FONT") + field(ZRST, "6x13") + field(ZRVL, "0") + field(ONST, "6x13 Bold") + field(ONVL, "1") + field(TWST, "9x15") + field(TWVL, "2") + field(THST, "9x15 Bold") + field(THVL, "3") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-DI-OAV-01:OVER:2:Font_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.over,1,1)OVERLAY_FONT") + field(ZRST, "6x13") + field(ZRVL, "0") + field(ONST, "6x13 Bold") + field(ONVL, "1") + field(TWST, "9x15") + field(TWVL, "2") + field(THST, "9x15 Bold") + field(THVL, "3") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control whether this overlay is used # +################################################################### +record(bo, "BL03S-DI-OAV-01:OVER:2:Use") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.over,1,1)USE") + field(VAL, "0") + field(ZNAM, "No") + field(ONAM, "Yes") + info(autosaveFields, "VAL") +} + +record(bi, "BL03S-DI-OAV-01:OVER:2:Use_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.over,1,1)USE") + field(ZNAM, "No") + field(ONAM, "Yes") + field(ZSV, "NO_ALARM") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +record(bo, "BL03S-EA-FSCN-01:OVER:1:Use") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.over,0,1)USE") + field(VAL, "0") + field(ZNAM, "No") + field(ONAM, "Yes") + info(autosaveFields, "VAL") +} + +record(bi, "BL03S-EA-FSCN-01:OVER:1:Use_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.over,0,1)USE") + field(ZNAM, "No") + field(ONAM, "Yes") + field(ZSV, "NO_ALARM") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +record(bo, "BL03S-DI-OAV-01:OVER:EnableCallbacks") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.over,0,1)ENABLE_CALLBACKS") + field(ZNAM, "Disable") + field(ONAM, "Enable") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(bi, "BL03S-DI-OAV-01:OVER:EnableCallbacks_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.over,0,1)ENABLE_CALLBACKS") + field(ZNAM, "Disable") + field(ONAM, "Enable") + field(ZSV, "NO_ALARM") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +record(ao, "BL03S-DI-OAV-01:OVER:MinCallbackTime") +{ + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(OAV.over,0,1)MIN_CALLBACK_TIME") + field(EGU, "s") + field(PREC, "3") + field(VAL, "0.0") + field(DRVL, "0") + info(autosaveFields, "VAL") +} + +record(ai, "BL03S-DI-OAV-01:OVER:MinCallbackTime_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.over,0,1)MIN_CALLBACK_TIME") + field(EGU, "s") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(ao, "BL03S-DI-OAV-01:OVER:MaxArrayRate") +{ + field(DTYP, "Soft Channel") + field(OUT, "BL03S-DI-OAV-01:OVER:MaxArrayRate_COUT PP") + field(EGU, "Hz") + field(PREC, "3") + field(VAL, "0.0") + info(autosaveFields, "VAL") +} + +record(calcout, "BL03S-DI-OAV-01:OVER:MaxArrayRate_COUT") +{ + field(INPA, "BL03S-DI-OAV-01:OVER:MaxArrayRate") + field(CALC, "A=0?0:1.0/A") + field(OUT, "BL03S-DI-OAV-01:OVER:MinCallbackTime PP") +} + +record(calc, "BL03S-DI-OAV-01:OVER:MaxArrayRate_RBV") +{ + field(INPA, "BL03S-DI-OAV-01:OVER:MinCallbackTime_RBV CP") + field(CALC, "A=0?0:1.0/A") + field(EGU, "Hz") + field(PREC, "3") + field(SCAN, "Passive") +} + +record(ao, "BL03S-DI-OAV-01:OVER:MaxByteRate") +{ + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(OAV.over,0,1)MAX_BYTE_RATE") + field(EGU, "s") + field(PREC, "3") + field(VAL, "0.0") + field(DRVL, "0") + info(autosaveFields, "VAL") +} + +record(ai, "BL03S-DI-OAV-01:OVER:MaxByteRate_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(OAV.over,0,1)MAX_BYTE_RATE") + field(EGU, "s") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(stringout, "BL03S-DI-OAV-01:OVER:NDArrayPort") +{ + field(PINI, "YES") + field(DTYP, "asynOctetWrite") + field(OUT, "@asyn(OAV.over,0,1)NDARRAY_PORT") + field(VAL, "OAV.proc") + info(autosaveFields, "VAL") +} + +record(stringin, "BL03S-DI-OAV-01:OVER:NDArrayPort_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.over,0,1)NDARRAY_PORT") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-DI-OAV-01:OVER:NDArrayAddress") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.over,0,1)NDARRAY_ADDR") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-DI-OAV-01:OVER:NDArrayAddress_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.over,0,1)NDARRAY_ADDR") + field(SCAN, "I/O Intr") +} + +record(bo, "BL03S-DI-OAV-01:OVER:1:Use") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(OAV.over,0,1)USE") + field(VAL, "0") + field(ZNAM, "No") + field(ONAM, "Yes") + info(autosaveFields, "VAL") +} + +record(bi, "BL03S-DI-OAV-01:OVER:1:Use_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(OAV.over,0,1)USE") + field(ZNAM, "No") + field(ONAM, "Yes") + field(ZSV, "NO_ALARM") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-DI-OAV-01:MJPG:ArraySize1_RBV") +{ + field(VAL, "1024") + field(INP, "BL03S-DI-OAV-01:MJPG:Dim1SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:MJPG:Dim2SA_RBV") +} +record(longin, "BL03S-DI-OAV-01:MJPG:JPG_URL_RBV") +{ + field(INP, "BL03S-DI-OAV-01:MJPG:Dim1SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:MJPG:Dim2SA_RBV") +} + +record(longin, "BL03S-DI-OAV-01:MJPG:ArraySize2_RBV") +{ + field(INP, "BL03S-DI-OAV-01:MJPG:Dim2SA_RBV") + field(FLNK, "BL03S-DI-OAV-01:MJPG:Dim3SA_RBV") + field(VAL, "768") +} +record(stringout, "BL03S-DI-OAV-01:MJPG:NDArrayPort") +{ + field(PINI, "YES") + field(DTYP, "asynOctetWrite") + field(OUT, "@asyn(OAV.mjpg,0,1)NDARRAY_PORT") + field(VAL, "OAV.over") + info(autosaveFields, "VAL") +} + +record(stringin, "BL03S-DI-OAV-01:MJPG:NDArrayPort_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(OAV.mjpg,0,1)NDARRAY_PORT") + field(SCAN, "I/O Intr") +} diff --git a/tickit_devices/oav/db_files/EA-BL.db b/tickit_devices/oav/db_files/EA-BL.db new file mode 100755 index 00000000..0e1853de --- /dev/null +++ b/tickit_devices/oav/db_files/EA-BL.db @@ -0,0 +1,9 @@ + +record(stringout, "BL03S-EA-BL-01:CTRL") +{ + field(PINI, "YES") + field(DTYP, "asynOctetWrite") + field(OUT, "@asyn(OAV.MXSC,0,1)NDARRAY_PORT") + field(VAL, "Out") + info(autosaveFields, "VAL") +} diff --git a/tickit_devices/oav/db_files/EA-FSCN.db b/tickit_devices/oav/db_files/EA-FSCN.db new file mode 100755 index 00000000..d9a59446 --- /dev/null +++ b/tickit_devices/oav/db_files/EA-FSCN.db @@ -0,0 +1,12443 @@ +# Macros: +#% macro, P, Device Prefix +#% macro, R, Device Suffix +#% macro, PORT, Asyn Port name +#% macro, TIMEOUT, Timeout, default=1 +#% macro, ADDR, Asyn Port address, default=0 +#% gui, FSCN1.CAM, edmtab, ADGenICam.edl, P=BL03S-EA-FSCN-01,R=:CAM:,C=AVT_Manta_G125B + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_FirmwareVerMajor_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_FirmwareVerMajor") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_FirmwareVerMajor") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_FirmwareVerMajor") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_FirmwareVerMinor_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_FirmwareVerMinor") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_FirmwareVerMinor") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_FirmwareVerMinor") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_FirmwareVerBuild_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_FirmwareVerBuild") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_FirmwareVerBuild") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_FirmwareVerBuild") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_SensorType_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_SensorType") + field(ZRST, "Mono") + field(ZRVL, "0") + field(ONST, "Bayer") + field(ONVL, "1") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_SensorType") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_SensorType") + field(DOL, "0") + field(ZRST, "Mono") + field(ZRVL, "0") + field(ONST, "Bayer") + field(ONVL, "1") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_SensorBits_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_SensorBits") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_SensorBits") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_SensorBits") + field(DISA, "0") +} + +record(stringin, "BL03S-EA-FSCN-01:CAM:GC_DeviceVendorName_RBV") { + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_S_DeviceVendorName") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(stringin, "BL03S-EA-FSCN-01:CAM:GC_DeviceModelName_RBV") { + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_S_DeviceModelName") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(stringin, "BL03S-EA-FSCN-01:CAM:GC_DevFirVersion_RBV") { + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_S_DeviceFirmwareVersion") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(stringin, "BL03S-EA-FSCN-01:CAM:GC_DeviceID_RBV") { + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_S_DeviceID") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(stringin, "BL03S-EA-FSCN-01:CAM:GC_DevicePartNumber_RBV") { + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_S_DevicePartNumber") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_DeviceScanType_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_DeviceScanType") + field(ZRST, "Areascan") + field(ZRVL, "0") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_DeviceScanType") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_DeviceScanType") + field(DOL, "0") + field(ZRST, "Areascan") + field(ZRVL, "0") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_StrBytesPerSecond_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_StreamBytesPerSecond") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_StrBytesPerSecond") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_StreamBytesPerSecond") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_BanControlMode_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_BandwidthControlMode") + field(ZRST, "StreamBytesPerSe") + field(ZRVL, "0") + field(ONST, "SCPD") + field(ONVL, "1") + field(TWST, "Both") + field(TWVL, "2") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_BanControlMode") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_BandwidthControlMode") + field(DOL, "0") + field(ZRST, "StreamBytesPerSe") + field(ZRVL, "0") + field(ONST, "SCPD") + field(ONVL, "1") + field(TWST, "Both") + field(TWVL, "2") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_GevSCPSPacketSize_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_GevSCPSPacketSize") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_GevSCPSPacketSize") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_GevSCPSPacketSize") + field(DISA, "0") +} + +record(bi, "BL03S-EA-FSCN-01:CAM:GC_ChunkModeActive_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_B_ChunkModeActive") + field(SCAN, "I/O Intr") + field(ZNAM, "No") + field(ONAM, "Yes") + field(DISA, "0") +} + +record(bo, "BL03S-EA-FSCN-01:CAM:GC_ChunkModeActive") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_B_ChunkModeActive") + field(ZNAM, "No") + field(ONAM, "Yes") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_PayloadSize_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_PayloadSize") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_PayloadSize") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_PayloadSize") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_NonImaPayloadSize_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_NonImagePayloadSize") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_NonImaPayloadSize") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_NonImagePayloadSize") + field(DISA, "0") +} + +record(bi, "BL03S-EA-FSCN-01:CAM:GC_StrFraRatCon_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_B_StreamFrameRateConstrain") + field(SCAN, "I/O Intr") + field(ZNAM, "No") + field(ONAM, "Yes") + field(DISA, "0") +} + +record(bo, "BL03S-EA-FSCN-01:CAM:GC_StrFraRatCon") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_B_StreamFrameRateConstrain") + field(ZNAM, "No") + field(ONAM, "Yes") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_StreamHoldEnable_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_StreamHoldEnable") + field(ZRST, "Off") + field(ZRVL, "0") + field(ONST, "On") + field(ONVL, "1") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_StreamHoldEnable") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_StreamHoldEnable") + field(DOL, "0") + field(ZRST, "Off") + field(ZRVL, "0") + field(ONST, "On") + field(ONVL, "1") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_StrHoldCapacity_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_StreamHoldCapacity") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_StrHoldCapacity") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_StreamHoldCapacity") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_GevTimTicFre_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_GevTimestampTickFrequency") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_GevTimTicFre") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_GevTimestampTickFrequency") + field(DISA, "0") +} + +record(longout, "BL03S-EA-FSCN-01:CAM:GC_GevTimConLatch") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_C_GevTimestampControlLatch") + field(DISA, "0") +} + +record(longout, "BL03S-EA-FSCN-01:CAM:GC_GevTimConReset") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_C_GevTimestampControlReset") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_GevTimestampValue_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_GevTimestampValue") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_GevTimestampValue") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_GevTimestampValue") + field(DISA, "0") +} + +record(longout, "BL03S-EA-FSCN-01:CAM:GC_AcquisitionStart") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_C_AcquisitionStart") + field(DISA, "0") +} + +record(longout, "BL03S-EA-FSCN-01:CAM:GC_AcquisitionStop") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_C_AcquisitionStop") + field(DISA, "0") +} + +record(longout, "BL03S-EA-FSCN-01:CAM:GC_AcquisitionAbort") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_C_AcquisitionAbort") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_AcquisitionMode_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_AcquisitionMode") + field(ZRST, "Continuous") + field(ZRVL, "1") + field(ONST, "SingleFrame") + field(ONVL, "2") + field(TWST, "MultiFrame") + field(TWVL, "3") + field(THST, "Recorder") + field(THVL, "4") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_AcquisitionMode") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_AcquisitionMode") + field(DOL, "1") + field(ZRST, "Continuous") + field(ZRVL, "1") + field(ONST, "SingleFrame") + field(ONVL, "2") + field(TWST, "MultiFrame") + field(TWVL, "3") + field(THST, "Recorder") + field(THVL, "4") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_AcqFrameCount_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_AcquisitionFrameCount") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_AcqFrameCount") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_AcquisitionFrameCount") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_AcqFrameRateAbs_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_D_AcquisitionFrameRateAbs") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_AcqFrameRateAbs") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_D_AcquisitionFrameRateAbs") + field(PREC, "3") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_AcqFrameRateLimit_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_D_AcquisitionFrameRateLimit") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_AcqFrameRateLimit") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_D_AcquisitionFrameRateLimit") + field(PREC, "3") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_RecPreEventCount_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_RecorderPreEventCount") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_RecPreEventCount") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_RecorderPreEventCount") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_TriggerSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_TriggerSelector") + field(ZRST, "FrameStart") + field(ZRVL, "0") + field(ONST, "AcquisitionStart") + field(ONVL, "3") + field(TWST, "AcquisitionEnd") + field(TWVL, "4") + field(THST, "AcquisitionRecor") + field(THVL, "6") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_TriggerSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_TriggerSelector") + field(DOL, "0") + field(ZRST, "FrameStart") + field(ZRVL, "0") + field(ONST, "AcquisitionStart") + field(ONVL, "3") + field(TWST, "AcquisitionEnd") + field(TWVL, "4") + field(THST, "AcquisitionRecor") + field(THVL, "6") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_TriggerMode_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_TriggerMode") + field(ZRST, "Off") + field(ZRVL, "0") + field(ONST, "On") + field(ONVL, "1") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_TriggerMode") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_TriggerMode") + field(DOL, "0") + field(ZRST, "Off") + field(ZRVL, "0") + field(ONST, "On") + field(ONVL, "1") + field(DISA, "0") +} + +record(longout, "BL03S-EA-FSCN-01:CAM:GC_TriggerSoftware") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_C_TriggerSoftware") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_TriggerSource_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_TriggerSource") + field(ZRST, "Freerun") + field(ZRVL, "0") + field(ONST, "Line1") + field(ONVL, "1") + field(TWST, "Line2") + field(TWVL, "2") + field(THST, "Line3") + field(THVL, "3") + field(FRST, "Line4") + field(FRVL, "4") + field(FVST, "FixedRate") + field(FVVL, "5") + field(SXST, "Software") + field(SXVL, "6") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_TriggerSource") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_TriggerSource") + field(DOL, "0") + field(ZRST, "Freerun") + field(ZRVL, "0") + field(ONST, "Line1") + field(ONVL, "1") + field(TWST, "Line2") + field(TWVL, "2") + field(THST, "Line3") + field(THVL, "3") + field(FRST, "Line4") + field(FRVL, "4") + field(FVST, "FixedRate") + field(FVVL, "5") + field(SXST, "Software") + field(SXVL, "6") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_TriggerActivation_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_TriggerActivation") + field(ZRST, "RisingEdge") + field(ZRVL, "0") + field(ONST, "FallingEdge") + field(ONVL, "1") + field(TWST, "AnyEdge") + field(TWVL, "2") + field(THST, "LevelHigh") + field(THVL, "3") + field(FRST, "LevelLow") + field(FRVL, "4") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_TriggerActivation") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_TriggerActivation") + field(DOL, "0") + field(ZRST, "RisingEdge") + field(ZRVL, "0") + field(ONST, "FallingEdge") + field(ONVL, "1") + field(TWST, "AnyEdge") + field(TWVL, "2") + field(THST, "LevelHigh") + field(THVL, "3") + field(FRST, "LevelLow") + field(FRVL, "4") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_TriggerOverlap_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_TriggerOverlap") + field(ZRST, "Off") + field(ZRVL, "0") + field(ONST, "ReadOut") + field(ONVL, "1") + field(TWST, "PreviousFrame") + field(TWVL, "2") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_TriggerOverlap") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_TriggerOverlap") + field(DOL, "0") + field(ZRST, "Off") + field(ZRVL, "0") + field(ONST, "ReadOut") + field(ONVL, "1") + field(TWST, "PreviousFrame") + field(TWVL, "2") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_TriggerDelayAbs_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_D_TriggerDelayAbs") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_TriggerDelayAbs") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_D_TriggerDelayAbs") + field(PREC, "3") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_SensorWidth_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_SensorWidth") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_SensorWidth") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_SensorWidth") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_SensorHeight_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_SensorHeight") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_SensorHeight") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_SensorHeight") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_BinningHorizontal_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_BinningHorizontal") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_BinningHorizontal") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_BinningHorizontal") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_BinningVertical_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_BinningVertical") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_BinningVertical") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_BinningVertical") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_DecHorizontal_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_DecimationHorizontal") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_DecHorizontal") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_DecimationHorizontal") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_DecVertical_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_DecimationVertical") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_DecVertical") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_DecimationVertical") + field(DISA, "0") +} + +record(bi, "BL03S-EA-FSCN-01:CAM:GC_ReverseX_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_B_ReverseX") + field(SCAN, "I/O Intr") + field(ZNAM, "No") + field(ONAM, "Yes") + field(DISA, "0") +} + +record(bo, "BL03S-EA-FSCN-01:CAM:GC_ReverseX") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_B_ReverseX") + field(ZNAM, "No") + field(ONAM, "Yes") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_WidthMax_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_WidthMax") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_WidthMax") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_WidthMax") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_HeightMax_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_HeightMax") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_HeightMax") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_HeightMax") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_PixelFormat_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_PixelFormat") + field(ZRST, "Mono8") + field(ZRVL, "0x01080001") + field(ONST, "Mono10") + field(ONVL, "0x01100003") + field(TWST, "Mono12") + field(TWVL, "0x01100005") + field(THST, "Mono12Packed") + field(THVL, "0x010C0006") + field(FRST, "Mono14") + field(FRVL, "0x01100025") + field(FVST, "BayerGR8") + field(FVVL, "0x01080008") + field(SXST, "BayerRG8") + field(SXVL, "0x01080009") + field(SVST, "BayerBG8") + field(SVVL, "0x0108000B") + field(EIST, "BayerBG10") + field(EIVL, "0x0110000F") + field(NIST, "BayerGR12") + field(NIVL, "0x01100010") + field(TEST, "BayerRG12") + field(TEVL, "0x01100011") + field(ELST, "BayerGR12Packed") + field(ELVL, "0x010C002A") + field(TVST, "BayerRG12Packed") + field(TVVL, "0x010C002B") + field(TTST, "RGB8Packed") + field(TTVL, "0x02180014") + field(FTST, "BGR8Packed") + field(FTVL, "0x02180015") + field(FFST, "RGBA8Packed") + field(FFVL, "0x02200016") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_PixelFormat") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_PixelFormat") + field(DOL, "0x01080001") + field(ZRST, "Mono8") + field(ZRVL, "0x01080001") + field(ONST, "Mono10") + field(ONVL, "0x01100003") + field(TWST, "Mono12") + field(TWVL, "0x01100005") + field(THST, "Mono12Packed") + field(THVL, "0x010C0006") + field(FRST, "Mono14") + field(FRVL, "0x01100025") + field(FVST, "BayerGR8") + field(FVVL, "0x01080008") + field(SXST, "BayerRG8") + field(SXVL, "0x01080009") + field(SVST, "BayerBG8") + field(SVVL, "0x0108000B") + field(EIST, "BayerBG10") + field(EIVL, "0x0110000F") + field(NIST, "BayerGR12") + field(NIVL, "0x01100010") + field(TEST, "BayerRG12") + field(TEVL, "0x01100011") + field(ELST, "BayerGR12Packed") + field(ELVL, "0x010C002A") + field(TVST, "BayerRG12Packed") + field(TVVL, "0x010C002B") + field(TTST, "RGB8Packed") + field(TTVL, "0x02180014") + field(FTST, "BGR8Packed") + field(FTVL, "0x02180015") + field(FFST, "RGBA8Packed") + field(FFVL, "0x02200016") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_Width_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_Width") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_Width") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_Width") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_Height_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_Height") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_Height") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_Height") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_OffsetX_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_OffsetX") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_OffsetX") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_OffsetX") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_OffsetY_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_OffsetY") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_OffsetY") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_OffsetY") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_ImageSize_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_ImageSize") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_ImageSize") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_ImageSize") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_Gamma_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_D_Gamma") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_Gamma") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_D_Gamma") + field(PREC, "3") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_NirMode_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_NirMode") + field(ZRST, "Off") + field(ZRVL, "0") + field(ONST, "On_HighQuality") + field(ONVL, "1") + field(TWST, "On_Fast") + field(TWVL, "2") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_NirMode") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_NirMode") + field(DOL, "0") + field(ZRST, "Off") + field(ZRVL, "0") + field(ONST, "On_HighQuality") + field(ONVL, "1") + field(TWST, "On_Fast") + field(TWVL, "2") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_Hue_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_D_Hue") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_Hue") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_D_Hue") + field(PREC, "3") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_Saturation_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_D_Saturation") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_Saturation") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_D_Saturation") + field(PREC, "3") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_EdgeFilter_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_EdgeFilter") + field(ZRST, "Smooth2") + field(ZRVL, "14") + field(ONST, "Smooth1") + field(ONVL, "15") + field(TWST, "Off") + field(TWVL, "16") + field(THST, "Sharpen1") + field(THVL, "17") + field(FRST, "Sharpen2") + field(FRVL, "18") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_EdgeFilter") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_EdgeFilter") + field(DOL, "14") + field(ZRST, "Smooth2") + field(ZRVL, "14") + field(ONST, "Smooth1") + field(ONVL, "15") + field(TWST, "Off") + field(TWVL, "16") + field(THST, "Sharpen1") + field(THVL, "17") + field(FRST, "Sharpen2") + field(FRVL, "18") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_DSPSubregionLeft_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_DSPSubregionLeft") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_DSPSubregionLeft") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_DSPSubregionLeft") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_DSPSubregionTop_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_DSPSubregionTop") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_DSPSubregionTop") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_DSPSubregionTop") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_DSPSubregionRight_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_DSPSubregionRight") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_DSPSubregionRight") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_DSPSubregionRight") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_DSPSubBottom_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_DSPSubregionBottom") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_DSPSubBottom") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_DSPSubregionBottom") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_ExposureMode_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_ExposureMode") + field(ZRST, "Timed") + field(ZRVL, "1") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_ExposureMode") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_ExposureMode") + field(DOL, "1") + field(ZRST, "Timed") + field(ZRVL, "1") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_ExposureTimeAbs_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_D_ExposureTimeAbs") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_ExposureTimeAbs") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_D_ExposureTimeAbs") + field(PREC, "3") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_ExposureAuto_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_ExposureAuto") + field(ZRST, "Off") + field(ZRVL, "1") + field(ONST, "Once") + field(ONVL, "3") + field(TWST, "Continuous") + field(TWVL, "2") + field(THST, "other") + field(THVL, "4") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_ExposureAuto") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_ExposureAuto") + field(DOL, "1") + field(ZRST, "Off") + field(ZRVL, "1") + field(ONST, "Once") + field(ONVL, "3") + field(TWST, "Continuous") + field(TWVL, "2") + field(THST, "other") + field(THVL, "4") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_ExpAutoTarget_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_ExposureAutoTarget") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_ExpAutoTarget") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_ExposureAutoTarget") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_ExposureAutoAlg_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_ExposureAutoAlg") + field(ZRST, "Mean") + field(ZRVL, "0") + field(ONST, "FitRange") + field(ONVL, "1") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_ExposureAutoAlg") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_ExposureAutoAlg") + field(DOL, "0") + field(ZRST, "Mean") + field(ZRVL, "0") + field(ONST, "FitRange") + field(ONVL, "1") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_ExposureAutoMin_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_ExposureAutoMin") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_ExposureAutoMin") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_ExposureAutoMin") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_ExposureAutoMax_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_ExposureAutoMax") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_ExposureAutoMax") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_ExposureAutoMax") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_ExposureAutoRate_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_ExposureAutoRate") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_ExposureAutoRate") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_ExposureAutoRate") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_ExpAutoOutliers_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_ExposureAutoOutliers") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_ExpAutoOutliers") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_ExposureAutoOutliers") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_ExpAutoAdjustTol_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_ExposureAutoAdjustTol") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_ExpAutoAdjustTol") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_ExposureAutoAdjustTol") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_GainSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_GainSelector") + field(ZRST, "All") + field(ZRVL, "0") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_GainSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_GainSelector") + field(DOL, "0") + field(ZRST, "All") + field(ZRVL, "0") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_Gain_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_D_Gain") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_Gain") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_D_Gain") + field(PREC, "3") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_GainAuto_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_GainAuto") + field(ZRST, "Off") + field(ZRVL, "1") + field(ONST, "Once") + field(ONVL, "3") + field(TWST, "Continuous") + field(TWVL, "2") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_GainAuto") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_GainAuto") + field(DOL, "1") + field(ZRST, "Off") + field(ZRVL, "1") + field(ONST, "Once") + field(ONVL, "3") + field(TWST, "Continuous") + field(TWVL, "2") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_GainAutoTarget_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_GainAutoTarget") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_GainAutoTarget") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_GainAutoTarget") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_GainAutoMin_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_D_GainAutoMin") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_GainAutoMin") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_D_GainAutoMin") + field(PREC, "3") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_GainAutoMax_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_D_GainAutoMax") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_GainAutoMax") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_D_GainAutoMax") + field(PREC, "3") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_GainAutoRate_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_GainAutoRate") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_GainAutoRate") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_GainAutoRate") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_GainAutoOutliers_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_GainAutoOutliers") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_GainAutoOutliers") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_GainAutoOutliers") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_GainAutoAdjustTol_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_GainAutoAdjustTol") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_GainAutoAdjustTol") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_GainAutoAdjustTol") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_BlaLevelSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_BlackLevelSelector") + field(ZRST, "All") + field(ZRVL, "0") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_BlaLevelSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_BlackLevelSelector") + field(DOL, "0") + field(ZRST, "All") + field(ZRVL, "0") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_BlackLevel_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_D_BlackLevel") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_BlackLevel") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_D_BlackLevel") + field(PREC, "3") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_BalRatioSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_BalanceRatioSelector") + field(ZRST, "Red") + field(ZRVL, "0") + field(ONST, "Blue") + field(ONVL, "1") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_BalRatioSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_BalanceRatioSelector") + field(DOL, "0") + field(ZRST, "Red") + field(ZRVL, "0") + field(ONST, "Blue") + field(ONVL, "1") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_BalanceRatioAbs_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_D_BalanceRatioAbs") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_BalanceRatioAbs") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_D_BalanceRatioAbs") + field(PREC, "3") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_BalanceWhiteAuto_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_BalanceWhiteAuto") + field(ZRST, "Off") + field(ZRVL, "1") + field(ONST, "Once") + field(ONVL, "3") + field(TWST, "Continuous") + field(TWVL, "2") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_BalanceWhiteAuto") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_BalanceWhiteAuto") + field(DOL, "1") + field(ZRST, "Off") + field(ZRVL, "1") + field(ONST, "Once") + field(ONVL, "3") + field(TWST, "Continuous") + field(TWVL, "2") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_BalWhiteAutoRate_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_BalanceWhiteAutoRate") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_BalWhiteAutoRate") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_BalanceWhiteAutoRate") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_BalWhiAutAdjTol_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_BalanceWhiteAutoAdjustTol") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_BalWhiAutAdjTol") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_BalanceWhiteAutoAdjustTol") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_IrisMode_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_IrisMode") + field(ZRST, "Disabled") + field(ZRVL, "0") + field(ONST, "Video") + field(ONVL, "1") + field(TWST, "VideoOpen") + field(TWVL, "2") + field(THST, "VideoClose") + field(THVL, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_IrisMode") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_IrisMode") + field(DOL, "0") + field(ZRST, "Disabled") + field(ZRVL, "0") + field(ONST, "Video") + field(ONVL, "1") + field(TWST, "VideoOpen") + field(TWVL, "2") + field(THST, "VideoClose") + field(THVL, "3") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_IrisAutoTarget_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_IrisAutoTarget") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_IrisAutoTarget") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_IrisAutoTarget") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_IrisVideoLevel_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_IrisVideoLevel") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_IrisVideoLevel") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_IrisVideoLevel") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_IrisVideoLevelMin_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_IrisVideoLevelMin") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_IrisVideoLevelMin") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_IrisVideoLevelMin") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_IrisVideoLevelMax_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_IrisVideoLevelMax") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_IrisVideoLevelMax") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_IrisVideoLevelMax") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_DefMasColEnable_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_DefectMaskColumnEnable") + field(ZRST, "Disabled") + field(ZRVL, "0") + field(ONST, "Enabled") + field(ONVL, "1") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_DefMasColEnable") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_DefectMaskColumnEnable") + field(DOL, "0") + field(ZRST, "Disabled") + field(ZRVL, "0") + field(ONST, "Enabled") + field(ONVL, "1") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_DefMasPixelEnable_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_DefectMaskPixelEnable") + field(ZRST, "Disabled") + field(ZRVL, "0") + field(ONST, "Enabled") + field(ONVL, "1") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_DefMasPixelEnable") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_DefectMaskPixelEnable") + field(DOL, "0") + field(ZRST, "Disabled") + field(ZRVL, "0") + field(ONST, "Enabled") + field(ONVL, "1") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_VsubValue_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_VsubValue") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_VsubValue") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_VsubValue") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_ColTraSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_ColorTransformationSelector") + field(ZRST, "RGBtoRGB") + field(ZRVL, "0") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_ColTraSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_ColorTransformationSelector") + field(DOL, "0") + field(ZRST, "RGBtoRGB") + field(ZRVL, "0") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_ColTraMode_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_ColorTransformationMode") + field(ZRST, "Off") + field(ZRVL, "0") + field(ONST, "Manual") + field(ONVL, "1") + field(TWST, "Temp6500K") + field(TWVL, "2") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_ColTraMode") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_ColorTransformationMode") + field(DOL, "0") + field(ZRST, "Off") + field(ZRVL, "0") + field(ONST, "Manual") + field(ONVL, "1") + field(TWST, "Temp6500K") + field(TWVL, "2") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_ColTraValSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_ColorTransformationValueSelector") + field(ZRST, "Gain00") + field(ZRVL, "0") + field(ONST, "Gain01") + field(ONVL, "1") + field(TWST, "Gain02") + field(TWVL, "2") + field(THST, "Gain10") + field(THVL, "3") + field(FRST, "Gain11") + field(FRVL, "4") + field(FVST, "Gain12") + field(FVVL, "5") + field(SXST, "Gain20") + field(SXVL, "6") + field(SVST, "Gain21") + field(SVVL, "7") + field(EIST, "Gain22") + field(EIVL, "8") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_ColTraValSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_ColorTransformationValueSelector") + field(DOL, "0") + field(ZRST, "Gain00") + field(ZRVL, "0") + field(ONST, "Gain01") + field(ONVL, "1") + field(TWST, "Gain02") + field(TWVL, "2") + field(THST, "Gain10") + field(THVL, "3") + field(FRST, "Gain11") + field(FRVL, "4") + field(FVST, "Gain12") + field(FVVL, "5") + field(SXST, "Gain20") + field(SXVL, "6") + field(SVST, "Gain21") + field(SVVL, "7") + field(EIST, "Gain22") + field(EIVL, "8") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_ColTraValue_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_D_ColorTransformationValue") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_ColTraValue") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_D_ColorTransformationValue") + field(PREC, "3") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_LUTSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_LUTSelector") + field(ZRST, "LUT1") + field(ZRVL, "0") + field(ONST, "LUT2") + field(ONVL, "1") + field(TWST, "LUT3") + field(TWVL, "2") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_LUTSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_LUTSelector") + field(DOL, "0") + field(ZRST, "LUT1") + field(ZRVL, "0") + field(ONST, "LUT2") + field(ONVL, "1") + field(TWST, "LUT3") + field(TWVL, "2") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_LUTMode_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_LUTMode") + field(ZRST, "Luminance") + field(ZRVL, "0") + field(ONST, "Red") + field(ONVL, "1") + field(TWST, "Green") + field(TWVL, "2") + field(THST, "Blue") + field(THVL, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_LUTMode") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_LUTMode") + field(DOL, "0") + field(ZRST, "Luminance") + field(ZRVL, "0") + field(ONST, "Red") + field(ONVL, "1") + field(TWST, "Green") + field(TWVL, "2") + field(THST, "Blue") + field(THVL, "3") + field(DISA, "0") +} + +record(bi, "BL03S-EA-FSCN-01:CAM:GC_LUTEnable_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_B_LUTEnable") + field(SCAN, "I/O Intr") + field(ZNAM, "No") + field(ONAM, "Yes") + field(DISA, "0") +} + +record(bo, "BL03S-EA-FSCN-01:CAM:GC_LUTEnable") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_B_LUTEnable") + field(ZNAM, "No") + field(ONAM, "Yes") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_LUTIndex_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_LUTIndex") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_LUTIndex") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_LUTIndex") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_LUTValue_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_LUTValue") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_LUTValue") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_LUTValue") + field(DISA, "0") +} + +record(longout, "BL03S-EA-FSCN-01:CAM:GC_LUTLoad") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_C_LUTLoad") + field(DISA, "0") +} + +record(longout, "BL03S-EA-FSCN-01:CAM:GC_LUTSave") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_C_LUTSave") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_LUTBitDepthIn_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_LUTBitDepthIn") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_LUTBitDepthIn") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_LUTBitDepthIn") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_LUTBitDepthOut_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_LUTBitDepthOut") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_LUTBitDepthOut") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_LUTBitDepthOut") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_LUTAddress_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_LUTAddress") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_LUTAddress") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_LUTAddress") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_LUTSizeBytes_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_LUTSizeBytes") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_LUTSizeBytes") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_LUTSizeBytes") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_SyncInLevels_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_SyncInLevels") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_SyncInLevels") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_SyncInLevels") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_SyncInSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_SyncInSelector") + field(ZRST, "SyncIn1") + field(ZRVL, "0") + field(ONST, "SyncIn2") + field(ONVL, "1") + field(TWST, "SyncIn3") + field(TWVL, "2") + field(THST, "SyncIn4") + field(THVL, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_SyncInSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_SyncInSelector") + field(DOL, "0") + field(ZRST, "SyncIn1") + field(ZRVL, "0") + field(ONST, "SyncIn2") + field(ONVL, "1") + field(TWST, "SyncIn3") + field(TWVL, "2") + field(THST, "SyncIn4") + field(THVL, "3") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_SynInGlitchFilter_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_SyncInGlitchFilter") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_SynInGlitchFilter") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_SyncInGlitchFilter") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_SyncOutLevels_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_SyncOutLevels") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_SyncOutLevels") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_SyncOutLevels") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_SyncOutSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_SyncOutSelector") + field(ZRST, "SyncOut1") + field(ZRVL, "0") + field(ONST, "SyncOut2") + field(ONVL, "1") + field(TWST, "SyncOut3") + field(TWVL, "2") + field(THST, "SyncOut4") + field(THVL, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_SyncOutSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_SyncOutSelector") + field(DOL, "0") + field(ZRST, "SyncOut1") + field(ZRVL, "0") + field(ONST, "SyncOut2") + field(ONVL, "1") + field(TWST, "SyncOut3") + field(TWVL, "2") + field(THST, "SyncOut4") + field(THVL, "3") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_SyncOutSource_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_SyncOutSource") + field(ZRST, "GPO") + field(ZRVL, "0") + field(ONST, "AcquisitionTrigg") + field(ONVL, "1") + field(TWST, "FrameTriggerRead") + field(TWVL, "2") + field(THST, "FrameTrigger") + field(THVL, "3") + field(FRST, "Exposing") + field(FRVL, "4") + field(FVST, "FrameReadout") + field(FVVL, "5") + field(SXST, "Imaging") + field(SXVL, "6") + field(SVST, "Acquiring") + field(SVVL, "7") + field(EIST, "LineIn1") + field(EIVL, "8") + field(NIST, "LineIn2") + field(NIVL, "9") + field(TEST, "Strobe1") + field(TEVL, "12") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_SyncOutSource") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_SyncOutSource") + field(DOL, "0") + field(ZRST, "GPO") + field(ZRVL, "0") + field(ONST, "AcquisitionTrigg") + field(ONVL, "1") + field(TWST, "FrameTriggerRead") + field(TWVL, "2") + field(THST, "FrameTrigger") + field(THVL, "3") + field(FRST, "Exposing") + field(FRVL, "4") + field(FVST, "FrameReadout") + field(FVVL, "5") + field(SXST, "Imaging") + field(SXVL, "6") + field(SVST, "Acquiring") + field(SVVL, "7") + field(EIST, "LineIn1") + field(EIVL, "8") + field(NIST, "LineIn2") + field(NIVL, "9") + field(TEST, "Strobe1") + field(TEVL, "12") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_SyncOutPolarity_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_SyncOutPolarity") + field(ZRST, "Normal") + field(ZRVL, "0") + field(ONST, "Invert") + field(ONVL, "1") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_SyncOutPolarity") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_SyncOutPolarity") + field(DOL, "0") + field(ZRST, "Normal") + field(ZRVL, "0") + field(ONST, "Invert") + field(ONVL, "1") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_StrobeSource_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_StrobeSource") + field(ZRST, "AcquisitionTrigg") + field(ZRVL, "1") + field(ONST, "FrameTriggerRead") + field(ONVL, "2") + field(TWST, "FrameTrigger") + field(TWVL, "3") + field(THST, "Exposing") + field(THVL, "4") + field(FRST, "FrameReadout") + field(FRVL, "5") + field(FVST, "Acquiring") + field(FVVL, "7") + field(SXST, "LineIn1") + field(SXVL, "8") + field(SVST, "LineIn2") + field(SVVL, "9") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_StrobeSource") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_StrobeSource") + field(DOL, "1") + field(ZRST, "AcquisitionTrigg") + field(ZRVL, "1") + field(ONST, "FrameTriggerRead") + field(ONVL, "2") + field(TWST, "FrameTrigger") + field(TWVL, "3") + field(THST, "Exposing") + field(THVL, "4") + field(FRST, "FrameReadout") + field(FRVL, "5") + field(FVST, "Acquiring") + field(FVVL, "7") + field(SXST, "LineIn1") + field(SXVL, "8") + field(SVST, "LineIn2") + field(SVVL, "9") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_StrDurationMode_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_StrobeDurationMode") + field(ZRST, "Source") + field(ZRVL, "0") + field(ONST, "Controlled") + field(ONVL, "1") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_StrDurationMode") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_StrobeDurationMode") + field(DOL, "0") + field(ZRST, "Source") + field(ZRVL, "0") + field(ONST, "Controlled") + field(ONVL, "1") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_StrobeDelay_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_StrobeDelay") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_StrobeDelay") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_StrobeDelay") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_StrobeDuration_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_StrobeDuration") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_StrobeDuration") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_StrobeDuration") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_EventSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_EventSelector") + field(ZRST, "AcquisitionStart") + field(ZRVL, "40000") + field(ONST, "AcquisitionEnd") + field(ONVL, "40001") + field(TWST, "FrameTrigger") + field(TWVL, "40002") + field(THST, "ExposureEnd") + field(THVL, "40003") + field(FRST, "AcquisitionRecor") + field(FRVL, "40004") + field(FVST, "Line1RisingEdge") + field(FVVL, "40010") + field(SXST, "Line1FallingEdge") + field(SXVL, "40011") + field(SVST, "Line2RisingEdge") + field(SVVL, "40012") + field(EIST, "Line2FallingEdge") + field(EIVL, "40013") + field(NIST, "Line3RisingEdge") + field(NIVL, "40014") + field(TEST, "Line3FallingEdge") + field(TEVL, "40015") + field(ELST, "Line4RisingEdge") + field(ELVL, "40016") + field(TVST, "Line4FallingEdge") + field(TVVL, "40017") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_EventSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_EventSelector") + field(DOL, "40000") + field(ZRST, "AcquisitionStart") + field(ZRVL, "40000") + field(ONST, "AcquisitionEnd") + field(ONVL, "40001") + field(TWST, "FrameTrigger") + field(TWVL, "40002") + field(THST, "ExposureEnd") + field(THVL, "40003") + field(FRST, "AcquisitionRecor") + field(FRVL, "40004") + field(FVST, "Line1RisingEdge") + field(FVVL, "40010") + field(SXST, "Line1FallingEdge") + field(SXVL, "40011") + field(SVST, "Line2RisingEdge") + field(SVVL, "40012") + field(EIST, "Line2FallingEdge") + field(EIVL, "40013") + field(NIST, "Line3RisingEdge") + field(NIVL, "40014") + field(TEST, "Line3FallingEdge") + field(TEVL, "40015") + field(ELST, "Line4RisingEdge") + field(ELVL, "40016") + field(TVST, "Line4FallingEdge") + field(TVVL, "40017") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_EventNotification_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_EventNotification") + field(ZRST, "Off") + field(ZRVL, "0") + field(ONST, "On") + field(ONVL, "1") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_EventNotification") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_EventNotification") + field(DOL, "0") + field(ZRST, "Off") + field(ZRVL, "0") + field(ONST, "On") + field(ONVL, "1") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_EventsEnable1_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_EventsEnable1") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_EventsEnable1") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_EventsEnable1") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_EveAcqStart_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_EventAcquisitionStart") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_EveAcqStart") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_EventAcquisitionStart") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_EveAcquisitionEnd_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_EventAcquisitionEnd") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_EveAcquisitionEnd") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_EventAcquisitionEnd") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_EventFrameTrigger_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_EventFrameTrigger") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_EventFrameTrigger") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_EventFrameTrigger") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_EventExposureEnd_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_EventExposureEnd") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_EventExposureEnd") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_EventExposureEnd") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_EveAcqRecTrigger_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_EventAcquisitionRecordTrigger") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_EveAcqRecTrigger") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_EventAcquisitionRecordTrigger") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_EveLinRisingEdge_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_EventLine1RisingEdge") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_EveLinRisingEdge") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_EventLine1RisingEdge") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_EveLinFallingEdge_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_EventLine1FallingEdge") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_EveLinFallingEdge") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_EventLine1FallingEdge") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_EveLinRisingEdg0_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_EventLine2RisingEdge") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_EveLinRisingEdg0") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_EventLine2RisingEdge") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_EveLinFallingEdg0_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_EventLine2FallingEdge") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_EveLinFallingEdg0") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_EventLine2FallingEdge") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_EveLinRisingEdg1_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_EventLine3RisingEdge") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_EveLinRisingEdg1") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_EventLine3RisingEdge") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_EveLinFallingEdg1_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_EventLine3FallingEdge") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_EveLinFallingEdg1") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_EventLine3FallingEdge") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_EveLinRisingEdg2_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_EventLine4RisingEdge") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_EveLinRisingEdg2") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_EventLine4RisingEdge") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_EveLinFallingEdg2_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_EventLine4FallingEdge") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_EveLinFallingEdg2") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_EventLine4FallingEdge") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_EventOverflow_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_EventOverflow") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_EventOverflow") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_EventOverflow") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_EventError_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_EventError") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_EventError") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_EventError") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_UserSetSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_UserSetSelector") + field(ZRST, "Default") + field(ZRVL, "0") + field(ONST, "UserSet1") + field(ONVL, "1") + field(TWST, "UserSet2") + field(TWVL, "2") + field(THST, "UserSet3") + field(THVL, "3") + field(FRST, "UserSet4") + field(FRVL, "4") + field(FVST, "UserSet5") + field(FVVL, "5") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_UserSetSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_UserSetSelector") + field(DOL, "0") + field(ZRST, "Default") + field(ZRVL, "0") + field(ONST, "UserSet1") + field(ONVL, "1") + field(TWST, "UserSet2") + field(TWVL, "2") + field(THST, "UserSet3") + field(THVL, "3") + field(FRST, "UserSet4") + field(FRVL, "4") + field(FVST, "UserSet5") + field(FVVL, "5") + field(DISA, "0") +} + +record(longout, "BL03S-EA-FSCN-01:CAM:GC_UserSetLoad") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_C_UserSetLoad") + field(DISA, "0") +} + +record(longout, "BL03S-EA-FSCN-01:CAM:GC_UserSetSave") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_C_UserSetSave") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_UseSetDefSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_UserSetDefaultSelector") + field(ZRST, "Default") + field(ZRVL, "0") + field(ONST, "UserSet1") + field(ONVL, "1") + field(TWST, "UserSet2") + field(TWVL, "2") + field(THST, "UserSet3") + field(THVL, "3") + field(FRST, "UserSet4") + field(FRVL, "4") + field(FVST, "UserSet5") + field(FVVL, "5") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_UseSetDefSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_UserSetDefaultSelector") + field(DOL, "0") + field(ZRST, "Default") + field(ZRVL, "0") + field(ONST, "UserSet1") + field(ONVL, "1") + field(TWST, "UserSet2") + field(TWVL, "2") + field(THST, "UserSet3") + field(THVL, "3") + field(FRST, "UserSet4") + field(FRVL, "4") + field(FVST, "UserSet5") + field(FVVL, "5") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_LensVoltage_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_LensVoltage") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_LensVoltage") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_LensVoltage") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_LenVoltageControl_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_LensVoltageControl") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_LenVoltageControl") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_LensVoltageControl") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_LensDriveCommand_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_LensDriveCommand") + field(ZRST, "Stop") + field(ZRVL, "0") + field(ONST, "IrisTimedOpen") + field(ONVL, "1") + field(TWST, "IrisTimedClose") + field(TWVL, "2") + field(THST, "FocusTimedNear") + field(THVL, "3") + field(FRST, "FocusTimedFar") + field(FRVL, "4") + field(FVST, "ZoomTimedIn") + field(FVVL, "5") + field(SXST, "ZoomTimedOut") + field(SXVL, "6") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_LensDriveCommand") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_LensDriveCommand") + field(DOL, "0") + field(ZRST, "Stop") + field(ZRVL, "0") + field(ONST, "IrisTimedOpen") + field(ONVL, "1") + field(TWST, "IrisTimedClose") + field(TWVL, "2") + field(THST, "FocusTimedNear") + field(THVL, "3") + field(FRST, "FocusTimedFar") + field(FRVL, "4") + field(FVST, "ZoomTimedIn") + field(FVVL, "5") + field(SXST, "ZoomTimedOut") + field(SXVL, "6") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_LensDriveDuration_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_LensDriveDuration") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_LensDriveDuration") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_LensDriveDuration") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_PvDumTriSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_PvDummyTriggerSelector") + field(ZRST, "FrameStart") + field(ZRVL, "0") + field(ONST, "AcquisitionStart") + field(ONVL, "3") + field(TWST, "AcquisitionEnd") + field(TWVL, "4") + field(THST, "AcquisitionRecor") + field(THVL, "6") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_PvDumTriSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_PvDummyTriggerSelector") + field(DOL, "0") + field(ZRST, "FrameStart") + field(ZRVL, "0") + field(ONST, "AcquisitionStart") + field(ONVL, "3") + field(TWST, "AcquisitionEnd") + field(TWVL, "4") + field(THST, "AcquisitionRecor") + field(THVL, "6") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_PvDumFraStaTriMod_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_PvDummyFrameStartTriggerMode") + field(ZRST, "Freerun") + field(ZRVL, "2147483648") + field(ONST, "SyncIn1") + field(ONVL, "2147483649") + field(TWST, "SyncIn2") + field(TWVL, "2147483650") + field(THST, "SyncIn3") + field(THVL, "2147483651") + field(FRST, "SyncIn4") + field(FRVL, "2147483652") + field(FVST, "FixedRate") + field(FVVL, "2147483653") + field(SXST, "Software") + field(SXVL, "2147483654") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_PvDumFraStaTriMod") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_PvDummyFrameStartTriggerMode") + field(DOL, "2147483648") + field(ZRST, "Freerun") + field(ZRVL, "2147483648") + field(ONST, "SyncIn1") + field(ONVL, "2147483649") + field(TWST, "SyncIn2") + field(TWVL, "2147483650") + field(THST, "SyncIn3") + field(THVL, "2147483651") + field(FRST, "SyncIn4") + field(FRVL, "2147483652") + field(FVST, "FixedRate") + field(FVVL, "2147483653") + field(SXST, "Software") + field(SXVL, "2147483654") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_PvDumTriggerMode_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_E_PvDummyTriggerMode") + field(ZRST, "Disabled") + field(ZRVL, "0") + field(ONST, "SyncIn1") + field(ONVL, "2147483649") + field(TWST, "SyncIn2") + field(TWVL, "2147483650") + field(THST, "SyncIn3") + field(THVL, "2147483651") + field(FRST, "SyncIn4") + field(FRVL, "2147483652") + field(FVST, "FixedRate") + field(FVVL, "2147483653") + field(SXST, "Software") + field(SXVL, "2147483654") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_PvDumTriggerMode") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_E_PvDummyTriggerMode") + field(DOL, "0") + field(ZRST, "Disabled") + field(ZRVL, "0") + field(ONST, "SyncIn1") + field(ONVL, "2147483649") + field(TWST, "SyncIn2") + field(TWVL, "2147483650") + field(THST, "SyncIn3") + field(THVL, "2147483651") + field(FRST, "SyncIn4") + field(FRVL, "2147483652") + field(FVST, "FixedRate") + field(FVVL, "2147483653") + field(SXST, "Software") + field(SXVL, "2147483654") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_FraStaTriDelay_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_FrameStartTriggerDelay") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_FraStaTriDelay") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_FrameStartTriggerDelay") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_ExposureValue_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_ExposureValue") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_ExposureValue") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_ExposureValue") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_TimeStampValueLo_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_TimeStampValueLo") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_TimeStampValueLo") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_TimeStampValueLo") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_TimeStampValueHi_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_TimeStampValueHi") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_TimeStampValueHi") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_TimeStampValueHi") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_WhitebalValueRed_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_WhitebalValueRed") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_WhitebalValueRed") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_WhitebalValueRed") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_WhitebalValueBlue_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_WhitebalValueBlue") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_WhitebalValueBlue") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_WhitebalValueBlue") + field(DISA, "0") +} + +record(stringin, "BL03S-EA-FSCN-01:CAM:GC_ModelName_RBV") { + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_S_ModelName") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_GainValue_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_GainValue") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_GainValue") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_GainValue") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_PvGainAutoMin_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_PvGainAutoMin") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_PvGainAutoMin") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_PvGainAutoMin") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_PvGainAutoMax_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_PvGainAutoMax") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_PvGainAutoMax") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_PvGainAutoMax") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_OffsetValue_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN1.CAM,0,1)GC_I_OffsetValue") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_OffsetValue") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GC_I_OffsetValue") + field(DISA, "0") +} + +# Macros: +#% macro, P, Device Prefix +#% macro, R, Device Suffix +#% macro, PORT, Asyn Port name +#% macro, TIMEOUT, Timeout, default=1 +#% macro, ADDR, Asyn Port address, default=0 +#% gui, FSCN2.CAM, edmtab, ADGenICam.edl, P=BL03S-EA-FSCN-02,R=:CAM:,C=AVT_Manta_G125B + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_FirmwareVerMajor_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_FirmwareVerMajor") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_FirmwareVerMajor") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_FirmwareVerMajor") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_FirmwareVerMinor_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_FirmwareVerMinor") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_FirmwareVerMinor") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_FirmwareVerMinor") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_FirmwareVerBuild_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_FirmwareVerBuild") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_FirmwareVerBuild") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_FirmwareVerBuild") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_SensorType_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_SensorType") + field(ZRST, "Mono") + field(ZRVL, "0") + field(ONST, "Bayer") + field(ONVL, "1") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_SensorType") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_SensorType") + field(DOL, "0") + field(ZRST, "Mono") + field(ZRVL, "0") + field(ONST, "Bayer") + field(ONVL, "1") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_SensorBits_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_SensorBits") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_SensorBits") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_SensorBits") + field(DISA, "0") +} + +record(stringin, "BL03S-EA-FSCN-02:CAM:GC_DeviceVendorName_RBV") { + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_S_DeviceVendorName") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(stringin, "BL03S-EA-FSCN-02:CAM:GC_DeviceModelName_RBV") { + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_S_DeviceModelName") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(stringin, "BL03S-EA-FSCN-02:CAM:GC_DevFirVersion_RBV") { + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_S_DeviceFirmwareVersion") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(stringin, "BL03S-EA-FSCN-02:CAM:GC_DeviceID_RBV") { + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_S_DeviceID") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(stringin, "BL03S-EA-FSCN-02:CAM:GC_DevicePartNumber_RBV") { + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_S_DevicePartNumber") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_DeviceScanType_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_DeviceScanType") + field(ZRST, "Areascan") + field(ZRVL, "0") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_DeviceScanType") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_DeviceScanType") + field(DOL, "0") + field(ZRST, "Areascan") + field(ZRVL, "0") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_StrBytesPerSecond_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_StreamBytesPerSecond") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_StrBytesPerSecond") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_StreamBytesPerSecond") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_BanControlMode_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_BandwidthControlMode") + field(ZRST, "StreamBytesPerSe") + field(ZRVL, "0") + field(ONST, "SCPD") + field(ONVL, "1") + field(TWST, "Both") + field(TWVL, "2") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_BanControlMode") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_BandwidthControlMode") + field(DOL, "0") + field(ZRST, "StreamBytesPerSe") + field(ZRVL, "0") + field(ONST, "SCPD") + field(ONVL, "1") + field(TWST, "Both") + field(TWVL, "2") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_GevSCPSPacketSize_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_GevSCPSPacketSize") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_GevSCPSPacketSize") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_GevSCPSPacketSize") + field(DISA, "0") +} + +record(bi, "BL03S-EA-FSCN-02:CAM:GC_ChunkModeActive_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_B_ChunkModeActive") + field(SCAN, "I/O Intr") + field(ZNAM, "No") + field(ONAM, "Yes") + field(DISA, "0") +} + +record(bo, "BL03S-EA-FSCN-02:CAM:GC_ChunkModeActive") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_B_ChunkModeActive") + field(ZNAM, "No") + field(ONAM, "Yes") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_PayloadSize_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_PayloadSize") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_PayloadSize") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_PayloadSize") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_NonImaPayloadSize_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_NonImagePayloadSize") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_NonImaPayloadSize") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_NonImagePayloadSize") + field(DISA, "0") +} + +record(bi, "BL03S-EA-FSCN-02:CAM:GC_StrFraRatCon_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_B_StreamFrameRateConstrain") + field(SCAN, "I/O Intr") + field(ZNAM, "No") + field(ONAM, "Yes") + field(DISA, "0") +} + +record(bo, "BL03S-EA-FSCN-02:CAM:GC_StrFraRatCon") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_B_StreamFrameRateConstrain") + field(ZNAM, "No") + field(ONAM, "Yes") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_StreamHoldEnable_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_StreamHoldEnable") + field(ZRST, "Off") + field(ZRVL, "0") + field(ONST, "On") + field(ONVL, "1") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_StreamHoldEnable") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_StreamHoldEnable") + field(DOL, "0") + field(ZRST, "Off") + field(ZRVL, "0") + field(ONST, "On") + field(ONVL, "1") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_StrHoldCapacity_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_StreamHoldCapacity") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_StrHoldCapacity") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_StreamHoldCapacity") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_GevTimTicFre_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_GevTimestampTickFrequency") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_GevTimTicFre") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_GevTimestampTickFrequency") + field(DISA, "0") +} + +record(longout, "BL03S-EA-FSCN-02:CAM:GC_GevTimConLatch") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_C_GevTimestampControlLatch") + field(DISA, "0") +} + +record(longout, "BL03S-EA-FSCN-02:CAM:GC_GevTimConReset") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_C_GevTimestampControlReset") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_GevTimestampValue_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_GevTimestampValue") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_GevTimestampValue") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_GevTimestampValue") + field(DISA, "0") +} + +record(longout, "BL03S-EA-FSCN-02:CAM:GC_AcquisitionStart") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_C_AcquisitionStart") + field(DISA, "0") +} + +record(longout, "BL03S-EA-FSCN-02:CAM:GC_AcquisitionStop") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_C_AcquisitionStop") + field(DISA, "0") +} + +record(longout, "BL03S-EA-FSCN-02:CAM:GC_AcquisitionAbort") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_C_AcquisitionAbort") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_AcquisitionMode_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_AcquisitionMode") + field(ZRST, "Continuous") + field(ZRVL, "1") + field(ONST, "SingleFrame") + field(ONVL, "2") + field(TWST, "MultiFrame") + field(TWVL, "3") + field(THST, "Recorder") + field(THVL, "4") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_AcquisitionMode") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_AcquisitionMode") + field(DOL, "1") + field(ZRST, "Continuous") + field(ZRVL, "1") + field(ONST, "SingleFrame") + field(ONVL, "2") + field(TWST, "MultiFrame") + field(TWVL, "3") + field(THST, "Recorder") + field(THVL, "4") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_AcqFrameCount_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_AcquisitionFrameCount") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_AcqFrameCount") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_AcquisitionFrameCount") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_AcqFrameRateAbs_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_D_AcquisitionFrameRateAbs") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_AcqFrameRateAbs") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_D_AcquisitionFrameRateAbs") + field(PREC, "3") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_AcqFrameRateLimit_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_D_AcquisitionFrameRateLimit") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_AcqFrameRateLimit") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_D_AcquisitionFrameRateLimit") + field(PREC, "3") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_RecPreEventCount_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_RecorderPreEventCount") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_RecPreEventCount") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_RecorderPreEventCount") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_TriggerSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_TriggerSelector") + field(ZRST, "FrameStart") + field(ZRVL, "0") + field(ONST, "AcquisitionStart") + field(ONVL, "3") + field(TWST, "AcquisitionEnd") + field(TWVL, "4") + field(THST, "AcquisitionRecor") + field(THVL, "6") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_TriggerSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_TriggerSelector") + field(DOL, "0") + field(ZRST, "FrameStart") + field(ZRVL, "0") + field(ONST, "AcquisitionStart") + field(ONVL, "3") + field(TWST, "AcquisitionEnd") + field(TWVL, "4") + field(THST, "AcquisitionRecor") + field(THVL, "6") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_TriggerMode_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_TriggerMode") + field(ZRST, "Off") + field(ZRVL, "0") + field(ONST, "On") + field(ONVL, "1") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_TriggerMode") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_TriggerMode") + field(DOL, "0") + field(ZRST, "Off") + field(ZRVL, "0") + field(ONST, "On") + field(ONVL, "1") + field(DISA, "0") +} + +record(longout, "BL03S-EA-FSCN-02:CAM:GC_TriggerSoftware") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_C_TriggerSoftware") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_TriggerSource_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_TriggerSource") + field(ZRST, "Freerun") + field(ZRVL, "0") + field(ONST, "Line1") + field(ONVL, "1") + field(TWST, "Line2") + field(TWVL, "2") + field(THST, "Line3") + field(THVL, "3") + field(FRST, "Line4") + field(FRVL, "4") + field(FVST, "FixedRate") + field(FVVL, "5") + field(SXST, "Software") + field(SXVL, "6") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_TriggerSource") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_TriggerSource") + field(DOL, "0") + field(ZRST, "Freerun") + field(ZRVL, "0") + field(ONST, "Line1") + field(ONVL, "1") + field(TWST, "Line2") + field(TWVL, "2") + field(THST, "Line3") + field(THVL, "3") + field(FRST, "Line4") + field(FRVL, "4") + field(FVST, "FixedRate") + field(FVVL, "5") + field(SXST, "Software") + field(SXVL, "6") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_TriggerActivation_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_TriggerActivation") + field(ZRST, "RisingEdge") + field(ZRVL, "0") + field(ONST, "FallingEdge") + field(ONVL, "1") + field(TWST, "AnyEdge") + field(TWVL, "2") + field(THST, "LevelHigh") + field(THVL, "3") + field(FRST, "LevelLow") + field(FRVL, "4") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_TriggerActivation") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_TriggerActivation") + field(DOL, "0") + field(ZRST, "RisingEdge") + field(ZRVL, "0") + field(ONST, "FallingEdge") + field(ONVL, "1") + field(TWST, "AnyEdge") + field(TWVL, "2") + field(THST, "LevelHigh") + field(THVL, "3") + field(FRST, "LevelLow") + field(FRVL, "4") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_TriggerOverlap_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_TriggerOverlap") + field(ZRST, "Off") + field(ZRVL, "0") + field(ONST, "ReadOut") + field(ONVL, "1") + field(TWST, "PreviousFrame") + field(TWVL, "2") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_TriggerOverlap") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_TriggerOverlap") + field(DOL, "0") + field(ZRST, "Off") + field(ZRVL, "0") + field(ONST, "ReadOut") + field(ONVL, "1") + field(TWST, "PreviousFrame") + field(TWVL, "2") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_TriggerDelayAbs_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_D_TriggerDelayAbs") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_TriggerDelayAbs") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_D_TriggerDelayAbs") + field(PREC, "3") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_SensorWidth_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_SensorWidth") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_SensorWidth") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_SensorWidth") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_SensorHeight_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_SensorHeight") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_SensorHeight") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_SensorHeight") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_BinningHorizontal_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_BinningHorizontal") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_BinningHorizontal") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_BinningHorizontal") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_BinningVertical_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_BinningVertical") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_BinningVertical") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_BinningVertical") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_DecHorizontal_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_DecimationHorizontal") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_DecHorizontal") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_DecimationHorizontal") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_DecVertical_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_DecimationVertical") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_DecVertical") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_DecimationVertical") + field(DISA, "0") +} + +record(bi, "BL03S-EA-FSCN-02:CAM:GC_ReverseX_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_B_ReverseX") + field(SCAN, "I/O Intr") + field(ZNAM, "No") + field(ONAM, "Yes") + field(DISA, "0") +} + +record(bo, "BL03S-EA-FSCN-02:CAM:GC_ReverseX") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_B_ReverseX") + field(ZNAM, "No") + field(ONAM, "Yes") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_WidthMax_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_WidthMax") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_WidthMax") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_WidthMax") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_HeightMax_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_HeightMax") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_HeightMax") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_HeightMax") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_PixelFormat_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_PixelFormat") + field(ZRST, "Mono8") + field(ZRVL, "0x01080001") + field(ONST, "Mono10") + field(ONVL, "0x01100003") + field(TWST, "Mono12") + field(TWVL, "0x01100005") + field(THST, "Mono12Packed") + field(THVL, "0x010C0006") + field(FRST, "Mono14") + field(FRVL, "0x01100025") + field(FVST, "BayerGR8") + field(FVVL, "0x01080008") + field(SXST, "BayerRG8") + field(SXVL, "0x01080009") + field(SVST, "BayerBG8") + field(SVVL, "0x0108000B") + field(EIST, "BayerBG10") + field(EIVL, "0x0110000F") + field(NIST, "BayerGR12") + field(NIVL, "0x01100010") + field(TEST, "BayerRG12") + field(TEVL, "0x01100011") + field(ELST, "BayerGR12Packed") + field(ELVL, "0x010C002A") + field(TVST, "BayerRG12Packed") + field(TVVL, "0x010C002B") + field(TTST, "RGB8Packed") + field(TTVL, "0x02180014") + field(FTST, "BGR8Packed") + field(FTVL, "0x02180015") + field(FFST, "RGBA8Packed") + field(FFVL, "0x02200016") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_PixelFormat") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_PixelFormat") + field(DOL, "0x01080001") + field(ZRST, "Mono8") + field(ZRVL, "0x01080001") + field(ONST, "Mono10") + field(ONVL, "0x01100003") + field(TWST, "Mono12") + field(TWVL, "0x01100005") + field(THST, "Mono12Packed") + field(THVL, "0x010C0006") + field(FRST, "Mono14") + field(FRVL, "0x01100025") + field(FVST, "BayerGR8") + field(FVVL, "0x01080008") + field(SXST, "BayerRG8") + field(SXVL, "0x01080009") + field(SVST, "BayerBG8") + field(SVVL, "0x0108000B") + field(EIST, "BayerBG10") + field(EIVL, "0x0110000F") + field(NIST, "BayerGR12") + field(NIVL, "0x01100010") + field(TEST, "BayerRG12") + field(TEVL, "0x01100011") + field(ELST, "BayerGR12Packed") + field(ELVL, "0x010C002A") + field(TVST, "BayerRG12Packed") + field(TVVL, "0x010C002B") + field(TTST, "RGB8Packed") + field(TTVL, "0x02180014") + field(FTST, "BGR8Packed") + field(FTVL, "0x02180015") + field(FFST, "RGBA8Packed") + field(FFVL, "0x02200016") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_Width_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_Width") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_Width") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_Width") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_Height_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_Height") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_Height") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_Height") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_OffsetX_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_OffsetX") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_OffsetX") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_OffsetX") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_OffsetY_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_OffsetY") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_OffsetY") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_OffsetY") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_ImageSize_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_ImageSize") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_ImageSize") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_ImageSize") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_Gamma_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_D_Gamma") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_Gamma") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_D_Gamma") + field(PREC, "3") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_NirMode_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_NirMode") + field(ZRST, "Off") + field(ZRVL, "0") + field(ONST, "On_HighQuality") + field(ONVL, "1") + field(TWST, "On_Fast") + field(TWVL, "2") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_NirMode") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_NirMode") + field(DOL, "0") + field(ZRST, "Off") + field(ZRVL, "0") + field(ONST, "On_HighQuality") + field(ONVL, "1") + field(TWST, "On_Fast") + field(TWVL, "2") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_Hue_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_D_Hue") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_Hue") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_D_Hue") + field(PREC, "3") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_Saturation_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_D_Saturation") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_Saturation") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_D_Saturation") + field(PREC, "3") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_EdgeFilter_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_EdgeFilter") + field(ZRST, "Smooth2") + field(ZRVL, "14") + field(ONST, "Smooth1") + field(ONVL, "15") + field(TWST, "Off") + field(TWVL, "16") + field(THST, "Sharpen1") + field(THVL, "17") + field(FRST, "Sharpen2") + field(FRVL, "18") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_EdgeFilter") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_EdgeFilter") + field(DOL, "14") + field(ZRST, "Smooth2") + field(ZRVL, "14") + field(ONST, "Smooth1") + field(ONVL, "15") + field(TWST, "Off") + field(TWVL, "16") + field(THST, "Sharpen1") + field(THVL, "17") + field(FRST, "Sharpen2") + field(FRVL, "18") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_DSPSubregionLeft_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_DSPSubregionLeft") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_DSPSubregionLeft") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_DSPSubregionLeft") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_DSPSubregionTop_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_DSPSubregionTop") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_DSPSubregionTop") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_DSPSubregionTop") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_DSPSubregionRight_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_DSPSubregionRight") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_DSPSubregionRight") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_DSPSubregionRight") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_DSPSubBottom_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_DSPSubregionBottom") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_DSPSubBottom") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_DSPSubregionBottom") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_ExposureMode_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_ExposureMode") + field(ZRST, "Timed") + field(ZRVL, "1") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_ExposureMode") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_ExposureMode") + field(DOL, "1") + field(ZRST, "Timed") + field(ZRVL, "1") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_ExposureTimeAbs_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_D_ExposureTimeAbs") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_ExposureTimeAbs") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_D_ExposureTimeAbs") + field(PREC, "3") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_ExposureAuto_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_ExposureAuto") + field(ZRST, "Off") + field(ZRVL, "1") + field(ONST, "Once") + field(ONVL, "3") + field(TWST, "Continuous") + field(TWVL, "2") + field(THST, "other") + field(THVL, "4") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_ExposureAuto") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_ExposureAuto") + field(DOL, "1") + field(ZRST, "Off") + field(ZRVL, "1") + field(ONST, "Once") + field(ONVL, "3") + field(TWST, "Continuous") + field(TWVL, "2") + field(THST, "other") + field(THVL, "4") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_ExpAutoTarget_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_ExposureAutoTarget") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_ExpAutoTarget") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_ExposureAutoTarget") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_ExposureAutoAlg_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_ExposureAutoAlg") + field(ZRST, "Mean") + field(ZRVL, "0") + field(ONST, "FitRange") + field(ONVL, "1") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_ExposureAutoAlg") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_ExposureAutoAlg") + field(DOL, "0") + field(ZRST, "Mean") + field(ZRVL, "0") + field(ONST, "FitRange") + field(ONVL, "1") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_ExposureAutoMin_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_ExposureAutoMin") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_ExposureAutoMin") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_ExposureAutoMin") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_ExposureAutoMax_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_ExposureAutoMax") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_ExposureAutoMax") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_ExposureAutoMax") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_ExposureAutoRate_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_ExposureAutoRate") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_ExposureAutoRate") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_ExposureAutoRate") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_ExpAutoOutliers_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_ExposureAutoOutliers") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_ExpAutoOutliers") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_ExposureAutoOutliers") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_ExpAutoAdjustTol_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_ExposureAutoAdjustTol") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_ExpAutoAdjustTol") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_ExposureAutoAdjustTol") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_GainSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_GainSelector") + field(ZRST, "All") + field(ZRVL, "0") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_GainSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_GainSelector") + field(DOL, "0") + field(ZRST, "All") + field(ZRVL, "0") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_Gain_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_D_Gain") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_Gain") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_D_Gain") + field(PREC, "3") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_GainAuto_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_GainAuto") + field(ZRST, "Off") + field(ZRVL, "1") + field(ONST, "Once") + field(ONVL, "3") + field(TWST, "Continuous") + field(TWVL, "2") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_GainAuto") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_GainAuto") + field(DOL, "1") + field(ZRST, "Off") + field(ZRVL, "1") + field(ONST, "Once") + field(ONVL, "3") + field(TWST, "Continuous") + field(TWVL, "2") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_GainAutoTarget_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_GainAutoTarget") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_GainAutoTarget") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_GainAutoTarget") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_GainAutoMin_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_D_GainAutoMin") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_GainAutoMin") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_D_GainAutoMin") + field(PREC, "3") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_GainAutoMax_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_D_GainAutoMax") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_GainAutoMax") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_D_GainAutoMax") + field(PREC, "3") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_GainAutoRate_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_GainAutoRate") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_GainAutoRate") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_GainAutoRate") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_GainAutoOutliers_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_GainAutoOutliers") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_GainAutoOutliers") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_GainAutoOutliers") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_GainAutoAdjustTol_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_GainAutoAdjustTol") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_GainAutoAdjustTol") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_GainAutoAdjustTol") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_BlaLevelSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_BlackLevelSelector") + field(ZRST, "All") + field(ZRVL, "0") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_BlaLevelSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_BlackLevelSelector") + field(DOL, "0") + field(ZRST, "All") + field(ZRVL, "0") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_BlackLevel_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_D_BlackLevel") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_BlackLevel") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_D_BlackLevel") + field(PREC, "3") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_BalRatioSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_BalanceRatioSelector") + field(ZRST, "Red") + field(ZRVL, "0") + field(ONST, "Blue") + field(ONVL, "1") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_BalRatioSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_BalanceRatioSelector") + field(DOL, "0") + field(ZRST, "Red") + field(ZRVL, "0") + field(ONST, "Blue") + field(ONVL, "1") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_BalanceRatioAbs_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_D_BalanceRatioAbs") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_BalanceRatioAbs") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_D_BalanceRatioAbs") + field(PREC, "3") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_BalanceWhiteAuto_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_BalanceWhiteAuto") + field(ZRST, "Off") + field(ZRVL, "1") + field(ONST, "Once") + field(ONVL, "3") + field(TWST, "Continuous") + field(TWVL, "2") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_BalanceWhiteAuto") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_BalanceWhiteAuto") + field(DOL, "1") + field(ZRST, "Off") + field(ZRVL, "1") + field(ONST, "Once") + field(ONVL, "3") + field(TWST, "Continuous") + field(TWVL, "2") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_BalWhiteAutoRate_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_BalanceWhiteAutoRate") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_BalWhiteAutoRate") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_BalanceWhiteAutoRate") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_BalWhiAutAdjTol_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_BalanceWhiteAutoAdjustTol") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_BalWhiAutAdjTol") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_BalanceWhiteAutoAdjustTol") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_IrisMode_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_IrisMode") + field(ZRST, "Disabled") + field(ZRVL, "0") + field(ONST, "Video") + field(ONVL, "1") + field(TWST, "VideoOpen") + field(TWVL, "2") + field(THST, "VideoClose") + field(THVL, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_IrisMode") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_IrisMode") + field(DOL, "0") + field(ZRST, "Disabled") + field(ZRVL, "0") + field(ONST, "Video") + field(ONVL, "1") + field(TWST, "VideoOpen") + field(TWVL, "2") + field(THST, "VideoClose") + field(THVL, "3") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_IrisAutoTarget_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_IrisAutoTarget") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_IrisAutoTarget") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_IrisAutoTarget") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_IrisVideoLevel_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_IrisVideoLevel") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_IrisVideoLevel") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_IrisVideoLevel") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_IrisVideoLevelMin_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_IrisVideoLevelMin") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_IrisVideoLevelMin") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_IrisVideoLevelMin") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_IrisVideoLevelMax_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_IrisVideoLevelMax") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_IrisVideoLevelMax") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_IrisVideoLevelMax") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_DefMasColEnable_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_DefectMaskColumnEnable") + field(ZRST, "Disabled") + field(ZRVL, "0") + field(ONST, "Enabled") + field(ONVL, "1") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_DefMasColEnable") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_DefectMaskColumnEnable") + field(DOL, "0") + field(ZRST, "Disabled") + field(ZRVL, "0") + field(ONST, "Enabled") + field(ONVL, "1") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_DefMasPixelEnable_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_DefectMaskPixelEnable") + field(ZRST, "Disabled") + field(ZRVL, "0") + field(ONST, "Enabled") + field(ONVL, "1") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_DefMasPixelEnable") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_DefectMaskPixelEnable") + field(DOL, "0") + field(ZRST, "Disabled") + field(ZRVL, "0") + field(ONST, "Enabled") + field(ONVL, "1") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_VsubValue_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_VsubValue") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_VsubValue") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_VsubValue") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_ColTraSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_ColorTransformationSelector") + field(ZRST, "RGBtoRGB") + field(ZRVL, "0") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_ColTraSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_ColorTransformationSelector") + field(DOL, "0") + field(ZRST, "RGBtoRGB") + field(ZRVL, "0") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_ColTraMode_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_ColorTransformationMode") + field(ZRST, "Off") + field(ZRVL, "0") + field(ONST, "Manual") + field(ONVL, "1") + field(TWST, "Temp6500K") + field(TWVL, "2") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_ColTraMode") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_ColorTransformationMode") + field(DOL, "0") + field(ZRST, "Off") + field(ZRVL, "0") + field(ONST, "Manual") + field(ONVL, "1") + field(TWST, "Temp6500K") + field(TWVL, "2") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_ColTraValSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_ColorTransformationValueSelector") + field(ZRST, "Gain00") + field(ZRVL, "0") + field(ONST, "Gain01") + field(ONVL, "1") + field(TWST, "Gain02") + field(TWVL, "2") + field(THST, "Gain10") + field(THVL, "3") + field(FRST, "Gain11") + field(FRVL, "4") + field(FVST, "Gain12") + field(FVVL, "5") + field(SXST, "Gain20") + field(SXVL, "6") + field(SVST, "Gain21") + field(SVVL, "7") + field(EIST, "Gain22") + field(EIVL, "8") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_ColTraValSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_ColorTransformationValueSelector") + field(DOL, "0") + field(ZRST, "Gain00") + field(ZRVL, "0") + field(ONST, "Gain01") + field(ONVL, "1") + field(TWST, "Gain02") + field(TWVL, "2") + field(THST, "Gain10") + field(THVL, "3") + field(FRST, "Gain11") + field(FRVL, "4") + field(FVST, "Gain12") + field(FVVL, "5") + field(SXST, "Gain20") + field(SXVL, "6") + field(SVST, "Gain21") + field(SVVL, "7") + field(EIST, "Gain22") + field(EIVL, "8") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_ColTraValue_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_D_ColorTransformationValue") + field(PREC, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_ColTraValue") { + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_D_ColorTransformationValue") + field(PREC, "3") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_LUTSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_LUTSelector") + field(ZRST, "LUT1") + field(ZRVL, "0") + field(ONST, "LUT2") + field(ONVL, "1") + field(TWST, "LUT3") + field(TWVL, "2") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_LUTSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_LUTSelector") + field(DOL, "0") + field(ZRST, "LUT1") + field(ZRVL, "0") + field(ONST, "LUT2") + field(ONVL, "1") + field(TWST, "LUT3") + field(TWVL, "2") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_LUTMode_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_LUTMode") + field(ZRST, "Luminance") + field(ZRVL, "0") + field(ONST, "Red") + field(ONVL, "1") + field(TWST, "Green") + field(TWVL, "2") + field(THST, "Blue") + field(THVL, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_LUTMode") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_LUTMode") + field(DOL, "0") + field(ZRST, "Luminance") + field(ZRVL, "0") + field(ONST, "Red") + field(ONVL, "1") + field(TWST, "Green") + field(TWVL, "2") + field(THST, "Blue") + field(THVL, "3") + field(DISA, "0") +} + +record(bi, "BL03S-EA-FSCN-02:CAM:GC_LUTEnable_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_B_LUTEnable") + field(SCAN, "I/O Intr") + field(ZNAM, "No") + field(ONAM, "Yes") + field(DISA, "0") +} + +record(bo, "BL03S-EA-FSCN-02:CAM:GC_LUTEnable") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_B_LUTEnable") + field(ZNAM, "No") + field(ONAM, "Yes") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_LUTIndex_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_LUTIndex") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_LUTIndex") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_LUTIndex") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_LUTValue_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_LUTValue") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_LUTValue") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_LUTValue") + field(DISA, "0") +} + +record(longout, "BL03S-EA-FSCN-02:CAM:GC_LUTLoad") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_C_LUTLoad") + field(DISA, "0") +} + +record(longout, "BL03S-EA-FSCN-02:CAM:GC_LUTSave") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_C_LUTSave") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_LUTBitDepthIn_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_LUTBitDepthIn") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_LUTBitDepthIn") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_LUTBitDepthIn") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_LUTBitDepthOut_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_LUTBitDepthOut") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_LUTBitDepthOut") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_LUTBitDepthOut") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_LUTAddress_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_LUTAddress") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_LUTAddress") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_LUTAddress") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_LUTSizeBytes_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_LUTSizeBytes") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_LUTSizeBytes") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_LUTSizeBytes") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_SyncInLevels_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_SyncInLevels") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_SyncInLevels") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_SyncInLevels") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_SyncInSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_SyncInSelector") + field(ZRST, "SyncIn1") + field(ZRVL, "0") + field(ONST, "SyncIn2") + field(ONVL, "1") + field(TWST, "SyncIn3") + field(TWVL, "2") + field(THST, "SyncIn4") + field(THVL, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_SyncInSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_SyncInSelector") + field(DOL, "0") + field(ZRST, "SyncIn1") + field(ZRVL, "0") + field(ONST, "SyncIn2") + field(ONVL, "1") + field(TWST, "SyncIn3") + field(TWVL, "2") + field(THST, "SyncIn4") + field(THVL, "3") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_SynInGlitchFilter_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_SyncInGlitchFilter") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_SynInGlitchFilter") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_SyncInGlitchFilter") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_SyncOutLevels_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_SyncOutLevels") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_SyncOutLevels") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_SyncOutLevels") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_SyncOutSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_SyncOutSelector") + field(ZRST, "SyncOut1") + field(ZRVL, "0") + field(ONST, "SyncOut2") + field(ONVL, "1") + field(TWST, "SyncOut3") + field(TWVL, "2") + field(THST, "SyncOut4") + field(THVL, "3") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_SyncOutSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_SyncOutSelector") + field(DOL, "0") + field(ZRST, "SyncOut1") + field(ZRVL, "0") + field(ONST, "SyncOut2") + field(ONVL, "1") + field(TWST, "SyncOut3") + field(TWVL, "2") + field(THST, "SyncOut4") + field(THVL, "3") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_SyncOutSource_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_SyncOutSource") + field(ZRST, "GPO") + field(ZRVL, "0") + field(ONST, "AcquisitionTrigg") + field(ONVL, "1") + field(TWST, "FrameTriggerRead") + field(TWVL, "2") + field(THST, "FrameTrigger") + field(THVL, "3") + field(FRST, "Exposing") + field(FRVL, "4") + field(FVST, "FrameReadout") + field(FVVL, "5") + field(SXST, "Imaging") + field(SXVL, "6") + field(SVST, "Acquiring") + field(SVVL, "7") + field(EIST, "LineIn1") + field(EIVL, "8") + field(NIST, "LineIn2") + field(NIVL, "9") + field(TEST, "Strobe1") + field(TEVL, "12") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_SyncOutSource") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_SyncOutSource") + field(DOL, "0") + field(ZRST, "GPO") + field(ZRVL, "0") + field(ONST, "AcquisitionTrigg") + field(ONVL, "1") + field(TWST, "FrameTriggerRead") + field(TWVL, "2") + field(THST, "FrameTrigger") + field(THVL, "3") + field(FRST, "Exposing") + field(FRVL, "4") + field(FVST, "FrameReadout") + field(FVVL, "5") + field(SXST, "Imaging") + field(SXVL, "6") + field(SVST, "Acquiring") + field(SVVL, "7") + field(EIST, "LineIn1") + field(EIVL, "8") + field(NIST, "LineIn2") + field(NIVL, "9") + field(TEST, "Strobe1") + field(TEVL, "12") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_SyncOutPolarity_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_SyncOutPolarity") + field(ZRST, "Normal") + field(ZRVL, "0") + field(ONST, "Invert") + field(ONVL, "1") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_SyncOutPolarity") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_SyncOutPolarity") + field(DOL, "0") + field(ZRST, "Normal") + field(ZRVL, "0") + field(ONST, "Invert") + field(ONVL, "1") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_StrobeSource_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_StrobeSource") + field(ZRST, "AcquisitionTrigg") + field(ZRVL, "1") + field(ONST, "FrameTriggerRead") + field(ONVL, "2") + field(TWST, "FrameTrigger") + field(TWVL, "3") + field(THST, "Exposing") + field(THVL, "4") + field(FRST, "FrameReadout") + field(FRVL, "5") + field(FVST, "Acquiring") + field(FVVL, "7") + field(SXST, "LineIn1") + field(SXVL, "8") + field(SVST, "LineIn2") + field(SVVL, "9") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_StrobeSource") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_StrobeSource") + field(DOL, "1") + field(ZRST, "AcquisitionTrigg") + field(ZRVL, "1") + field(ONST, "FrameTriggerRead") + field(ONVL, "2") + field(TWST, "FrameTrigger") + field(TWVL, "3") + field(THST, "Exposing") + field(THVL, "4") + field(FRST, "FrameReadout") + field(FRVL, "5") + field(FVST, "Acquiring") + field(FVVL, "7") + field(SXST, "LineIn1") + field(SXVL, "8") + field(SVST, "LineIn2") + field(SVVL, "9") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_StrDurationMode_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_StrobeDurationMode") + field(ZRST, "Source") + field(ZRVL, "0") + field(ONST, "Controlled") + field(ONVL, "1") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_StrDurationMode") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_StrobeDurationMode") + field(DOL, "0") + field(ZRST, "Source") + field(ZRVL, "0") + field(ONST, "Controlled") + field(ONVL, "1") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_StrobeDelay_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_StrobeDelay") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_StrobeDelay") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_StrobeDelay") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_StrobeDuration_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_StrobeDuration") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_StrobeDuration") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_StrobeDuration") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_EventSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_EventSelector") + field(ZRST, "AcquisitionStart") + field(ZRVL, "40000") + field(ONST, "AcquisitionEnd") + field(ONVL, "40001") + field(TWST, "FrameTrigger") + field(TWVL, "40002") + field(THST, "ExposureEnd") + field(THVL, "40003") + field(FRST, "AcquisitionRecor") + field(FRVL, "40004") + field(FVST, "Line1RisingEdge") + field(FVVL, "40010") + field(SXST, "Line1FallingEdge") + field(SXVL, "40011") + field(SVST, "Line2RisingEdge") + field(SVVL, "40012") + field(EIST, "Line2FallingEdge") + field(EIVL, "40013") + field(NIST, "Line3RisingEdge") + field(NIVL, "40014") + field(TEST, "Line3FallingEdge") + field(TEVL, "40015") + field(ELST, "Line4RisingEdge") + field(ELVL, "40016") + field(TVST, "Line4FallingEdge") + field(TVVL, "40017") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_EventSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_EventSelector") + field(DOL, "40000") + field(ZRST, "AcquisitionStart") + field(ZRVL, "40000") + field(ONST, "AcquisitionEnd") + field(ONVL, "40001") + field(TWST, "FrameTrigger") + field(TWVL, "40002") + field(THST, "ExposureEnd") + field(THVL, "40003") + field(FRST, "AcquisitionRecor") + field(FRVL, "40004") + field(FVST, "Line1RisingEdge") + field(FVVL, "40010") + field(SXST, "Line1FallingEdge") + field(SXVL, "40011") + field(SVST, "Line2RisingEdge") + field(SVVL, "40012") + field(EIST, "Line2FallingEdge") + field(EIVL, "40013") + field(NIST, "Line3RisingEdge") + field(NIVL, "40014") + field(TEST, "Line3FallingEdge") + field(TEVL, "40015") + field(ELST, "Line4RisingEdge") + field(ELVL, "40016") + field(TVST, "Line4FallingEdge") + field(TVVL, "40017") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_EventNotification_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_EventNotification") + field(ZRST, "Off") + field(ZRVL, "0") + field(ONST, "On") + field(ONVL, "1") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_EventNotification") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_EventNotification") + field(DOL, "0") + field(ZRST, "Off") + field(ZRVL, "0") + field(ONST, "On") + field(ONVL, "1") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_EventsEnable1_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_EventsEnable1") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_EventsEnable1") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_EventsEnable1") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_EveAcqStart_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_EventAcquisitionStart") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_EveAcqStart") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_EventAcquisitionStart") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_EveAcquisitionEnd_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_EventAcquisitionEnd") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_EveAcquisitionEnd") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_EventAcquisitionEnd") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_EventFrameTrigger_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_EventFrameTrigger") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_EventFrameTrigger") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_EventFrameTrigger") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_EventExposureEnd_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_EventExposureEnd") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_EventExposureEnd") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_EventExposureEnd") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_EveAcqRecTrigger_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_EventAcquisitionRecordTrigger") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_EveAcqRecTrigger") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_EventAcquisitionRecordTrigger") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_EveLinRisingEdge_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_EventLine1RisingEdge") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_EveLinRisingEdge") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_EventLine1RisingEdge") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_EveLinFallingEdge_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_EventLine1FallingEdge") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_EveLinFallingEdge") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_EventLine1FallingEdge") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_EveLinRisingEdg0_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_EventLine2RisingEdge") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_EveLinRisingEdg0") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_EventLine2RisingEdge") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_EveLinFallingEdg0_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_EventLine2FallingEdge") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_EveLinFallingEdg0") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_EventLine2FallingEdge") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_EveLinRisingEdg1_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_EventLine3RisingEdge") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_EveLinRisingEdg1") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_EventLine3RisingEdge") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_EveLinFallingEdg1_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_EventLine3FallingEdge") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_EveLinFallingEdg1") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_EventLine3FallingEdge") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_EveLinRisingEdg2_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_EventLine4RisingEdge") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_EveLinRisingEdg2") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_EventLine4RisingEdge") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_EveLinFallingEdg2_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_EventLine4FallingEdge") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_EveLinFallingEdg2") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_EventLine4FallingEdge") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_EventOverflow_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_EventOverflow") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_EventOverflow") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_EventOverflow") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_EventError_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_EventError") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_EventError") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_EventError") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_UserSetSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_UserSetSelector") + field(ZRST, "Default") + field(ZRVL, "0") + field(ONST, "UserSet1") + field(ONVL, "1") + field(TWST, "UserSet2") + field(TWVL, "2") + field(THST, "UserSet3") + field(THVL, "3") + field(FRST, "UserSet4") + field(FRVL, "4") + field(FVST, "UserSet5") + field(FVVL, "5") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_UserSetSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_UserSetSelector") + field(DOL, "0") + field(ZRST, "Default") + field(ZRVL, "0") + field(ONST, "UserSet1") + field(ONVL, "1") + field(TWST, "UserSet2") + field(TWVL, "2") + field(THST, "UserSet3") + field(THVL, "3") + field(FRST, "UserSet4") + field(FRVL, "4") + field(FVST, "UserSet5") + field(FVVL, "5") + field(DISA, "0") +} + +record(longout, "BL03S-EA-FSCN-02:CAM:GC_UserSetLoad") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_C_UserSetLoad") + field(DISA, "0") +} + +record(longout, "BL03S-EA-FSCN-02:CAM:GC_UserSetSave") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_C_UserSetSave") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_UseSetDefSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_UserSetDefaultSelector") + field(ZRST, "Default") + field(ZRVL, "0") + field(ONST, "UserSet1") + field(ONVL, "1") + field(TWST, "UserSet2") + field(TWVL, "2") + field(THST, "UserSet3") + field(THVL, "3") + field(FRST, "UserSet4") + field(FRVL, "4") + field(FVST, "UserSet5") + field(FVVL, "5") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_UseSetDefSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_UserSetDefaultSelector") + field(DOL, "0") + field(ZRST, "Default") + field(ZRVL, "0") + field(ONST, "UserSet1") + field(ONVL, "1") + field(TWST, "UserSet2") + field(TWVL, "2") + field(THST, "UserSet3") + field(THVL, "3") + field(FRST, "UserSet4") + field(FRVL, "4") + field(FVST, "UserSet5") + field(FVVL, "5") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_LensVoltage_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_LensVoltage") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_LensVoltage") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_LensVoltage") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_LenVoltageControl_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_LensVoltageControl") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_LenVoltageControl") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_LensVoltageControl") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_LensDriveCommand_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_LensDriveCommand") + field(ZRST, "Stop") + field(ZRVL, "0") + field(ONST, "IrisTimedOpen") + field(ONVL, "1") + field(TWST, "IrisTimedClose") + field(TWVL, "2") + field(THST, "FocusTimedNear") + field(THVL, "3") + field(FRST, "FocusTimedFar") + field(FRVL, "4") + field(FVST, "ZoomTimedIn") + field(FVVL, "5") + field(SXST, "ZoomTimedOut") + field(SXVL, "6") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_LensDriveCommand") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_LensDriveCommand") + field(DOL, "0") + field(ZRST, "Stop") + field(ZRVL, "0") + field(ONST, "IrisTimedOpen") + field(ONVL, "1") + field(TWST, "IrisTimedClose") + field(TWVL, "2") + field(THST, "FocusTimedNear") + field(THVL, "3") + field(FRST, "FocusTimedFar") + field(FRVL, "4") + field(FVST, "ZoomTimedIn") + field(FVVL, "5") + field(SXST, "ZoomTimedOut") + field(SXVL, "6") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_LensDriveDuration_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_LensDriveDuration") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_LensDriveDuration") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_LensDriveDuration") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_PvDumTriSelector_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_PvDummyTriggerSelector") + field(ZRST, "FrameStart") + field(ZRVL, "0") + field(ONST, "AcquisitionStart") + field(ONVL, "3") + field(TWST, "AcquisitionEnd") + field(TWVL, "4") + field(THST, "AcquisitionRecor") + field(THVL, "6") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_PvDumTriSelector") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_PvDummyTriggerSelector") + field(DOL, "0") + field(ZRST, "FrameStart") + field(ZRVL, "0") + field(ONST, "AcquisitionStart") + field(ONVL, "3") + field(TWST, "AcquisitionEnd") + field(TWVL, "4") + field(THST, "AcquisitionRecor") + field(THVL, "6") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_PvDumFraStaTriMod_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_PvDummyFrameStartTriggerMode") + field(ZRST, "Freerun") + field(ZRVL, "2147483648") + field(ONST, "SyncIn1") + field(ONVL, "2147483649") + field(TWST, "SyncIn2") + field(TWVL, "2147483650") + field(THST, "SyncIn3") + field(THVL, "2147483651") + field(FRST, "SyncIn4") + field(FRVL, "2147483652") + field(FVST, "FixedRate") + field(FVVL, "2147483653") + field(SXST, "Software") + field(SXVL, "2147483654") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_PvDumFraStaTriMod") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_PvDummyFrameStartTriggerMode") + field(DOL, "2147483648") + field(ZRST, "Freerun") + field(ZRVL, "2147483648") + field(ONST, "SyncIn1") + field(ONVL, "2147483649") + field(TWST, "SyncIn2") + field(TWVL, "2147483650") + field(THST, "SyncIn3") + field(THVL, "2147483651") + field(FRST, "SyncIn4") + field(FRVL, "2147483652") + field(FVST, "FixedRate") + field(FVVL, "2147483653") + field(SXST, "Software") + field(SXVL, "2147483654") + field(DISA, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_PvDumTriggerMode_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_E_PvDummyTriggerMode") + field(ZRST, "Disabled") + field(ZRVL, "0") + field(ONST, "SyncIn1") + field(ONVL, "2147483649") + field(TWST, "SyncIn2") + field(TWVL, "2147483650") + field(THST, "SyncIn3") + field(THVL, "2147483651") + field(FRST, "SyncIn4") + field(FRVL, "2147483652") + field(FVST, "FixedRate") + field(FVVL, "2147483653") + field(SXST, "Software") + field(SXVL, "2147483654") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_PvDumTriggerMode") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_E_PvDummyTriggerMode") + field(DOL, "0") + field(ZRST, "Disabled") + field(ZRVL, "0") + field(ONST, "SyncIn1") + field(ONVL, "2147483649") + field(TWST, "SyncIn2") + field(TWVL, "2147483650") + field(THST, "SyncIn3") + field(THVL, "2147483651") + field(FRST, "SyncIn4") + field(FRVL, "2147483652") + field(FVST, "FixedRate") + field(FVVL, "2147483653") + field(SXST, "Software") + field(SXVL, "2147483654") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_FraStaTriDelay_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_FrameStartTriggerDelay") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_FraStaTriDelay") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_FrameStartTriggerDelay") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_ExposureValue_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_ExposureValue") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_ExposureValue") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_ExposureValue") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_TimeStampValueLo_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_TimeStampValueLo") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_TimeStampValueLo") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_TimeStampValueLo") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_TimeStampValueHi_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_TimeStampValueHi") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_TimeStampValueHi") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_TimeStampValueHi") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_WhitebalValueRed_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_WhitebalValueRed") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_WhitebalValueRed") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_WhitebalValueRed") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_WhitebalValueBlue_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_WhitebalValueBlue") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_WhitebalValueBlue") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_WhitebalValueBlue") + field(DISA, "0") +} + +record(stringin, "BL03S-EA-FSCN-02:CAM:GC_ModelName_RBV") { + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_S_ModelName") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_GainValue_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_GainValue") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_GainValue") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_GainValue") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_PvGainAutoMin_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_PvGainAutoMin") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_PvGainAutoMin") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_PvGainAutoMin") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_PvGainAutoMax_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_PvGainAutoMax") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_PvGainAutoMax") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_PvGainAutoMax") + field(DISA, "0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_OffsetValue_RBV") { + field(DTYP, "asynInt64") + field(INP, "@asyn(FSCN2.CAM,0,1)GC_I_OffsetValue") + field(SCAN, "I/O Intr") + field(DISA, "0") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_OffsetValue") { + field(DTYP, "asynInt64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GC_I_OffsetValue") + field(DISA, "0") +} + +# Database for the records specific to the ADAravis driver +# Macros: +#% macro, P, Device Prefix +#% macro, R, Device Suffix +#% macro, PORT, Asyn Port name +#% macro, TIMEOUT, Timeout, default 1 +#% macro, ADDR, Asyn Port address, default 0 + +# This associates a BOY screen with the template +# % gui, FSCN1.CAM, boydetail, aravisApp_opi/aravis_detail.opi, P=BL03S-EA-FSCN-01, R=:CAM:, DESC=Camera +# % gui, FSCN1.CAM, boyembed, aravisApp_opi/aravis_embed_box.opi, P=BL03S-EA-FSCN-01, R=:CAM:, DESC=Camera +# % gui, FSCN1.CAM, boyembed, aravisApp_opi/aravis_embed.opi, P=BL03S-EA-FSCN-01, R=:CAM:, DESC=Camera + +## ADGenICam.template +## Template database file to control some features of ADGenICam. +## +## Note: this file contains only the records that are not handled by the camera-specific GenICam autogenerated database + +#=================================================================# +# Template file: ADBase.template +# Database for area detector control using asyn driver and standard asyn device support +# Mark Rivers +# March 9, 2008 + +# Macros: +# % macro, P, Device Prefix +# % macro, R, Device Suffix +# % macro, PORT, Asyn Port name +# % macro, TIMEOUT, Timeout +# % macro, ADDR, Asyn Port address +# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs + +# Using SCANRATE:The ImageJ EPICS_AD_Viewer plugin monitors ArrayCounter_RBV to decide +# when there is a new image to display. That means that it will not display faster than +# the SCANRATE you select. + +#=================================================================# +# Template file: NDArrayBase.template +# Database for area detector control using asyn driver and standard asyn device support +# Mark Rivers +# March 9, 2008 + +################################################################### +# This record contains the version of ADCore # +################################################################### + +record(stringin, "BL03S-EA-FSCN-01:CAM:ADCoreVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.CAM,0,1)ADCORE_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains the version of the driver or plugin # +################################################################### + +record(stringin, "BL03S-EA-FSCN-01:CAM:DriverVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.CAM,0,1)DRIVER_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains the asyn port name of this detector # +################################################################### + +record(stringin, "BL03S-EA-FSCN-01:CAM:PortName_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.CAM,0,1)PORT_NAME_SELF") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records contain basic information about the detector # +################################################################### + +record(stringin, "BL03S-EA-FSCN-01:CAM:Manufacturer_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.CAM,0,1)MANUFACTURER") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-EA-FSCN-01:CAM:Model_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.CAM,0,1)MODEL") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-EA-FSCN-01:CAM:SerialNumber_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.CAM,0,1)SERIAL_NUMBER") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-EA-FSCN-01:CAM:SDKVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.CAM,0,1)SDK_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-EA-FSCN-01:CAM:FirmwareVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.CAM,0,1)FIRMWARE_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control acquisition start and stop # +################################################################### + +record(bo, "BL03S-EA-FSCN-01:CAM:Acquire") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)ACQUIRE") + field(ZNAM, "Done") + field(ONAM, "Acquire") + field(VAL, "0") + field(FLNK, "BL03S-EA-FSCN-01:CAM:SetAcquireBusy") + info(asyn:READBACK, "1") +} + +record(bi, "BL03S-EA-FSCN-01:CAM:Acquire_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)ACQUIRE") + field(ZNAM, "Done") + field(ZSV, "NO_ALARM") + field(ONAM, "Acquiring") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +record(calcout, "BL03S-EA-FSCN-01:CAM:SetAcquireBusy") +{ + field(INPA, "BL03S-EA-FSCN-01:CAM:Acquire NPP") + field(CALC, "A") + field(OOPT, "Transition To Non-zero") + field(OUT, "BL03S-EA-FSCN-01:CAM:AcquireBusy PP") +} + +record(bi, "BL03S-EA-FSCN-01:CAM:AcquireBusy") { + field(ZNAM, "Done") + field(ZSV, "NO_ALARM") + field(ONAM, "Acquiring") + field(OSV, "MINOR") + field(VAL, "0") +} + +record(bi, "BL03S-EA-FSCN-01:CAM:AcquireBusyCB") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)ACQUIRE_BUSY") + field(ZNAM, "Done") + field(ZSV, "NO_ALARM") + field(ONAM, "Acquiring") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +record(calcout, "BL03S-EA-FSCN-01:CAM:ClearAcquireBusy") { + field(INPA, "BL03S-EA-FSCN-01:CAM:AcquireBusyCB CP") + field(CALC, "A") + field(OOPT, "Transition To Zero") + field(OUT, "BL03S-EA-FSCN-01:CAM:AcquireBusy PP") +} + +record(bo, "BL03S-EA-FSCN-01:CAM:WaitForPlugins") { + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)WAIT_FOR_PLUGINS") + field(ZNAM, "No") + field(ONAM, "Yes") + field(VAL, "0") +} + +################################################################### +# These records are the array size and data type # +################################################################### +# The number of dimensions +record(longout, "BL03S-EA-FSCN-01:CAM:NDimensions") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)ARRAY_NDIMENSIONS") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:NDimensions_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)ARRAY_NDIMENSIONS") + field(SCAN, "I/O Intr") +} + +# The array dimensions waveform records +record(waveform, "BL03S-EA-FSCN-01:CAM:Dimensions") +{ + field(DTYP, "asynInt32ArrayOut") + field(INP, "@asyn(FSCN1.CAM,0,1)ARRAY_DIMENSIONS") + field(FTVL, "LONG") + field(NELM, "10") + field(FLNK, "BL03S-EA-FSCN-01:CAM:Dim0SA") +} + +record(subArray, "BL03S-EA-FSCN-01:CAM:Dim0SA") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "0") + field(FLNK, "BL03S-EA-FSCN-01:CAM:ArraySize0") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ArraySize0") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dim0SA") + field(FLNK, "BL03S-EA-FSCN-01:CAM:Dim1SA") +} + +record(subArray, "BL03S-EA-FSCN-01:CAM:Dim1SA") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "1") + field(FLNK, "BL03S-EA-FSCN-01:CAM:ArraySize1") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ArraySize1") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dim1SA") + field(FLNK, "BL03S-EA-FSCN-01:CAM:Dim2SA") +} + +record(subArray, "BL03S-EA-FSCN-01:CAM:Dim2SA") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "2") + field(FLNK, "BL03S-EA-FSCN-01:CAM:ArraySize2") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ArraySize2") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dim2SA") + field(FLNK, "BL03S-EA-FSCN-01:CAM:Dim3SA") +} + +record(subArray, "BL03S-EA-FSCN-01:CAM:Dim3SA") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "3") + field(FLNK, "BL03S-EA-FSCN-01:CAM:ArraySize3") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ArraySize3") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dim3SA") + field(FLNK, "BL03S-EA-FSCN-01:CAM:Dim4SA") +} + +record(subArray, "BL03S-EA-FSCN-01:CAM:Dim4SA") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "4") + field(FLNK, "BL03S-EA-FSCN-01:CAM:ArraySize4") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ArraySize4") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dim4SA") + field(FLNK, "BL03S-EA-FSCN-01:CAM:Dim5SA") +} + +record(subArray, "BL03S-EA-FSCN-01:CAM:Dim5SA") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "5") + field(FLNK, "BL03S-EA-FSCN-01:CAM:ArraySize5") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ArraySize5") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dim5SA") + field(FLNK, "BL03S-EA-FSCN-01:CAM:Dim6SA") +} + +record(subArray, "BL03S-EA-FSCN-01:CAM:Dim6SA") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "6") + field(FLNK, "BL03S-EA-FSCN-01:CAM:ArraySize6") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ArraySize6") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dim6SA") + field(FLNK, "BL03S-EA-FSCN-01:CAM:Dim7SA") +} + +record(subArray, "BL03S-EA-FSCN-01:CAM:Dim7SA") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "7") + field(FLNK, "BL03S-EA-FSCN-01:CAM:ArraySize7") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ArraySize7") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dim7SA") + field(FLNK, "BL03S-EA-FSCN-01:CAM:Dim8SA") +} + +record(subArray, "BL03S-EA-FSCN-01:CAM:Dim8SA") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "8") + field(FLNK, "BL03S-EA-FSCN-01:CAM:ArraySize8") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ArraySize8") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dim8SA") + field(FLNK, "BL03S-EA-FSCN-01:CAM:Dim9SA") +} + +record(subArray, "BL03S-EA-FSCN-01:CAM:Dim9SA") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "9") + field(FLNK, "BL03S-EA-FSCN-01:CAM:ArraySize9") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ArraySize9") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dim9SA") +} + + +record(waveform, "BL03S-EA-FSCN-01:CAM:Dimensions_RBV") +{ + field(DTYP, "asynInt32ArrayIn") + field(INP, "@asyn(FSCN1.CAM,0,1)ARRAY_DIMENSIONS") + field(FTVL, "LONG") + field(NELM, "10") + field(FLNK, "BL03S-EA-FSCN-01:CAM:Dim0SA_RBV") + field(SCAN, "I/O Intr") +} + +record(subArray, "BL03S-EA-FSCN-01:CAM:Dim0SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "0") + field(FLNK, "BL03S-EA-FSCN-01:CAM:ArraySize0_RBV") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ArraySize0_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dim0SA_RBV") + field(FLNK, "BL03S-EA-FSCN-01:CAM:Dim1SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-01:CAM:Dim1SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "1") + field(FLNK, "BL03S-EA-FSCN-01:CAM:ArraySize1_RBV") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ArraySize1_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dim1SA_RBV") + field(FLNK, "BL03S-EA-FSCN-01:CAM:Dim2SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-01:CAM:Dim2SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "2") + field(FLNK, "BL03S-EA-FSCN-01:CAM:ArraySize2_RBV") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ArraySize2_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dim2SA_RBV") + field(FLNK, "BL03S-EA-FSCN-01:CAM:Dim3SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-01:CAM:Dim3SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "3") + field(FLNK, "BL03S-EA-FSCN-01:CAM:ArraySize3_RBV") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ArraySize3_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dim3SA_RBV") + field(FLNK, "BL03S-EA-FSCN-01:CAM:Dim4SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-01:CAM:Dim4SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "4") + field(FLNK, "BL03S-EA-FSCN-01:CAM:ArraySize4_RBV") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ArraySize4_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dim4SA_RBV") + field(FLNK, "BL03S-EA-FSCN-01:CAM:Dim5SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-01:CAM:Dim5SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "5") + field(FLNK, "BL03S-EA-FSCN-01:CAM:ArraySize5_RBV") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ArraySize5_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dim5SA_RBV") + field(FLNK, "BL03S-EA-FSCN-01:CAM:Dim6SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-01:CAM:Dim6SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "6") + field(FLNK, "BL03S-EA-FSCN-01:CAM:ArraySize6_RBV") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ArraySize6_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dim6SA_RBV") + field(FLNK, "BL03S-EA-FSCN-01:CAM:Dim7SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-01:CAM:Dim7SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "7") + field(FLNK, "BL03S-EA-FSCN-01:CAM:ArraySize7_RBV") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ArraySize7_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dim7SA_RBV") + field(FLNK, "BL03S-EA-FSCN-01:CAM:Dim8SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-01:CAM:Dim8SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "8") + field(FLNK, "BL03S-EA-FSCN-01:CAM:ArraySize8_RBV") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ArraySize8_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dim8SA_RBV") + field(FLNK, "BL03S-EA-FSCN-01:CAM:Dim9SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-01:CAM:Dim9SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "9") + field(FLNK, "BL03S-EA-FSCN-01:CAM:ArraySize9_RBV") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ArraySize9_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:CAM:Dim9SA_RBV") +} + + +record(mbbi, "BL03S-EA-FSCN-01:CAM:BayerPattern_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)BAYER_PATTERN") + field(ZRST, "RGGB") + field(ZRVL, "0") + field(ONST, "GBRG") + field(ONVL, "1") + field(TWST, "GRBG") + field(TWVL, "2") + field(THST, "BGGR") + field(THVL, "3") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ArraySizeX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)ARRAY_SIZE_X") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ArraySizeY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)ARRAY_SIZE_Y") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ArraySizeZ_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)ARRAY_SIZE_Z") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ArraySize_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)ARRAY_SIZE") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records have information on the compression # +################################################################### +record(stringin, "BL03S-EA-FSCN-01:CAM:Codec_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.CAM,0,1)CODEC") + field(VAL, "") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:CompressedSize_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)COMPRESSED_SIZE") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the data type # +################################################################### + +record(mbbo, "BL03S-EA-FSCN-01:CAM:DataType") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)DATA_TYPE") + field(ZRST, "Int8") + field(ZRVL, "0") + field(ONST, "UInt8") + field(ONVL, "1") + field(TWST, "Int16") + field(TWVL, "2") + field(THST, "UInt16") + field(THVL, "3") + field(FRST, "Int32") + field(FRVL, "4") + field(FVST, "UInt32") + field(FVVL, "5") + field(SXST, "Int64") + field(SXVL, "6") + field(SVST, "UInt64") + field(SVVL, "7") + field(EIST, "Float32") + field(EIVL, "8") + field(NIST, "Float64") + field(NIVL, "9") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:DataType_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)DATA_TYPE") + field(ZRST, "Int8") + field(ZRVL, "0") + field(ONST, "UInt8") + field(ONVL, "1") + field(TWST, "Int16") + field(TWVL, "2") + field(THST, "UInt16") + field(THVL, "3") + field(FRST, "Int32") + field(FRVL, "4") + field(FVST, "UInt32") + field(FVVL, "5") + field(SXST, "Int64") + field(SXVL, "6") + field(SVST, "UInt64") + field(SVVL, "7") + field(EIST, "Float32") + field(EIVL, "8") + field(NIST, "Float64") + field(NIVL, "9") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the color mode # +# These choices must agree with NDColorMode_t in NDArray.h # +################################################################### + +record(mbbo, "BL03S-EA-FSCN-01:CAM:ColorMode") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)COLOR_MODE") + field(ZRST, "Mono") + field(ZRVL, "0") + field(ONST, "Bayer") + field(ONVL, "1") + field(TWST, "RGB1") + field(TWVL, "2") + field(THST, "RGB2") + field(THVL, "3") + field(FRST, "RGB3") + field(FRVL, "4") + field(FVST, "YUV444") + field(FVVL, "5") + field(SXST, "YUV422") + field(SXVL, "6") + field(SVST, "YUV421") + field(SVVL, "7") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:ColorMode_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)COLOR_MODE") + field(ZRST, "Mono") + field(ZRVL, "0") + field(ONST, "Bayer") + field(ONVL, "1") + field(TWST, "RGB1") + field(TWVL, "2") + field(THST, "RGB2") + field(THVL, "3") + field(FRST, "RGB3") + field(FRVL, "4") + field(FVST, "YUV444") + field(FVVL, "5") + field(SXST, "YUV422") + field(SXVL, "6") + field(SVST, "YUV421") + field(SVVL, "7") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records are the uniqueId and time stamps of the array # +################################################################### +record(longin, "BL03S-EA-FSCN-01:CAM:UniqueId_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)UNIQUE_ID") + field(SCAN, "I/O Intr") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:TimeStamp_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)TIME_STAMP") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:EpicsTSSec_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)EPICS_TS_SEC") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:EpicsTSNsec_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)EPICS_TS_NSEC") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records provide statistics on array callbacks and # +# array callback rates # +################################################################### +record(longout, "BL03S-EA-FSCN-01:CAM:ArrayCounter") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)ARRAY_COUNTER") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ArrayCounter_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)ARRAY_COUNTER") + field(SCAN, "I/O Intr") +} + +# Updated rate calculation to use a smoothing factor w/ guard against negative values +record(calc, "BL03S-EA-FSCN-01:CAM:ArrayRate_RBV") +{ + field(INPA, "BL03S-EA-FSCN-01:CAM:ArrayRate_RBV.LB NPP NMS") # Previous counter value + field(INPB, "BL03S-EA-FSCN-01:CAM:ArrayCounter_RBV NPP NMS") # Current counter value + field(INPC, "1.0") # Delta time in seconds + field(INPD, "BL03S-EA-FSCN-01:CAM:ArrayRate_RBV.VAL NPP NMS") # Previous rate + field(INPE, "0.0") # Smoothing factor + field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") + field(PREC, "2" ) + field(EGU, "Hz" ) + field(SCAN, "1 second") +} + +################################################################### +# These records control NDArray callacks # +################################################################### +record(bo, "BL03S-EA-FSCN-01:CAM:ArrayCallbacks") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)ARRAY_CALLBACKS") + field(ZNAM, "Disable") + field(ZSV, "NO_ALARM") + field(ONAM, "Enable") + field(OSV, "MINOR") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(bi, "BL03S-EA-FSCN-01:CAM:ArrayCallbacks_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)ARRAY_CALLBACKS") + field(ZNAM, "Disable") + field(ZSV, "NO_ALARM") + field(ONAM, "Enable") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains macro definitions for the attributes # +################################################################### + +record(waveform, "BL03S-EA-FSCN-01:CAM:NDAttributesMacros") +{ + field(PINI, "YES") + field(DTYP, "asynOctetWrite") + field(INP, "@asyn(FSCN1.CAM,0,1)ND_ATTRIBUTES_MACROS") + field(FTVL, "CHAR") + field(NELM, "256") + info(autosaveFields, "VAL") +} + +################################################################### +# This record is the name of a file defining attributes # +################################################################### + +record(waveform, "BL03S-EA-FSCN-01:CAM:NDAttributesFile") +{ + field(PINI, "YES") + field(DTYP, "asynOctetWrite") + field(INP, "@asyn(FSCN1.CAM,0,1)ND_ATTRIBUTES_FILE") + field(FTVL, "CHAR") + field(NELM, "256") + info(autosaveFields, "VAL") +} + +################################################################### +# This record defines the status of reading attributes file # +################################################################### + +record(mbbi, "BL03S-EA-FSCN-01:CAM:NDAttributesStatus") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)ND_ATTRIBUTES_STATUS") + field(ZRVL, "0") + field(ZRST, "Attributes file OK") + field(ZRSV, "NO_ALARM") + field(ONVL, "1") + field(ONST, "File not found") + field(ONSV, "MINOR") + field(TWVL, "2") + field(TWST, "XML syntax error") + field(TWSV, "MAJOR") + field(THVL, "3") + field(THST, "Macro substitution error") + field(THSV, "MAJOR") + field(SCAN, "I/O Intr") +} + +################################################################### +# Status of NDArrayPool - number of buffers, memory used etc. # +################################################################### + +record(ai, "BL03S-EA-FSCN-01:CAM:PoolMaxMem") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)POOL_MAX_MEMORY") + field(PREC, "1") + field(EGU, "MB") + field(SCAN, "Passive") + field(PINI, "YES") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:PoolUsedMem") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)POOL_USED_MEMORY") + field(PREC, "1") + field(EGU, "MB") + field(SCAN, "1 second") + field(FLNK, "BL03S-EA-FSCN-01:CAM:PoolAllocBuffers") + info(autosaveFields, "SCAN") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:PoolAllocBuffers") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)POOL_ALLOC_BUFFERS") + field(FLNK, "BL03S-EA-FSCN-01:CAM:PoolFreeBuffers") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:PoolFreeBuffers") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)POOL_FREE_BUFFERS") + field(FLNK, "BL03S-EA-FSCN-01:CAM:PoolUsedBuffers") +} + +record(calc, "BL03S-EA-FSCN-01:CAM:PoolUsedBuffers") +{ + field(INPA, "BL03S-EA-FSCN-01:CAM:PoolAllocBuffers NPP MS") + field(INPB, "BL03S-EA-FSCN-01:CAM:PoolFreeBuffers NPP MS") + field(CALC, "A-B") +} + +record(bo, "BL03S-EA-FSCN-01:CAM:EmptyFreeList") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)POOL_EMPTY_FREELIST") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:NumQueuedArrays") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)NUM_QUEUED_ARRAYS") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:MaxSizeX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)MAX_SIZE_X") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:MaxSizeY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)MAX_SIZE_Y") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the detector readout # +# including binning, region start and size # +################################################################### + +record(longout, "BL03S-EA-FSCN-01:CAM:BinX") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)BIN_X") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:BinX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)BIN_X") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-EA-FSCN-01:CAM:BinY") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)BIN_Y") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:BinY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)BIN_Y") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-EA-FSCN-01:CAM:MinX") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)MIN_X") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:MinX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)MIN_X") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-EA-FSCN-01:CAM:MinY") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)MIN_Y") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:MinY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)MIN_Y") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-EA-FSCN-01:CAM:SizeX") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)SIZE_X") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:SizeX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)SIZE_X") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-EA-FSCN-01:CAM:SizeY") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)SIZE_Y") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:SizeY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)SIZE_Y") + field(SCAN, "I/O Intr") +} + +record(bo, "BL03S-EA-FSCN-01:CAM:ReverseX") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)REVERSE_X") + field(ZNAM, "No") + field(ONAM, "Yes") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(bi, "BL03S-EA-FSCN-01:CAM:ReverseX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)REVERSE_X") + field(ZNAM, "No") + field(ONAM, "Yes") + field(SCAN, "I/O Intr") +} + +record(bo, "BL03S-EA-FSCN-01:CAM:ReverseY") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)REVERSE_Y") + field(ZNAM, "No") + field(ONAM, "Yes") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(bi, "BL03S-EA-FSCN-01:CAM:ReverseY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)REVERSE_Y") + field(ZNAM, "No") + field(ONAM, "Yes") + field(SCAN, "I/O Intr") +} + + +################################################################### +# These records control the acquisition time and # +# period # +################################################################### +record(ao, "BL03S-EA-FSCN-01:CAM:AcquireTime") +{ + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN1.CAM,0,1)ACQ_TIME") + field(PREC, "3") + field(VAL, "1.0") + info(autosaveFields, "VAL") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:AcquireTime_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)ACQ_TIME") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:AcquirePeriod") +{ + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN1.CAM,0,1)ACQ_PERIOD") + field(PREC, "3") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:AcquirePeriod_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)ACQ_PERIOD") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:TimeRemaining_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)TIME_REMAINING") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the gain # +################################################################### +record(ao, "BL03S-EA-FSCN-01:CAM:Gain") +{ + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN1.CAM,0,1)GAIN") + field(VAL, "1.0") + field(PREC, "3") + info(autosaveFields, "VAL") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:Gain_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)GAIN") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the frame type # +################################################################### +record(mbbo, "BL03S-EA-FSCN-01:CAM:FrameType") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)FRAME_TYPE") + field(ZRST, "Normal") + field(ZRVL, "0") + field(ONST, "Background") + field(ONVL, "1") + field(TWST, "FlatField") + field(TWVL, "2") + field(THST, "DblCorrelation") + field(THVL, "3") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:FrameType_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)FRAME_TYPE") + field(ZRST, "Normal") + field(ZRVL, "0") + field(ONST, "Background") + field(ONVL, "1") + field(TWST, "FlatField") + field(TWVL, "2") + field(THST, "DblCorrelation") + field(THVL, "3") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the acquisition mode # +################################################################### +record(mbbo, "BL03S-EA-FSCN-01:CAM:ImageMode") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)IMAGE_MODE") + field(ZRST, "Single") + field(ZRVL, "0") + field(ONST, "Multiple") + field(ONVL, "1") + field(TWST, "Continuous") + field(TWVL, "2") + field(VAL, "2") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:ImageMode_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)IMAGE_MODE") + field(ZRST, "Single") + field(ZRVL, "0") + field(ONST, "Multiple") + field(ONVL, "1") + field(TWST, "Continuous") + field(TWVL, "2") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the trigger mode # +################################################################### +record(mbbo, "BL03S-EA-FSCN-01:CAM:TriggerMode") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)TRIGGER_MODE") + field(ZRST, "Internal") + field(ZRVL, "0") + field(ONST, "External") + field(ONVL, "1") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:TriggerMode_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)TRIGGER_MODE") + field(ZRST, "Internal") + field(ZRVL, "0") + field(ONST, "External") + field(ONVL, "1") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the number of exposures and # +# number of images # +################################################################### +record(longout, "BL03S-EA-FSCN-01:CAM:NumExposures") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)NEXPOSURES") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:NumExposures_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)NEXPOSURES") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:NumExposuresCounter_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)NEXPOSURES_COUNTER") + field(SCAN, "I/O Intr") +} +record(longout, "BL03S-EA-FSCN-01:CAM:NumImages") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)NIMAGES") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:NumImages_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)NIMAGES") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:NumImagesCounter_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)NIMAGES_COUNTER") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records are for the detector state # +################################################################### + +record(mbbi, "BL03S-EA-FSCN-01:CAM:DetectorState_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)STATUS") + field(ZRST, "Idle") + field(ZRVL, "0") + field(ZRSV, "NO_ALARM") + field(ONST, "Acquire") + field(ONVL, "1") + field(ONSV, "NO_ALARM") + field(TWST, "Readout") + field(TWVL, "2") + field(TWSV, "NO_ALARM") + field(THST, "Correct") + field(THVL, "3") + field(THSV, "NO_ALARM") + field(FRST, "Saving") + field(FRVL, "4") + field(FRSV, "NO_ALARM") + field(FVST, "Aborting") + field(FVVL, "5") + field(FVSV, "MINOR") + field(SXST, "Error") + field(SXVL, "6") + field(SXSV, "MAJOR") + field(SVST, "Waiting") + field(SVVL, "7") + field(SVSV, "NO_ALARM") + field(EIST, "Initializing") + field(EIVL, "8") + field(EISV, "NO_ALARM") + field(NIST, "Disconnected") + field(NIVL, "9") + field(NISV, "INVALID") + field(TEST, "Aborted") + field(TEVL, "10") + field(TESV, "MINOR") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records provide status information # +################################################################### + +# Status message. +record(waveform, "BL03S-EA-FSCN-01:CAM:StatusMessage_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.CAM,0,1)STATUS_MESSAGE") + field(FTVL, "CHAR") + field(NELM, "256") + field(SCAN, "I/O Intr") +} + +record(waveform, "BL03S-EA-FSCN-01:CAM:StringToServer_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.CAM,0,1)STRING_TO_SERVER") + field(FTVL, "CHAR") + field(NELM, "256") + field(SCAN, "I/O Intr") +} + +record(waveform, "BL03S-EA-FSCN-01:CAM:StringFromServer_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.CAM,0,1)STRING_FROM_SERVER") + field(FTVL, "CHAR") + field(NELM, "256") + field(SCAN, "I/O Intr") +} + +################################################################@### +# This record can be used to force a read of the detector status # +#################################################################### +record(bo,"BL03S-EA-FSCN-01:CAM:ReadStatus") { + field(DTYP,"asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)READ_STATUS") + field(VAL, "1") + field(SCAN,"Passive") + info(autosaveFields, "SCAN") +} + +################################################################### +# These records control the shutter # +################################################################### + +record(mbbo, "BL03S-EA-FSCN-01:CAM:ShutterMode") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)SHUTTER_MODE") + field(ZRST, "None") + field(ZRVL, "0") + field(ONST, "EPICS PV") + field(ONVL, "1") + field(TWST, "Detector output") + field(TWVL, "2") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:ShutterMode_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)SHUTTER_MODE") + field(ZRST, "None") + field(ZRVL, "0") + field(ONST, "EPICS PV") + field(ONVL, "1") + field(TWST, "Camera output") + field(TWVL, "2") + field(SCAN, "I/O Intr") +} + +record(bo, "BL03S-EA-FSCN-01:CAM:ShutterControl") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)SHUTTER_CONTROL") + field(ZNAM, "Close") + field(ONAM, "Open") + field(VAL, "0") +} + +record(bi, "BL03S-EA-FSCN-01:CAM:ShutterControl_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)SHUTTER_CONTROL") + field(ZNAM, "Close") + field(ONAM, "Open") + field(SCAN, "I/O Intr") +} + +record(bi, "BL03S-EA-FSCN-01:CAM:ShutterStatus_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)SHUTTER_STATUS") + field(ZNAM, "Closed") + field(ZSV, "NO_ALARM") + field(ONAM, "Open") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:ShutterOpenDelay") +{ + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN1.CAM,0,1)SHUTTER_OPEN_DELAY") + field(PREC, "3") + field(VAL, "0.0") + info(autosaveFields, "VAL") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:ShutterOpenDelay_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)SHUTTER_OPEN_DELAY") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:ShutterCloseDelay") +{ + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN1.CAM,0,1)SHUTTER_CLOSE_DELAY") + field(PREC, "3") + field(VAL, "0.0") + info(autosaveFields, "VAL") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:ShutterCloseDelay_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)SHUTTER_CLOSE_DELAY") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +# This record changes state when the driver opens/closes an EPICS shutter +record(bi, "BL03S-EA-FSCN-01:CAM:ShutterControlEPICS") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)SHUTTER_CONTROL_EPICS") + field(ZNAM, "Closed") + field(ZSV, "NO_ALARM") + field(ONAM, "Open") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") + field(FLNK, "BL03S-EA-FSCN-01:CAM:ShutterFanout.PROC") +} + +record(fanout, "BL03S-EA-FSCN-01:CAM:ShutterFanout") +{ + field(LNK1, "BL03S-EA-FSCN-01:CAM:ShutterOpenEPICS.PROC PP MS") + field(LNK2, "BL03S-EA-FSCN-01:CAM:ShutterCloseEPICS.PROC PP MS") +} + +record(calcout, "BL03S-EA-FSCN-01:CAM:ShutterOpenEPICS") +{ + field(INPA, "BL03S-EA-FSCN-01:CAM:ShutterControlEPICS.VAL NPP NMS") + field(CALC, "A") + field(OOPT, "Transition To Non-zero") + field(DOPT, "Use OCAL") + field(OCAL, "1") + field(OUT, "") + info(autosaveFields, "OUT OCAL") +} + +record(calcout, "BL03S-EA-FSCN-01:CAM:ShutterCloseEPICS") +{ + field(INPA, "BL03S-EA-FSCN-01:CAM:ShutterControlEPICS.VAL NPP NMS") + field(CALC, "A") + field(OOPT, "Transition To Zero") + field(DOPT, "Use OCAL") + field(OCAL, "0") + field(OUT, "") + info(autosaveFields, "OUT OCAL") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:ShutterStatusEPICS_RBV") +{ + field(DTYP, "Raw Soft Channel") + field(INP, "test CP MS") + field(ZRVL, "0") + field(ZRST, "Closed") + field(ZRSV, "NO_ALARM") + field(ONVL, "1") + field(ONST, "Open") + field(ONSV, "MINOR") + info(autosaveFields, "INP ZRVL ONVL") +} + +################################################################### +# These records control the detector temperature # +################################################################### + +record(ao, "BL03S-EA-FSCN-01:CAM:Temperature") +{ + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN1.CAM,0,1)TEMPERATURE") + field(PREC, "1") + field(EGU, "C") + field(VAL, "25.0") + info(autosaveFields, "VAL") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:Temperature_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)TEMPERATURE") + field(PREC, "1") + field(EGU, "C") + field(SCAN, "I/O Intr") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:TemperatureActual") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)TEMPERATURE_ACTUAL") + field(PREC, "1") + field(EGU, "C") + field(SCAN, "I/O Intr") +} + + +################################################################### +# The asynRecord is used for mainly for trace mask # +################################################################### + + + + +## These are the records from ADBase.template that we modify + +# Some cameras use both AcquisitionFrameRate and AcquirePeriod. +# Make AcquirePeriod update if FrameRate is changed. +record(ao, "BL03S-EA-FSCN-01:CAM:AcquirePeriod") +{ + info(asyn:READBACK, "1") +} + +# This record hides the fact that some cameras use FrameRate and some use FrameRateAbs +# This is not PINI=YES because AcquirePeriod is and they control the same thing +record(ao, "BL03S-EA-FSCN-01:CAM:FrameRate") +{ + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN1.CAM 0)GC_FRAMERATE") + field(PREC, "3") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:FrameRate_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM 0)GC_FRAMERATE") + field(SCAN, "I/O Intr") + field(PREC, "3") +} + +# Some cameras (Basler, Point Grey, FLIR) use AcquisitionFrameRateEnable or AcquisitionFrameRateEnabled +# This record hides the fact that the feature name may differ; the record name is always the same. +record(bo, "BL03S-EA-FSCN-01:CAM:FrameRateEnable") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM 0)GC_FRAMERATE_ENABLE") + field(ZNAM, "No") + field(ONAM, "Yes") +} + +record(bi, "BL03S-EA-FSCN-01:CAM:FrameRateEnable_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM 0)GC_FRAMERATE_ENABLE") + field(SCAN, "I/O Intr") + field(ZNAM, "No") + field(ONAM, "Yes") +} + +# This record is used to ensure there is a record for TriggerSource even if there is no such GenICam feature +record(mbbo, "BL03S-EA-FSCN-01:CAM:TriggerSource") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM 0)GC_TRIGGER_SOURCE") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:TriggerSource_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM 0)GC_TRIGGER_SOURCE") + field(ZRST, "N.A.") + field(ZRVL, "0") + field(SCAN, "I/O Intr") +} + +# This record is used to ensure there is a record for TriggerOverlap even if there is no such GenICam feature +record(mbbo, "BL03S-EA-FSCN-01:CAM:TriggerOverlap") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM 0)GC_TRIGGER_OVERLAP") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:TriggerOverlap_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM 0)GC_TRIGGER_OVERLAP") + field(SCAN, "I/O Intr") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +# This record is used to ensure there is a record for TriggerSoftware even if there is no such GenICam feature +record(bo, "BL03S-EA-FSCN-01:CAM:TriggerSoftware") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM 0)GC_TRIGGER_SOFTWARE") + field(ZNAM, "Done") + field(ONAM, "Trigger") +} + +# This record is used to ensure there is a record for ExposureMode even if there is no such GenICam feature +record(mbbo, "BL03S-EA-FSCN-01:CAM:ExposureMode") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM 0)GC_EXPOSURE_MODE") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:ExposureMode_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM 0)GC_EXPOSURE_MODE") + field(ZRST, "N.A.") + field(ZRVL, "0") + field(SCAN, "I/O Intr") +} + +# This record is used to ensure there is a record for ExposureAuto even if there is no such GenICam feature +record(mbbo, "BL03S-EA-FSCN-01:CAM:ExposureAuto") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM 0)GC_EXPOSURE_AUTO") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:ExposureAuto_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM 0)GC_EXPOSURE_AUTO") + field(SCAN, "I/O Intr") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +# This record is used to ensure there is a record for GainAuto even if there is no such GenICam feature +record(mbbo, "BL03S-EA-FSCN-01:CAM:GainAuto") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM 0)GC_GAIN_AUTO") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GainAuto_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM 0)GC_GAIN_AUTO") + field(SCAN, "I/O Intr") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +# This record is used to ensure there is a record for PixelFormat even if there is no such GenICam feature +record(mbbo, "BL03S-EA-FSCN-01:CAM:PixelFormat") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM 0)GC_PIXEL_FORMAT") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:PixelFormat_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM 0)GC_PIXEL_FORMAT") + field(ZRST, "N.A.") + field(ZRVL, "0") + field(SCAN, "I/O Intr") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:ARFramesCompleted") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)ARAVIS_COMPLETED") + field(SCAN, "I/O Intr") + info(autosaveFields, "DESC LLSV LOLO LOW LSV") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:ARFrameFailures") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)ARAVIS_FAILURES") + field(SCAN, "I/O Intr") + info(autosaveFields, "DESC HHSV HIHI HIGH HSV") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:ARFrameUnderruns") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.CAM,0,1)ARAVIS_UNDERRUNS") + field(SCAN, "I/O Intr") + info(autosaveFields, "DESC HHSV HIHI HIGH HSV") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ARMissingPackets") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)ARAVIS_MISSING_PKTS") + field(SCAN, "I/O Intr") + info(autosaveFields, "DESC HHSV HIHI HIGH HSV") +} + +record(longin, "BL03S-EA-FSCN-01:CAM:ARResentPackets") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)ARAVIS_RESENT_PKTS") + field(SCAN, "I/O Intr") + info(autosaveFields, "DESC HHSV HIHI HIGH HSV") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:ARPacketResendEnable") +{ + field(DESC, "Packet resend enable") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)ARAVIS_PKT_RESEND") + field(ZRST, "Never") + field(ZRVL, "0") + field(ONST, "Always") + field(ONVL, "1") + field(VAL, "1") + field(PINI, "1") + info(autosaveFields, "DESC ONSV ZRSV PINI VAL") +} + +record(longout, "BL03S-EA-FSCN-01:CAM:ARPacketTimeout") +{ + field(DESC, "Delay in us before packet resend request") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)ARAVIS_PKT_TIMEOUT") + field(VAL, "20000") + field(EGU, "us") + field(PINI, "1") + info(autosaveFields, "DESC HHSV HIHI HIGH HSV LLSV LOLO LOW LSV PINI VAL") +} + +record(longout, "BL03S-EA-FSCN-01:CAM:ARFrameRetention") +{ + field(DESC, "Frame timeout in us after last packet") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)ARAVIS_FRAME_RETENTION") + field(VAL, "100000") + field(EGU, "us") + field(PINI, "1") + info(autosaveFields, "DESC HHSV HIHI HIGH HSV LLSV LOLO LOW LSV PINI VAL") +} + +record(longout, "BL03S-EA-FSCN-01:CAM:ARResetCamera") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)ARAVIS_RESET") + field(FLNK, "BL03S-EA-FSCN-01:CAM:ARConnectCamera") +} + +record(longout, "BL03S-EA-FSCN-01:CAM:ARConnectCamera") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)ARAVIS_CONNECTION") + field(VAL, "1") + field(PINI, "1") +} + +record(calcout, "BL03S-EA-FSCN-01:CAM:ARCheckConnection") +{ + field(SCAN, "1 second") + field(INPA, "BL03S-EA-FSCN-01:CAM:ARConnectCamera.SEVR CP") + field(CALC, "A==0") + field(OOPT, "When Non-zero") + field(OUT, "BL03S-EA-FSCN-01:CAM:ARConnectCamera.PROC PP") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:ARConvertPixelFormat_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)ARAVIS_CONVERT_PIXEL_FORMAT") + field(ZRST, "Mono16Low") + field(ZRVL, "0") + field(ONST, "Mono16High") + field(ONVL, "1") + field(SCAN, "I/O Intr") + info(autosaveFields, "DESC ZRSV ONSV") +} + + +## When unpacking Mono12Packed or Mono12p selects whether 16-bit output is +## left shifted by 4 bits (Mono16High) or not (Mono16Low) +record(mbbo, "BL03S-EA-FSCN-01:CAM:ARConvertPixelFormat") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)ARAVIS_CONVERT_PIXEL_FORMAT") + field(ZRST, "Mono16Low") + field(ZRVL, "0") + field(ONST, "Mono16High") + field(ONVL, "1") + field(PINI, "1") + info(autosaveFields, "DESC ZRSV ONSV VAL") +} + + +record(mbbi, "BL03S-EA-FSCN-01:CAM:ARShiftDir_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)ARAVIS_SHIFT_DIR") + field(ZRST, "None") + field(ZRVL, "0") + field(ONST, "Left") + field(ONVL, "1") + field(TWST, "Right") + field(TWVL, "2") + field(SCAN, "I/O Intr") + info(autosaveFields, "DESC ZRSV ONSV") +} + +## Select no shift, left shift, or right shift when reading data +record(mbbo, "BL03S-EA-FSCN-01:CAM:ARShiftDir") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)ARAVIS_SHIFT_DIR") + field(ZRST, "None") + field(ZRVL, "0") + field(ONST, "Left") + field(ONVL, "1") + field(TWST, "Right") + field(TWVL, "2") + field(PINI, "1") + info(autosaveFields, "DESC ZRSV ONSV VAL") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:ARShiftBits_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.CAM,0,1)ARAVIS_SHIFT_BITS") + field(ZRST, "1") + field(ZRVL, "1") + field(ONST, "2") + field(ONVL, "2") + field(TWST, "3") + field(TWVL, "3") + field(THST, "4") + field(THVL, "4") + field(FRST, "5") + field(FRVL, "5") + field(FVST, "6") + field(FVVL, "6") + field(SXST, "7") + field(SXVL, "7") + field(SVST, "8") + field(SVVL, "8") + field(SCAN, "I/O Intr") + info(autosaveFields, "DESC ZRSV ONSV") +} + +## Selects how many bits to shift left or right when reading data +record(mbbo, "BL03S-EA-FSCN-01:CAM:ARShiftBits") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.CAM,0,1)ARAVIS_SHIFT_BITS") + field(ZRST, "1") + field(ZRVL, "1") + field(ONST, "2") + field(ONVL, "2") + field(TWST, "3") + field(TWVL, "3") + field(THST, "4") + field(THVL, "4") + field(FRST, "5") + field(FRVL, "5") + field(FVST, "6") + field(FVVL, "6") + field(SXST, "7") + field(SXVL, "7") + field(SVST, "8") + field(SVVL, "8") + field(PINI, "1") + info(autosaveFields, "DESC ZRSV ONSV VAL") +} +# Database for the records specific to the ADAravis driver +# Macros: +#% macro, P, Device Prefix +#% macro, R, Device Suffix +#% macro, PORT, Asyn Port name +#% macro, TIMEOUT, Timeout, default 1 +#% macro, ADDR, Asyn Port address, default 0 + +# This associates a BOY screen with the template +# % gui, FSCN2.CAM, boydetail, aravisApp_opi/aravis_detail.opi, P=BL03S-EA-FSCN-02, R=:CAM:, DESC=Camera +# % gui, FSCN2.CAM, boyembed, aravisApp_opi/aravis_embed_box.opi, P=BL03S-EA-FSCN-02, R=:CAM:, DESC=Camera +# % gui, FSCN2.CAM, boyembed, aravisApp_opi/aravis_embed.opi, P=BL03S-EA-FSCN-02, R=:CAM:, DESC=Camera + +## ADGenICam.template +## Template database file to control some features of ADGenICam. +## +## Note: this file contains only the records that are not handled by the camera-specific GenICam autogenerated database + +#=================================================================# +# Template file: ADBase.template +# Database for area detector control using asyn driver and standard asyn device support +# Mark Rivers +# March 9, 2008 + +# Macros: +# % macro, P, Device Prefix +# % macro, R, Device Suffix +# % macro, PORT, Asyn Port name +# % macro, TIMEOUT, Timeout +# % macro, ADDR, Asyn Port address +# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs + +# Using SCANRATE:The ImageJ EPICS_AD_Viewer plugin monitors ArrayCounter_RBV to decide +# when there is a new image to display. That means that it will not display faster than +# the SCANRATE you select. + +#=================================================================# +# Template file: NDArrayBase.template +# Database for area detector control using asyn driver and standard asyn device support +# Mark Rivers +# March 9, 2008 + +################################################################### +# This record contains the version of ADCore # +################################################################### + +record(stringin, "BL03S-EA-FSCN-02:CAM:ADCoreVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.CAM,0,1)ADCORE_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains the version of the driver or plugin # +################################################################### + +record(stringin, "BL03S-EA-FSCN-02:CAM:DriverVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.CAM,0,1)DRIVER_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains the asyn port name of this detector # +################################################################### + +record(stringin, "BL03S-EA-FSCN-02:CAM:PortName_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.CAM,0,1)PORT_NAME_SELF") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records contain basic information about the detector # +################################################################### + +record(stringin, "BL03S-EA-FSCN-02:CAM:Manufacturer_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.CAM,0,1)MANUFACTURER") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-EA-FSCN-02:CAM:Model_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.CAM,0,1)MODEL") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-EA-FSCN-02:CAM:SerialNumber_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.CAM,0,1)SERIAL_NUMBER") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-EA-FSCN-02:CAM:SDKVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.CAM,0,1)SDK_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-EA-FSCN-02:CAM:FirmwareVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.CAM,0,1)FIRMWARE_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control acquisition start and stop # +################################################################### + +record(bo, "BL03S-EA-FSCN-02:CAM:Acquire") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)ACQUIRE") + field(ZNAM, "Done") + field(ONAM, "Acquire") + field(VAL, "0") + field(FLNK, "BL03S-EA-FSCN-02:CAM:SetAcquireBusy") + info(asyn:READBACK, "1") +} + +record(bi, "BL03S-EA-FSCN-02:CAM:Acquire_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)ACQUIRE") + field(ZNAM, "Done") + field(ZSV, "NO_ALARM") + field(ONAM, "Acquiring") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +record(calcout, "BL03S-EA-FSCN-02:CAM:SetAcquireBusy") +{ + field(INPA, "BL03S-EA-FSCN-02:CAM:Acquire NPP") + field(CALC, "A") + field(OOPT, "Transition To Non-zero") + field(OUT, "BL03S-EA-FSCN-02:CAM:AcquireBusy PP") +} + +record(bi, "BL03S-EA-FSCN-02:CAM:AcquireBusy") { + field(ZNAM, "Done") + field(ZSV, "NO_ALARM") + field(ONAM, "Acquiring") + field(OSV, "MINOR") + field(VAL, "0") +} + +record(bi, "BL03S-EA-FSCN-02:CAM:AcquireBusyCB") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)ACQUIRE_BUSY") + field(ZNAM, "Done") + field(ZSV, "NO_ALARM") + field(ONAM, "Acquiring") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +record(calcout, "BL03S-EA-FSCN-02:CAM:ClearAcquireBusy") { + field(INPA, "BL03S-EA-FSCN-02:CAM:AcquireBusyCB CP") + field(CALC, "A") + field(OOPT, "Transition To Zero") + field(OUT, "BL03S-EA-FSCN-02:CAM:AcquireBusy PP") +} + +record(bo, "BL03S-EA-FSCN-02:CAM:WaitForPlugins") { + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)WAIT_FOR_PLUGINS") + field(ZNAM, "No") + field(ONAM, "Yes") + field(VAL, "0") +} + +################################################################### +# These records are the array size and data type # +################################################################### +# The number of dimensions +record(longout, "BL03S-EA-FSCN-02:CAM:NDimensions") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)ARRAY_NDIMENSIONS") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:NDimensions_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)ARRAY_NDIMENSIONS") + field(SCAN, "I/O Intr") +} + +# The array dimensions waveform records +record(waveform, "BL03S-EA-FSCN-02:CAM:Dimensions") +{ + field(DTYP, "asynInt32ArrayOut") + field(INP, "@asyn(FSCN2.CAM,0,1)ARRAY_DIMENSIONS") + field(FTVL, "LONG") + field(NELM, "10") + field(FLNK, "BL03S-EA-FSCN-02:CAM:Dim0SA") +} + +record(subArray, "BL03S-EA-FSCN-02:CAM:Dim0SA") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "0") + field(FLNK, "BL03S-EA-FSCN-02:CAM:ArraySize0") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ArraySize0") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dim0SA") + field(FLNK, "BL03S-EA-FSCN-02:CAM:Dim1SA") +} + +record(subArray, "BL03S-EA-FSCN-02:CAM:Dim1SA") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "1") + field(FLNK, "BL03S-EA-FSCN-02:CAM:ArraySize1") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ArraySize1") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dim1SA") + field(FLNK, "BL03S-EA-FSCN-02:CAM:Dim2SA") +} + +record(subArray, "BL03S-EA-FSCN-02:CAM:Dim2SA") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "2") + field(FLNK, "BL03S-EA-FSCN-02:CAM:ArraySize2") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ArraySize2") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dim2SA") + field(FLNK, "BL03S-EA-FSCN-02:CAM:Dim3SA") +} + +record(subArray, "BL03S-EA-FSCN-02:CAM:Dim3SA") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "3") + field(FLNK, "BL03S-EA-FSCN-02:CAM:ArraySize3") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ArraySize3") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dim3SA") + field(FLNK, "BL03S-EA-FSCN-02:CAM:Dim4SA") +} + +record(subArray, "BL03S-EA-FSCN-02:CAM:Dim4SA") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "4") + field(FLNK, "BL03S-EA-FSCN-02:CAM:ArraySize4") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ArraySize4") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dim4SA") + field(FLNK, "BL03S-EA-FSCN-02:CAM:Dim5SA") +} + +record(subArray, "BL03S-EA-FSCN-02:CAM:Dim5SA") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "5") + field(FLNK, "BL03S-EA-FSCN-02:CAM:ArraySize5") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ArraySize5") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dim5SA") + field(FLNK, "BL03S-EA-FSCN-02:CAM:Dim6SA") +} + +record(subArray, "BL03S-EA-FSCN-02:CAM:Dim6SA") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "6") + field(FLNK, "BL03S-EA-FSCN-02:CAM:ArraySize6") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ArraySize6") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dim6SA") + field(FLNK, "BL03S-EA-FSCN-02:CAM:Dim7SA") +} + +record(subArray, "BL03S-EA-FSCN-02:CAM:Dim7SA") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "7") + field(FLNK, "BL03S-EA-FSCN-02:CAM:ArraySize7") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ArraySize7") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dim7SA") + field(FLNK, "BL03S-EA-FSCN-02:CAM:Dim8SA") +} + +record(subArray, "BL03S-EA-FSCN-02:CAM:Dim8SA") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "8") + field(FLNK, "BL03S-EA-FSCN-02:CAM:ArraySize8") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ArraySize8") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dim8SA") + field(FLNK, "BL03S-EA-FSCN-02:CAM:Dim9SA") +} + +record(subArray, "BL03S-EA-FSCN-02:CAM:Dim9SA") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "9") + field(FLNK, "BL03S-EA-FSCN-02:CAM:ArraySize9") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ArraySize9") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dim9SA") +} + + +record(waveform, "BL03S-EA-FSCN-02:CAM:Dimensions_RBV") +{ + field(DTYP, "asynInt32ArrayIn") + field(INP, "@asyn(FSCN2.CAM,0,1)ARRAY_DIMENSIONS") + field(FTVL, "LONG") + field(NELM, "10") + field(FLNK, "BL03S-EA-FSCN-02:CAM:Dim0SA_RBV") + field(SCAN, "I/O Intr") +} + +record(subArray, "BL03S-EA-FSCN-02:CAM:Dim0SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "0") + field(FLNK, "BL03S-EA-FSCN-02:CAM:ArraySize0_RBV") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ArraySize0_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dim0SA_RBV") + field(FLNK, "BL03S-EA-FSCN-02:CAM:Dim1SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-02:CAM:Dim1SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "1") + field(FLNK, "BL03S-EA-FSCN-02:CAM:ArraySize1_RBV") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ArraySize1_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dim1SA_RBV") + field(FLNK, "BL03S-EA-FSCN-02:CAM:Dim2SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-02:CAM:Dim2SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "2") + field(FLNK, "BL03S-EA-FSCN-02:CAM:ArraySize2_RBV") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ArraySize2_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dim2SA_RBV") + field(FLNK, "BL03S-EA-FSCN-02:CAM:Dim3SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-02:CAM:Dim3SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "3") + field(FLNK, "BL03S-EA-FSCN-02:CAM:ArraySize3_RBV") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ArraySize3_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dim3SA_RBV") + field(FLNK, "BL03S-EA-FSCN-02:CAM:Dim4SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-02:CAM:Dim4SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "4") + field(FLNK, "BL03S-EA-FSCN-02:CAM:ArraySize4_RBV") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ArraySize4_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dim4SA_RBV") + field(FLNK, "BL03S-EA-FSCN-02:CAM:Dim5SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-02:CAM:Dim5SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "5") + field(FLNK, "BL03S-EA-FSCN-02:CAM:ArraySize5_RBV") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ArraySize5_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dim5SA_RBV") + field(FLNK, "BL03S-EA-FSCN-02:CAM:Dim6SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-02:CAM:Dim6SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "6") + field(FLNK, "BL03S-EA-FSCN-02:CAM:ArraySize6_RBV") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ArraySize6_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dim6SA_RBV") + field(FLNK, "BL03S-EA-FSCN-02:CAM:Dim7SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-02:CAM:Dim7SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "7") + field(FLNK, "BL03S-EA-FSCN-02:CAM:ArraySize7_RBV") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ArraySize7_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dim7SA_RBV") + field(FLNK, "BL03S-EA-FSCN-02:CAM:Dim8SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-02:CAM:Dim8SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "8") + field(FLNK, "BL03S-EA-FSCN-02:CAM:ArraySize8_RBV") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ArraySize8_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dim8SA_RBV") + field(FLNK, "BL03S-EA-FSCN-02:CAM:Dim9SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-02:CAM:Dim9SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "9") + field(FLNK, "BL03S-EA-FSCN-02:CAM:ArraySize9_RBV") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ArraySize9_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:CAM:Dim9SA_RBV") +} + + +record(mbbi, "BL03S-EA-FSCN-02:CAM:BayerPattern_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)BAYER_PATTERN") + field(ZRST, "RGGB") + field(ZRVL, "0") + field(ONST, "GBRG") + field(ONVL, "1") + field(TWST, "GRBG") + field(TWVL, "2") + field(THST, "BGGR") + field(THVL, "3") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ArraySizeX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)ARRAY_SIZE_X") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ArraySizeY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)ARRAY_SIZE_Y") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ArraySizeZ_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)ARRAY_SIZE_Z") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ArraySize_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)ARRAY_SIZE") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records have information on the compression # +################################################################### +record(stringin, "BL03S-EA-FSCN-02:CAM:Codec_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.CAM,0,1)CODEC") + field(VAL, "") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:CompressedSize_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)COMPRESSED_SIZE") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the data type # +################################################################### + +record(mbbo, "BL03S-EA-FSCN-02:CAM:DataType") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)DATA_TYPE") + field(ZRST, "Int8") + field(ZRVL, "0") + field(ONST, "UInt8") + field(ONVL, "1") + field(TWST, "Int16") + field(TWVL, "2") + field(THST, "UInt16") + field(THVL, "3") + field(FRST, "Int32") + field(FRVL, "4") + field(FVST, "UInt32") + field(FVVL, "5") + field(SXST, "Int64") + field(SXVL, "6") + field(SVST, "UInt64") + field(SVVL, "7") + field(EIST, "Float32") + field(EIVL, "8") + field(NIST, "Float64") + field(NIVL, "9") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:DataType_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)DATA_TYPE") + field(ZRST, "Int8") + field(ZRVL, "0") + field(ONST, "UInt8") + field(ONVL, "1") + field(TWST, "Int16") + field(TWVL, "2") + field(THST, "UInt16") + field(THVL, "3") + field(FRST, "Int32") + field(FRVL, "4") + field(FVST, "UInt32") + field(FVVL, "5") + field(SXST, "Int64") + field(SXVL, "6") + field(SVST, "UInt64") + field(SVVL, "7") + field(EIST, "Float32") + field(EIVL, "8") + field(NIST, "Float64") + field(NIVL, "9") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the color mode # +# These choices must agree with NDColorMode_t in NDArray.h # +################################################################### + +record(mbbo, "BL03S-EA-FSCN-02:CAM:ColorMode") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)COLOR_MODE") + field(ZRST, "Mono") + field(ZRVL, "0") + field(ONST, "Bayer") + field(ONVL, "1") + field(TWST, "RGB1") + field(TWVL, "2") + field(THST, "RGB2") + field(THVL, "3") + field(FRST, "RGB3") + field(FRVL, "4") + field(FVST, "YUV444") + field(FVVL, "5") + field(SXST, "YUV422") + field(SXVL, "6") + field(SVST, "YUV421") + field(SVVL, "7") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:ColorMode_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)COLOR_MODE") + field(ZRST, "Mono") + field(ZRVL, "0") + field(ONST, "Bayer") + field(ONVL, "1") + field(TWST, "RGB1") + field(TWVL, "2") + field(THST, "RGB2") + field(THVL, "3") + field(FRST, "RGB3") + field(FRVL, "4") + field(FVST, "YUV444") + field(FVVL, "5") + field(SXST, "YUV422") + field(SXVL, "6") + field(SVST, "YUV421") + field(SVVL, "7") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records are the uniqueId and time stamps of the array # +################################################################### +record(longin, "BL03S-EA-FSCN-02:CAM:UniqueId_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)UNIQUE_ID") + field(SCAN, "I/O Intr") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:TimeStamp_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)TIME_STAMP") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:EpicsTSSec_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)EPICS_TS_SEC") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:EpicsTSNsec_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)EPICS_TS_NSEC") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records provide statistics on array callbacks and # +# array callback rates # +################################################################### +record(longout, "BL03S-EA-FSCN-02:CAM:ArrayCounter") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)ARRAY_COUNTER") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ArrayCounter_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)ARRAY_COUNTER") + field(SCAN, "I/O Intr") +} + +# Updated rate calculation to use a smoothing factor w/ guard against negative values +record(calc, "BL03S-EA-FSCN-02:CAM:ArrayRate_RBV") +{ + field(INPA, "BL03S-EA-FSCN-02:CAM:ArrayRate_RBV.LB NPP NMS") # Previous counter value + field(INPB, "BL03S-EA-FSCN-02:CAM:ArrayCounter_RBV NPP NMS") # Current counter value + field(INPC, "1.0") # Delta time in seconds + field(INPD, "BL03S-EA-FSCN-02:CAM:ArrayRate_RBV.VAL NPP NMS") # Previous rate + field(INPE, "0.0") # Smoothing factor + field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") + field(PREC, "2" ) + field(EGU, "Hz" ) + field(SCAN, "1 second") +} + +################################################################### +# These records control NDArray callacks # +################################################################### +record(bo, "BL03S-EA-FSCN-02:CAM:ArrayCallbacks") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)ARRAY_CALLBACKS") + field(ZNAM, "Disable") + field(ZSV, "NO_ALARM") + field(ONAM, "Enable") + field(OSV, "MINOR") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(bi, "BL03S-EA-FSCN-02:CAM:ArrayCallbacks_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)ARRAY_CALLBACKS") + field(ZNAM, "Disable") + field(ZSV, "NO_ALARM") + field(ONAM, "Enable") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains macro definitions for the attributes # +################################################################### + +record(waveform, "BL03S-EA-FSCN-02:CAM:NDAttributesMacros") +{ + field(PINI, "YES") + field(DTYP, "asynOctetWrite") + field(INP, "@asyn(FSCN2.CAM,0,1)ND_ATTRIBUTES_MACROS") + field(FTVL, "CHAR") + field(NELM, "256") + info(autosaveFields, "VAL") +} + +################################################################### +# This record is the name of a file defining attributes # +################################################################### + +record(waveform, "BL03S-EA-FSCN-02:CAM:NDAttributesFile") +{ + field(PINI, "YES") + field(DTYP, "asynOctetWrite") + field(INP, "@asyn(FSCN2.CAM,0,1)ND_ATTRIBUTES_FILE") + field(FTVL, "CHAR") + field(NELM, "256") + info(autosaveFields, "VAL") +} + +################################################################### +# This record defines the status of reading attributes file # +################################################################### + +record(mbbi, "BL03S-EA-FSCN-02:CAM:NDAttributesStatus") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)ND_ATTRIBUTES_STATUS") + field(ZRVL, "0") + field(ZRST, "Attributes file OK") + field(ZRSV, "NO_ALARM") + field(ONVL, "1") + field(ONST, "File not found") + field(ONSV, "MINOR") + field(TWVL, "2") + field(TWST, "XML syntax error") + field(TWSV, "MAJOR") + field(THVL, "3") + field(THST, "Macro substitution error") + field(THSV, "MAJOR") + field(SCAN, "I/O Intr") +} + +################################################################### +# Status of NDArrayPool - number of buffers, memory used etc. # +################################################################### + +record(ai, "BL03S-EA-FSCN-02:CAM:PoolMaxMem") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)POOL_MAX_MEMORY") + field(PREC, "1") + field(EGU, "MB") + field(SCAN, "Passive") + field(PINI, "YES") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:PoolUsedMem") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)POOL_USED_MEMORY") + field(PREC, "1") + field(EGU, "MB") + field(SCAN, "1 second") + field(FLNK, "BL03S-EA-FSCN-02:CAM:PoolAllocBuffers") + info(autosaveFields, "SCAN") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:PoolAllocBuffers") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)POOL_ALLOC_BUFFERS") + field(FLNK, "BL03S-EA-FSCN-02:CAM:PoolFreeBuffers") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:PoolFreeBuffers") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)POOL_FREE_BUFFERS") + field(FLNK, "BL03S-EA-FSCN-02:CAM:PoolUsedBuffers") +} + +record(calc, "BL03S-EA-FSCN-02:CAM:PoolUsedBuffers") +{ + field(INPA, "BL03S-EA-FSCN-02:CAM:PoolAllocBuffers NPP MS") + field(INPB, "BL03S-EA-FSCN-02:CAM:PoolFreeBuffers NPP MS") + field(CALC, "A-B") +} + +record(bo, "BL03S-EA-FSCN-02:CAM:EmptyFreeList") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)POOL_EMPTY_FREELIST") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:NumQueuedArrays") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)NUM_QUEUED_ARRAYS") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:MaxSizeX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)MAX_SIZE_X") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:MaxSizeY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)MAX_SIZE_Y") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the detector readout # +# including binning, region start and size # +################################################################### + +record(longout, "BL03S-EA-FSCN-02:CAM:BinX") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)BIN_X") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:BinX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)BIN_X") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-EA-FSCN-02:CAM:BinY") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)BIN_Y") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:BinY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)BIN_Y") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-EA-FSCN-02:CAM:MinX") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)MIN_X") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:MinX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)MIN_X") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-EA-FSCN-02:CAM:MinY") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)MIN_Y") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:MinY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)MIN_Y") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-EA-FSCN-02:CAM:SizeX") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)SIZE_X") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:SizeX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)SIZE_X") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-EA-FSCN-02:CAM:SizeY") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)SIZE_Y") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:SizeY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)SIZE_Y") + field(SCAN, "I/O Intr") +} + +record(bo, "BL03S-EA-FSCN-02:CAM:ReverseX") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)REVERSE_X") + field(ZNAM, "No") + field(ONAM, "Yes") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(bi, "BL03S-EA-FSCN-02:CAM:ReverseX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)REVERSE_X") + field(ZNAM, "No") + field(ONAM, "Yes") + field(SCAN, "I/O Intr") +} + +record(bo, "BL03S-EA-FSCN-02:CAM:ReverseY") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)REVERSE_Y") + field(ZNAM, "No") + field(ONAM, "Yes") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(bi, "BL03S-EA-FSCN-02:CAM:ReverseY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)REVERSE_Y") + field(ZNAM, "No") + field(ONAM, "Yes") + field(SCAN, "I/O Intr") +} + + +################################################################### +# These records control the acquisition time and # +# period # +################################################################### +record(ao, "BL03S-EA-FSCN-02:CAM:AcquireTime") +{ + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN2.CAM,0,1)ACQ_TIME") + field(PREC, "3") + field(VAL, "1.0") + info(autosaveFields, "VAL") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:AcquireTime_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)ACQ_TIME") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:AcquirePeriod") +{ + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN2.CAM,0,1)ACQ_PERIOD") + field(PREC, "3") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:AcquirePeriod_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)ACQ_PERIOD") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:TimeRemaining_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)TIME_REMAINING") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the gain # +################################################################### +record(ao, "BL03S-EA-FSCN-02:CAM:Gain") +{ + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN2.CAM,0,1)GAIN") + field(VAL, "1.0") + field(PREC, "3") + info(autosaveFields, "VAL") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:Gain_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)GAIN") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the frame type # +################################################################### +record(mbbo, "BL03S-EA-FSCN-02:CAM:FrameType") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)FRAME_TYPE") + field(ZRST, "Normal") + field(ZRVL, "0") + field(ONST, "Background") + field(ONVL, "1") + field(TWST, "FlatField") + field(TWVL, "2") + field(THST, "DblCorrelation") + field(THVL, "3") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:FrameType_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)FRAME_TYPE") + field(ZRST, "Normal") + field(ZRVL, "0") + field(ONST, "Background") + field(ONVL, "1") + field(TWST, "FlatField") + field(TWVL, "2") + field(THST, "DblCorrelation") + field(THVL, "3") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the acquisition mode # +################################################################### +record(mbbo, "BL03S-EA-FSCN-02:CAM:ImageMode") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)IMAGE_MODE") + field(ZRST, "Single") + field(ZRVL, "0") + field(ONST, "Multiple") + field(ONVL, "1") + field(TWST, "Continuous") + field(TWVL, "2") + field(VAL, "2") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:ImageMode_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)IMAGE_MODE") + field(ZRST, "Single") + field(ZRVL, "0") + field(ONST, "Multiple") + field(ONVL, "1") + field(TWST, "Continuous") + field(TWVL, "2") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the trigger mode # +################################################################### +record(mbbo, "BL03S-EA-FSCN-02:CAM:TriggerMode") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)TRIGGER_MODE") + field(ZRST, "Internal") + field(ZRVL, "0") + field(ONST, "External") + field(ONVL, "1") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:TriggerMode_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)TRIGGER_MODE") + field(ZRST, "Internal") + field(ZRVL, "0") + field(ONST, "External") + field(ONVL, "1") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the number of exposures and # +# number of images # +################################################################### +record(longout, "BL03S-EA-FSCN-02:CAM:NumExposures") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)NEXPOSURES") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:NumExposures_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)NEXPOSURES") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:NumExposuresCounter_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)NEXPOSURES_COUNTER") + field(SCAN, "I/O Intr") +} +record(longout, "BL03S-EA-FSCN-02:CAM:NumImages") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)NIMAGES") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:NumImages_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)NIMAGES") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:NumImagesCounter_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)NIMAGES_COUNTER") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records are for the detector state # +################################################################### + +record(mbbi, "BL03S-EA-FSCN-02:CAM:DetectorState_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)STATUS") + field(ZRST, "Idle") + field(ZRVL, "0") + field(ZRSV, "NO_ALARM") + field(ONST, "Acquire") + field(ONVL, "1") + field(ONSV, "NO_ALARM") + field(TWST, "Readout") + field(TWVL, "2") + field(TWSV, "NO_ALARM") + field(THST, "Correct") + field(THVL, "3") + field(THSV, "NO_ALARM") + field(FRST, "Saving") + field(FRVL, "4") + field(FRSV, "NO_ALARM") + field(FVST, "Aborting") + field(FVVL, "5") + field(FVSV, "MINOR") + field(SXST, "Error") + field(SXVL, "6") + field(SXSV, "MAJOR") + field(SVST, "Waiting") + field(SVVL, "7") + field(SVSV, "NO_ALARM") + field(EIST, "Initializing") + field(EIVL, "8") + field(EISV, "NO_ALARM") + field(NIST, "Disconnected") + field(NIVL, "9") + field(NISV, "INVALID") + field(TEST, "Aborted") + field(TEVL, "10") + field(TESV, "MINOR") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records provide status information # +################################################################### + +# Status message. +record(waveform, "BL03S-EA-FSCN-02:CAM:StatusMessage_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.CAM,0,1)STATUS_MESSAGE") + field(FTVL, "CHAR") + field(NELM, "256") + field(SCAN, "I/O Intr") +} + +record(waveform, "BL03S-EA-FSCN-02:CAM:StringToServer_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.CAM,0,1)STRING_TO_SERVER") + field(FTVL, "CHAR") + field(NELM, "256") + field(SCAN, "I/O Intr") +} + +record(waveform, "BL03S-EA-FSCN-02:CAM:StringFromServer_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.CAM,0,1)STRING_FROM_SERVER") + field(FTVL, "CHAR") + field(NELM, "256") + field(SCAN, "I/O Intr") +} + +################################################################@### +# This record can be used to force a read of the detector status # +#################################################################### +record(bo,"BL03S-EA-FSCN-02:CAM:ReadStatus") { + field(DTYP,"asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)READ_STATUS") + field(VAL, "1") + field(SCAN,"Passive") + info(autosaveFields, "SCAN") +} + +################################################################### +# These records control the shutter # +################################################################### + +record(mbbo, "BL03S-EA-FSCN-02:CAM:ShutterMode") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)SHUTTER_MODE") + field(ZRST, "None") + field(ZRVL, "0") + field(ONST, "EPICS PV") + field(ONVL, "1") + field(TWST, "Detector output") + field(TWVL, "2") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:ShutterMode_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)SHUTTER_MODE") + field(ZRST, "None") + field(ZRVL, "0") + field(ONST, "EPICS PV") + field(ONVL, "1") + field(TWST, "Camera output") + field(TWVL, "2") + field(SCAN, "I/O Intr") +} + +record(bo, "BL03S-EA-FSCN-02:CAM:ShutterControl") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)SHUTTER_CONTROL") + field(ZNAM, "Close") + field(ONAM, "Open") + field(VAL, "0") +} + +record(bi, "BL03S-EA-FSCN-02:CAM:ShutterControl_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)SHUTTER_CONTROL") + field(ZNAM, "Close") + field(ONAM, "Open") + field(SCAN, "I/O Intr") +} + +record(bi, "BL03S-EA-FSCN-02:CAM:ShutterStatus_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)SHUTTER_STATUS") + field(ZNAM, "Closed") + field(ZSV, "NO_ALARM") + field(ONAM, "Open") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:ShutterOpenDelay") +{ + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN2.CAM,0,1)SHUTTER_OPEN_DELAY") + field(PREC, "3") + field(VAL, "0.0") + info(autosaveFields, "VAL") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:ShutterOpenDelay_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)SHUTTER_OPEN_DELAY") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:ShutterCloseDelay") +{ + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN2.CAM,0,1)SHUTTER_CLOSE_DELAY") + field(PREC, "3") + field(VAL, "0.0") + info(autosaveFields, "VAL") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:ShutterCloseDelay_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)SHUTTER_CLOSE_DELAY") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +# This record changes state when the driver opens/closes an EPICS shutter +record(bi, "BL03S-EA-FSCN-02:CAM:ShutterControlEPICS") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)SHUTTER_CONTROL_EPICS") + field(ZNAM, "Closed") + field(ZSV, "NO_ALARM") + field(ONAM, "Open") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") + field(FLNK, "BL03S-EA-FSCN-02:CAM:ShutterFanout.PROC") +} + +record(fanout, "BL03S-EA-FSCN-02:CAM:ShutterFanout") +{ + field(LNK1, "BL03S-EA-FSCN-02:CAM:ShutterOpenEPICS.PROC PP MS") + field(LNK2, "BL03S-EA-FSCN-02:CAM:ShutterCloseEPICS.PROC PP MS") +} + +record(calcout, "BL03S-EA-FSCN-02:CAM:ShutterOpenEPICS") +{ + field(INPA, "BL03S-EA-FSCN-02:CAM:ShutterControlEPICS.VAL NPP NMS") + field(CALC, "A") + field(OOPT, "Transition To Non-zero") + field(DOPT, "Use OCAL") + field(OCAL, "1") + field(OUT, "") + info(autosaveFields, "OUT OCAL") +} + +record(calcout, "BL03S-EA-FSCN-02:CAM:ShutterCloseEPICS") +{ + field(INPA, "BL03S-EA-FSCN-02:CAM:ShutterControlEPICS.VAL NPP NMS") + field(CALC, "A") + field(OOPT, "Transition To Zero") + field(DOPT, "Use OCAL") + field(OCAL, "0") + field(OUT, "") + info(autosaveFields, "OUT OCAL") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:ShutterStatusEPICS_RBV") +{ + field(DTYP, "Raw Soft Channel") + field(INP, "test CP MS") + field(ZRVL, "0") + field(ZRST, "Closed") + field(ZRSV, "NO_ALARM") + field(ONVL, "1") + field(ONST, "Open") + field(ONSV, "MINOR") + info(autosaveFields, "INP ZRVL ONVL") +} + +################################################################### +# These records control the detector temperature # +################################################################### + +record(ao, "BL03S-EA-FSCN-02:CAM:Temperature") +{ + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN2.CAM,0,1)TEMPERATURE") + field(PREC, "1") + field(EGU, "C") + field(VAL, "25.0") + info(autosaveFields, "VAL") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:Temperature_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)TEMPERATURE") + field(PREC, "1") + field(EGU, "C") + field(SCAN, "I/O Intr") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:TemperatureActual") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)TEMPERATURE_ACTUAL") + field(PREC, "1") + field(EGU, "C") + field(SCAN, "I/O Intr") +} + + +################################################################### +# The asynRecord is used for mainly for trace mask # +################################################################### + +## These are the records from ADBase.template that we modify + +# Some cameras use both AcquisitionFrameRate and AcquirePeriod. +# Make AcquirePeriod update if FrameRate is changed. +record(ao, "BL03S-EA-FSCN-02:CAM:AcquirePeriod") +{ + info(asyn:READBACK, "1") +} + +# This record hides the fact that some cameras use FrameRate and some use FrameRateAbs +# This is not PINI=YES because AcquirePeriod is and they control the same thing +record(ao, "BL03S-EA-FSCN-02:CAM:FrameRate") +{ + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN2.CAM 0)GC_FRAMERATE") + field(PREC, "3") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:FrameRate_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM 0)GC_FRAMERATE") + field(SCAN, "I/O Intr") + field(PREC, "3") +} + +# Some cameras (Basler, Point Grey, FLIR) use AcquisitionFrameRateEnable or AcquisitionFrameRateEnabled +# This record hides the fact that the feature name may differ; the record name is always the same. +record(bo, "BL03S-EA-FSCN-02:CAM:FrameRateEnable") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM 0)GC_FRAMERATE_ENABLE") + field(ZNAM, "No") + field(ONAM, "Yes") +} + +record(bi, "BL03S-EA-FSCN-02:CAM:FrameRateEnable_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM 0)GC_FRAMERATE_ENABLE") + field(SCAN, "I/O Intr") + field(ZNAM, "No") + field(ONAM, "Yes") +} + +# This record is used to ensure there is a record for TriggerSource even if there is no such GenICam feature +record(mbbo, "BL03S-EA-FSCN-02:CAM:TriggerSource") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM 0)GC_TRIGGER_SOURCE") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:TriggerSource_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM 0)GC_TRIGGER_SOURCE") + field(ZRST, "N.A.") + field(ZRVL, "0") + field(SCAN, "I/O Intr") +} + +# This record is used to ensure there is a record for TriggerOverlap even if there is no such GenICam feature +record(mbbo, "BL03S-EA-FSCN-02:CAM:TriggerOverlap") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM 0)GC_TRIGGER_OVERLAP") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:TriggerOverlap_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM 0)GC_TRIGGER_OVERLAP") + field(SCAN, "I/O Intr") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +# This record is used to ensure there is a record for TriggerSoftware even if there is no such GenICam feature +record(bo, "BL03S-EA-FSCN-02:CAM:TriggerSoftware") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM 0)GC_TRIGGER_SOFTWARE") + field(ZNAM, "Done") + field(ONAM, "Trigger") +} + +# This record is used to ensure there is a record for ExposureMode even if there is no such GenICam feature +record(mbbo, "BL03S-EA-FSCN-02:CAM:ExposureMode") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM 0)GC_EXPOSURE_MODE") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:ExposureMode_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM 0)GC_EXPOSURE_MODE") + field(ZRST, "N.A.") + field(ZRVL, "0") + field(SCAN, "I/O Intr") +} + +# This record is used to ensure there is a record for ExposureAuto even if there is no such GenICam feature +record(mbbo, "BL03S-EA-FSCN-02:CAM:ExposureAuto") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM 0)GC_EXPOSURE_AUTO") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:ExposureAuto_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM 0)GC_EXPOSURE_AUTO") + field(SCAN, "I/O Intr") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +# This record is used to ensure there is a record for GainAuto even if there is no such GenICam feature +record(mbbo, "BL03S-EA-FSCN-02:CAM:GainAuto") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM 0)GC_GAIN_AUTO") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GainAuto_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM 0)GC_GAIN_AUTO") + field(SCAN, "I/O Intr") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +# This record is used to ensure there is a record for PixelFormat even if there is no such GenICam feature +record(mbbo, "BL03S-EA-FSCN-02:CAM:PixelFormat") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM 0)GC_PIXEL_FORMAT") + field(ZRST, "N.A.") + field(ZRVL, "0") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:PixelFormat_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM 0)GC_PIXEL_FORMAT") + field(ZRST, "N.A.") + field(ZRVL, "0") + field(SCAN, "I/O Intr") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:ARFramesCompleted") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)ARAVIS_COMPLETED") + field(SCAN, "I/O Intr") + info(autosaveFields, "DESC LLSV LOLO LOW LSV") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:ARFrameFailures") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)ARAVIS_FAILURES") + field(SCAN, "I/O Intr") + info(autosaveFields, "DESC HHSV HIHI HIGH HSV") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:ARFrameUnderruns") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.CAM,0,1)ARAVIS_UNDERRUNS") + field(SCAN, "I/O Intr") + info(autosaveFields, "DESC HHSV HIHI HIGH HSV") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ARMissingPackets") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)ARAVIS_MISSING_PKTS") + field(SCAN, "I/O Intr") + info(autosaveFields, "DESC HHSV HIHI HIGH HSV") +} + +record(longin, "BL03S-EA-FSCN-02:CAM:ARResentPackets") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)ARAVIS_RESENT_PKTS") + field(SCAN, "I/O Intr") + info(autosaveFields, "DESC HHSV HIHI HIGH HSV") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:ARPacketResendEnable") +{ + field(DESC, "Packet resend enable") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)ARAVIS_PKT_RESEND") + field(ZRST, "Never") + field(ZRVL, "0") + field(ONST, "Always") + field(ONVL, "1") + field(VAL, "1") + field(PINI, "1") + info(autosaveFields, "DESC ONSV ZRSV PINI VAL") +} + +record(longout, "BL03S-EA-FSCN-02:CAM:ARPacketTimeout") +{ + field(DESC, "Delay in us before packet resend request") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)ARAVIS_PKT_TIMEOUT") + field(VAL, "20000") + field(EGU, "us") + field(PINI, "1") + info(autosaveFields, "DESC HHSV HIHI HIGH HSV LLSV LOLO LOW LSV PINI VAL") +} + +record(longout, "BL03S-EA-FSCN-02:CAM:ARFrameRetention") +{ + field(DESC, "Frame timeout in us after last packet") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)ARAVIS_FRAME_RETENTION") + field(VAL, "100000") + field(EGU, "us") + field(PINI, "1") + info(autosaveFields, "DESC HHSV HIHI HIGH HSV LLSV LOLO LOW LSV PINI VAL") +} + +record(longout, "BL03S-EA-FSCN-02:CAM:ARResetCamera") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)ARAVIS_RESET") + field(FLNK, "BL03S-EA-FSCN-02:CAM:ARConnectCamera") +} + +record(longout, "BL03S-EA-FSCN-02:CAM:ARConnectCamera") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)ARAVIS_CONNECTION") + field(VAL, "1") + field(PINI, "1") +} + +record(calcout, "BL03S-EA-FSCN-02:CAM:ARCheckConnection") +{ + field(SCAN, "1 second") + field(INPA, "BL03S-EA-FSCN-02:CAM:ARConnectCamera.SEVR CP") + field(CALC, "A==0") + field(OOPT, "When Non-zero") + field(OUT, "BL03S-EA-FSCN-02:CAM:ARConnectCamera.PROC PP") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:ARConvertPixelFormat_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)ARAVIS_CONVERT_PIXEL_FORMAT") + field(ZRST, "Mono16Low") + field(ZRVL, "0") + field(ONST, "Mono16High") + field(ONVL, "1") + field(SCAN, "I/O Intr") + info(autosaveFields, "DESC ZRSV ONSV") +} + + +## When unpacking Mono12Packed or Mono12p selects whether 16-bit output is +## left shifted by 4 bits (Mono16High) or not (Mono16Low) +record(mbbo, "BL03S-EA-FSCN-02:CAM:ARConvertPixelFormat") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)ARAVIS_CONVERT_PIXEL_FORMAT") + field(ZRST, "Mono16Low") + field(ZRVL, "0") + field(ONST, "Mono16High") + field(ONVL, "1") + field(PINI, "1") + info(autosaveFields, "DESC ZRSV ONSV VAL") +} + + +record(mbbi, "BL03S-EA-FSCN-02:CAM:ARShiftDir_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)ARAVIS_SHIFT_DIR") + field(ZRST, "None") + field(ZRVL, "0") + field(ONST, "Left") + field(ONVL, "1") + field(TWST, "Right") + field(TWVL, "2") + field(SCAN, "I/O Intr") + info(autosaveFields, "DESC ZRSV ONSV") +} + +## Select no shift, left shift, or right shift when reading data +record(mbbo, "BL03S-EA-FSCN-02:CAM:ARShiftDir") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)ARAVIS_SHIFT_DIR") + field(ZRST, "None") + field(ZRVL, "0") + field(ONST, "Left") + field(ONVL, "1") + field(TWST, "Right") + field(TWVL, "2") + field(PINI, "1") + info(autosaveFields, "DESC ZRSV ONSV VAL") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:ARShiftBits_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.CAM,0,1)ARAVIS_SHIFT_BITS") + field(ZRST, "1") + field(ZRVL, "1") + field(ONST, "2") + field(ONVL, "2") + field(TWST, "3") + field(TWVL, "3") + field(THST, "4") + field(THVL, "4") + field(FRST, "5") + field(FRVL, "5") + field(FVST, "6") + field(FVVL, "6") + field(SXST, "7") + field(SXVL, "7") + field(SVST, "8") + field(SVVL, "8") + field(SCAN, "I/O Intr") + info(autosaveFields, "DESC ZRSV ONSV") +} + +## Selects how many bits to shift left or right when reading data +record(mbbo, "BL03S-EA-FSCN-02:CAM:ARShiftBits") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.CAM,0,1)ARAVIS_SHIFT_BITS") + field(ZRST, "1") + field(ZRVL, "1") + field(ONST, "2") + field(ONVL, "2") + field(TWST, "3") + field(TWVL, "3") + field(THST, "4") + field(THVL, "4") + field(FRST, "5") + field(FRVL, "5") + field(FVST, "6") + field(FVVL, "6") + field(SXST, "7") + field(SXVL, "7") + field(SVST, "8") + field(SVVL, "8") + field(PINI, "1") + info(autosaveFields, "DESC ZRSV ONSV VAL") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_ExpAutoTarget_RBV") { + alias("BL03S-EA-FSCN-01:CAM:ExposureAutoTarg_RBV") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_ExpAutoTarget") { + alias("BL03S-EA-FSCN-01:CAM:ExposureAutoTarg") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_GainAutoTarget_RBV") { + alias("BL03S-EA-FSCN-01:CAM:GainAutoTarget_RBV") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_GainAutoTarget") { + alias("BL03S-EA-FSCN-01:CAM:GainAutoTarget") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_BalRatioSelector_RBV") { + alias("BL03S-EA-FSCN-01:CAM:BalanceRatioSele_RBV") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_BalRatioSelector") { + alias("BL03S-EA-FSCN-01:CAM:BalanceRatioSele") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:GC_BalanceRatioAbs_RBV") { + alias("BL03S-EA-FSCN-01:CAM:BalanceRatioAbs_RBV") +} + +record(ao, "BL03S-EA-FSCN-01:CAM:GC_BalanceRatioAbs") { + alias("BL03S-EA-FSCN-01:CAM:BalanceRatioAbs") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:GC_BalanceWhiteAuto_RBV") { + alias("BL03S-EA-FSCN-01:CAM:BalanceWhiteAut0_RBV") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:GC_BalanceWhiteAuto") { + alias("BL03S-EA-FSCN-01:CAM:BalanceWhiteAut0") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:ARFramesCompleted") +{ + alias("BL03S-EA-FSCN-01:CAM:COMPLETED_RBV") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:ARFrameFailures") +{ + alias("BL03S-EA-FSCN-01:CAM:FAILURES_RBV") +} + +record(ai, "BL03S-EA-FSCN-01:CAM:ARFrameUnderruns") +{ + alias("BL03S-EA-FSCN-01:CAM:UNDERRUNS_RBV") +} + +record(longout, "BL03S-EA-FSCN-01:CAM:ARResetCamera") +{ + alias("BL03S-EA-FSCN-01:CAM:RESET") +} + +record(mbbi, "BL03S-EA-FSCN-01:CAM:ARLeftShift_RBV") { + alias("BL03S-EA-FSCN-01:CAM:LEFTSHIFT_RBV") +} + +record(mbbo, "BL03S-EA-FSCN-01:CAM:ARLeftShift") { + alias("BL03S-EA-FSCN-01:CAM:LEFTSHIFT") +} + +record(bi, "BL03S-EA-FSCN-01:CAM:ARHWImageMode_RBV") { + alias("BL03S-EA-FSCN-01:CAM:HWIMAGEMODE_RBV") +} + +record(bo, "BL03S-EA-FSCN-01:CAM:ARHWImageMode") { + alias("BL03S-EA-FSCN-01:CAM:HWIMAGEMODE") +} +# Macros: +#% macro, P, Device Prefix +#% macro, R, Device Suffix + + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_ExpAutoTarget_RBV") { + alias("BL03S-EA-FSCN-02:CAM:ExposureAutoTarg_RBV") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_ExpAutoTarget") { + alias("BL03S-EA-FSCN-02:CAM:ExposureAutoTarg") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_GainAutoTarget_RBV") { + alias("BL03S-EA-FSCN-02:CAM:GainAutoTarget_RBV") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_GainAutoTarget") { + alias("BL03S-EA-FSCN-02:CAM:GainAutoTarget") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_BalRatioSelector_RBV") { + alias("BL03S-EA-FSCN-02:CAM:BalanceRatioSele_RBV") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_BalRatioSelector") { + alias("BL03S-EA-FSCN-02:CAM:BalanceRatioSele") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:GC_BalanceRatioAbs_RBV") { + alias("BL03S-EA-FSCN-02:CAM:BalanceRatioAbs_RBV") +} + +record(ao, "BL03S-EA-FSCN-02:CAM:GC_BalanceRatioAbs") { + alias("BL03S-EA-FSCN-02:CAM:BalanceRatioAbs") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:GC_BalanceWhiteAuto_RBV") { + alias("BL03S-EA-FSCN-02:CAM:BalanceWhiteAut0_RBV") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:GC_BalanceWhiteAuto") { + alias("BL03S-EA-FSCN-02:CAM:BalanceWhiteAut0") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:ARFramesCompleted") +{ + alias("BL03S-EA-FSCN-02:CAM:COMPLETED_RBV") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:ARFrameFailures") +{ + alias("BL03S-EA-FSCN-02:CAM:FAILURES_RBV") +} + +record(ai, "BL03S-EA-FSCN-02:CAM:ARFrameUnderruns") +{ + alias("BL03S-EA-FSCN-02:CAM:UNDERRUNS_RBV") +} + +record(longout, "BL03S-EA-FSCN-02:CAM:ARResetCamera") +{ + alias("BL03S-EA-FSCN-02:CAM:RESET") +} + +record(mbbi, "BL03S-EA-FSCN-02:CAM:ARLeftShift_RBV") { + alias("BL03S-EA-FSCN-02:CAM:LEFTSHIFT_RBV") +} + +record(mbbo, "BL03S-EA-FSCN-02:CAM:ARLeftShift") { + alias("BL03S-EA-FSCN-02:CAM:LEFTSHIFT") +} + +record(bi, "BL03S-EA-FSCN-02:CAM:ARHWImageMode_RBV") { + alias("BL03S-EA-FSCN-02:CAM:HWIMAGEMODE_RBV") +} + +record(bo, "BL03S-EA-FSCN-02:CAM:ARHWImageMode") { + alias("BL03S-EA-FSCN-02:CAM:HWIMAGEMODE") +} +# Macros: +#% macro, P, Device Prefix +#% macro, R, Device Suffix + + + +#=================================================================# +# Template file: NDPva.template +# Database for the records specific to the pvAccess plugin +# Bruno Martins +# May 5, 2015 + +#% macro, P, Device Prefix +#% macro, R, Device Suffix +#% macro, PORT, Asyn Port name +#% macro, ADDR, Asyn Port address +#% macro, TIMEOUT, Asyn timeout + +# This associates the template with an edm screen +# % gui, FSCN1.pva, edmtab, NDPvaPlugin.edl, P=BL03S-EA-FSCN-01,R=:PVA: + +# This associates a BOY screen with the template +# % gui, FSCN1.pva, boydetail,ADApp_opi/dls/pva_detail.opi, P=BL03S-EA-FSCN-01, R=:PVA:, DESC=PVAccess +# % gui, FSCN1.pva, boyembed, ADApp_opi/dls/pva_embed_box.opi, P=BL03S-EA-FSCN-01, R=:PVA:, DESC=PVAccess +# % gui, FSCN1.pva, boyembed, ADApp_opi/dls/pva_embed.opi, P=BL03S-EA-FSCN-01, R=:PVA:, DESC=PVAccess + +# Info +# % gui, FSCN1.pva, groupHeading, Info +# % gui, FSCN1.pva, readback, Port name, BL03S-EA-FSCN-01:PVA:PortName_RBV +# % gui, FSCN1.pva, readback, Plugin type, BL03S-EA-FSCN-01:PVA:PluginType_RBV +# Input +# % gui, FSCN1.pva, demandString, Input, BL03S-EA-FSCN-01:PVA:NDArrayPort +# % gui, FSCN1.pva, readback, Input, BL03S-EA-FSCN-01:PVA:NDArrayPort_RBV + +# % gui, FSCN1.pva, groupHeading, Callback +# % gui, FSCN1.pva, enum, Callbacks, BL03S-EA-FSCN-01:PVA:EnableCallbacks +# % gui, FSCN1.pva, statusbits, Callbacks, BL03S-EA-FSCN-01:PVA:EnableCallbacks_RBV +# % gui, FSCN1.pva, demand, Min Callback Time, BL03S-EA-FSCN-01:PVA:MinCallbackTime +# % gui, FSCN1.pva, readback, Min Callback Time, BL03S-EA-FSCN-01:PVA:MinCallbackTime_RBV +# % gui, FSCN1.pva, enum, Block Callbacks, BL03S-EA-FSCN-01:PVA:BlockingCallbacks +# % gui, FSCN1.pva, statusbits, Block Callbacks, BL03S-EA-FSCN-01:PVA:BlockingCallbacks_RBV + +# % gui, FSCN1.pva, groupHeading, Counters +# % gui, FSCN1.pva, demand, Array Counter, BL03S-EA-FSCN-01:PVA:ArrayCounter +# % gui, FSCN1.pva, readback, Array Counter, BL03S-EA-FSCN-01:PVA:ArrayCounter_RBV +# % gui, FSCN1.pva, readback, Array Rate (fps), BL03S-EA-FSCN-01:PVA:ArrayRate_RBV +# % gui, FSCN1.pva, readback, Queue Use, BL03S-EA-FSCN-01:PVA:QueueUse +# % gui, FSCN1.pva, readback, Queue Size, BL03S-EA-FSCN-01:PVA:QueueSize +# % gui, FSCN1.pva, demand, Dropped Arrays, BL03S-EA-FSCN-01:PVA:DroppedArrays +# % gui, FSCN1.pva, readback, Dropped Arrays, BL03S-EA-FSCN-01:PVA:DroppedArrays_RBV + +# % gui, FSCN1.pva, groupHeading, Array Settings +# % gui, FSCN1.pva, readback, Num Dimensions, BL03S-EA-FSCN-01:PVA:NDimensions_RBV +# % gui, FSCN1.pva, readback, Dim 0 Size, BL03S-EA-FSCN-01:PVA:ArraySize0_RBV +# % gui, FSCN1.pva, readback, Dim 1 Size, BL03S-EA-FSCN-01:PVA:ArraySize1_RBV +# % gui, FSCN1.pva, readback, Dim 2 Size, BL03S-EA-FSCN-01:PVA:ArraySize2_RBV +# % gui, FSCN1.pva, readback, Input Data Type, BL03S-EA-FSCN-01:PVA:DataType_RBV +# % gui, FSCN1.pva, readback, Colour Mode, BL03S-EA-FSCN-01:PVA:ColorMode_RBV +# % gui, FSCN1.pva, readback, Bayer Pattern, BL03S-EA-FSCN-01:PVA:BayerPattern_RBV +# % gui, FSCN1.pva, readback, Unique id, BL03S-EA-FSCN-01:PVA:UniqueId_RBV +# % gui, FSCN1.pva, readback, Timestamp, BL03S-EA-FSCN-01:PVA:TimeStamp_RBV + +# % gui, FSCN1.pva, groupHeading, PVA Settings +# % gui, FSCN1.pva, readback, PV Name, BL03S-EA-FSCN-01:PVA:PvName_RBV + +#=================================================================# +# Template file: NDPluginBase.template +# Database for NDPluginBase, i.e. records common to all plugins +# Mark Rivers +# April 25, 2008 + +# Macros: +# % macro, P, Device Prefix +# % macro, R, Device Suffix +# % macro, PORT, Asyn Port name +# % macro, TIMEOUT, Timeout +# % macro, ADDR, Asyn Port address +# % macro, NDARRAY_PORT, Input Array Port +# % macro, NDARRAY_ADDR, Input Array Address +# % macro, ENABLED, Plugin Enabled at startup? +# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs + +#=================================================================# +# Template file: NDArrayBase.template +# Database for area detector control using asyn driver and standard asyn device support +# Mark Rivers +# March 9, 2008 + +################################################################### +# This record contains the version of ADCore # +################################################################### + +record(stringin, "BL03S-EA-FSCN-01:PVA:ADCoreVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.pva,0,1)ADCORE_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains the version of the driver or plugin # +################################################################### + +record(stringin, "BL03S-EA-FSCN-01:PVA:DriverVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.pva,0,1)DRIVER_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains the asyn port name of this detector # +################################################################### + +record(stringin, "BL03S-EA-FSCN-01:PVA:PortName_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.pva,0,1)PORT_NAME_SELF") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records contain basic information about the detector # +################################################################### + +record(stringin, "BL03S-EA-FSCN-01:PVA:Manufacturer_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.pva,0,1)MANUFACTURER") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-EA-FSCN-01:PVA:Model_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.pva,0,1)MODEL") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-EA-FSCN-01:PVA:SerialNumber_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.pva,0,1)SERIAL_NUMBER") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-EA-FSCN-01:PVA:SDKVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.pva,0,1)SDK_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-EA-FSCN-01:PVA:FirmwareVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.pva,0,1)FIRMWARE_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control acquisition start and stop # +################################################################### + +record(bo, "BL03S-EA-FSCN-01:PVA:Acquire") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.pva,0,1)ACQUIRE") + field(ZNAM, "Done") + field(ONAM, "Acquire") + field(VAL, "0") + field(FLNK, "BL03S-EA-FSCN-01:PVA:SetAcquireBusy") + info(ai:READBACK, "1") +} + +record(bi, "BL03S-EA-FSCN-01:PVA:Acquire_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)ACQUIRE") + field(ZNAM, "Done") + field(ZSV, "NO_ALARM") + field(ONAM, "Acquiring") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +record(calcout, "BL03S-EA-FSCN-01:PVA:SetAcquireBusy") +{ + field(INPA, "BL03S-EA-FSCN-01:PVA:Acquire NPP") + field(CALC, "A") + field(OOPT, "Transition To Non-zero") + field(OUT, "BL03S-EA-FSCN-01:PVA:AcquireBusy PP") +} + +record(bi, "BL03S-EA-FSCN-01:PVA:AcquireBusy") { + field(ZNAM, "Done") + field(ZSV, "NO_ALARM") + field(ONAM, "Acquiring") + field(OSV, "MINOR") + field(VAL, "0") +} + +record(bi, "BL03S-EA-FSCN-01:PVA:AcquireBusyCB") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)ACQUIRE_BUSY") + field(ZNAM, "Done") + field(ZSV, "NO_ALARM") + field(ONAM, "Acquiring") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +record(calcout, "BL03S-EA-FSCN-01:PVA:ClearAcquireBusy") { + field(INPA, "BL03S-EA-FSCN-01:PVA:AcquireBusyCB CP") + field(CALC, "A") + field(OOPT, "Transition To Zero") + field(OUT, "BL03S-EA-FSCN-01:PVA:AcquireBusy PP") +} + +record(bo, "BL03S-EA-FSCN-01:PVA:WaitForPlugins") { + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.pva,0,1)WAIT_FOR_PLUGINS") + field(ZNAM, "No") + field(ONAM, "Yes") + field(VAL, "0") +} + +################################################################### +# These records are the array size and data type # +################################################################### +# The number of dimensions +record(longout, "BL03S-EA-FSCN-01:PVA:NDimensions") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.pva,0,1)ARRAY_NDIMENSIONS") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:NDimensions_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)ARRAY_NDIMENSIONS") + field(SCAN, "I/O Intr") +} + +# The array dimensions waveform records +record(waveform, "BL03S-EA-FSCN-01:PVA:Dimensions") +{ + field(DTYP, "asynInt32ArrayOut") + field(INP, "@asyn(FSCN1.pva,0,1)ARRAY_DIMENSIONS") + field(FTVL, "LONG") + field(NELM, "10") + field(FLNK, "BL03S-EA-FSCN-01:PVA:Dim0SA") +} + +record(subArray, "BL03S-EA-FSCN-01:PVA:Dim0SA") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "0") + field(FLNK, "BL03S-EA-FSCN-01:PVA:ArraySize0") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:ArraySize0") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dim0SA") + field(FLNK, "BL03S-EA-FSCN-01:PVA:Dim1SA") +} + +record(subArray, "BL03S-EA-FSCN-01:PVA:Dim1SA") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "1") + field(FLNK, "BL03S-EA-FSCN-01:PVA:ArraySize1") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:ArraySize1") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dim1SA") + field(FLNK, "BL03S-EA-FSCN-01:PVA:Dim2SA") +} + +record(subArray, "BL03S-EA-FSCN-01:PVA:Dim2SA") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "2") + field(FLNK, "BL03S-EA-FSCN-01:PVA:ArraySize2") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:ArraySize2") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dim2SA") + field(FLNK, "BL03S-EA-FSCN-01:PVA:Dim3SA") +} + +record(subArray, "BL03S-EA-FSCN-01:PVA:Dim3SA") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "3") + field(FLNK, "BL03S-EA-FSCN-01:PVA:ArraySize3") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:ArraySize3") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dim3SA") + field(FLNK, "BL03S-EA-FSCN-01:PVA:Dim4SA") +} + +record(subArray, "BL03S-EA-FSCN-01:PVA:Dim4SA") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "4") + field(FLNK, "BL03S-EA-FSCN-01:PVA:ArraySize4") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:ArraySize4") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dim4SA") + field(FLNK, "BL03S-EA-FSCN-01:PVA:Dim5SA") +} + +record(subArray, "BL03S-EA-FSCN-01:PVA:Dim5SA") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "5") + field(FLNK, "BL03S-EA-FSCN-01:PVA:ArraySize5") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:ArraySize5") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dim5SA") + field(FLNK, "BL03S-EA-FSCN-01:PVA:Dim6SA") +} + +record(subArray, "BL03S-EA-FSCN-01:PVA:Dim6SA") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "6") + field(FLNK, "BL03S-EA-FSCN-01:PVA:ArraySize6") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:ArraySize6") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dim6SA") + field(FLNK, "BL03S-EA-FSCN-01:PVA:Dim7SA") +} + +record(subArray, "BL03S-EA-FSCN-01:PVA:Dim7SA") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "7") + field(FLNK, "BL03S-EA-FSCN-01:PVA:ArraySize7") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:ArraySize7") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dim7SA") + field(FLNK, "BL03S-EA-FSCN-01:PVA:Dim8SA") +} + +record(subArray, "BL03S-EA-FSCN-01:PVA:Dim8SA") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "8") + field(FLNK, "BL03S-EA-FSCN-01:PVA:ArraySize8") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:ArraySize8") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dim8SA") + field(FLNK, "BL03S-EA-FSCN-01:PVA:Dim9SA") +} + +record(subArray, "BL03S-EA-FSCN-01:PVA:Dim9SA") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "9") + field(FLNK, "BL03S-EA-FSCN-01:PVA:ArraySize9") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:ArraySize9") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dim9SA") +} + + +record(waveform, "BL03S-EA-FSCN-01:PVA:Dimensions_RBV") +{ + field(DTYP, "asynInt32ArrayIn") + field(INP, "@asyn(FSCN1.pva,0,1)ARRAY_DIMENSIONS") + field(FTVL, "LONG") + field(NELM, "10") + field(FLNK, "BL03S-EA-FSCN-01:PVA:Dim0SA_RBV") + field(SCAN, "I/O Intr") +} + +record(subArray, "BL03S-EA-FSCN-01:PVA:Dim0SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "0") + field(FLNK, "BL03S-EA-FSCN-01:PVA:ArraySize0_RBV") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:ArraySize0_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dim0SA_RBV") + field(FLNK, "BL03S-EA-FSCN-01:PVA:Dim1SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-01:PVA:Dim1SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "1") + field(FLNK, "BL03S-EA-FSCN-01:PVA:ArraySize1_RBV") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:ArraySize1_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dim1SA_RBV") + field(FLNK, "BL03S-EA-FSCN-01:PVA:Dim2SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-01:PVA:Dim2SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "2") + field(FLNK, "BL03S-EA-FSCN-01:PVA:ArraySize2_RBV") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:ArraySize2_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dim2SA_RBV") + field(FLNK, "BL03S-EA-FSCN-01:PVA:Dim3SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-01:PVA:Dim3SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "3") + field(FLNK, "BL03S-EA-FSCN-01:PVA:ArraySize3_RBV") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:ArraySize3_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dim3SA_RBV") + field(FLNK, "BL03S-EA-FSCN-01:PVA:Dim4SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-01:PVA:Dim4SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "4") + field(FLNK, "BL03S-EA-FSCN-01:PVA:ArraySize4_RBV") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:ArraySize4_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dim4SA_RBV") + field(FLNK, "BL03S-EA-FSCN-01:PVA:Dim5SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-01:PVA:Dim5SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "5") + field(FLNK, "BL03S-EA-FSCN-01:PVA:ArraySize5_RBV") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:ArraySize5_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dim5SA_RBV") + field(FLNK, "BL03S-EA-FSCN-01:PVA:Dim6SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-01:PVA:Dim6SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "6") + field(FLNK, "BL03S-EA-FSCN-01:PVA:ArraySize6_RBV") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:ArraySize6_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dim6SA_RBV") + field(FLNK, "BL03S-EA-FSCN-01:PVA:Dim7SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-01:PVA:Dim7SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "7") + field(FLNK, "BL03S-EA-FSCN-01:PVA:ArraySize7_RBV") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:ArraySize7_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dim7SA_RBV") + field(FLNK, "BL03S-EA-FSCN-01:PVA:Dim8SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-01:PVA:Dim8SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "8") + field(FLNK, "BL03S-EA-FSCN-01:PVA:ArraySize8_RBV") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:ArraySize8_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dim8SA_RBV") + field(FLNK, "BL03S-EA-FSCN-01:PVA:Dim9SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-01:PVA:Dim9SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "9") + field(FLNK, "BL03S-EA-FSCN-01:PVA:ArraySize9_RBV") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:ArraySize9_RBV") +{ + field(INP, "BL03S-EA-FSCN-01:PVA:Dim9SA_RBV") +} + + +record(mbbi, "BL03S-EA-FSCN-01:PVA:BayerPattern_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)BAYER_PATTERN") + field(ZRST, "RGGB") + field(ZRVL, "0") + field(ONST, "GBRG") + field(ONVL, "1") + field(TWST, "GRBG") + field(TWVL, "2") + field(THST, "BGGR") + field(THVL, "3") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:ArraySizeX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)ARRAY_SIZE_X") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:ArraySizeY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)ARRAY_SIZE_Y") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:ArraySizeZ_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)ARRAY_SIZE_Z") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:ArraySize_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)ARRAY_SIZE") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records have information on the compression # +################################################################### +record(stringin, "BL03S-EA-FSCN-01:PVA:Codec_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.pva,0,1)CODEC") + field(VAL, "") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:CompressedSize_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)COMPRESSED_SIZE") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the data type # +################################################################### + +record(mbbo, "BL03S-EA-FSCN-01:PVA:DataType") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.pva,0,1)DATA_TYPE") + field(ZRST, "Int8") + field(ZRVL, "0") + field(ONST, "UInt8") + field(ONVL, "1") + field(TWST, "Int16") + field(TWVL, "2") + field(THST, "UInt16") + field(THVL, "3") + field(FRST, "Int32") + field(FRVL, "4") + field(FVST, "UInt32") + field(FVVL, "5") + field(SXST, "Int64") + field(SXVL, "6") + field(SVST, "UInt64") + field(SVVL, "7") + field(EIST, "Float32") + field(EIVL, "8") + field(NIST, "Float64") + field(NIVL, "9") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-EA-FSCN-01:PVA:DataType_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)DATA_TYPE") + field(ZRST, "Int8") + field(ZRVL, "0") + field(ONST, "UInt8") + field(ONVL, "1") + field(TWST, "Int16") + field(TWVL, "2") + field(THST, "UInt16") + field(THVL, "3") + field(FRST, "Int32") + field(FRVL, "4") + field(FVST, "UInt32") + field(FVVL, "5") + field(SXST, "Int64") + field(SXVL, "6") + field(SVST, "UInt64") + field(SVVL, "7") + field(EIST, "Float32") + field(EIVL, "8") + field(NIST, "Float64") + field(NIVL, "9") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the color mode # +# These choices must agree with NDColorMode_t in NDArray.h # +################################################################### + +record(mbbo, "BL03S-EA-FSCN-01:PVA:ColorMode") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.pva,0,1)COLOR_MODE") + field(ZRST, "Mono") + field(ZRVL, "0") + field(ONST, "Bayer") + field(ONVL, "1") + field(TWST, "RGB1") + field(TWVL, "2") + field(THST, "RGB2") + field(THVL, "3") + field(FRST, "RGB3") + field(FRVL, "4") + field(FVST, "YUV444") + field(FVVL, "5") + field(SXST, "YUV422") + field(SXVL, "6") + field(SVST, "YUV421") + field(SVVL, "7") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-EA-FSCN-01:PVA:ColorMode_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)COLOR_MODE") + field(ZRST, "Mono") + field(ZRVL, "0") + field(ONST, "Bayer") + field(ONVL, "1") + field(TWST, "RGB1") + field(TWVL, "2") + field(THST, "RGB2") + field(THVL, "3") + field(FRST, "RGB3") + field(FRVL, "4") + field(FVST, "YUV444") + field(FVVL, "5") + field(SXST, "YUV422") + field(SXVL, "6") + field(SVST, "YUV421") + field(SVVL, "7") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records are the uniqueId and time stamps of the array # +################################################################### +record(longin, "BL03S-EA-FSCN-01:PVA:UniqueId_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)UNIQUE_ID") + field(SCAN, "I/O Intr") +} + +record(ai, "BL03S-EA-FSCN-01:PVA:TimeStamp_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.pva,0,1)TIME_STAMP") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:EpicsTSSec_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)EPICS_TS_SEC") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:EpicsTSNsec_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)EPICS_TS_NSEC") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records provide statistics on array callbacks and # +# array callback rates # +################################################################### +record(longout, "BL03S-EA-FSCN-01:PVA:ArrayCounter") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.pva,0,1)ARRAY_COUNTER") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:ArrayCounter_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)ARRAY_COUNTER") + field(SCAN, "I/O Intr") +} + +# Updated rate calculation to use a smoothing factor w/ guard against negative values +record(calc, "BL03S-EA-FSCN-01:PVA:ArrayRate_RBV") +{ + field(INPA, "BL03S-EA-FSCN-01:PVA:ArrayRate_RBV.LB NPP NMS") # Previous counter value + field(INPB, "BL03S-EA-FSCN-01:PVA:ArrayCounter_RBV NPP NMS") # Current counter value + field(INPC, "1.0") # Delta time in seconds + field(INPD, "BL03S-EA-FSCN-01:PVA:ArrayRate_RBV.VAL NPP NMS") # Previous rate + field(INPE, "0.0") # Smoothing factor + field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") + field(PREC, "2" ) + field(EGU, "Hz" ) + field(SCAN, "1 second") +} + +################################################################### +# These records control NDArray callacks # +################################################################### +record(bo, "BL03S-EA-FSCN-01:PVA:ArrayCallbacks") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.pva,0,1)ARRAY_CALLBACKS") + field(ZNAM, "Disable") + field(ZSV, "NO_ALARM") + field(ONAM, "Enable") + field(OSV, "MINOR") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(bi, "BL03S-EA-FSCN-01:PVA:ArrayCallbacks_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)ARRAY_CALLBACKS") + field(ZNAM, "Disable") + field(ZSV, "NO_ALARM") + field(ONAM, "Enable") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains macro definitions for the attributes # +################################################################### + +record(waveform, "BL03S-EA-FSCN-01:PVA:NDAttributesMacros") +{ + field(PINI, "YES") + field(DTYP, "asynOctetWrite") + field(INP, "@asyn(FSCN1.pva,0,1)ND_ATTRIBUTES_MACROS") + field(FTVL, "CHAR") + field(NELM, "256") + info(autosaveFields, "VAL") +} + +################################################################### +# This record is the name of a file defining attributes # +################################################################### + +record(waveform, "BL03S-EA-FSCN-01:PVA:NDAttributesFile") +{ + field(PINI, "YES") + field(DTYP, "asynOctetWrite") + field(INP, "@asyn(FSCN1.pva,0,1)ND_ATTRIBUTES_FILE") + field(FTVL, "CHAR") + field(NELM, "256") + info(autosaveFields, "VAL") +} + +################################################################### +# This record defines the status of reading attributes file # +################################################################### + +record(mbbi, "BL03S-EA-FSCN-01:PVA:NDAttributesStatus") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)ND_ATTRIBUTES_STATUS") + field(ZRVL, "0") + field(ZRST, "Attributes file OK") + field(ZRSV, "NO_ALARM") + field(ONVL, "1") + field(ONST, "File not found") + field(ONSV, "MINOR") + field(TWVL, "2") + field(TWST, "XML syntax error") + field(TWSV, "MAJOR") + field(THVL, "3") + field(THST, "Macro substitution error") + field(THSV, "MAJOR") + field(SCAN, "I/O Intr") +} + +################################################################### +# Status of NDArrayPool - number of buffers, memory used etc. # +################################################################### + +record(ai, "BL03S-EA-FSCN-01:PVA:PoolMaxMem") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.pva,0,1)POOL_MAX_MEMORY") + field(PREC, "1") + field(EGU, "MB") + field(SCAN, "Passive") + field(PINI, "YES") +} + +record(ai, "BL03S-EA-FSCN-01:PVA:PoolUsedMem") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.pva,0,1)POOL_USED_MEMORY") + field(PREC, "1") + field(EGU, "MB") + field(SCAN, "1 second") + field(FLNK, "BL03S-EA-FSCN-01:PVA:PoolAllocBuffers") + info(autosaveFields, "SCAN") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:PoolAllocBuffers") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)POOL_ALLOC_BUFFERS") + field(FLNK, "BL03S-EA-FSCN-01:PVA:PoolFreeBuffers") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:PoolFreeBuffers") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)POOL_FREE_BUFFERS") + field(FLNK, "BL03S-EA-FSCN-01:PVA:PoolUsedBuffers") +} + +record(calc, "BL03S-EA-FSCN-01:PVA:PoolUsedBuffers") +{ + field(INPA, "BL03S-EA-FSCN-01:PVA:PoolAllocBuffers NPP MS") + field(INPB, "BL03S-EA-FSCN-01:PVA:PoolFreeBuffers NPP MS") + field(CALC, "A-B") +} + +record(bo, "BL03S-EA-FSCN-01:PVA:EmptyFreeList") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.pva,0,1)POOL_EMPTY_FREELIST") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:NumQueuedArrays") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)NUM_QUEUED_ARRAYS") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains the type of plugin # +################################################################### + +record(stringin, "BL03S-EA-FSCN-01:PVA:PluginType_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.pva,0,1)PLUGIN_TYPE") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the connection of the server to # +# an NDArray driver port and address # +################################################################### +# Array port name +record(stringout, "BL03S-EA-FSCN-01:PVA:NDArrayPort") +{ + field(PINI, "YES") + field(DTYP, "asynOctetWrite") + field(OUT, "@asyn(FSCN1.pva,0,1)NDARRAY_PORT") + field(VAL, "FSCN1.CAM") + info(autosaveFields, "VAL") +} + +record(stringin, "BL03S-EA-FSCN-01:PVA:NDArrayPort_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.pva,0,1)NDARRAY_PORT") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-EA-FSCN-01:PVA:NDArrayAddress") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.pva,0,1)NDARRAY_ADDR") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:NDArrayAddress_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)NDARRAY_ADDR") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control whether callbacks are enabled and # +# minimum time between callbacks # +################################################################### +record(bo, "BL03S-EA-FSCN-01:PVA:EnableCallbacks") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.pva,0,1)ENABLE_CALLBACKS") + field(ZNAM, "Disable") + field(ONAM, "Enable") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(bi, "BL03S-EA-FSCN-01:PVA:EnableCallbacks_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)ENABLE_CALLBACKS") + field(ZNAM, "Disable") + field(ONAM, "Enable") + field(ZSV, "NO_ALARM") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +record(ao, "BL03S-EA-FSCN-01:PVA:MinCallbackTime") +{ + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN1.pva,0,1)MIN_CALLBACK_TIME") + field(EGU, "s") + field(PREC, "3") + field(VAL, "0.0") + field(DRVL, "0") + info(autosaveFields, "VAL") +} + +record(ai, "BL03S-EA-FSCN-01:PVA:MinCallbackTime_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.pva,0,1)MIN_CALLBACK_TIME") + field(EGU, "s") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(ao, "BL03S-EA-FSCN-01:PVA:MaxArrayRate") +{ + field(DTYP, "Soft Channel") + field(OUT, "BL03S-EA-FSCN-01:PVA:MaxArrayRate_COUT PP") + field(EGU, "Hz") + field(PREC, "3") + field(VAL, "0.0") + info(autosaveFields, "VAL") +} + +record(calcout, "BL03S-EA-FSCN-01:PVA:MaxArrayRate_COUT") +{ + field(INPA, "BL03S-EA-FSCN-01:PVA:MaxArrayRate") + field(CALC, "A=0?0:1.0/A") + field(OUT, "BL03S-EA-FSCN-01:PVA:MinCallbackTime PP") +} + +record(calc, "BL03S-EA-FSCN-01:PVA:MaxArrayRate_RBV") +{ + field(INPA, "BL03S-EA-FSCN-01:PVA:MinCallbackTime_RBV CP") + field(CALC, "A=0?0:1.0/A") + field(EGU, "Hz") + field(PREC, "3") + field(SCAN, "Passive") +} + +record(ao, "BL03S-EA-FSCN-01:PVA:MaxByteRate") +{ + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN1.pva,0,1)MAX_BYTE_RATE") + field(EGU, "s") + field(PREC, "3") + field(VAL, "0.0") + field(DRVL, "0") + info(autosaveFields, "VAL") +} + +record(ai, "BL03S-EA-FSCN-01:PVA:MaxByteRate_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.pva,0,1)MAX_BYTE_RATE") + field(EGU, "s") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains the last execution time of the plugin # +################################################################### +record(ai, "BL03S-EA-FSCN-01:PVA:ExecutionTime_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.pva,0,1)EXECUTION_TIME") + field(EGU, "ms") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record requests that the plugin execute again with the # +# same NDArray # +################################################################### +record(bo, "BL03S-EA-FSCN-01:PVA:ProcessPlugin") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.pva,0,1)PROCESS_PLUGIN") + field(VAL, "1") +} + +################################################################### +# These records control whether callbacks block or not # +################################################################### +record(bo, "BL03S-EA-FSCN-01:PVA:BlockingCallbacks") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.pva,0,1)BLOCKING_CALLBACKS") + field(ZNAM, "No") + field(ONAM, "Yes") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(bi, "BL03S-EA-FSCN-01:PVA:BlockingCallbacks_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)BLOCKING_CALLBACKS") + field(ZNAM, "No") + field(ONAM, "Yes") + field(SCAN, "I/O Intr") +} + + +record(longout, "BL03S-EA-FSCN-01:PVA:DroppedArrays") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.pva,0,1)DROPPED_ARRAYS") + field(VAL, "0") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:DroppedArrays_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)DROPPED_ARRAYS") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-EA-FSCN-01:PVA:QueueSize") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.pva,0,1)QUEUE_SIZE") + field(PINI, "YES") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:QueueSize_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)QUEUE_SIZE") + field(FLNK, "BL03S-EA-FSCN-01:PVA:QueueFreeLow") + field(SCAN, "I/O Intr") +} + +record(calcout, "BL03S-EA-FSCN-01:PVA:QueueFreeLow") { + field(CALC, "A*0.25") + field(INPA, "BL03S-EA-FSCN-01:PVA:QueueSize") + field(OUT, "BL03S-EA-FSCN-01:PVA:QueueFree.LOW") + field(FLNK, "BL03S-EA-FSCN-01:PVA:QueueUseHIGH") +} + +# Set a HIGH warning level for the input queue fill level to 75% +# of the full size of the queue +record(calcout, "BL03S-EA-FSCN-01:PVA:QueueUseHIGH") { + field(CALC, "A*0.75") + field(INPA, "BL03S-EA-FSCN-01:PVA:QueueSize") + field(OUT, "BL03S-EA-FSCN-01:PVA:QueueUse.HIGH") + field(FLNK, "BL03S-EA-FSCN-01:PVA:QueueUseHIHI") +} + +# Set a HIHI level for the input queue fill level to indicate an error +# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) +record(calcout, "BL03S-EA-FSCN-01:PVA:QueueUseHIHI") { + field(CALC, "A*1.0") + field(INPA, "BL03S-EA-FSCN-01:PVA:QueueSize") + field(OUT, "BL03S-EA-FSCN-01:PVA:QueueUse.HIHI") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:QueueFree") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)QUEUE_FREE") + field(LLSV, "MAJOR") + field(LSV, "MINOR") + field(LOLO, "0") + field(HYST, "1") + field(SCAN, "I/O Intr") +} + +# Display the fill level on the plugins input queue +record(calc, "BL03S-EA-FSCN-01:PVA:QueueUse") { + field(CALC, "A-B") + field(INPA, "BL03S-EA-FSCN-01:PVA:QueueSize") + field(INPB, "BL03S-EA-FSCN-01:PVA:QueueFree CP") + field(SCAN, "Passive") + field(HHSV, "MAJOR") + field(HSV, "MINOR") + field(HYST, "1") +} + +record(longout, "BL03S-EA-FSCN-01:PVA:NumThreads") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.pva,0,1)NUM_THREADS") + field(VAL, "1") + field(PINI, "YES") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:NumThreads_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)NUM_THREADS") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:MaxThreads_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)MAX_THREADS") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control output array sorting # +################################################################### +record(mbbo, "BL03S-EA-FSCN-01:PVA:SortMode") { + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.pva,0,1)SORT_MODE") + field(ZRVL, "0") + field(ZRST, "Unsorted") + field(ONVL, "1") + field(ONST, "Sorted") +} + +record(mbbi, "BL03S-EA-FSCN-01:PVA:SortMode_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)SORT_MODE") + field(ZRVL, "0") + field(ZRST, "Unsorted") + field(ONVL, "1") + field(ONST, "Sorted") + field(SCAN, "I/O Intr") +} + +record(ao, "BL03S-EA-FSCN-01:PVA:SortTime") { + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN1.pva,0,1)SORT_TIME") + field(PREC, "3") + field(VAL, "0.1") +} + +record(ai, "BL03S-EA-FSCN-01:PVA:SortTime_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN1.pva,0,1)SORT_TIME") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-EA-FSCN-01:PVA:SortSize") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.pva,0,1)SORT_SIZE") + field(VAL, "20") + field(PINI, "YES") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:SortSize_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)SORT_SIZE") + field(FLNK, "BL03S-EA-FSCN-01:PVA:SortFreeLow") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:SortFree") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)SORT_FREE") + field(LLSV, "MAJOR") + field(LSV, "MINOR") + field(LOLO, "0") + field(HYST, "1") + field(SCAN, "I/O Intr") +} + +record(calcout, "BL03S-EA-FSCN-01:PVA:SortFreeLow") { + field(CALC, "A*0.25") + field(INPA, "BL03S-EA-FSCN-01:PVA:SortSize") + field(OUT, "BL03S-EA-FSCN-01:PVA:SortFree.LOW") +} + +record(longout, "BL03S-EA-FSCN-01:PVA:DroppedOutputArrays") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.pva,0,1)DROPPED_OUTPUT_ARRAYS") + field(VAL, "0") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:DroppedOutputArrays_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)DROPPED_OUTPUT_ARRAYS") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-EA-FSCN-01:PVA:DisorderedArrays") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN1.pva,0,1)DISORDERED_ARRAYS") + field(PINI, "YES") +} + +record(longin, "BL03S-EA-FSCN-01:PVA:DisorderedArrays_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN1.pva,0,1)DISORDERED_ARRAYS") + field(SCAN, "I/O Intr") +} + + + +################################################################### +# The asynRecord is used for mainly for trace mask # +################################################################### + +# Set ASYN_TRACEIO_HEX bit by default + +record(waveform, "BL03S-EA-FSCN-01:PVA:PvName_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN1.pva,0,1)PV_NAME") + field(FTVL, "CHAR") + field(NELM, "256") + field(SCAN, "I/O Intr") +} +#=================================================================# +# Template file: NDPva.template +# Database for the records specific to the pvAccess plugin +# Bruno Martins +# May 5, 2015 + +#% macro, P, Device Prefix +#% macro, R, Device Suffix +#% macro, PORT, Asyn Port name +#% macro, ADDR, Asyn Port address +#% macro, TIMEOUT, Asyn timeout + +# This associates the template with an edm screen +# % gui, FSCN2.pva, edmtab, NDPvaPlugin.edl, P=BL03S-EA-FSCN-02,R=:PVA: + +# This associates a BOY screen with the template +# % gui, FSCN2.pva, boydetail,ADApp_opi/dls/pva_detail.opi, P=BL03S-EA-FSCN-02, R=:PVA:, DESC=PVAccess +# % gui, FSCN2.pva, boyembed, ADApp_opi/dls/pva_embed_box.opi, P=BL03S-EA-FSCN-02, R=:PVA:, DESC=PVAccess +# % gui, FSCN2.pva, boyembed, ADApp_opi/dls/pva_embed.opi, P=BL03S-EA-FSCN-02, R=:PVA:, DESC=PVAccess + +# Info +# % gui, FSCN2.pva, groupHeading, Info +# % gui, FSCN2.pva, readback, Port name, BL03S-EA-FSCN-02:PVA:PortName_RBV +# % gui, FSCN2.pva, readback, Plugin type, BL03S-EA-FSCN-02:PVA:PluginType_RBV +# Input +# % gui, FSCN2.pva, demandString, Input, BL03S-EA-FSCN-02:PVA:NDArrayPort +# % gui, FSCN2.pva, readback, Input, BL03S-EA-FSCN-02:PVA:NDArrayPort_RBV + +# % gui, FSCN2.pva, groupHeading, Callback +# % gui, FSCN2.pva, enum, Callbacks, BL03S-EA-FSCN-02:PVA:EnableCallbacks +# % gui, FSCN2.pva, statusbits, Callbacks, BL03S-EA-FSCN-02:PVA:EnableCallbacks_RBV +# % gui, FSCN2.pva, demand, Min Callback Time, BL03S-EA-FSCN-02:PVA:MinCallbackTime +# % gui, FSCN2.pva, readback, Min Callback Time, BL03S-EA-FSCN-02:PVA:MinCallbackTime_RBV +# % gui, FSCN2.pva, enum, Block Callbacks, BL03S-EA-FSCN-02:PVA:BlockingCallbacks +# % gui, FSCN2.pva, statusbits, Block Callbacks, BL03S-EA-FSCN-02:PVA:BlockingCallbacks_RBV + +# % gui, FSCN2.pva, groupHeading, Counters +# % gui, FSCN2.pva, demand, Array Counter, BL03S-EA-FSCN-02:PVA:ArrayCounter +# % gui, FSCN2.pva, readback, Array Counter, BL03S-EA-FSCN-02:PVA:ArrayCounter_RBV +# % gui, FSCN2.pva, readback, Array Rate (fps), BL03S-EA-FSCN-02:PVA:ArrayRate_RBV +# % gui, FSCN2.pva, readback, Queue Use, BL03S-EA-FSCN-02:PVA:QueueUse +# % gui, FSCN2.pva, readback, Queue Size, BL03S-EA-FSCN-02:PVA:QueueSize +# % gui, FSCN2.pva, demand, Dropped Arrays, BL03S-EA-FSCN-02:PVA:DroppedArrays +# % gui, FSCN2.pva, readback, Dropped Arrays, BL03S-EA-FSCN-02:PVA:DroppedArrays_RBV + +# % gui, FSCN2.pva, groupHeading, Array Settings +# % gui, FSCN2.pva, readback, Num Dimensions, BL03S-EA-FSCN-02:PVA:NDimensions_RBV +# % gui, FSCN2.pva, readback, Dim 0 Size, BL03S-EA-FSCN-02:PVA:ArraySize0_RBV +# % gui, FSCN2.pva, readback, Dim 1 Size, BL03S-EA-FSCN-02:PVA:ArraySize1_RBV +# % gui, FSCN2.pva, readback, Dim 2 Size, BL03S-EA-FSCN-02:PVA:ArraySize2_RBV +# % gui, FSCN2.pva, readback, Input Data Type, BL03S-EA-FSCN-02:PVA:DataType_RBV +# % gui, FSCN2.pva, readback, Colour Mode, BL03S-EA-FSCN-02:PVA:ColorMode_RBV +# % gui, FSCN2.pva, readback, Bayer Pattern, BL03S-EA-FSCN-02:PVA:BayerPattern_RBV +# % gui, FSCN2.pva, readback, Unique id, BL03S-EA-FSCN-02:PVA:UniqueId_RBV +# % gui, FSCN2.pva, readback, Timestamp, BL03S-EA-FSCN-02:PVA:TimeStamp_RBV + +# % gui, FSCN2.pva, groupHeading, PVA Settings +# % gui, FSCN2.pva, readback, PV Name, BL03S-EA-FSCN-02:PVA:PvName_RBV + +#=================================================================# +# Template file: NDPluginBase.template +# Database for NDPluginBase, i.e. records common to all plugins +# Mark Rivers +# April 25, 2008 + +# Macros: +# % macro, P, Device Prefix +# % macro, R, Device Suffix +# % macro, PORT, Asyn Port name +# % macro, TIMEOUT, Timeout +# % macro, ADDR, Asyn Port address +# % macro, NDARRAY_PORT, Input Array Port +# % macro, NDARRAY_ADDR, Input Array Address +# % macro, ENABLED, Plugin Enabled at startup? +# % macro, SCANRATE, Chosen Scan Rate for cpu intensive PVs + +#=================================================================# +# Template file: NDArrayBase.template +# Database for area detector control using asyn driver and standard asyn device support +# Mark Rivers +# March 9, 2008 + +################################################################### +# This record contains the version of ADCore # +################################################################### + +record(stringin, "BL03S-EA-FSCN-02:PVA:ADCoreVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.pva,0,1)ADCORE_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains the version of the driver or plugin # +################################################################### + +record(stringin, "BL03S-EA-FSCN-02:PVA:DriverVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.pva,0,1)DRIVER_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains the asyn port name of this detector # +################################################################### + +record(stringin, "BL03S-EA-FSCN-02:PVA:PortName_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.pva,0,1)PORT_NAME_SELF") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records contain basic information about the detector # +################################################################### + +record(stringin, "BL03S-EA-FSCN-02:PVA:Manufacturer_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.pva,0,1)MANUFACTURER") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-EA-FSCN-02:PVA:Model_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.pva,0,1)MODEL") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-EA-FSCN-02:PVA:SerialNumber_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.pva,0,1)SERIAL_NUMBER") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-EA-FSCN-02:PVA:SDKVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.pva,0,1)SDK_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +record(stringin, "BL03S-EA-FSCN-02:PVA:FirmwareVersion_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.pva,0,1)FIRMWARE_VERSION") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control acquisition start and stop # +################################################################### + +record(bo, "BL03S-EA-FSCN-02:PVA:Acquire") { + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.pva,0,1)ACQUIRE") + field(ZNAM, "Done") + field(ONAM, "Acquire") + field(VAL, "0") + field(FLNK, "BL03S-EA-FSCN-02:PVA:SetAcquireBusy") + info(ai:READBACK, "1") +} + +record(bi, "BL03S-EA-FSCN-02:PVA:Acquire_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)ACQUIRE") + field(ZNAM, "Done") + field(ZSV, "NO_ALARM") + field(ONAM, "Acquiring") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +record(calcout, "BL03S-EA-FSCN-02:PVA:SetAcquireBusy") +{ + field(INPA, "BL03S-EA-FSCN-02:PVA:Acquire NPP") + field(CALC, "A") + field(OOPT, "Transition To Non-zero") + field(OUT, "BL03S-EA-FSCN-02:PVA:AcquireBusy PP") +} + +record(bi, "BL03S-EA-FSCN-02:PVA:AcquireBusy") { + field(ZNAM, "Done") + field(ZSV, "NO_ALARM") + field(ONAM, "Acquiring") + field(OSV, "MINOR") + field(VAL, "0") +} + +record(bi, "BL03S-EA-FSCN-02:PVA:AcquireBusyCB") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)ACQUIRE_BUSY") + field(ZNAM, "Done") + field(ZSV, "NO_ALARM") + field(ONAM, "Acquiring") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +record(calcout, "BL03S-EA-FSCN-02:PVA:ClearAcquireBusy") { + field(INPA, "BL03S-EA-FSCN-02:PVA:AcquireBusyCB CP") + field(CALC, "A") + field(OOPT, "Transition To Zero") + field(OUT, "BL03S-EA-FSCN-02:PVA:AcquireBusy PP") +} + +record(bo, "BL03S-EA-FSCN-02:PVA:WaitForPlugins") { + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.pva,0,1)WAIT_FOR_PLUGINS") + field(ZNAM, "No") + field(ONAM, "Yes") + field(VAL, "0") +} + +################################################################### +# These records are the array size and data type # +################################################################### +# The number of dimensions +record(longout, "BL03S-EA-FSCN-02:PVA:NDimensions") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.pva,0,1)ARRAY_NDIMENSIONS") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:NDimensions_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)ARRAY_NDIMENSIONS") + field(SCAN, "I/O Intr") +} + +# The array dimensions waveform records +record(waveform, "BL03S-EA-FSCN-02:PVA:Dimensions") +{ + field(DTYP, "asynInt32ArrayOut") + field(INP, "@asyn(FSCN2.pva,0,1)ARRAY_DIMENSIONS") + field(FTVL, "LONG") + field(NELM, "10") + field(FLNK, "BL03S-EA-FSCN-02:PVA:Dim0SA") +} + +record(subArray, "BL03S-EA-FSCN-02:PVA:Dim0SA") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "0") + field(FLNK, "BL03S-EA-FSCN-02:PVA:ArraySize0") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:ArraySize0") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dim0SA") + field(FLNK, "BL03S-EA-FSCN-02:PVA:Dim1SA") +} + +record(subArray, "BL03S-EA-FSCN-02:PVA:Dim1SA") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "1") + field(FLNK, "BL03S-EA-FSCN-02:PVA:ArraySize1") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:ArraySize1") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dim1SA") + field(FLNK, "BL03S-EA-FSCN-02:PVA:Dim2SA") +} + +record(subArray, "BL03S-EA-FSCN-02:PVA:Dim2SA") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "2") + field(FLNK, "BL03S-EA-FSCN-02:PVA:ArraySize2") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:ArraySize2") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dim2SA") + field(FLNK, "BL03S-EA-FSCN-02:PVA:Dim3SA") +} + +record(subArray, "BL03S-EA-FSCN-02:PVA:Dim3SA") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "3") + field(FLNK, "BL03S-EA-FSCN-02:PVA:ArraySize3") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:ArraySize3") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dim3SA") + field(FLNK, "BL03S-EA-FSCN-02:PVA:Dim4SA") +} + +record(subArray, "BL03S-EA-FSCN-02:PVA:Dim4SA") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "4") + field(FLNK, "BL03S-EA-FSCN-02:PVA:ArraySize4") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:ArraySize4") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dim4SA") + field(FLNK, "BL03S-EA-FSCN-02:PVA:Dim5SA") +} + +record(subArray, "BL03S-EA-FSCN-02:PVA:Dim5SA") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "5") + field(FLNK, "BL03S-EA-FSCN-02:PVA:ArraySize5") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:ArraySize5") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dim5SA") + field(FLNK, "BL03S-EA-FSCN-02:PVA:Dim6SA") +} + +record(subArray, "BL03S-EA-FSCN-02:PVA:Dim6SA") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "6") + field(FLNK, "BL03S-EA-FSCN-02:PVA:ArraySize6") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:ArraySize6") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dim6SA") + field(FLNK, "BL03S-EA-FSCN-02:PVA:Dim7SA") +} + +record(subArray, "BL03S-EA-FSCN-02:PVA:Dim7SA") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "7") + field(FLNK, "BL03S-EA-FSCN-02:PVA:ArraySize7") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:ArraySize7") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dim7SA") + field(FLNK, "BL03S-EA-FSCN-02:PVA:Dim8SA") +} + +record(subArray, "BL03S-EA-FSCN-02:PVA:Dim8SA") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "8") + field(FLNK, "BL03S-EA-FSCN-02:PVA:ArraySize8") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:ArraySize8") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dim8SA") + field(FLNK, "BL03S-EA-FSCN-02:PVA:Dim9SA") +} + +record(subArray, "BL03S-EA-FSCN-02:PVA:Dim9SA") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dimensions NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "9") + field(FLNK, "BL03S-EA-FSCN-02:PVA:ArraySize9") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:ArraySize9") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dim9SA") +} + + +record(waveform, "BL03S-EA-FSCN-02:PVA:Dimensions_RBV") +{ + field(DTYP, "asynInt32ArrayIn") + field(INP, "@asyn(FSCN2.pva,0,1)ARRAY_DIMENSIONS") + field(FTVL, "LONG") + field(NELM, "10") + field(FLNK, "BL03S-EA-FSCN-02:PVA:Dim0SA_RBV") + field(SCAN, "I/O Intr") +} + +record(subArray, "BL03S-EA-FSCN-02:PVA:Dim0SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "0") + field(FLNK, "BL03S-EA-FSCN-02:PVA:ArraySize0_RBV") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:ArraySize0_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dim0SA_RBV") + field(FLNK, "BL03S-EA-FSCN-02:PVA:Dim1SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-02:PVA:Dim1SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "1") + field(FLNK, "BL03S-EA-FSCN-02:PVA:ArraySize1_RBV") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:ArraySize1_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dim1SA_RBV") + field(FLNK, "BL03S-EA-FSCN-02:PVA:Dim2SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-02:PVA:Dim2SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "2") + field(FLNK, "BL03S-EA-FSCN-02:PVA:ArraySize2_RBV") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:ArraySize2_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dim2SA_RBV") + field(FLNK, "BL03S-EA-FSCN-02:PVA:Dim3SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-02:PVA:Dim3SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "3") + field(FLNK, "BL03S-EA-FSCN-02:PVA:ArraySize3_RBV") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:ArraySize3_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dim3SA_RBV") + field(FLNK, "BL03S-EA-FSCN-02:PVA:Dim4SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-02:PVA:Dim4SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "4") + field(FLNK, "BL03S-EA-FSCN-02:PVA:ArraySize4_RBV") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:ArraySize4_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dim4SA_RBV") + field(FLNK, "BL03S-EA-FSCN-02:PVA:Dim5SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-02:PVA:Dim5SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "5") + field(FLNK, "BL03S-EA-FSCN-02:PVA:ArraySize5_RBV") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:ArraySize5_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dim5SA_RBV") + field(FLNK, "BL03S-EA-FSCN-02:PVA:Dim6SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-02:PVA:Dim6SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "6") + field(FLNK, "BL03S-EA-FSCN-02:PVA:ArraySize6_RBV") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:ArraySize6_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dim6SA_RBV") + field(FLNK, "BL03S-EA-FSCN-02:PVA:Dim7SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-02:PVA:Dim7SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "7") + field(FLNK, "BL03S-EA-FSCN-02:PVA:ArraySize7_RBV") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:ArraySize7_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dim7SA_RBV") + field(FLNK, "BL03S-EA-FSCN-02:PVA:Dim8SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-02:PVA:Dim8SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "8") + field(FLNK, "BL03S-EA-FSCN-02:PVA:ArraySize8_RBV") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:ArraySize8_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dim8SA_RBV") + field(FLNK, "BL03S-EA-FSCN-02:PVA:Dim9SA_RBV") +} + +record(subArray, "BL03S-EA-FSCN-02:PVA:Dim9SA_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dimensions_RBV NPP NMS") + field(FTVL, "LONG") + field(MALM, "10") + field(NELM, "1") + field(INDX, "9") + field(FLNK, "BL03S-EA-FSCN-02:PVA:ArraySize9_RBV") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:ArraySize9_RBV") +{ + field(INP, "BL03S-EA-FSCN-02:PVA:Dim9SA_RBV") +} + + +record(mbbi, "BL03S-EA-FSCN-02:PVA:BayerPattern_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)BAYER_PATTERN") + field(ZRST, "RGGB") + field(ZRVL, "0") + field(ONST, "GBRG") + field(ONVL, "1") + field(TWST, "GRBG") + field(TWVL, "2") + field(THST, "BGGR") + field(THVL, "3") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:ArraySizeX_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)ARRAY_SIZE_X") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:ArraySizeY_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)ARRAY_SIZE_Y") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:ArraySizeZ_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)ARRAY_SIZE_Z") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:ArraySize_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)ARRAY_SIZE") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records have information on the compression # +################################################################### +record(stringin, "BL03S-EA-FSCN-02:PVA:Codec_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.pva,0,1)CODEC") + field(VAL, "") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:CompressedSize_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)COMPRESSED_SIZE") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the data type # +################################################################### + +record(mbbo, "BL03S-EA-FSCN-02:PVA:DataType") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.pva,0,1)DATA_TYPE") + field(ZRST, "Int8") + field(ZRVL, "0") + field(ONST, "UInt8") + field(ONVL, "1") + field(TWST, "Int16") + field(TWVL, "2") + field(THST, "UInt16") + field(THVL, "3") + field(FRST, "Int32") + field(FRVL, "4") + field(FVST, "UInt32") + field(FVVL, "5") + field(SXST, "Int64") + field(SXVL, "6") + field(SVST, "UInt64") + field(SVVL, "7") + field(EIST, "Float32") + field(EIVL, "8") + field(NIST, "Float64") + field(NIVL, "9") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-EA-FSCN-02:PVA:DataType_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)DATA_TYPE") + field(ZRST, "Int8") + field(ZRVL, "0") + field(ONST, "UInt8") + field(ONVL, "1") + field(TWST, "Int16") + field(TWVL, "2") + field(THST, "UInt16") + field(THVL, "3") + field(FRST, "Int32") + field(FRVL, "4") + field(FVST, "UInt32") + field(FVVL, "5") + field(SXST, "Int64") + field(SXVL, "6") + field(SVST, "UInt64") + field(SVVL, "7") + field(EIST, "Float32") + field(EIVL, "8") + field(NIST, "Float64") + field(NIVL, "9") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the color mode # +# These choices must agree with NDColorMode_t in NDArray.h # +################################################################### + +record(mbbo, "BL03S-EA-FSCN-02:PVA:ColorMode") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.pva,0,1)COLOR_MODE") + field(ZRST, "Mono") + field(ZRVL, "0") + field(ONST, "Bayer") + field(ONVL, "1") + field(TWST, "RGB1") + field(TWVL, "2") + field(THST, "RGB2") + field(THVL, "3") + field(FRST, "RGB3") + field(FRVL, "4") + field(FVST, "YUV444") + field(FVVL, "5") + field(SXST, "YUV422") + field(SXVL, "6") + field(SVST, "YUV421") + field(SVVL, "7") + info(autosaveFields, "VAL") +} + +record(mbbi, "BL03S-EA-FSCN-02:PVA:ColorMode_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)COLOR_MODE") + field(ZRST, "Mono") + field(ZRVL, "0") + field(ONST, "Bayer") + field(ONVL, "1") + field(TWST, "RGB1") + field(TWVL, "2") + field(THST, "RGB2") + field(THVL, "3") + field(FRST, "RGB3") + field(FRVL, "4") + field(FVST, "YUV444") + field(FVVL, "5") + field(SXST, "YUV422") + field(SXVL, "6") + field(SVST, "YUV421") + field(SVVL, "7") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records are the uniqueId and time stamps of the array # +################################################################### +record(longin, "BL03S-EA-FSCN-02:PVA:UniqueId_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)UNIQUE_ID") + field(SCAN, "I/O Intr") +} + +record(ai, "BL03S-EA-FSCN-02:PVA:TimeStamp_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.pva,0,1)TIME_STAMP") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:EpicsTSSec_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)EPICS_TS_SEC") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:EpicsTSNsec_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)EPICS_TS_NSEC") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records provide statistics on array callbacks and # +# array callback rates # +################################################################### +record(longout, "BL03S-EA-FSCN-02:PVA:ArrayCounter") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.pva,0,1)ARRAY_COUNTER") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:ArrayCounter_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)ARRAY_COUNTER") + field(SCAN, "I/O Intr") +} + +# Updated rate calculation to use a smoothing factor w/ guard against negative values +record(calc, "BL03S-EA-FSCN-02:PVA:ArrayRate_RBV") +{ + field(INPA, "BL03S-EA-FSCN-02:PVA:ArrayRate_RBV.LB NPP NMS") # Previous counter value + field(INPB, "BL03S-EA-FSCN-02:PVA:ArrayCounter_RBV NPP NMS") # Current counter value + field(INPC, "1.0") # Delta time in seconds + field(INPD, "BL03S-EA-FSCN-02:PVA:ArrayRate_RBV.VAL NPP NMS") # Previous rate + field(INPE, "0.0") # Smoothing factor + field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") + field(PREC, "2" ) + field(EGU, "Hz" ) + field(SCAN, "1 second") +} + +################################################################### +# These records control NDArray callacks # +################################################################### +record(bo, "BL03S-EA-FSCN-02:PVA:ArrayCallbacks") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.pva,0,1)ARRAY_CALLBACKS") + field(ZNAM, "Disable") + field(ZSV, "NO_ALARM") + field(ONAM, "Enable") + field(OSV, "MINOR") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(bi, "BL03S-EA-FSCN-02:PVA:ArrayCallbacks_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)ARRAY_CALLBACKS") + field(ZNAM, "Disable") + field(ZSV, "NO_ALARM") + field(ONAM, "Enable") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains macro definitions for the attributes # +################################################################### + +record(waveform, "BL03S-EA-FSCN-02:PVA:NDAttributesMacros") +{ + field(PINI, "YES") + field(DTYP, "asynOctetWrite") + field(INP, "@asyn(FSCN2.pva,0,1)ND_ATTRIBUTES_MACROS") + field(FTVL, "CHAR") + field(NELM, "256") + info(autosaveFields, "VAL") +} + +################################################################### +# This record is the name of a file defining attributes # +################################################################### + +record(waveform, "BL03S-EA-FSCN-02:PVA:NDAttributesFile") +{ + field(PINI, "YES") + field(DTYP, "asynOctetWrite") + field(INP, "@asyn(FSCN2.pva,0,1)ND_ATTRIBUTES_FILE") + field(FTVL, "CHAR") + field(NELM, "256") + info(autosaveFields, "VAL") +} + +################################################################### +# This record defines the status of reading attributes file # +################################################################### + +record(mbbi, "BL03S-EA-FSCN-02:PVA:NDAttributesStatus") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)ND_ATTRIBUTES_STATUS") + field(ZRVL, "0") + field(ZRST, "Attributes file OK") + field(ZRSV, "NO_ALARM") + field(ONVL, "1") + field(ONST, "File not found") + field(ONSV, "MINOR") + field(TWVL, "2") + field(TWST, "XML syntax error") + field(TWSV, "MAJOR") + field(THVL, "3") + field(THST, "Macro substitution error") + field(THSV, "MAJOR") + field(SCAN, "I/O Intr") +} + +################################################################### +# Status of NDArrayPool - number of buffers, memory used etc. # +################################################################### + +record(ai, "BL03S-EA-FSCN-02:PVA:PoolMaxMem") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.pva,0,1)POOL_MAX_MEMORY") + field(PREC, "1") + field(EGU, "MB") + field(SCAN, "Passive") + field(PINI, "YES") +} + +record(ai, "BL03S-EA-FSCN-02:PVA:PoolUsedMem") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.pva,0,1)POOL_USED_MEMORY") + field(PREC, "1") + field(EGU, "MB") + field(SCAN, "1 second") + field(FLNK, "BL03S-EA-FSCN-02:PVA:PoolAllocBuffers") + info(autosaveFields, "SCAN") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:PoolAllocBuffers") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)POOL_ALLOC_BUFFERS") + field(FLNK, "BL03S-EA-FSCN-02:PVA:PoolFreeBuffers") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:PoolFreeBuffers") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)POOL_FREE_BUFFERS") + field(FLNK, "BL03S-EA-FSCN-02:PVA:PoolUsedBuffers") +} + +record(calc, "BL03S-EA-FSCN-02:PVA:PoolUsedBuffers") +{ + field(INPA, "BL03S-EA-FSCN-02:PVA:PoolAllocBuffers NPP MS") + field(INPB, "BL03S-EA-FSCN-02:PVA:PoolFreeBuffers NPP MS") + field(CALC, "A-B") +} + +record(bo, "BL03S-EA-FSCN-02:PVA:EmptyFreeList") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.pva,0,1)POOL_EMPTY_FREELIST") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:NumQueuedArrays") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)NUM_QUEUED_ARRAYS") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains the type of plugin # +################################################################### + +record(stringin, "BL03S-EA-FSCN-02:PVA:PluginType_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.pva,0,1)PLUGIN_TYPE") + field(VAL, "Unknown") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control the connection of the server to # +# an NDArray driver port and address # +################################################################### +# Array port name +record(stringout, "BL03S-EA-FSCN-02:PVA:NDArrayPort") +{ + field(PINI, "YES") + field(DTYP, "asynOctetWrite") + field(OUT, "@asyn(FSCN2.pva,0,1)NDARRAY_PORT") + field(VAL, "FSCN2.CAM") + info(autosaveFields, "VAL") +} + +record(stringin, "BL03S-EA-FSCN-02:PVA:NDArrayPort_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.pva,0,1)NDARRAY_PORT") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-EA-FSCN-02:PVA:NDArrayAddress") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.pva,0,1)NDARRAY_ADDR") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:NDArrayAddress_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)NDARRAY_ADDR") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control whether callbacks are enabled and # +# minimum time between callbacks # +################################################################### +record(bo, "BL03S-EA-FSCN-02:PVA:EnableCallbacks") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.pva,0,1)ENABLE_CALLBACKS") + field(ZNAM, "Disable") + field(ONAM, "Enable") + field(VAL, "1") + info(autosaveFields, "VAL") +} + +record(bi, "BL03S-EA-FSCN-02:PVA:EnableCallbacks_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)ENABLE_CALLBACKS") + field(ZNAM, "Disable") + field(ONAM, "Enable") + field(ZSV, "NO_ALARM") + field(OSV, "MINOR") + field(SCAN, "I/O Intr") +} + +record(ao, "BL03S-EA-FSCN-02:PVA:MinCallbackTime") +{ + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN2.pva,0,1)MIN_CALLBACK_TIME") + field(EGU, "s") + field(PREC, "3") + field(VAL, "0.0") + field(DRVL, "0") + info(autosaveFields, "VAL") +} + +record(ai, "BL03S-EA-FSCN-02:PVA:MinCallbackTime_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.pva,0,1)MIN_CALLBACK_TIME") + field(EGU, "s") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(ao, "BL03S-EA-FSCN-02:PVA:MaxArrayRate") +{ + field(DTYP, "Soft Channel") + field(OUT, "BL03S-EA-FSCN-02:PVA:MaxArrayRate_COUT PP") + field(EGU, "Hz") + field(PREC, "3") + field(VAL, "0.0") + info(autosaveFields, "VAL") +} + +record(calcout, "BL03S-EA-FSCN-02:PVA:MaxArrayRate_COUT") +{ + field(INPA, "BL03S-EA-FSCN-02:PVA:MaxArrayRate") + field(CALC, "A=0?0:1.0/A") + field(OUT, "BL03S-EA-FSCN-02:PVA:MinCallbackTime PP") +} + +record(calc, "BL03S-EA-FSCN-02:PVA:MaxArrayRate_RBV") +{ + field(INPA, "BL03S-EA-FSCN-02:PVA:MinCallbackTime_RBV CP") + field(CALC, "A=0?0:1.0/A") + field(EGU, "Hz") + field(PREC, "3") + field(SCAN, "Passive") +} + +record(ao, "BL03S-EA-FSCN-02:PVA:MaxByteRate") +{ + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN2.pva,0,1)MAX_BYTE_RATE") + field(EGU, "s") + field(PREC, "3") + field(VAL, "0.0") + field(DRVL, "0") + info(autosaveFields, "VAL") +} + +record(ai, "BL03S-EA-FSCN-02:PVA:MaxByteRate_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.pva,0,1)MAX_BYTE_RATE") + field(EGU, "s") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record contains the last execution time of the plugin # +################################################################### +record(ai, "BL03S-EA-FSCN-02:PVA:ExecutionTime_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.pva,0,1)EXECUTION_TIME") + field(EGU, "ms") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +################################################################### +# This record requests that the plugin execute again with the # +# same NDArray # +################################################################### +record(bo, "BL03S-EA-FSCN-02:PVA:ProcessPlugin") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.pva,0,1)PROCESS_PLUGIN") + field(VAL, "1") +} + +################################################################### +# These records control whether callbacks block or not # +################################################################### +record(bo, "BL03S-EA-FSCN-02:PVA:BlockingCallbacks") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.pva,0,1)BLOCKING_CALLBACKS") + field(ZNAM, "No") + field(ONAM, "Yes") + field(VAL, "0") + info(autosaveFields, "VAL") +} + +record(bi, "BL03S-EA-FSCN-02:PVA:BlockingCallbacks_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)BLOCKING_CALLBACKS") + field(ZNAM, "No") + field(ONAM, "Yes") + field(SCAN, "I/O Intr") +} + + +record(longout, "BL03S-EA-FSCN-02:PVA:DroppedArrays") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.pva,0,1)DROPPED_ARRAYS") + field(VAL, "0") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:DroppedArrays_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)DROPPED_ARRAYS") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-EA-FSCN-02:PVA:QueueSize") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.pva,0,1)QUEUE_SIZE") + field(PINI, "YES") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:QueueSize_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)QUEUE_SIZE") + field(FLNK, "BL03S-EA-FSCN-02:PVA:QueueFreeLow") + field(SCAN, "I/O Intr") +} + +record(calcout, "BL03S-EA-FSCN-02:PVA:QueueFreeLow") { + field(CALC, "A*0.25") + field(INPA, "BL03S-EA-FSCN-02:PVA:QueueSize") + field(OUT, "BL03S-EA-FSCN-02:PVA:QueueFree.LOW") + field(FLNK, "BL03S-EA-FSCN-02:PVA:QueueUseHIGH") +} + +# Set a HIGH warning level for the input queue fill level to 75% +# of the full size of the queue +record(calcout, "BL03S-EA-FSCN-02:PVA:QueueUseHIGH") { + field(CALC, "A*0.75") + field(INPA, "BL03S-EA-FSCN-02:PVA:QueueSize") + field(OUT, "BL03S-EA-FSCN-02:PVA:QueueUse.HIGH") + field(FLNK, "BL03S-EA-FSCN-02:PVA:QueueUseHIHI") +} + +# Set a HIHI level for the input queue fill level to indicate an error +# (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) +record(calcout, "BL03S-EA-FSCN-02:PVA:QueueUseHIHI") { + field(CALC, "A*1.0") + field(INPA, "BL03S-EA-FSCN-02:PVA:QueueSize") + field(OUT, "BL03S-EA-FSCN-02:PVA:QueueUse.HIHI") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:QueueFree") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)QUEUE_FREE") + field(LLSV, "MAJOR") + field(LSV, "MINOR") + field(LOLO, "0") + field(HYST, "1") + field(SCAN, "I/O Intr") +} + +# Display the fill level on the plugins input queue +record(calc, "BL03S-EA-FSCN-02:PVA:QueueUse") { + field(CALC, "A-B") + field(INPA, "BL03S-EA-FSCN-02:PVA:QueueSize") + field(INPB, "BL03S-EA-FSCN-02:PVA:QueueFree CP") + field(SCAN, "Passive") + field(HHSV, "MAJOR") + field(HSV, "MINOR") + field(HYST, "1") +} + +record(longout, "BL03S-EA-FSCN-02:PVA:NumThreads") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.pva,0,1)NUM_THREADS") + field(VAL, "1") + field(PINI, "YES") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:NumThreads_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)NUM_THREADS") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:MaxThreads_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)MAX_THREADS") + field(SCAN, "I/O Intr") +} + +################################################################### +# These records control output array sorting # +################################################################### +record(mbbo, "BL03S-EA-FSCN-02:PVA:SortMode") { + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.pva,0,1)SORT_MODE") + field(ZRVL, "0") + field(ZRST, "Unsorted") + field(ONVL, "1") + field(ONST, "Sorted") +} + +record(mbbi, "BL03S-EA-FSCN-02:PVA:SortMode_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)SORT_MODE") + field(ZRVL, "0") + field(ZRST, "Unsorted") + field(ONVL, "1") + field(ONST, "Sorted") + field(SCAN, "I/O Intr") +} + +record(ao, "BL03S-EA-FSCN-02:PVA:SortTime") { + field(PINI, "YES") + field(DTYP, "asynFloat64") + field(OUT, "@asyn(FSCN2.pva,0,1)SORT_TIME") + field(PREC, "3") + field(VAL, "0.1") +} + +record(ai, "BL03S-EA-FSCN-02:PVA:SortTime_RBV") { + field(DTYP, "asynFloat64") + field(INP, "@asyn(FSCN2.pva,0,1)SORT_TIME") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-EA-FSCN-02:PVA:SortSize") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.pva,0,1)SORT_SIZE") + field(VAL, "20") + field(PINI, "YES") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:SortSize_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)SORT_SIZE") + field(FLNK, "BL03S-EA-FSCN-02:PVA:SortFreeLow") + field(SCAN, "I/O Intr") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:SortFree") { + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)SORT_FREE") + field(LLSV, "MAJOR") + field(LSV, "MINOR") + field(LOLO, "0") + field(HYST, "1") + field(SCAN, "I/O Intr") +} + +record(calcout, "BL03S-EA-FSCN-02:PVA:SortFreeLow") { + field(CALC, "A*0.25") + field(INPA, "BL03S-EA-FSCN-02:PVA:SortSize") + field(OUT, "BL03S-EA-FSCN-02:PVA:SortFree.LOW") +} + +record(longout, "BL03S-EA-FSCN-02:PVA:DroppedOutputArrays") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.pva,0,1)DROPPED_OUTPUT_ARRAYS") + field(VAL, "0") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:DroppedOutputArrays_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)DROPPED_OUTPUT_ARRAYS") + field(SCAN, "I/O Intr") +} + +record(longout, "BL03S-EA-FSCN-02:PVA:DisorderedArrays") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn(FSCN2.pva,0,1)DISORDERED_ARRAYS") + field(PINI, "YES") +} + +record(longin, "BL03S-EA-FSCN-02:PVA:DisorderedArrays_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn(FSCN2.pva,0,1)DISORDERED_ARRAYS") + field(SCAN, "I/O Intr") +} + + + +################################################################### +# The asynRecord is used for mainly for trace mask # +################################################################### + +# Set ASYN_TRACEIO_HEX bit by default + +# New records for NDPluginPva + +record(waveform, "BL03S-EA-FSCN-02:PVA:PvName_RBV") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn(FSCN2.pva,0,1)PV_NAME") + field(FTVL, "CHAR") + field(NELM, "256") + field(SCAN, "I/O Intr") +} diff --git a/tickit_devices/oav/db_files/EA-OAV.db b/tickit_devices/oav/db_files/EA-OAV.db new file mode 100755 index 00000000..12cd70c0 --- /dev/null +++ b/tickit_devices/oav/db_files/EA-OAV.db @@ -0,0 +1,33 @@ +record(stringout, "BL03S-EA-OAV-01:FZOOM:ZOOMPOSCMD") +{ + field(PINI, "YES") + field(DTYP, "asynOctetWrite") + field(OUT, "@asyn(OAV.MXSC,0,1)NDARRAY_PORT") + field(VAL, "1.0x") + info(autosaveFields, "VAL") +} + +record(mbbo, "BL03S-EA-OAV-01:FZOOM:MP:SELECT") { + field(DESC, "Zoom positioner") + field(SCAN, "Passive") + field(DTYP, "Soft Channel") + field(ZRST, "1.0x") + field(ONST, "2.5x") + field(TWST, "5.0x") + field(THST, "7.5x") + field(FRST, "10.0x") + field(FVST, "") + field(SXST, "") + field(SVST, "") + field(EIST, "") + field(NIST, "") + field(TEST, "") + field(ELST, "") + field(PINI, "YES") + field(DISV, "2") + field(VAL, "0") + field(TVST, "") + field(TTST, "") + field(FTST, "") + field(FFST, "") +} \ No newline at end of file diff --git a/tickit_devices/oav/oav_edge_detection.py b/tickit_devices/oav/oav_edge_detection.py new file mode 100644 index 00000000..28278249 --- /dev/null +++ b/tickit_devices/oav/oav_edge_detection.py @@ -0,0 +1,341 @@ +import random +import subprocess +from dataclasses import dataclass + +import numpy as np +from softioc import builder +from tickit.adapters.composed import ComposedAdapter +from tickit.adapters.epicsadapter import EpicsAdapter +from tickit.adapters.interpreters.command import CommandInterpreter, RegexCommand +from tickit.adapters.servers.tcp import TcpServer +from tickit.core.adapter import Server +from tickit.core.components.component import Component, ComponentConfig +from tickit.core.components.device_simulation import DeviceSimulation +from tickit.core.device import Device, DeviceUpdate +from tickit.core.typedefs import SimTime +from tickit.utils.byte_format import ByteFormat +from tickit.utils.compat.typing_compat import TypedDict + +_MXSC_WAVEFORM_WIDTH = 1024 + + +class OAVDevice(Device): + #: An empty typed mapping of device inputs + Inputs: TypedDict = TypedDict("Inputs", {}) + #: A typed mapping containing the current output value + Outputs: TypedDict = TypedDict("Outputs", {}) + + def __init__(self): + pass + + def update( + self, time: SimTime, inputs: Inputs, callback_period=int(1e9) + ) -> DeviceUpdate[Outputs]: + """ + The device is only altered by adapters so take no inputs. + + Args: + time (SimTime): The current simulation time (in nanoseconds). + inputs (State): A mapping of inputs to the device and their values. + + Returns: + DeviceUpdate[Outputs]: + The produced update event. + """ + return DeviceUpdate(OAVDevice.Outputs(), SimTime(time + callback_period)) + + +class OAVDeviceMXSC(Device): + """Class for simulating the PVs in OAV relevant to edge detection. + + We won't try and implement any fancy logic (yet). Just get the PVs hosted. + """ + + #: An empty typed mapping of device inputs + Inputs: TypedDict = TypedDict("Inputs", {}) + #: A typed mapping containing the current output value + Outputs: TypedDict = TypedDict("Outputs", {}) + + def __init__(self, callback_period=1e9): + # the pin can be inserted at whatever orientation + self.callback_period = SimTime(callback_period) + widest_point = random.uniform(0, 180) + self.widest_points = (widest_point, widest_point - 180) + + # We arbitrarily decide the widest polynomial should be + # f(x) = -\frac{1}{360}(x - 180)^2 + 90 + self.widest_point_polynomial = -1 / 360 * (np.arange(0, 340) - 180) ** 2 + 90 + + self.omega = random.uniform(-180, 180) + + # For smargons, the limits are set to 0 since it can rotate indefinitely + self.high_limit_travel = 0 + self.low_limit_travel = 0 + + self.tip_x = int(random.uniform(200, 400)) + self.tip_y = int(random.uniform(250, 450)) + self.top = np.zeros(1024) + ln = np.log(np.arange(1, _MXSC_WAVEFORM_WIDTH + 1 - self.tip_x)) + self.top[self.tip_x : _MXSC_WAVEFORM_WIDTH] = ln + self.bottom = -self.top + self.top[self.tip_x :] += self.tip_y + self.bottom[self.tip_x :] += self.tip_y + + self.set_waveform_based_on_omega() + + def update(self, time: SimTime, inputs: Inputs) -> DeviceUpdate[Outputs]: + """Update method, will be unused since camera PVs won't change value without \ + directly setting them. + + The device is only altered by adapters so take no inputs. + + Args: + time (SimTime): The current simulation time (in nanoseconds). + inputs (State): A mapping of inputs to the device and their values. + + Returns: + DeviceUpdate[Outputs]: + The produced update event. + """ + self.omega = int( + subprocess.check_output("caget BL03S-MO-SGON-01:OMEGA", shell=True) + ) + self.set_waveform_based_on_omega() + return DeviceUpdate(OAVDevice.Outputs(), SimTime(time + self.callback_period)) + + def get_omega(self): + """Getter for pv.""" + return self.omega + + def get_high_limit_travel(self): + """Getter for pv.""" + return self.high_limit_travel + + def get_low_limit_travel(self): + """Getter for pv.""" + return self.high_limit_travel + + def get_top(self) -> np.ndarray: + """Getter for pv.""" + return self.top + + def get_bottom(self) -> np.ndarray: + """Getter for pv.""" + return self.bottom + + def get_tip_x(self) -> int: + """Getter for pv.""" + return self.tip_x + + def get_tip_y(self) -> int: + """Getter for pv.""" + return self.tip_y + + def set_waveform_based_on_omega(self): + """The pin head is wider if omega is closest to a widest angle.""" + + # Get how close omega is to a widest angle. + # We need to modulo since self.omega could exceed 180 + distance_to_widest = min( + abs(self.omega - self.widest_points[0]) % 180, + abs(self.omega - self.widest_points[1]) % 180, + ) + bulge = self.widest_point_polynomial * (95 - distance_to_widest) / 90 + self.top[self.tip_x : self.tip_x + 340] = bulge + self.tip_y + self.bottom[self.tip_x : self.tip_x + 340] = -bulge + self.tip_y + + +class OAVTCPAdapter(ComposedAdapter): + """A TCP adapter to set a OAVDevice_DIOAV PV values.""" + + device: OAVDevice + + def __init__( + self, + server: Server, + ) -> None: + """OAV adapter, instantiates TcpServer with configured host and port. + + Args: + server (Server): The immutable data container used to configure a + server. + """ + super().__init__( + server, + CommandInterpreter(), + ) + + +class OAVTCPAdapterMXSC(ComposedAdapter): + device: OAVDeviceMXSC + + def __init__( + self, + server: Server, + ) -> None: + """OAV adapter, instantiates TcpServer with configured host and port. + + Args: + server (Server): The immutable data container used to configure a + server. + """ + super().__init__( + server, + CommandInterpreter(), + ) + + @RegexCommand(r"TOP=(\d+\.?\d*)", interrupt=True, format="utf-8") + async def set_top(self, value: np.ndarray) -> None: + """Regex string command that sets the value of beam_current. + + Args: + value (int): The new value of beam_current. + """ + self.device.top = value + + @RegexCommand(r"TOP\?", format="utf-8") + async def get_top(self) -> bytes: + """Regex string command that returns the utf-8 encoded value of beam_current. + + Returns: + bytes: The utf-8 encoded value of beam_current. + """ + return str(self.device.top).encode("utf-8") + + @RegexCommand(r"BOTTOM=(\d+\.?\d*)", interrupt=True, format="utf-8") + async def set_bottom(self, value: np.ndarray) -> None: + """Regex string command that sets the value of beam_current. + + Args: + value (int): The new value of beam_current. + """ + self.device.bottom = value + + @RegexCommand(r"BOTTOM\?", format="utf-8") + async def get_bottom(self) -> bytes: + """Regex string command that returns the utf-8 encoded value of beam_current. + + Returns: + bytes: The utf-8 encoded value of beam_current. + """ + return str(self.device.bottom).encode("utf-8") + + @RegexCommand(r"TIPX=(\d+\.?\d*)", interrupt=True, format="utf-8") + async def set_tip_x(self, value: float) -> None: + """Regex string command that sets the value of beam_current. + + Args: + value (int): The new value of beam_current. + """ + self.device.tip_x = value + + @RegexCommand(r"TIPX\?", format="utf-8") + async def get_tip_x(self) -> bytes: + """Regex string command that returns the utf-8 encoded value of beam_current. + + Returns: + bytes: The utf-8 encoded value of beam_current. + """ + return str(self.device.tip_x).encode("utf-8") + + @RegexCommand(r"TIPY=(\d+\.?\d*)", interrupt=True, format="utf-8") + async def set_tip_y(self, value: float) -> None: + """Regex string command that sets the value of beam_current. + + Args: + value (int): The new value of beam_current. + """ + self.device.tip_y = value + + @RegexCommand(r"TIPY\?", format="utf-8") + async def get_tip_y(self) -> bytes: + """Regex string command that returns the utf-8 encoded value of beam_current. + + Returns: + bytes: The utf-8 encoded value of beam_current. + """ + return str(self.device.tip_y).encode("utf-8") + + +class OAVEpicsAdapterMXSC(EpicsAdapter): + """ + Epics adapter for handling edge detection PVs. + """ + + device: OAVDeviceMXSC + + # Put all the PVs on EPICS + def on_db_load(self) -> None: + """Epics adapter for reading device values as a PV through channel access.""" + self.link_input_on_interrupt( + builder.WaveformOut("MXSC:Top", self.device.top), self.device.get_top + ) + self.link_input_on_interrupt( + builder.WaveformOut("MXSC:Bottom", self.device.bottom), + self.device.get_bottom, + ) + self.link_input_on_interrupt(builder.aOut("MXSC:TipX"), self.device.get_tip_x) + self.link_input_on_interrupt(builder.aOut("MXSC:TipY"), self.device.get_tip_y) + + +class OAVEpicsAdapter(EpicsAdapter): + """Epics adapter for reading all Attributes as a PV through channel access.""" + + device: OAVDevice + + # Put all the PVs on EPICS + def on_db_load(self) -> None: + """Epics adapter for reading device values as a PV through channel access.""" + pass + + +@dataclass +class OAV_DEVICE_DEFAULT(ComponentConfig): + """Parent class for various OAV devices.""" + + name: str + db_file: str + port: int + ioc_name: str + host: str = "localhost" + format: ByteFormat = ByteFormat(b"%b\r\n") + + def __call__(self) -> Component: + """Set up simulation.""" + return DeviceSimulation( + name=self.name, + device=OAVDevice(), + adapters=[ + OAVTCPAdapter(TcpServer(self.host, self.port, self.format)), + OAVEpicsAdapter(self.db_file, self.ioc_name), + ], + ) + + +@dataclass +class OAV_DI_OAV(ComponentConfig): + """To hold DI-OAV PVs.""" + + name: str + db_file: str + port: int + ioc_name: str + host: str = "localhost" + format: ByteFormat = ByteFormat(b"%b\r\n") + + def __call__(self) -> Component: + """Set up simulation.""" + return DeviceSimulation( + name=self.name, + device=OAVDeviceMXSC(), + adapters=[ + OAVTCPAdapterMXSC( + TcpServer( + self.host, + self.port, + self.format, + ) + ), + OAVEpicsAdapterMXSC(self.db_file, self.ioc_name), + ], + )