{"_id":"@autocodingsystems/vision-inspection","_rev":"16-8d2a39e9f14576b8703ec35b0b4402f5","name":"@autocodingsystems/vision-inspection","dist-tags":{"latest":"3.1.0"},"versions":{"1.0.0":{"name":"@autocodingsystems/vision-inspection","version":"1.0.0","description":"A framework for creating a generic device that the ACS Vision Inspection driver can talk to.","main":"lib/device.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"ACS"},"license":"ISC","dependencies":{"machina":"^2.0.2"},"gitHead":"63551e02d378072022fe404b89c6ebba88680441","_id":"@autocodingsystems/vision-inspection@1.0.0","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"dist":{"integrity":"sha512-oeMtJy4saaetzmJGbxy31h7APH9NCenML7wVI2JXv9AZ79HXZ8RdtOKUnbakFU7ZlMPib/2GGPe2tq/rnJHDkA==","shasum":"4cab8741ca68e302162ac320b07c0b478d63ae30","tarball":"https://registry.npmjs.org/@autocodingsystems/vision-inspection/-/vision-inspection-1.0.0.tgz","fileCount":8,"unpackedSize":30160,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA8yr8qvLqYafBUeLCce+qtCb46TuLBpDcyKOMu7snblAiEAkXeUzHgCYymAFxLIXna6oILnBqYUI0vx/2OBE2DkLrA="}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vision-inspection_1.0.0_1522938987139_0.6067992876874222"},"_hasShrinkwrap":false},"2.0.0":{"name":"@autocodingsystems/vision-inspection","version":"2.0.0","description":"A framework for creating a generic device that the ACS Vision Inspection driver can talk to.","main":"lib/device.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"ACS"},"license":"ISC","dependencies":{"machina":"^2.0.2"},"gitHead":"fee830b0852c697e16c49ca95f1510198d1376f9","_id":"@autocodingsystems/vision-inspection@2.0.0","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"dist":{"integrity":"sha512-tZiGQr5vdfcqtB84ezkOTq82Jm3qS0C0D0LQrJqFyP5p9ClBhB6WR+IhJ0+o2/3bJoL6IUBe3cjg57gsena1tg==","shasum":"6b64b763da3a3bfaf853c9a529d8d5af6e57f2ea","tarball":"https://registry.npmjs.org/@autocodingsystems/vision-inspection/-/vision-inspection-2.0.0.tgz","fileCount":8,"unpackedSize":31320,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCG+TTpIZFbJpxM7hkSvGtEStFsQIP3Ajv6giTHT1+qKQIhAPKUO9mzKponGoYyUqtEfF7ekabA5WkhW8xCyqPQV4zY"}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vision-inspection_2.0.0_1523272997137_0.5250518382324987"},"_hasShrinkwrap":false},"1.0.1":{"name":"@autocodingsystems/vision-inspection","version":"1.0.1","description":"A framework for creating a generic device that the ACS Vision Inspection driver can talk to.","main":"lib/device.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"ACS"},"license":"ISC","dependencies":{"machina":"^2.0.2"},"gitHead":"d5d430fc4d72a1fb7526b5a8614bdbb70b163e4a","_id":"@autocodingsystems/vision-inspection@1.0.1","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"dist":{"integrity":"sha512-pBjc400YiKregjCEE5BcLxKf11nsWjnTfz2Kq2SSpjdte+1TL7RlC8+lDkNGeIaDDf3/j3McJO5hrU9R6COmnA==","shasum":"0785ce796ce9e04eb50da4606932164c2b985c89","tarball":"https://registry.npmjs.org/@autocodingsystems/vision-inspection/-/vision-inspection-1.0.1.tgz","fileCount":8,"unpackedSize":30231,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCXxEf7kn69/dRPpYQlMKxmpXWR3SbzPShCIpo/kggEwAIhALW95yVP9SVMArsK/KY56SK094642l/Tp/OtsLlD0Kmi"}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vision-inspection_1.0.1_1523360876988_0.3930591567097066"},"_hasShrinkwrap":false},"2.0.1":{"name":"@autocodingsystems/vision-inspection","version":"2.0.1","description":"A framework for creating a generic device that the ACS Vision Inspection driver can talk to.","main":"lib/device.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"ACS"},"license":"ISC","dependencies":{"machina":"^2.0.2"},"gitHead":"fee830b0852c697e16c49ca95f1510198d1376f9","_id":"@autocodingsystems/vision-inspection@2.0.1","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"dist":{"integrity":"sha512-5FXuulSWUueTt83h1x4Eqwv417olfQqjzsTa9n6xE0nT6EboemifNa+f4Me7piU/q4Gsw/LXQjRKDUogWwaEGg==","shasum":"b52434661255ca8d2161fe6bf8b15c61528bb8b1","tarball":"https://registry.npmjs.org/@autocodingsystems/vision-inspection/-/vision-inspection-2.0.1.tgz","fileCount":8,"unpackedSize":31360,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEC/YXvqNmQWrXp/eTkW4On8eRRrY9p9XIn7FD5SYueEAiEAgflZ23faFGiiDgfblXXce+oj7M+2kf2Pkjp5ZMEHuzE="}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vision-inspection_2.0.1_1523361162048_0.4854569137258611"},"_hasShrinkwrap":false},"1.0.2":{"name":"@autocodingsystems/vision-inspection","version":"1.0.2","description":"A framework for creating a generic device that the ACS Vision Inspection driver can talk to.","main":"lib/device.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"ACS"},"license":"ISC","dependencies":{"machina":"^2.0.2"},"gitHead":"b782456f2fbdaadc35a2f1a3c2164a33aff7cdd6","_id":"@autocodingsystems/vision-inspection@1.0.2","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"dist":{"integrity":"sha512-oXdYi0dVMrOb8f68v5ci44oOcDi+H3SIyYmhVConSUDnqGU1QejotGipXCNkT+BunnCoCaCr3rQSUY+pO6ryoA==","shasum":"5b52ca21bb9c5bdc60391a5c071ba037e2efc1d1","tarball":"https://registry.npmjs.org/@autocodingsystems/vision-inspection/-/vision-inspection-1.0.2.tgz","fileCount":8,"unpackedSize":30245,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBFS0B2bzMoHNnHBXcsyIp7rdtYVdbrVXkuxa1YS7vgiAiB5TlzgrlgWUl9Q3qY3tNBoEapv2MZx+xBlYWl5oVWnvw=="}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vision-inspection_1.0.2_1523365219269_0.9469397652130083"},"_hasShrinkwrap":false},"1.0.3":{"name":"@autocodingsystems/vision-inspection","version":"1.0.3","description":"A framework for creating a generic device that the ACS Vision Inspection driver can talk to.","main":"lib/device.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"ACS"},"license":"ISC","dependencies":{"machina":"^2.0.2"},"gitHead":"e7c58b9c723377fbc2d90b2aa73039ae9a138509","_id":"@autocodingsystems/vision-inspection@1.0.3","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"dist":{"integrity":"sha512-g6IsAIZgPdDPme8F09hCNyrU3p72B+RdydCBn55jp31jqF4xGPgQyJJMtZOY1S3znkTb7EmR96kySgzGeeRIVw==","shasum":"ad4b1b5558a6f797d6b0ab11a07e1ffc4ca27850","tarball":"https://registry.npmjs.org/@autocodingsystems/vision-inspection/-/vision-inspection-1.0.3.tgz","fileCount":8,"unpackedSize":30465,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDSBhDm6uYLV3dtAMzkwdBHXYclcMpDrWGRkBaZsK2DIgIhALLIXh2TzBRj/0Bpq35KedsCwzRSR+AXKDjpJmbd/RAc"}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vision-inspection_1.0.3_1523369366861_0.03743161415088303"},"_hasShrinkwrap":false},"1.0.4":{"name":"@autocodingsystems/vision-inspection","version":"1.0.4","description":"A framework for creating a generic device that the ACS Vision Inspection driver can talk to.","main":"lib/device.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"ACS"},"license":"ISC","dependencies":{"machina":"^2.0.2"},"gitHead":"e7c58b9c723377fbc2d90b2aa73039ae9a138509","_id":"@autocodingsystems/vision-inspection@1.0.4","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"dist":{"integrity":"sha512-YV0uWhGv0g2xxYPVs1uO+IZ7MWY94gs6mtra68dz8iMflx0F/FxPlCmfmFKUFz+sRe790OyqG3wlLMz9+r3g+w==","shasum":"8742fc60a265fbffc12ae02633a2acfcc04ed7f7","tarball":"https://registry.npmjs.org/@autocodingsystems/vision-inspection/-/vision-inspection-1.0.4.tgz","fileCount":8,"unpackedSize":30465,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfZU88YPCpJsDLMj7Zv7MUGAnjznZWx8AnP7pdNo8o/QIgbdoNVjWbyAxY83tLtwsizk8/zV9d4gxkc+FoQyUMzRU="}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vision-inspection_1.0.4_1523369675641_0.06998040944351946"},"_hasShrinkwrap":false},"2.0.4":{"name":"@autocodingsystems/vision-inspection","version":"2.0.4","description":"A framework for creating a generic device that the ACS Vision Inspection driver can talk to.","main":"lib/device.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"ACS"},"license":"ISC","dependencies":{"machina":"^2.0.2"},"gitHead":"71bf66150ce85531a482b0404ab80e81afd2c7f9","_id":"@autocodingsystems/vision-inspection@2.0.4","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"dist":{"integrity":"sha512-S/zA7YTbvgPpwMIyhT//fKAphYXYoLI3LWq22yn5b0IKbIFlcBUBItP/wkZPl4pNoodj5MzyMKr+ggJFALOqvw==","shasum":"41530763f2998ee6daec8f4f736d31e39945c622","tarball":"https://registry.npmjs.org/@autocodingsystems/vision-inspection/-/vision-inspection-2.0.4.tgz","fileCount":8,"unpackedSize":31594,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa2I71CRA9TVsSAnZWagAAf3EP/1KWlIpsyNfKhzS4HqZT\nP/PzT/UuUX76U9nGkj+elk/G+Jze+w7Sj0alPH7jcLJWfTi1GNWJBlaq5qPB\nsBHAVzfoe+tKTYkfO7rlywAGVx04JUU09cXDS75wFtnx5jAJ3tQ/j6+7zYpY\ngnfWE5u31XLrqSL3vvidpanG63QZ/+hnT6xhbYZFF/QDve5BGyicBoebF+Qq\nuQ/tSMN8Q7XEI1EKCli6aKPM+AhZX27HFs/yyc8UgQdoJLlziN+oSRrNnghK\nZqn+HDoUZ/SWyEwwWa3X7/vX8pE8yRoATTlClt/2A4LRLpdvVtdSOLuZt9Cr\nlMgM8BnToYcgybor+1BxDbBfTNUA6HrxcrIAMj0TVxjr9k1abiG2O75QyU1Q\nQti6dDkwHyYkcHVn3Dur+lbAmhsGfzT9QD0lBx/7iXpa8vhierH3EObZJDFL\nDdHFzN9+uaI/yOl5KOF/+UYlLb1Ha0Wxq3cGykNhGUcnYIqzKvltljfTOiaK\nn1y9f32+V+2/+1LuPegNnvDFBpnPx9zYPRRtkosv5cXNs/Z0QoGSKHYmgEvZ\noEEPo896DY0O0llmoWwRQ3Aqdl+rKSoIOys+25K2VPb74w1SKKOy2tUxYWRA\nA2p/oGzhvYW0V+oJuUMhwrMFzELPmhb5u+KUknBzpZAQiHIBBneASeIDGOf6\nXz/0\r\n=G0vJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC4QI2GF30ESkEX9UU+7uFg4J4m4O/2OOgegrwMw2MO/AIhAJcXyEnOytuwLRDrGt/C1pWcgN2QIlgVNRtArK/mnE2K"}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vision-inspection_2.0.4_1524141812132_0.042098345331914366"},"_hasShrinkwrap":false},"2.0.5":{"name":"@autocodingsystems/vision-inspection","version":"2.0.5","description":"A framework for creating a generic device that the ACS Vision Inspection driver can talk to.","main":"lib/device.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"ACS"},"license":"ISC","dependencies":{"machina":"^4.0.2"},"gitHead":"9c6ae2ae9a604332c314941537e344852d7b6084","_id":"@autocodingsystems/vision-inspection@2.0.5","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"dist":{"integrity":"sha512-cnMXIDHCRtxl0V/F4g5kpZzHnidmOrrib9Yym/HnxnAUmzd1AmSfE99ctXFv3/eoqBzHcHIg2AXngKWEi77H3A==","shasum":"6d39ddb64119a21786055aa60565eb223c279b79","tarball":"https://registry.npmjs.org/@autocodingsystems/vision-inspection/-/vision-inspection-2.0.5.tgz","fileCount":10,"unpackedSize":36699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcm0hSCRA9TVsSAnZWagAANxEQAI3rN4tJ/7Cl7cN/9z6M\n3kOxmo2KwNckXLGTG97cUY+/eR1NSMpgzD/TGhBkXWBAfTa6t23AgxJ3n1gH\no3xiotvRsszTI9XbDQF7nMC/STZFSqYlFWpVDZztPgqLCDYVqQgvJLdVDVeB\nYXRP+/koyQXvKzTanfNN4LVWevBUk7sIpxadaumEIDcAaqKw8xXJFdwEOobj\nfXhOTW4IlHJZJIWt3Tb2UyO8gsijCdOHbupwSncWALNkUlZjz+QUKEW2y3Pb\nQQ2s1UNBcfnXnzQZaCI46lUyCaqauH8aFpjJwuv8PhV5MkaKsbw+Ltyr5Sur\n8pHusZO9M9Ymn7jdscn0XYlZj9NQ9VJLz0qEv5aJfSHqSzkv3rGnfCsAHVRf\ndF62OK2JwQzA4Fgyb9jw19TjfKpX5/aXJvJRVF6pywBxRe6fU+O2tONkjhye\nYcNUYOQDR2a8oGaaFEitb8a0zminz4Dey8TPjXpyzToior4r5MtkC1hWuf/W\ntZPtDOFZjLjSB5krZ/oUtjnJpPrBSFF/QGYkHihjDuwICrgYMJenyqHYteIz\nb/uruZ13lGgCCDz4VYv9/SwGaoBf1YrIPgQZbgXdK4E4ePbu2GHpjkpgfueA\nbj5SJSjtyMvkPMNk1ojnh+lBmqBTh0J7ixnO7tv97AbZB1XKn0U9O5vnk6OS\nvfif\r\n=JN6S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHzd2WSifguuF11GK89KJdKFCoOIAYgsA+Mw8WY5UpE2AiEAqKT5nxy+XAxHfOSCcWya3ETEbwhi0V7d3Mh8UoMZegc="}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vision-inspection_2.0.5_1553680465367_0.16770726746912645"},"_hasShrinkwrap":false},"3.0.0":{"name":"@autocodingsystems/vision-inspection","version":"3.0.0","description":"A framework for creating a generic device that the ACS Vision Inspection driver can talk to.","main":"lib/device.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"ACS"},"license":"ISC","dependencies":{"machina":"^4.0.2"},"gitHead":"629080c7a0c1356bbb104d2e4572831b3f97cff9","_id":"@autocodingsystems/vision-inspection@3.0.0","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-6S9aUB+M8XXVmtCXaTDUyEXNw5g+k+FA0UTuDhDyk/+C7VDbO/pzYlXSiC4extGU1h5084eLojBtWtMJCg0JTA==","shasum":"c586ec905d0cafde4bd22b6e190f0f81ec1dad4a","tarball":"https://registry.npmjs.org/@autocodingsystems/vision-inspection/-/vision-inspection-3.0.0.tgz","fileCount":16,"unpackedSize":62001,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeprybCRA9TVsSAnZWagAAedQP/1RSnT1SHp1ij4GLOkbb\nBTpiPFKPjuOclmjgH3mdc/fo7lQTS0akcGyCyY0V6AScFGxYHxnIXOAnC1LR\nuTkNt4Y+blAwOxVdTOekeMN2jpqp/eWAuPykNHBLYlJSzKpUStwCOdZCJI02\nldlonHjPb/HH9jkmBdNAvUVgur32fDc4p7TTfW0VozEPmroLbOLaaPR27Mox\nwoEZKO/9pkexcNojHVkEQ/lzvNx49NEIrh5Q1ic1O30veH9J0cBGilKNQEoS\nVUtGDuU7eT7o3T65nS+B7YngonWwOjnDXPUcQt9f8GOZN3EYlKUs1CnUUWVb\njdm74owwS+gBfL1+6+mXHCy0AZFJC4bhiq/XVQlZ4p/KmdTSOViNcgjHonpB\n/J+CVTJ66HcSLUW0jzI5ZW37QiulLjq58pLLIzVlbevt0/xtQ9KMV0bYNCiN\nb4zLk/MKpyF4ux6gUEVJ8C/HNFT/RZri9VVcsaFFxuISHuHS7wY5Qo8gcgSt\ny4KCcoOuX4aNVFifcGzkcLYaXNfxRvX5x9FzE+OaLkL4+k4O0jbjYwKAjQ8+\nmXACttq+bw8j9ait4gqaZSeaCVGKtIQQsozAPUavz7pFi4nnibOVX8se0XDd\nEmIOAKUQoCRU/D7d8a4fInx/nEK7pEHWN7KcALWATnmyZ9hNkGhDzGtJKW73\nwYPx\r\n=EXTA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGaKc8JNOm3AFLjiDXSznPB0igAFKPOXK/hq//YHrVAmAiAv8uOrTBj4cN6ypKOwl923HirltOUJuoZ/nkBln83D3Q=="}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vision-inspection_3.0.0_1587985562579_0.34722315027311157"},"_hasShrinkwrap":false},"3.0.1":{"name":"@autocodingsystems/vision-inspection","version":"3.0.1","description":"A framework for creating a generic device that the ACS Vision Inspection driver can talk to.","main":"lib/device.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"ACS"},"license":"ISC","dependencies":{"machina":"^4.0.2"},"gitHead":"992823f2a0240425532378a6bf6c478dc032e2b6","_id":"@autocodingsystems/vision-inspection@3.0.1","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-+bO4Tk9mIib5sVHgTC6EP6p6XqTCymWt4R52ltIOVpNozOyleLJfTPvuF/mcN4mqFa4qE6aYg8B09MFjEeWXNw==","shasum":"bea080f722ec2025cb8d8a32a0a938803c22a70a","tarball":"https://registry.npmjs.org/@autocodingsystems/vision-inspection/-/vision-inspection-3.0.1.tgz","fileCount":16,"unpackedSize":62123,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqXJjCRA9TVsSAnZWagAAz2QP/j0pF82m20W1lLEGjaJt\nDLUGGL56VjqvWBhNHIlHtzIWvskZkgmd81d8o5BUVICX2LIs/r5/mHNx39KO\n5RGTL9+F+/ZjEfu4Z9+yEmu5wQ1FiU4EMuKih7VuXj/E5PoexIgf4VLIrore\n8AnXB9LPcTZruKZmuZmVAYl5GQkd9WakcXC+pDTQEC5QGs5XujwgoP1F6q93\ni4fXFNBA9LXFuVaBcOsz4xsJkboUjERL6/iDctTNPtL1he5WGZBFyJLY3RYx\nNvjGi4PiaBKgzWef6GizzEyVZ6tLK3wnwdVQ6B8NvINtHnCoINxkE0HSVnCV\n1b1gI25uCd4pQX0Zrvk8GXZQRRFvXpIRjA1hMZZ2QNd6ndQchxitOr4ZMoIB\nBmEX5LTO1kJi9V/kZqPu9NYPB1kXCDuYClnWZ5Irrl93SWc3qumciZ9D8CuK\nu6KKYBPDyLz1aqOemHyk+7m/irSz1LMk+oZvCUxwyK/QwTap3nabTjAErgAt\nnAmvBLF7l/sdNDtknVxgZUJ1LlZES3n2lpAvhDKV36oBI4uLQqZQYkjXQu1O\na7Q03PxzUt2nb7QpFrABeibXqAvQCSHb1mn1xuUNMgUXRWlGZjg1IfW5NII/\nWoyJYwTro8Fi9QSrQKm2EVfkRvdry4wi/+PleGA1gauRrXfH2FCXhw6gu0Ut\n552j\r\n=W3U3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDDkEI+lkUhQrN/rXXmxaklZ8lfYcHZVRWiC051S7Ma3gIhAKrJohwvk0FrVkKuAJN2s97UYvPTlr/n+dprA4E0UV/o"}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vision-inspection_3.0.1_1588163171160_0.13726025851410562"},"_hasShrinkwrap":false},"3.0.2":{"name":"@autocodingsystems/vision-inspection","version":"3.0.2","description":"A framework for creating a generic device that the ACS Vision Inspection driver can talk to.","main":"lib/device.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"ACS"},"license":"ISC","dependencies":{"machina":"^4.0.2"},"gitHead":"992823f2a0240425532378a6bf6c478dc032e2b6","_id":"@autocodingsystems/vision-inspection@3.0.2","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-VlWkA6RQzD5xi6s4SpJVyq2smqbdEehoHZAb6as31M6w6Q+U2d3z0aIoRZANonsV2O3K2Ixxv1YrAi/RM9hCmw==","shasum":"71fbf73a51155df87739f6d48f9c0095efcb2479","tarball":"https://registry.npmjs.org/@autocodingsystems/vision-inspection/-/vision-inspection-3.0.2.tgz","fileCount":16,"unpackedSize":61935,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeq/pWCRA9TVsSAnZWagAAe2UP/1DpUKrLhwjl1v0bHrPZ\nOWeD+Sc5KEZMwpzQ0OT52IPcqr/bPd5ifjgHA74HYU7IkI/ar7WQtebrqMMo\n04LTb2lhsNzy6nlhou0HO4ycxQ/0UwJCCfTxSdUQoeuy411qMHdrWU0yhjuS\nRjhmh74fL0qsyCvcnAlTeLPl5BwQq3JA/zODWTRFAL1foBB5jJhDTOzQeo6u\nBpEraZfm86aXYBRVnT0DGCRPndBrj9oxPab59zCTvzdB0GNE/A3SiB7HNTzW\nk+XGypaEHGr/fI3WW1Va+XUnVu2WwDSEEPHup1zmJqNL6cc+71NcgJFeZKg7\nvTjmsgMbYyutw5PrTXCJljgxVwYZM1ZwzZ6QmvCWRofcTwU1YssUutYmt4XW\nW4NP0lvQ+/1yUMQvhef5CgKpVWKmKJv41zKD7d/9N5QnimxAl65LW3P+XKA6\nF8DO3f1otmYMsMCtsfOV+R/rhWd/18FqoYowWDFwchgjKKunhMIDX9Rof0Zg\nUso6/BGC0v2v/hr8ylMCYZA6N6eP1589UhTTWH41BJvdoGZXBZ2h+tBFhXMa\nA8Qi3JcPwlYzNVyR+JDYDnPhvE23jDIgQdFtWSgFSwVJvp/OOGxXIWQhtowN\nPlKQLwQyQmPgWjHDIqo1hinv1aH1DlR+9GTQyVNVRjQuCLkWQFvFLBnELRyH\nzg4L\r\n=qPip\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAErd4pjzT+d4KMvHNYzvAJzyujh4V6JRkTwUhgp0L0JAiEArur91FLxpihmn/9x+ISMzntzD60Y8zRao/GPaRORwJA="}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vision-inspection_3.0.2_1588329046222_0.30348750449372797"},"_hasShrinkwrap":false},"3.0.3":{"name":"@autocodingsystems/vision-inspection","version":"3.0.3","description":"A framework for creating a generic device that the ACS Vision Inspection driver can talk to.","main":"lib/device.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"ACS"},"license":"ISC","dependencies":{"machina":"^4.0.2"},"gitHead":"21db8d6866d60145234848d61f6e759250308a5f","_id":"@autocodingsystems/vision-inspection@3.0.3","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-Vg/WdMliWyUJXaqURaOWNkPVXR7PyNwoN/XHgfMM9QFWyg5CL/s3AK2PJeRxcA3yFWI8/00FsSL9fcvLsYybsw==","shasum":"7527ab76cd0c30f58aa3a7dfb51a179146bd8fe7","tarball":"https://registry.npmjs.org/@autocodingsystems/vision-inspection/-/vision-inspection-3.0.3.tgz","fileCount":16,"unpackedSize":67361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesXcBCRA9TVsSAnZWagAA23AQAJ5qDp999dUJQylQtcRF\nzrK/5NsEQFkIPNtQ1L4qZQj1Nz7QZf2vH4gefQHQUOK8OEs7gmGtkzPfC8kj\nFM/QI2j+n3PnbRywOGY5Z1CQAgzUTDAiKFioGPtKzhRsALXrK0bOTazBtmYN\nErwbWYHvSA4XdLdP5uOeeeT898XMAHZSoBvKdLWm+fm15ZuWmNWmPsmmZ0oe\n/Ick5sdMyayvKUcaXYbWsov8FEBNfwk21QLqdR8qvfiusp7AuTZnzztGUqUE\nw96s9nfGRTHBn4HQkIPusRNlgTTkc3968FUnTV2+zurK57UFQcFLBIxdriwK\nJ3ow9WutzSbF/X3YoY2pgpk9bGWJZJzExD9LCwWHf5+ewPiSeIDWexoHoUBl\n888k4I0n5sUYoDn8QceBZ1/jezehrKzUevKVjUz8eJCi2fU2IfUQ4VH7+Sis\nOo0lrgmAs855l5XuvX48QJIXzU65uPX5Tmg0fCAYdnwWCllDMZO+541fPZ5B\nQW06DIOxks9rEusHHUlVu9DOEcv1nLx4Xt45jb0JBL+ZJg0gVmzNjqEL6KdD\n/osWg7FlCQ8AkYR84nlvf7desHF3PCWyw8cxj7AG+pici3+xBit6/ZAisxZQ\nspWik4NcmfGitq7tSqNysB47N1qT8tRE4XFZLNWSNrmiJd34mKqxm4cQgK0S\nYsGt\r\n=KG70\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBt865ANHVPL0lnkW52Y41vl8yDtYM5X82vmKmEhGW4UAiBAcLZnBoDTjae/ftR85EWXxHokzY4YWj+BSMuRC/izrg=="}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vision-inspection_3.0.3_1588688641305_0.02221001061261041"},"_hasShrinkwrap":false},"3.0.4":{"name":"@autocodingsystems/vision-inspection","version":"3.0.4","description":"A framework for creating a generic device that the ACS Vision Inspection driver can talk to.","main":"lib/device.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"ACS"},"license":"ISC","dependencies":{"machina":"^4.0.2"},"gitHead":"53db45bf47f33271590eb847f378ebce904c5ee1","_id":"@autocodingsystems/vision-inspection@3.0.4","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-Ap8WKjeyjMVMSAUQ8lgQmVKFmCebxAjR2uYTOt7wjC4NG5RWyAyfRzbFEvEnjsSdXOXD+Ne4z1OnAuvXvYKt5Q==","shasum":"04810282aa5d83ddf91b5ec57eff31fc787ae5c9","tarball":"https://registry.npmjs.org/@autocodingsystems/vision-inspection/-/vision-inspection-3.0.4.tgz","fileCount":16,"unpackedSize":67412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexQqFCRA9TVsSAnZWagAALisP/0WpvakJcj1xKrbXg6xF\n5e8Tz5kLO/sNRuNHI/49WfPG6Co1+tx5gd3YZ8pcDztFpabHDiso9aKwfq7j\nPQo4eE0aG+ZMbW/01Z+AJZrswfC/WnMOIUK7srh6NC7CwPTXcVqezXetFmBV\ncSkWztWw28e17/F34Dcr9URMW7lejlr4tsD+GNHruXMWVcOUpFmDiVPaxm6g\nz2CyfkIUHDNNBkSrbCQrtEBLkubRtrpoBo+Wuqs4KCUoZ4/DD+t6uzcbcS/6\n3Sj6EFAXXnh3myI495vV5QsNdW7MkImvdLUxrAd0Ntww1loaBwDd35P9emXz\n3EZNBl5VPkmu5gh0CQWL1/v8Y2GtL7N3EvvmXCNos5kpzW2PNQ5G/9juCq/Q\ncUIqr6CaZx9shzLKM2IW+fwbq7STIAto4lmKg5ix2MjHJNPOjRxOKB3MveSH\nXcj91WcI7GXt2pCXVJliELWZMiCFY5lrYyRu1SnIwSqO91JJTBYY70mzlVqF\nnIx5D9OCdxM6uDH2obNEPlQAGvWy6DokuAsmzdpXuTs49GWrPZgBD/CBrDuz\nK4eArDmo7H0NODuO3oQJ2M3hgKoQyBoUUyKp0apVWFMy51iAKlIKImSTRlJK\nsqxlNZhMMGwLehXOHn87i1vWMXtuTDb8tnwTKdfO3FWb5s6sdCf0EYupd46l\n5Blu\r\n=4Cx+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDK/mi9u+guO9srZN6lii9eyPh4iYgnJQyfU91onm7qDwIhAIbXOfQVE5uR2hL2I0PX5Eh7QyWRuthL48nyj1ZJJv9u"}]},"maintainers":[{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"}],"_npmUser":{"name":"autocodingadmin","email":"jimtupper@autocodingsystems.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vision-inspection_3.0.4_1589971589194_0.30284678533670406"},"_hasShrinkwrap":false},"3.1.0":{"name":"@autocodingsystems/vision-inspection","version":"3.1.0","description":"A framework for creating a generic device that the ACS Vision Inspection driver can talk to.","main":"lib/device.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"ACS"},"license":"ISC","dependencies":{"machina":"^4.0.2"},"gitHead":"af7dded7470dd1cf67c3b18c8be80a7cb8d01a3c","_id":"@autocodingsystems/vision-inspection@3.1.0","_nodeVersion":"16.14.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-jbPqKUg/zjkGrHACOqQq5m8maaCf6MjMdj0WUrb/A1kwT+qLb1o5hAzIxswgafr6omy0BwFKMhSOFK5PtwYBSg==","shasum":"d3a0a87b948cb68ebc552803d72f8a9f157d30d8","tarball":"https://registry.npmjs.org/@autocodingsystems/vision-inspection/-/vision-inspection-3.1.0.tgz","fileCount":21,"unpackedSize":93387,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDhE7XKxK51aS7XqO4rr1PlkpiGfA7SRQoeZJ7PijdzRwIhAPPH6zeM6mQ8PSGhJIKqT+3abI+2p6Oi5VVBWEgNpwpb"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkLYyAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq97A//QX0KFvlS/3D83AvCzHzghq87sBmzaE3CtKRwV2qQi4dH4/30\r\nZW85c21qI9a0h6o64+D7UJTEO89wHjaeeWfTuilbC9n121biuOET4iFtPUJI\r\nhzbbnKc1FpXD4qAe3GoOORLAhZC6cgfSlmqfb/aba1zNa538vwj0QsOJKeTl\r\nqc48ZSOoI7MPSRKZg51IyBIE5I+kIrVpsf5MI+XhDgPsL66dT9CmeW+yVHJv\r\nPsxmw0GWHOTtHvVF0jAc8KjOt81QZEPhZGkGmj1RRQaTtHKv2dEpcmdsDugl\r\nxbUxOJLDWVyuiwLVeJ+ZIfniJhOepDP8Kx9ai6jusfTwLHAdyWbgzh0+mNSD\r\nTs6Vo1luAWCPvdnUERSdmaj7n+bUySjiu1USrSohp0RTCAZ7GzNGpBC3E8/u\r\n8fW4Tn7SaRripiC137SnXJMhqZrJtYzvvXKmPBBfpsP1WfiVjUUCX8VJnF+G\r\nNiuqL2knzuCcBLqHBwDzGO2tK5PGd1jN7+2rXrPvr0hPMvu3/LXtjarWINg5\r\n5UUedGHJ6ZIuLZY3K7zSGACHpidyRkI8ZNXDF/feyc+a47Hq68CnY9Tx7rG9\r\nNqm2foM+3E/ZAq+jfIFguV8e/K8eXO2CPAoEhOxqKLi4HcmZUR/uuQp13Xw/\r\n3vSDQISF6Zg1ovcQYvs2NXw0VUjKqcf919c=\r\n=HptD\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"autocodingadmin","email":"jim.tupper@jbtc.com"},"directories":{},"maintainers":[{"name":"autocodingadmin","email":"jim.tupper@jbtc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vision-inspection_3.1.0_1680706687874_0.5819066989156683"},"_hasShrinkwrap":false}},"time":{"created":"2018-04-05T14:36:27.077Z","1.0.0":"2018-04-05T14:36:27.193Z","modified":"2023-04-05T14:58:08.151Z","2.0.0":"2018-04-09T11:23:17.210Z","1.0.1":"2018-04-10T11:47:57.064Z","2.0.1":"2018-04-10T11:52:42.096Z","1.0.2":"2018-04-10T13:00:19.374Z","1.0.3":"2018-04-10T14:09:26.945Z","1.0.4":"2018-04-10T14:14:35.723Z","2.0.4":"2018-04-19T12:43:32.375Z","2.0.5":"2019-03-27T09:54:25.532Z","3.0.0":"2020-04-27T11:06:02.704Z","3.0.1":"2020-04-29T12:26:11.277Z","3.0.2":"2020-05-01T10:30:46.350Z","3.0.3":"2020-05-05T14:24:01.540Z","3.0.4":"2020-05-20T10:46:29.336Z","3.1.0":"2023-04-05T14:58:08.034Z"},"maintainers":[{"name":"autocodingadmin","email":"jim.tupper@jbtc.com"}],"description":"A framework for creating a generic device that the ACS Vision Inspection driver can talk to.","author":{"name":"ACS"},"license":"ISC","readme":"Vision Inspection\r\n=================\r\n\r\n# Installation\r\n\r\n```\r\nnpm install --save @autocodingsystems/vision-inspection\r\n```\r\n\r\n# Quickstart\r\n\r\nA fully featured device implementation in 11 lines.\r\n\r\n```js\r\nconst server = require('net').createServer()\r\nconst device = require('@autocodingsystems/vision-inspection')(server)\r\ndevice.on('connection', driver => {\r\n    driver.on('initialise', initialise => initialise.done())\r\n    driver.on('update', update => update.done())\r\n    driver.on('clear', clear => clear.done())\r\n    driver.on('resetpecblocked', reset => reset.done())\r\n    driver.on('error', _ => {})\r\n    driver.on('close', had_error => {})\r\n})\r\nserver.listen(9001)\r\n```\r\n\r\n`V3`\r\n\r\n```js\r\nconst server = require('net').createServer()\r\nconst device = require('@autocodingsystems/vision-inspection')(server, 3)\r\ndevice.on('connection', driver => {\r\n    driver.on('initialise', initialise => initialise.done())\r\n    driver.on('update', update => update.done())\r\n    driver.on('clear', clear => clear.done())\r\n    driver.on('datadescriptor', datadescriptor => datadescriptor.done())\r\n    driver.on('report', report => report.done())\r\n    driver.on('resetpecblocked', reset => reset.done())\r\n    driver.on('error', _ => {})\r\n    driver.on('close', had_error => {})\r\n})\r\nserver.listen(9001)\r\n```\r\n\r\nThe drivers now support v3 of the protocol which allows the device to return batch reports and events to the drivers for publication.\r\n\r\nWhere v3 differs will be marked in the documentation with a `V3` tag. V3 is not a drop in replacement for V2, code written against V2 will need modification to work against V3.\r\n\r\n\r\n`V4`\r\n\r\n```js\r\nconst server = require('net').createServer()\r\nconst device = require('@autocodingsystems/vision-inspection')(server, 4, 'C:\\\\temp\\\\devicefiles')\r\ndevice.on('connection', driver => {\r\n    driver.on('initialise', initialise => initialise.done())\r\n    driver.on('update', update => update.done())\r\n    driver.on('clear', clear => clear.done())\r\n    driver.on('datadescriptor', datadescriptor => datadescriptor.done())\r\n    driver.on('report', report => report.done())\r\n    driver.on('resetpecblocked', reset => reset.done())\r\n    driver.on('filetransfer', file => console.log(file.data.filepath); file.done())\r\n    driver.on('error', _ => {})\r\n    driver.on('close', had_error => {})\r\n})\r\nserver.listen(9001)\r\n```\r\n\r\n\r\n\r\n# API\r\n\r\n#### Factory\r\n\r\n**Example**\r\n\r\n```js\r\nconst factory = require('@autocodingsystems/vision-inspection')\r\nconst device = factory(server)\r\n```\r\n\r\n`v3`\r\n\r\n```js\r\nconst factory = require('@autocodingsystems/vision-inspection')\r\nconst device = factory(server, 3)\r\n```\r\n\r\n\r\n**Description**\r\n`factory` is the main entry point into the vision-inspection module.\r\n\r\n**Params**\r\n\r\n* `server` a server object created by `net.createServer()`\r\n\r\n* `protocol` an integer requesting the protocol implementation to use. Defaults to 2, may be 2 or 3.\r\n\r\n**Returns**\r\n\r\n`device` object - the main interface for implementing a device.\r\n\r\n**Remarks**\r\n\r\nThis function takes a tcp server object as a parameter and returns a `device` object.\r\n\r\n## Class: Device\r\n\r\n### Events\r\n\r\n#### connection\r\n\r\n**Example**\r\n\r\n```js\r\ndevice.on('connection', driver => {})\r\n```\r\n\r\n**Description**\r\n\r\nFired when a driver connects to the device.\r\n\r\n**Data**\r\n\r\n* `driver` a `Driver` object that represents the connection to the driver.\r\n\r\n**Remarks**\r\n\r\nThe underlying socket representing the connection is not available.\r\n\r\n### Methods\r\n\r\n#### setFirmware\r\n\r\n**Example**\r\n\r\n```js\r\ndevice.setFirmware('Make and Model reference', 12, 4)\r\n```\r\n\r\n**Description**\r\n\r\nSets the information to identify the device to the gateway drivers. Becomes visible in the properties of the driver.\r\n\r\n**Params**\r\n\r\n* `makeAndModel` a string to represent the device to the drivers, can be any ascii compatible string up to 20 characters\r\n* `versionMajor` the first part of the firmware version, 0-255\r\n* `versionMinor` the second part of the firmware version, 0-255\r\n\r\n**Remarks**\r\n\r\n`versionMajor` and `versionMinor` are combined by the driver into a string like: 5.3.\r\nThis method should be called before calling `listen` on the underlying `server` object.\r\nIf this method isn't called, inbuilt generic data will be used.\r\n\r\n\r\n\r\n## Class: Driver\r\n\r\n### Events\r\n\r\n#### initialise\r\n\r\n**Example**\r\n\r\n```js\r\ndriver.on('initialise', initialise => {})\r\n```\r\n\r\n**Description**\r\n\r\nPut the device into a state ready to operate. Call `initialise.done()` when done.\r\n\r\n**Data**\r\n\r\n* `initialise.eventstates`: a dictionary representing which items to initialise and how:\r\n    * `inspectionresultvalue`: How to initialise the inspection system:\r\n        * `0` - disable\r\n        * `1` - enable\r\n        * `2` - do not change\r\n* `initialise.done`: a function to call when the device is initialised. Do not call more than once. If initialisation failed, pass an error message as the first parameter, otherwise pass nothing or a falsey value.\r\n\r\n`V3`\r\n\r\n* `initialise.data.eventstates`: a dictionary representing which items to initialise and how:\r\n    * `inspectionresultvalue`: How to initialise the inspection system:\r\n        * `0` - disable\r\n        * `1` - enable\r\n        * `2` - do not change\r\n* `initialise.data.servertime`: a string representing the time on the server, for synchronisation purposes. Formatted: `dd/MM/yyyy HH:mm:ss`.\r\n* `initialise.done`: a function to call when the device is initialised. Do not call more than once. If initialisation failed, pass an error message as the first parameter, otherwise pass nothing or a falsey value.\r\n\r\n#### update\r\n\r\n**Example**\r\n\r\n```js\r\ndriver.on('update', update => {})\r\n```\r\n\r\n**Description**\r\n\r\nStart control/monitoring operations using the passed in job data.\r\n\r\n**Data**\r\n\r\n* `update.params`: an array of `{key, value}` pair objects representing the job data.\r\n* `update.done`: a function to call when the update has been applied. Do not call more than once. If the update failed, pass an error message as the first parameter, otherwise pass nothing or a falsey value.\r\n\r\n`V3`\r\n\r\n* `update.data.params`: an array of `{key, value}` pair objects representing the job data.\r\n* `update.data.servertime`: a string representing the time on the server, for synchronisation purposes. Formatted: `dd/MM/yyyy HH:mm:ss`.\r\n* `update.data.batchid`: Set this to a valid batch id before calling `done`. See Batch Identifier Implementation for more details.\r\n* `update.done`: a function to call when the update has been applied. Do not call more than once. If the update failed, pass an error message as the first parameter, otherwise pass nothing or a falsey value.\r\n\r\n**Remarks**\r\n\r\nOnce update has been received, you may make `goodRead`, `badRead`, `noRead` and `pecBlocked` calls on the `driver`.\r\n\r\n#### clear\r\n\r\n**Example**\r\n\r\n```js\r\ndriver.on('clear', clear => {})\r\n```\r\n\r\n**Description**\r\n\r\nStop control/monitoring operations.\r\n\r\n**Data**\r\n\r\n* `clear.done`: a function to call when the clear has been applied. Do not call more than once. If the clear failed, pass an error message as the first parameter, otherwise pass nothing or a falsey value.\r\n\r\n`V3`\r\n\r\n* `clear.data.batchid`: Set this to 0 or a valid batch id before calling `done`. \r\n* `clear.done`: a function to call when the clear has been applied. Do not call more than once. If the clear failed, pass an error message as the first parameter, otherwise pass nothing or a falsey value.\r\n\r\n**Remarks**\r\n\r\nOnce clear has been received, you may no longer make `goodRead`, `badRead`, `noRead` and `pecBlocked` calls on the `driver`.\r\n\r\nFor correct handling of the batchid, see the protocol document Batch Identifier Implementation.\r\n\r\n#### datadescriptor\r\n\r\n`V3`\r\n\r\n**Example**\r\n\r\n```js\r\ndriver.on('datadescriptor', datadescriptor => {})\r\n```\r\n\r\n**Description**\r\n\r\nTell the drivers the reporting schema we're using.\r\n\r\n**Data**\r\n\r\n* `datadescriptor.data`: The string representing the data descriptor to be returned to the driver, including newline characters (`\\n`). The string is split on `\\n` characters and trimmed to remove any leading & trailing whitespace, then recombined into a single string for sending to the drivers. The string should be ASCII compatible. See the Data Descriptor Format for more details.\r\n* `datadescriptor.done`: a function to call when the datadescriptor event has been processed. Do not call more than once. If the operation failed, pass an error message as the first parameter, otherwise pass nothing or a falsey value.\r\n\r\n**Remarks**\r\n\r\nSee the protocol document Data Descriptor Format for more information.\r\n\r\n\r\n#### report\r\n\r\n`V3`\r\n\r\n**Example**\r\n\r\n```js\r\ndriver.on('report', report => {\r\n    report.data.batchid = current_batchid\r\n    report.data.parameters.push({ name: 'Parameter A', value: 37})\r\n    report.data.parameters.push({ name: 'Parameter B', value: 24})\r\n    report.data.events.push({ name: 'Event A', parameters: [{name: 'Event Param A', value: 38}]})\r\n    report.done()\r\n})\r\n```\r\n\r\n**Description**\r\n\r\nThis is our opportunity to send reporting data back to the drivers.\r\n\r\n**Data**\r\n\r\n* `report.data`: The data to report back to the drivers in a specific format. The names, values and events used should match those in the data descriptor.\r\n* `report.data.parameters`: An Array of name value pairs. By default an empty array is provided so you can just push a new parameter onto it.\r\n* `report.data.events`: An array of event objects. An empty array is provided, so you can just push new events onto the array.\r\n* `report.data.events[x].name`: The name of the current event. From the data descriptor.\r\n* `report.data.events[x].parameters`: An array of parameters associated with the event, as described in the data descriptor. Each parameter is an object with a `name` and `value` key on it.\r\n* `report.done`: a function to call when the report event has been processed. Do not call more than once. If the operation failed, pass an error message as the first parameter, otherwise pass nothing or a falsey value.\r\n\r\n**Remarks**\r\n\r\nThis is called periodically and is the only way we can return reporting data to the drivers - we cannot push events or value changes to the drivers as they occur, we must wait for this event.\r\n\r\nSee the protocol document Correct Batch Response Handling for more details.\r\n\r\n\r\n\r\n\r\n#### error\r\n\r\n**Example**\r\n\r\n```js\r\ndriver.on('error', error => {})\r\n```\r\n\r\n**Description**\r\n\r\nSome error has occurred.\r\n\r\n**Data**\r\n\r\n* `error.src`: Is set to the source object of the error. This will usually be either the underlying `socket` or the `machina` finite state machine.\r\n\r\n**Remarks**\r\n\r\nPasses through errors from lower in the system.\r\n\r\n#### close\r\n\r\n**Example**\r\n\r\n```js\r\ndriver.on('close', had_error => {})\r\n```\r\n\r\n**Description**\r\n\r\nThe driver has disconnected\r\n\r\n**Data**\r\n\r\n* `had_error`: A boolean representing whether the connection was closed cleanly or whether it closed due to some error.\r\n\r\n**Remarks**\r\n\r\nOnce this fires, the `driver` object is no longer valid and should not be used. No more data will be received or sent to the driver using this object.\r\n\r\n### Methods\r\n\r\n#### goodRead\r\n\r\n**Example**\r\n\r\n```js\r\ndevice.goodRead('a barcode', 'barcodeA', '*', [\r\n    {key: 'keyA', value: 'valueA'},\r\n    {key: 'keyB', value: 'valueB'}\r\n])\r\n```\r\n\r\n**Description**\r\n\r\nNotifies the drivers of a good read event.\r\n\r\n**Params**\r\n\r\n* `type`: a string to represent the type of event that occurred. If it was a barcode read, then this would be the type of the barcode.\r\n* `info`: a string to represent the actual data of the read event. If it s a barcode read, then this would be the barcode itself.\r\n* `match`: a string representing the rule that was matched to say that this was a good read. Must not be empty.\r\n* `params`: an array of `{key, value}` objects giving data about the event\r\n\r\n**Remarks**\r\n\r\nCall this after an `update` event whenever the program notices a good event that the driver needs to know about. The driver keeps a count of how many of these events occured during the job.\r\n\r\n#### badRead\r\n\r\n**Example**\r\n\r\n```js\r\ndevice.badRead('a barcode', 'barcodeA', [\r\n    {key: 'keyA', value: 'valueA'},\r\n    {key: 'keyB', value: 'valueB'}\r\n])\r\n```\r\n\r\n**Description**\r\n\r\nNotifies the drivers of a bad read event.\r\n\r\n**Params**\r\n\r\n* `type`: a string to represent the type of event that occurred. If it was a barcode read, then this would be the type of the barcode.\r\n* `info`: a string to represent the actual data of the read event. If it s a barcode read, then this would be the barcode itself.\r\n* `params`: an array of `{key, value}` objects giving data about the event\r\n\r\n**Remarks**\r\n\r\nCall this after an `update` event whenever the program notices a bad event that the driver needs to know about. The driver keeps a count of how many of these events occured during the job.\r\n\r\n#### noRead\r\n\r\n**Example**\r\n\r\n```js\r\ndevice.noRead([\r\n    {key: 'keyA', value: 'valueA'},\r\n    {key: 'keyB', value: 'valueB'}\r\n])\r\n```\r\n\r\n**Description**\r\n\r\nNotifies the drivers of a no read event.\r\n\r\n**Params**\r\n\r\n* `params`: an array of `{key, value}` objects giving data about the event\r\n\r\n**Remarks**\r\n\r\nCall this after an `update` event whenever the program notices a no read event that the driver needs to know about. The driver keeps a count of how many of these events occured during the job.\r\n\r\n#### pecBlocked\r\n\r\n**Example**\r\n\r\n```js\r\ndevice.pecBlocked([\r\n    {key: 'keyA', value: 'valueA'},\r\n    {key: 'keyB', value: 'valueB'}\r\n])\r\n```\r\n\r\n**Description**\r\n\r\nNotifies the drivers of a pec blocked event.\r\n\r\n**Params**\r\n\r\n* `params`: an array of `{key, value}` objects giving data about the event\r\n\r\n**Remarks**\r\n\r\nCall this after an `update` event whenever the program notices a pec blocked event that the driver needs to know about. This event goes to the driver immediately and is intended to stop production immediately.\r\nSince it is a one-time event, production may continue without any remedial action - to prevent this, call the `fault` method.\r\n\r\n#### fault\r\n\r\n**Example**\r\n\r\n```js\r\ndevice.fault('The error condition.')\r\n```\r\n\r\n**Description**\r\n\r\nSet the fault status of the machine. This does not get sent down to the driver immediately but next time the drivers poll for our status.\r\n\r\n**Params**\r\n\r\n* `message`: a human readable string representing the cause of the fault.\r\n\r\n**Remarks**\r\n\r\nCall this any time if production should stop and be prevented from continuing until the fault conditions are rectified.\r\n\r\nThe message must be a well formatted human readable sentence that describes the current device state in a way that an end-customer can understand. It must use proper punctuation and be terminated with a full stop. Max 250 chars.\r\n\r\n#### clearFault()\r\n\r\n**Example**\r\n\r\n```js\r\ndevice.clearFault()\r\n```\r\n\r\n**Description**\r\n\r\nClear the fault status of the machine. \r\n\r\n**Params**\r\n\r\nNone\r\n\r\n**Remarks**\r\n\r\nCall this to allow production to continue.\r\n\r\nThis does not get sent down to the driver immediately, but next time the drivers poll for our status.\r\n\r\n#### setIdleStatus()\r\n\r\n**Example**\r\n\r\n```js\r\ndevice.setIdleStatus('Arm is stowed')\r\n```\r\n\r\n**Description**\r\n\r\nSet the description of the device when no job is running.\r\n\r\n**Params**\r\n\r\n* `message`: a human readable string representing the status.\r\n\r\n**Remarks**\r\n\r\nRepresents the status of the device to the operator. This is not sent to the driver immediately but only the next time the driver polls for our status and we're not running a device (ie, `update` has not fired).\r\n\r\nThe message must be a well formatted human readable sentence that describes the current device state in a way that an end-customer can understand. It must use proper punctuation and be terminated with a full stop. Max 250 chars.\r\n\r\n#### setRunningStatus()\r\n\r\n**Example**\r\n\r\n```js\r\ndevice.setRunningStatus('Arm is mobile')\r\n```\r\n\r\n**Description**\r\n\r\nSet the description of the device when a job is running.\r\n\r\n**Params**\r\n\r\n* `message`: a human readable string representing the status.\r\n\r\n**Remarks**\r\n\r\nRepresents the status of the device to the operator. This is not sent to the driver immediately but only the next time the driver polls for our status and we're running a device (ie, `update` has fired).\r\n\r\nThe message must be a well formatted human readable sentence that describes the current device state in a way that an end-customer can understand. It must use proper punctuation and be terminated with a full stop. Max 250 chars.\r\n\r\n","readmeFilename":"README.md"}