@@ -26,6 +26,13 @@ import {
2626 Status ,
2727 statusToFlag ,
2828} from '../ble-pybricks-service/protocol' ;
29+ import {
30+ usbDidConnectPybricks ,
31+ usbDidDisconnectPybricks ,
32+ usbDidReceiveDeviceName ,
33+ usbDidReceiveFirmwareRevision ,
34+ usbDisconnectPybricks ,
35+ } from '../usb/actions' ;
2936import { pythonVersionToSemver } from '../utils/version' ;
3037import {
3138 didFailToFinishDownload ,
@@ -68,21 +75,31 @@ const runtime: Reducer<HubRuntimeState> = (
6875 // can't possibly be in any other state until we get a connect event.
6976 if (
7077 state === HubRuntimeState . Disconnected &&
71- ! bleDidConnectPybricks . matches ( action )
78+ ! bleDidConnectPybricks . matches ( action ) &&
79+ ! usbDidConnectPybricks . matches ( action )
7280 ) {
7381 return state ;
7482 }
7583
76- if ( bleDidConnectPybricks . matches ( action ) ) {
84+ if (
85+ bleDidConnectPybricks . matches ( action ) ||
86+ usbDidConnectPybricks . matches ( action )
87+ ) {
7788 return HubRuntimeState . Unknown ;
7889 }
7990
80- if ( bleDisconnectPybricks . matches ( action ) ) {
91+ if (
92+ bleDisconnectPybricks . matches ( action ) ||
93+ usbDisconnectPybricks . matches ( action )
94+ ) {
8195 // disconnecting
8296 return HubRuntimeState . Unknown ;
8397 }
8498
85- if ( bleDidDisconnectPybricks . matches ( action ) ) {
99+ if (
100+ bleDidDisconnectPybricks . matches ( action ) ||
101+ usbDidDisconnectPybricks . matches ( action )
102+ ) {
86103 return HubRuntimeState . Disconnected ;
87104 }
88105
@@ -149,43 +166,67 @@ const runtime: Reducer<HubRuntimeState> = (
149166} ;
150167
151168const deviceName : Reducer < string > = ( state = '' , action ) => {
152- if ( bleDidDisconnectPybricks . matches ( action ) ) {
169+ if (
170+ bleDidDisconnectPybricks . matches ( action ) ||
171+ usbDidDisconnectPybricks . matches ( action )
172+ ) {
153173 return '' ;
154174 }
155175
156176 if ( bleDidConnectPybricks . matches ( action ) ) {
157177 return action . name ;
158178 }
159179
180+ if ( usbDidReceiveDeviceName . matches ( action ) ) {
181+ return action . deviceName ;
182+ }
183+
160184 return state ;
161185} ;
162186
163187const deviceType : Reducer < string > = ( state = '' , action ) => {
164- if ( bleDidDisconnectPybricks . matches ( action ) ) {
188+ if (
189+ bleDidDisconnectPybricks . matches ( action ) ||
190+ usbDidDisconnectPybricks . matches ( action )
191+ ) {
165192 return '' ;
166193 }
167194
168195 if ( bleDIServiceDidReceivePnPId . matches ( action ) ) {
169196 return getHubTypeName ( action . pnpId ) ;
170197 }
171198
199+ if ( usbDidConnectPybricks . matches ( action ) ) {
200+ return getHubTypeName ( action . pnpId ) ;
201+ }
202+
172203 return state ;
173204} ;
174205
175206const deviceFirmwareVersion : Reducer < string > = ( state = '' , action ) => {
176- if ( bleDidDisconnectPybricks . matches ( action ) ) {
207+ if (
208+ bleDidDisconnectPybricks . matches ( action ) ||
209+ usbDidDisconnectPybricks . matches ( action )
210+ ) {
177211 return '' ;
178212 }
179213
180214 if ( bleDIServiceDidReceiveFirmwareRevision . matches ( action ) ) {
181215 return action . version ;
182216 }
183217
218+ if ( usbDidReceiveFirmwareRevision . matches ( action ) ) {
219+ return action . version ;
220+ }
221+
184222 return state ;
185223} ;
186224
187225const deviceLowBatteryWarning : Reducer < boolean > = ( state = false , action ) => {
188- if ( bleDidDisconnectPybricks . matches ( action ) ) {
226+ if (
227+ bleDidDisconnectPybricks . matches ( action ) ||
228+ usbDidDisconnectPybricks . matches ( action )
229+ ) {
189230 return false ;
190231 }
191232
0 commit comments