@@ -2,6 +2,7 @@ import { Transport } from 'esptool-js';
22
33export class DeviceService {
44 private port : SerialPort | null = null ;
5+ private portChecked : boolean = false ;
56 private transport : Transport | null = null ;
67 private isDeviceConnected : boolean = false ;
78 private deviceType : string = '' ;
@@ -45,44 +46,47 @@ export class DeviceService {
4546 this . port = port ;
4647
4748 // Check if the port is open by another application (or ourselves in another tab)
48-
49- if ( ! await this . checkPort ( ) ) {
50- console . log ( '[requestPort]: Port is already open by another application' ) ;
51- // throw new Error('Port is already open by another application');
52- }
53- else {
49+ this . portChecked = await this . checkPort ( )
50+ if ( this . portChecked ) {
5451 console . log ( '[requestPort]: Port is available' ) ;
5552 this . transport = new Transport ( port ) ;
5653 }
54+ else {
55+ console . log ( '[requestPort]: Port is already open by another application' ) ;
56+ }
5757
5858 } catch ( err ) {
5959 console . error ( '[requestPort]: Failed to get port:' , err ) ;
6060 throw err ;
6161 }
6262 }
6363
64- async connect ( ) : Promise < void > {
64+ async connect ( logCallback : ( msg : string ) => void = console . log ) : Promise < void > {
6565 await this . requestPort ( ) ;
6666
6767 if ( ! this . port ) {
68- throw new Error ( 'No port selected' ) ;
68+ logCallback ( 'No port selected, try again.' ) ;
69+ }
70+
71+ if ( ! this . portChecked ) {
72+ logCallback ( 'Port cannot be opened.\nIs the port already open in another application or tab?' ) ;
6973 }
7074
7175 try {
7276 if ( this . isDeviceConnected ) {
73- console . log ( 'Already connected, skipping connection' ) ;
77+ logCallback ( 'Already connected, skipping connection' ) ;
7478 return ;
7579 }
7680
7781 if ( ! this . port . readable && ! this . port . writable ) {
7882 this . transport ?. connect ( )
7983 } else {
80- console . log ( 'Port is already open, skipping connection' ) ;
84+ logCallback ( 'Port is already open, skipping connection' ) ;
8185 }
8286
8387 this . isDeviceConnected = true ;
8488 } catch ( err ) {
85- console . error ( 'Failed to connect:' , err ) ;
89+ logCallback ( 'Failed to connect:' , err ) ;
8690 throw err ;
8791 }
8892
0 commit comments