@@ -9,9 +9,9 @@ const fs = require('fs');
9
9
const ACK = Buffer . from ( 'cmdr\0' , 'ascii' ) ;
10
10
const TIMEOUT = 1000 ;
11
11
12
- // TODO: add progress support
13
- // const MEG = 1024 * 1024;
14
- // const STATUS_UPDATE_AT = MEG;
12
+ const MEG = 1024 * 1024 ;
13
+ // This should be a multiple of 512
14
+ const STATUS_UPDATE_AT = MEG ;
15
15
16
16
const ROM_START_ADDRESS = 0x10000000 ;
17
17
const CRC_AREA = 0x100000 + 4096 ;
@@ -83,7 +83,18 @@ async function sendData(port, data) {
83
83
84
84
console . log ( 'Sending...' ) ;
85
85
86
- await writeToPort ( port , data ) ;
86
+ async function continueUpload ( offset = 0 ) {
87
+ const remainingBytes = size - offset ;
88
+ if ( remainingBytes > 0 ) {
89
+ const amount = Math . min ( STATUS_UPDATE_AT , remainingBytes ) ;
90
+ const nextOffset = offset + amount ;
91
+ await writeToPort ( port , data . slice ( offset , nextOffset ) ) ;
92
+ console . log ( `Uploaded ${ ( ( nextOffset / size ) * 100 ) . toFixed ( 2 ) } %` ) ;
93
+ await continueUpload ( nextOffset ) ;
94
+ }
95
+ }
96
+
97
+ await continueUpload ( ) ;
87
98
88
99
console . log ( 'Now booting...' ) ;
89
100
await writeToPort ( port , prepareCommand ( commands . ROM_START , 0 , 0 , 1 ) ) ;
0 commit comments