@@ -14,6 +14,7 @@ import (
1414
1515const (
1616 virtualNetwork = "/boot/usb.rndis0"
17+ virtualMedia = "/boot/usb.disk0"
1718 virtualDisk = "/boot/usb.disk1"
1819)
1920
3132 "/etc/init.d/S03usbdev start" ,
3233 }
3334
35+ mountMediaCommands = []string {
36+ "touch /boot/usb.disk0" ,
37+ "/etc/init.d/S03usbdev stop" ,
38+ "/etc/init.d/S03usbdev start" ,
39+ }
40+
41+ unmountMediaCommands = []string {
42+ "/etc/init.d/S03usbdev stop" ,
43+ "rm -rf /sys/kernel/config/usb_gadget/g0/configs/c.1/mass_storage.disk0" ,
44+ "rm /boot/usb.disk0" ,
45+ "/etc/init.d/S03usbdev start" ,
46+ }
47+
3448 mountDiskCommands = []string {
3549 "touch /boot/usb.disk1" ,
3650 "/etc/init.d/S03usbdev stop" ,
@@ -49,10 +63,12 @@ func (s *Service) GetVirtualDevice(c *gin.Context) {
4963 var rsp proto.Response
5064
5165 network , _ := isDeviceExist (virtualNetwork )
66+ media , _ := isDeviceExist (virtualMedia )
5267 disk , _ := isDeviceExist (virtualDisk )
5368
5469 rsp .OkRspWithData (c , & proto.GetVirtualDeviceRsp {
5570 Network : network ,
71+ Media : media ,
5672 Disk : disk ,
5773 })
5874 log .Debugf ("get virtual device success" )
@@ -80,6 +96,15 @@ func (s *Service) UpdateVirtualDevice(c *gin.Context) {
8096 } else {
8197 commands = unmountNetworkCommands
8298 }
99+ case "media" :
100+ device = virtualMedia
101+
102+ exist , _ := isDeviceExist (device )
103+ if ! exist {
104+ commands = mountMediaCommands
105+ } else {
106+ commands = unmountMediaCommands
107+ }
83108 case "disk" :
84109 device = virtualDisk
85110
0 commit comments