(timeout = 1000, wait = false)
| 549 | this.#statusSize = 2; |
| 550 | } |
| 551 | async getReply(timeout = 1000, wait = false) { |
| 552 | let received; |
| 553 | const end = Date.now() + timeout; |
| 554 | while (Date.now() < end) { |
| 555 | let duration = end - Date.now(); |
| 556 | if (duration <= 0) |
| 557 | break; |
| 558 | let data = this.#serial.read(); |
| 559 | if (!data || !data.byteLength) { //@@ byteLength check should be unnecessary! |
| 560 | const readPromise = new Promise(resolve => { |
| 561 | this.#readable = resolve; |
| 562 | }); |
| 563 | await Promise.race([readPromise, new Promise(resolve => setTimeout(resolve, duration))]); |
| 564 | continue; |
| 565 | } |
| 566 | |
| 567 | data = new Uint8Array(data); |
| 568 | if (!received) |
| 569 | received = data; |
| 570 | else { |
| 571 | const tmp = new Uint8Array(received.length + data.length); |
| 572 | tmp.set(received); |
| 573 | tmp.set(data, received.length); |
| 574 | received = tmp; |
| 575 | } |
| 576 | |
| 577 | if (!wait && (received.length > 8) && (192 === received[0]) && (192 === received[received.length - 1])) |
| 578 | break; |
| 579 | } |
| 580 | if (received) |
| 581 | tracePacket(">>", received) |
| 582 | return received; |
| 583 | } |
| 584 | unescapeSLIP(input) { |
| 585 | let length = 0; |
| 586 |
no test coverage detected