@@ -6,14 +6,47 @@ async function main() {
66 inst . jacsStart ( )
77}
88
9- async function altMain ( ) {
9+ async function runScript ( fn ) {
1010 const inst = await factory ( )
11-
11+ const fs = require ( "fs" )
12+
13+ const prog = fs . readFileSync ( fn )
14+
1215 // both handlePacket and sendPacket take UInt8Array of the frame
13- addEventListener ( "message" , ev => inst . handlePacket ( ev . data ) )
14- inst . sendPacket = pkt => console . log ( "send" , pkt )
15- inst . jacsSetDeviceId ( "1122334455667788" ) // use 8-byte hex-encoded ID, or any string, which will be hashed
16+ // addEventListener("message", ev => inst.handlePacket(ev.data))
17+ // inst.sendPacket = pkt => console.log("send", pkt)
18+ inst . sendPacket = pkt => {
19+ // only react to packets from our device
20+ for ( let i = 0 ; i < 8 ; ++ i )
21+ if ( pkt [ 4 + i ] != ( i + 1 ) * 0x11 )
22+ return
23+
24+ const idx = pkt [ 13 ]
25+ const cmd = pkt [ 14 ] | ( pkt [ 15 ] << 8 )
26+ // see if it's "panic event"
27+ if ( idx == 2 && ( cmd & 0x8000 ) && ( cmd & 0xff ) == 0x80 ) {
28+ const panic_code = pkt [ 16 ] | ( pkt [ 16 ] << 8 )
29+ if ( panic_code ) {
30+ console . log ( "test failed" )
31+ process . exit ( 1 )
32+ } else {
33+ console . log ( "test OK" )
34+ process . exit ( 0 )
35+ }
36+ }
37+ }
38+ inst . jacsSetDeviceId ( "1122334455667788" ) // use 8-byte hex-encoded ID (used directly), or any string (hashed)
1639 inst . jacsStart ( )
40+ inst . jacsDeploy ( prog )
41+ setTimeout ( ( ) => {
42+ console . log ( "timeout" )
43+ process . exit ( 2 )
44+ } , 2000 )
1745}
1846
19- main ( )
47+ process . argv . shift ( )
48+ process . argv . shift ( )
49+ if ( process . argv [ 0 ] )
50+ runScript ( process . argv [ 0 ] )
51+ else
52+ main ( )
0 commit comments