11import { saveAs } from "file-saver" ;
2- import { DriverDFU , WebDFUType , WebDFU } from "../index " ;
2+ import { WebDFUType , WebDFU } from "dfu " ;
33
44import { clearLog , logError , logInfo , logProgress , logWarning , setLogContext } from "./log" ;
55
@@ -37,21 +37,21 @@ function niceSize(n: number) {
3737 }
3838}
3939
40- function formatDFUSummary ( device : DriverDFU ) {
40+ function formatDFUSummary ( device : WebDFU ) {
4141 const vid = hex4 ( device . device . vendorId ) ;
4242 const pid = hex4 ( device . device . productId ) ;
4343 const name = device . device . productName ;
4444
4545 let mode = "Unknown" ;
46- if ( device . settings . alternate . interfaceProtocol == 0x01 ) {
46+ if ( device . currentInterfaceSettings ? .alternate . interfaceProtocol == 0x01 ) {
4747 mode = "Runtime" ;
48- } else if ( device . settings . alternate . interfaceProtocol == 0x02 ) {
48+ } else if ( device . currentInterfaceSettings ? .alternate . interfaceProtocol == 0x02 ) {
4949 mode = "DFU" ;
5050 }
5151
52- const cfg = device . settings . configuration . configurationValue ;
53- const intf = device . settings [ "interface" ] . interfaceNumber ;
54- const alt = device . settings . alternate . alternateSetting ;
52+ const cfg = device . currentInterfaceSettings ? .configuration . configurationValue ;
53+ const intf = device . currentInterfaceSettings ?. [ "interface" ] . interfaceNumber ;
54+ const alt = device . currentInterfaceSettings ? .alternate . alternateSetting ;
5555 const serial = device . device . serialNumber ;
5656
5757 return `${ mode } : [${ vid } :${ pid } ] cfg=${ cfg } , intf=${ intf } , alt=${ alt } , name="${ name } " serial="${ serial } "` ;
@@ -112,10 +112,6 @@ async function connect(interfaceIndex: number) {
112112
113113 await webdfu . connect ( interfaceIndex ) ;
114114
115- if ( ! webdfu . driver ) {
116- throw new Error ( ) ;
117- }
118-
119115 let memorySummary = "" ;
120116 if ( webdfu . properties ) {
121117 const desc = webdfu . properties ;
@@ -138,7 +134,7 @@ async function connect(interfaceIndex: number) {
138134 manifestationTolerant = webdfu . properties . ManifestationTolerant ;
139135 }
140136
141- if ( webdfu . driver . settings . alternate . interfaceProtocol == 0x02 ) {
137+ if ( webdfu . currentInterfaceSettings ? .alternate . interfaceProtocol == 0x02 ) {
142138 if ( ! desc . CanUpload ) {
143139 uploadButton . disabled = false ;
144140 dfuseUploadSizeField . disabled = true ;
@@ -150,13 +146,13 @@ async function connect(interfaceIndex: number) {
150146 }
151147
152148 if ( webdfu . type === WebDFUType . SDFUse ) {
153- if ( webdfu . driver . dfuseMemoryInfo ) {
149+ if ( webdfu . dfuseMemoryInfo ) {
154150 let totalSize = 0 ;
155- for ( const segment of webdfu . driver . dfuseMemoryInfo . segments ) {
151+ for ( const segment of webdfu . dfuseMemoryInfo . segments ) {
156152 totalSize += segment . end - segment . start ;
157153 }
158- memorySummary = `Selected memory region: ${ webdfu . driver . dfuseMemoryInfo . name } (${ niceSize ( totalSize ) } )` ;
159- for ( const segment of webdfu . driver . dfuseMemoryInfo . segments ) {
154+ memorySummary = `Selected memory region: ${ webdfu . dfuseMemoryInfo . name } (${ niceSize ( totalSize ) } )` ;
155+ for ( const segment of webdfu . dfuseMemoryInfo . segments ) {
160156 const properties = [ ] ;
161157 if ( segment . readable ) {
162158 properties . push ( "readable" ) ;
@@ -186,19 +182,19 @@ async function connect(interfaceIndex: number) {
186182 statusDisplay . textContent = "" ;
187183 connectButton . textContent = "Disconnect" ;
188184 infoDisplay . textContent =
189- `Name: ${ webdfu . driver . device . productName } \n` +
190- `MFG: ${ webdfu . driver . device . manufacturerName } \n` +
191- `Serial: ${ webdfu . driver . device . serialNumber } \n` ;
185+ `Name: ${ webdfu . device . productName } \n` +
186+ `MFG: ${ webdfu . device . manufacturerName } \n` +
187+ `Serial: ${ webdfu . device . serialNumber } \n` ;
192188
193189 // Display basic dfu-util style info
194- if ( webdfu . driver ) {
195- dfuDisplay . textContent = formatDFUSummary ( webdfu . driver ) + "\n" + memorySummary ;
190+ if ( webdfu ) {
191+ dfuDisplay . textContent = formatDFUSummary ( webdfu ) + "\n" + memorySummary ;
196192 } else {
197193 dfuDisplay . textContent = "Not found" ;
198194 }
199195
200196 // Update buttons based on capabilities
201- if ( webdfu . driver ?. settings . alternate . interfaceProtocol == 0x01 ) {
197+ if ( webdfu . currentInterfaceSettings ? .alternate . interfaceProtocol == 0x01 ) {
202198 // Runtime
203199 uploadButton . disabled = false ;
204200 downloadButton . disabled = true ;
@@ -210,16 +206,16 @@ async function connect(interfaceIndex: number) {
210206 firmwareFileField . disabled = false ;
211207 }
212208
213- if ( webdfu . type === WebDFUType . SDFUse && webdfu . driver . dfuseMemoryInfo ) {
209+ if ( webdfu . type === WebDFUType . SDFUse && webdfu . dfuseMemoryInfo ) {
214210 const dfuseFieldsDiv = document . querySelector ( "#dfuseFields" ) as HTMLDivElement ;
215211 dfuseFieldsDiv . hidden = false ;
216212 dfuseStartAddressField . disabled = false ;
217213 dfuseUploadSizeField . disabled = false ;
218- const segment = webdfu . driver . getDfuseFirstWritableSegment ( ) ;
214+ const segment = webdfu . getDfuseFirstWritableSegment ( ) ;
219215 if ( segment ) {
220- webdfu . driver . dfuseStartAddress = segment . start ;
216+ webdfu . dfuseStartAddress = segment . start ;
221217 dfuseStartAddressField . value = "0x" + segment . start . toString ( 16 ) ;
222- const maxReadSize = webdfu . driver . getDfuseMaxReadSize ( segment . start ) ;
218+ const maxReadSize = webdfu . getDfuseMaxReadSize ( segment . start ) ;
223219 dfuseUploadSizeField . value = maxReadSize . toString ( ) ;
224220 dfuseUploadSizeField . max = maxReadSize . toString ( ) ;
225221 }
@@ -229,8 +225,6 @@ async function connect(interfaceIndex: number) {
229225 dfuseStartAddressField . disabled = true ;
230226 dfuseUploadSizeField . disabled = true ;
231227 }
232-
233- return webdfu . driver ;
234228}
235229
236230transferSizeField . addEventListener ( "change" , ( ) => {
@@ -242,12 +236,12 @@ dfuseStartAddressField.addEventListener("change", function (event) {
242236 const address = parseInt ( field . value , 16 ) ;
243237 if ( isNaN ( address ) ) {
244238 field . setCustomValidity ( "Invalid hexadecimal start address" ) ;
245- } else if ( webdfu ?. driver && webdfu . type === WebDFUType . SDFUse && webdfu ?. driver ?. dfuseMemoryInfo ) {
246- if ( webdfu ?. driver . getDfuseSegment ( address ) !== null ) {
247- webdfu . driver . dfuseStartAddress = address ;
239+ } else if ( webdfu && webdfu . type === WebDFUType . SDFUse && webdfu ?. dfuseMemoryInfo ) {
240+ if ( webdfu . getDfuseSegment ( address ) !== null ) {
241+ webdfu . dfuseStartAddress = address ;
248242 field . setCustomValidity ( "" ) ;
249- if ( webdfu ?. driver && webdfu . type === WebDFUType . SDFUse ) {
250- dfuseUploadSizeField . max = webdfu . driver . getDfuseMaxReadSize ( address ) . toString ( ) ;
243+ if ( webdfu && webdfu . type === WebDFUType . SDFUse ) {
244+ dfuseUploadSizeField . max = webdfu . getDfuseMaxReadSize ( address ) . toString ( ) ;
251245 }
252246 } else {
253247 field . setCustomValidity ( "Address outside of memory map" ) ;
@@ -304,18 +298,18 @@ uploadButton.addEventListener("click", async function (event) {
304298 return false ;
305299 }
306300
307- if ( ! webdfu ?. driver || ! webdfu ?. driver . device . opened ) {
301+ if ( ! webdfu || ! webdfu . device . opened ) {
308302 onDisconnect ( ) ;
309303 webdfu = null ;
310304 } else {
311305 setLogContext ( uploadLog ) ;
312306 clearLog ( uploadLog ) ;
313307 try {
314- if ( await webdfu ?. driver ? .isError ( ) ) {
315- await webdfu ?. driver . clearStatus ( ) ;
308+ if ( await webdfu . isError ( ) ) {
309+ await webdfu . clearStatus ( ) ;
316310 }
317311 } catch ( error ) {
318- webdfu ?. driver . logWarning ( "Failed to clear status" ) ;
312+ logWarning ( "Failed to clear status" ) ;
319313 }
320314
321315 let maxSize = Infinity ;
@@ -324,7 +318,7 @@ uploadButton.addEventListener("click", async function (event) {
324318 }
325319
326320 try {
327- const blob = await webdfu ?. driver . do_read ( transferSize , maxSize ) ;
321+ const blob = await webdfu . read ( transferSize , maxSize ) ;
328322
329323 saveAs ( blob , "firmware.bin" ) ;
330324 } catch ( error ) {
@@ -357,16 +351,16 @@ async function download(): Promise<void> {
357351 return ;
358352 }
359353
360- if ( webdfu ?. driver && firmwareFile != null ) {
354+ if ( webdfu && firmwareFile != null ) {
361355 setLogContext ( downloadLog ) ;
362356 clearLog ( downloadLog ) ;
363357
364358 try {
365- if ( await webdfu ?. driver ? .isError ( ) ) {
366- await webdfu ?. driver . clearStatus ( ) ;
359+ if ( await webdfu . isError ( ) ) {
360+ await webdfu . clearStatus ( ) ;
367361 }
368362 } catch ( error ) {
369- webdfu ?. driver . logWarning ( "Failed to clear status" ) ;
363+ logWarning ( "Failed to clear status" ) ;
370364 }
371365
372366 try {
@@ -377,7 +371,7 @@ async function download(): Promise<void> {
377371
378372 if ( ! manifestationTolerant ) {
379373 try {
380- await webdfu ?. driver . waitDisconnected ( 5000 ) ;
374+ await webdfu . waitDisconnected ( 5000 ) ;
381375
382376 onDisconnect ( ) ;
383377 webdfu = null ;
0 commit comments