Skip to content

Commit 201f021

Browse files
committed
refactor(usb-reset): use UsbResetMode enum instead of bool
1 parent a2eb32b commit 201f021

File tree

3 files changed

+21
-9
lines changed

3 files changed

+21
-9
lines changed

internal/usbgadget/config.go

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,14 @@ type gadgetConfigItemWithKey struct {
2424

2525
type orderedGadgetConfigItems []gadgetConfigItemWithKey
2626

27+
type UsbResetMode uint8
28+
29+
const (
30+
UsbResetNever UsbResetMode = 0 // never reset the usb gadget
31+
UsbResetAlways UsbResetMode = 1 // always reset the usb gadget
32+
UsbResetOnDemand UsbResetMode = 2 // reset the usb gadget when needed
33+
)
34+
2735
var defaultGadgetConfig = map[string]gadgetConfigItem{
2836
"base": {
2937
order: 0,
@@ -185,13 +193,16 @@ func (u *UsbGadget) Init() error {
185193
return nil
186194
}
187195

188-
func (u *UsbGadget) UpdateGadgetConfig(resetUsbIfNeeded bool) error {
196+
func (u *UsbGadget) UpdateGadgetConfig(resetUsbMode UsbResetMode) error {
189197
u.configLock.Lock()
190198
defer u.configLock.Unlock()
191199

192200
u.loadGadgetConfig()
193201

194-
err := u.configureUsbGadget(true, resetUsbIfNeeded)
202+
resetUsb := resetUsbMode == UsbResetAlways
203+
resetUsbIfNeeded := resetUsbMode == UsbResetOnDemand
204+
205+
err := u.configureUsbGadget(resetUsb, resetUsbIfNeeded)
195206
if err != nil {
196207
return u.logError("unable to update gadget config", err)
197208
}

jsonrpc.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -678,7 +678,7 @@ func rpcSetUsbConfig(usbConfig usbgadget.Config) error {
678678
LoadConfig()
679679
config.UsbConfig = &usbConfig
680680
gadget.SetGadgetConfig(config.UsbConfig)
681-
return updateUsbRelatedConfig(false)
681+
return updateUsbRelatedConfig(usbgadget.UsbResetAlways)
682682
}
683683

684684
func rpcGetWakeOnLanDevices() ([]WakeOnLanDevice, error) {
@@ -890,8 +890,8 @@ func rpcGetUsbDevices() (usbgadget.Devices, error) {
890890
return *config.UsbDevices, nil
891891
}
892892

893-
func updateUsbRelatedConfig(resetUsbIfNeeded bool) error {
894-
if err := gadget.UpdateGadgetConfig(resetUsbIfNeeded); err != nil {
893+
func updateUsbRelatedConfig(resetUsbMode usbgadget.UsbResetMode) error {
894+
if err := gadget.UpdateGadgetConfig(resetUsbMode); err != nil {
895895
return fmt.Errorf("failed to write gadget config: %w", err)
896896
}
897897
if err := SaveConfig(); err != nil {
@@ -903,7 +903,7 @@ func updateUsbRelatedConfig(resetUsbIfNeeded bool) error {
903903
func rpcSetUsbDevices(usbDevices usbgadget.Devices) error {
904904
config.UsbDevices = &usbDevices
905905
gadget.SetGadgetDevices(config.UsbDevices)
906-
return updateUsbRelatedConfig(false)
906+
return updateUsbRelatedConfig(usbgadget.UsbResetOnDemand)
907907
}
908908

909909
func rpcSetUsbDeviceState(device string, enabled bool) error {
@@ -920,7 +920,7 @@ func rpcSetUsbDeviceState(device string, enabled bool) error {
920920
return fmt.Errorf("invalid device: %s", device)
921921
}
922922
gadget.SetGadgetDevices(config.UsbDevices)
923-
return updateUsbRelatedConfig(false)
923+
return updateUsbRelatedConfig(usbgadget.UsbResetAlways)
924924
}
925925

926926
func rpcSetCloudUrl(apiUrl string, appUrl string) error {

usb_mass_storage.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
"github.com/pion/webrtc/v4"
2020
"github.com/psanford/httpreadat"
2121

22+
"github.com/jetkvm/kvm/internal/usbgadget"
2223
"github.com/jetkvm/kvm/resource"
2324
)
2425

@@ -40,7 +41,7 @@ func setMassStorageImage(imagePath string) error {
4041
return fmt.Errorf("failed to set mass storage path: %w", err)
4142
}
4243

43-
if err := gadget.UpdateGadgetConfig(true); err != nil {
44+
if err := gadget.UpdateGadgetConfig(usbgadget.UsbResetOnDemand); err != nil {
4445
return fmt.Errorf("failed to update gadget config: %w", err)
4546
}
4647

@@ -62,7 +63,7 @@ func setMassStorageMode(cdrom bool) error {
6263
return nil
6364
}
6465

65-
return gadget.UpdateGadgetConfig(true)
66+
return gadget.UpdateGadgetConfig(usbgadget.UsbResetOnDemand)
6667
}
6768

6869
func mountImage(imagePath string) error {

0 commit comments

Comments
 (0)