@@ -13,7 +13,7 @@ export default class Daemon {
13
13
this . socketMessages = new Subject ( ) ;
14
14
this . serialMonitorOpened = new BehaviorSubject ( false ) ;
15
15
this . serialMonitorMessages = new Subject ( ) ;
16
- this . uploading = new BehaviorSubject ( ) ;
16
+ this . uploading = new BehaviorSubject ( { status : UPLOAD_STATUS_NOPE } ) ;
17
17
this . devicesList = new BehaviorSubject ( {
18
18
serial : [ ] ,
19
19
network : [ ]
@@ -60,25 +60,66 @@ export default class Daemon {
60
60
handleSocketMessage ( message ) {
61
61
// Result of a list command
62
62
if ( message . Ports ) {
63
- const lastDevices = this . devicesList . getValue ( ) ;
64
- if ( message . Network && ! Daemon . devicesListAreEquals ( lastDevices . network , message . Ports ) ) {
65
- this . devicesList . next ( {
66
- serial : lastDevices . serial ,
67
- network : message . Ports
68
- } ) ;
69
- }
70
- else if ( ! message . Network && ! Daemon . devicesListAreEquals ( lastDevices . serial , message . Ports ) ) {
71
- this . devicesList . next ( {
72
- serial : message . Ports ,
73
- network : lastDevices . network
74
- } ) ;
75
- }
63
+ this . handleListMessage ( message ) ;
76
64
}
77
65
// Serial monitor message
78
66
if ( message . D ) {
79
67
this . serialMonitorMessages . next ( message . D ) ;
80
68
}
81
- // if (message.ProgrammerStatus )
69
+
70
+ if ( message . ProgrammerStatus ) {
71
+ this . handleUploadMessage ( message ) ;
72
+ }
73
+
74
+ if ( message . Err ) {
75
+ this . uploading . next ( { status : UPLOAD_STATUS_ERROR , err : message . Err } ) ;
76
+ }
77
+ }
78
+
79
+ handleListMessage ( message ) {
80
+ const lastDevices = this . devicesList . getValue ( ) ;
81
+ if ( message . Network && ! Daemon . devicesListAreEquals ( lastDevices . network , message . Ports ) ) {
82
+ this . devicesList . next ( {
83
+ serial : lastDevices . serial ,
84
+ network : message . Ports
85
+ } ) ;
86
+ }
87
+ else if ( ! message . Network && ! Daemon . devicesListAreEquals ( lastDevices . serial , message . Ports ) ) {
88
+ this . devicesList . next ( {
89
+ serial : message . Ports ,
90
+ network : lastDevices . network
91
+ } ) ;
92
+ }
93
+ }
94
+
95
+ handleUploadMessage ( message ) {
96
+ if ( this . uploading . getValue ( ) . status !== UPLOAD_STATUS_IN_PROGRESS ) {
97
+ return ;
98
+ }
99
+ if ( message . Flash === 'Ok' && message . ProgrammerStatus === 'Done' ) {
100
+ this . uploading . next ( { status : UPLOAD_STATUS_DONE , msg : message . Flash } ) ;
101
+ return ;
102
+ }
103
+ switch ( message . ProgrammerStatus ) {
104
+ case 'Starting' :
105
+ this . uploading . next ( { status : UPLOAD_STATUS_IN_PROGRESS , msg : `Programming with: ${ message . Cmd } ` } ) ;
106
+ break ;
107
+ case 'Busy' :
108
+ this . uploading . next ( { status : UPLOAD_STATUS_IN_PROGRESS , msg : message . Msg } ) ;
109
+ break ;
110
+ case 'Error' :
111
+ this . uploading . next ( { status : UPLOAD_STATUS_ERROR , err : message . Msg } ) ;
112
+ break ;
113
+ case 'Killed' :
114
+ this . uploading . next ( { status : UPLOAD_STATUS_IN_PROGRESS , msg : `terminated by user` } ) ;
115
+ this . uploading . next ( { status : UPLOAD_STATUS_ERROR , err : `terminated by user` } ) ;
116
+ break ;
117
+ case 'Error 404 Not Found' :
118
+ this . uploading . next ( { status : UPLOAD_STATUS_ERROR , err : message . Msg } ) ;
119
+ break ;
120
+ default :
121
+ this . uploading . next ( { status : UPLOAD_STATUS_IN_PROGRESS , msg : message . Msg } ) ;
122
+ }
82
123
}
83
124
84
125
writeSerial ( port , data ) {
0 commit comments