@danidoble/webserial-vending-commands
Version:
WebSerial Vending Commands
2 lines (1 loc) • 3.06 kB
JavaScript
;var h=Object.defineProperty;var C=(l,e,t)=>e in l?h(l,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[e]=t;var c=(l,e,t)=>C(l,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("./parser-Dsi8ZXwF.cjs"),i=class i{serialLockerCmdMaker(e){let r;try{r=new Uint8Array(e.length+8),r.set(e,2),r[0]=2,r[1]=e.length+4,r[r.length-2]=3;let n=0;for(let a=1;a<e.length;a++)n+=e[a],n*=parseInt(Math.pow(2,a-1).toString());r[e.length+2]=n%256,r[e.length+3]=666*3%256,r[e.length+4]=666*8%256;let s=0;for(let a=3;a<e.length+5;a++)s+=r[a];r[e.length+5]=s%256;let u=0;for(let a=0;a<r.length-1;a++)u^=r[a];r[r.length-1]=u}catch(n){throw r=new Uint8Array(0),n instanceof Error?new Error(`Error generating command: ${n.message}`):new Error("Error generating command: Unknown error")}return r}serialLockerHexCmd(e){const t=this.serialLockerCmdMaker(e),r=[];for(let n=0;n<t.length;n++){const u=t[n].toString(16).padStart(2,"0");r.push(u)}return r}validateCell(e=1){let t;if(typeof e=="string"?t=parseInt(e):t=e,isNaN(t)||t<1||t>90)throw new Error("Invalid cell number");return t}serialLockerGetStatusCellCmd({cell:e=1,channel:t=1}={}){return e=this.validateCell(e),this.build(new Uint8Array([16,t,e]))}serialLockerGetLightScanCmd({since:e=0,until:t=10,channel:r=1}={}){return this.build(new Uint8Array([32,r,e,t]))}parseCellToColumnRow(e){const t=Math.floor((e-1)/10)+1;let r=e%8;return r===0&&(r=8),[t,r]}serialLockerGetConfigureCellCmd({enable:e=!0,column:t=0,row:r=10,channel:n=1}={}){if(t<0||t>8)throw new Error("Invalid column number");if(r<0||r>10)throw new Error("Invalid row number");let s=1;return e||(s=0),this.build(new Uint8Array([48,n,t,r,s]))}serialLockerGetOpenCmd({cell:e=1,channel:t=1}={}){e=this.validateCell(e);const r=666,n=r%256,s=Math.floor(r/3)%256;return this.build(new Uint8Array([64,t,e,n,s]))}build(e){return i.asHex?this.serialLockerHexCmd(e):m.parseToBuffer(this.serialLockerCmdMaker(e))}static connection({channel:e=1}={}){return i.instance.build(new Uint8Array([0,e]))}static openCell({cell:e=1,channel:t=1}={}){return e=i.instance.validateCell(e),i.instance.serialLockerGetOpenCmd({cell:e,channel:t})}static statusCell({cell:e=1,channel:t=1}={}){return e=i.instance.validateCell(e),i.instance.serialLockerGetStatusCellCmd({cell:e,channel:t})}static lightScan({since:e=0,until:t=10,channel:r=1}={}){if(e<0||e>10)throw new Error("Invalid since number");if(t<0||t>10)throw new Error("Invalid until number");return i.instance.serialLockerGetLightScanCmd({since:e,until:t,channel:r})}static enableCell({cell:e=1,channel:t=1}={}){e=i.instance.validateCell(e);const[r,n]=i.instance.parseCellToColumnRow(e);return i.instance.serialLockerGetConfigureCellCmd({enable:!0,column:r,row:n,channel:t})}static disableCell({cell:e=1,channel:t=1}={}){e=i.instance.validateCell(e);const[r,n]=i.instance.parseCellToColumnRow(e);return i.instance.serialLockerGetConfigureCellCmd({enable:!1,column:r,row:n,channel:t})}};c(i,"asHex",!1),c(i,"instance");let o=i;o.instance=new o;exports.Locker=o;