mirror of
https://github.com/RoganDawes/P4wnP1_aloa.git
synced 2025-04-12 22:19:02 +02:00
USB: Save path to device files for HID functions
This commit is contained in:
parent
353c16dc39
commit
aa31a1f0f8
@ -39,5 +39,11 @@ func main() {
|
||||
|
||||
service.InitLed(false) //Set LED to manual trigger
|
||||
service.InitDefaultLEDSettings()
|
||||
|
||||
log.Printf("Keyboard devFile: %s\n", service.HidDevPath[service.USB_FUNCTION_HID_KEYBOARD_name])
|
||||
log.Printf("Mouse devFile: %s\n", service.HidDevPath[service.USB_FUNCTION_HID_MOUSE_name])
|
||||
log.Printf("HID RAW devFile: %s\n", service.HidDevPath[service.USB_FUNCTION_HID_RAW_name])
|
||||
|
||||
|
||||
service.StartRpcServerAndWeb("0.0.0.0", "50051") //start gRPC service
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ import (
|
||||
"time"
|
||||
"fmt"
|
||||
"net"
|
||||
"regexp"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -73,7 +74,9 @@ const (
|
||||
)
|
||||
|
||||
var (
|
||||
GadgetSettingsState pb.GadgetSettings = pb.GadgetSettings{}
|
||||
GadgetSettingsState pb.GadgetSettings = pb.GadgetSettings{}
|
||||
rp_usbHidDevName = regexp.MustCompile("(?m)DEVNAME=(.*)\n")
|
||||
HidDevPath = make(map[string]string) //stores device path for HID devices
|
||||
)
|
||||
|
||||
func ValidateGadgetSetting(gs pb.GadgetSettings) error {
|
||||
@ -568,6 +571,12 @@ func DeployGadgetSettings(settings pb.GadgetSettings) error {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//clear device path for HID devices
|
||||
HidDevPath[USB_FUNCTION_HID_KEYBOARD_name] = ""
|
||||
HidDevPath[USB_FUNCTION_HID_MOUSE_name] = ""
|
||||
HidDevPath[USB_FUNCTION_HID_RAW_name] = ""
|
||||
|
||||
//get UDC driver name and bind to gadget
|
||||
if settings.Enabled {
|
||||
udc_name, err := getUDCName()
|
||||
@ -578,9 +587,16 @@ func DeployGadgetSettings(settings pb.GadgetSettings) error {
|
||||
if err = ioutil.WriteFile(USB_GADGET_DIR+"/UDC", []byte(udc_name), os.ModePerm); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
//update device path'
|
||||
if devPath,errF := enumDevicePath(USB_FUNCTION_HID_KEYBOARD_name); errF == nil { HidDevPath[USB_FUNCTION_HID_KEYBOARD_name] = devPath }
|
||||
if devPath,errF := enumDevicePath(USB_FUNCTION_HID_MOUSE_name); errF == nil { HidDevPath[USB_FUNCTION_HID_MOUSE_name] = devPath }
|
||||
if devPath,errF := enumDevicePath(USB_FUNCTION_HID_RAW_name); errF == nil { HidDevPath[USB_FUNCTION_HID_RAW_name] = devPath }
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
deleteUSBEthernetBridge() //delete former used bridge, if there's any
|
||||
//In case USB ethernet is uesd (RNDIS or CDC ECM), we add a bridge interface
|
||||
if usesUSBEthernet && settings.Enabled {
|
||||
@ -602,6 +618,32 @@ func DeployGadgetSettings(settings pb.GadgetSettings) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func enumDevicePath(funcName string) (devPath string, err error){
|
||||
//cat /sys/dev/char/$(cat /sys/kernel/config/usb_gadget/mame82_gadget/functions/hid.mouse/dev)/uevent | grep DEVNAME
|
||||
devfile := USB_GADGET_DIR + "/functions/" + funcName + "/dev"
|
||||
|
||||
var udevNode string
|
||||
if res, err := ioutil.ReadFile(devfile); err != nil {
|
||||
err1 := errors.New(fmt.Sprintf("Gadget error reading udevname for %s\n", funcName))
|
||||
return "", err1
|
||||
} else {
|
||||
udevNode = strings.TrimSuffix(string(res), "\n")
|
||||
}
|
||||
|
||||
|
||||
ueventPath := fmt.Sprintf("/sys/dev/char/%s/uevent", udevNode)
|
||||
if ueventContent, err := ioutil.ReadFile(ueventPath); err != nil {
|
||||
err1 := errors.New(fmt.Sprintf("Gadget error reading uevent file '%s' for %s\n", ueventPath, funcName))
|
||||
return "", err1
|
||||
} else {
|
||||
|
||||
strDevNameSub := rp_usbHidDevName.FindStringSubmatch(string(ueventContent))
|
||||
if len(strDevNameSub) > 1 { devPath = "/dev/" + strDevNameSub[1]}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func DestroyAllGadgets() error {
|
||||
//gadget_root := "./test"
|
||||
gadget_root := USB_GADGET_DIR_BASE
|
||||
|
@ -259,17 +259,6 @@ func wifiCreateHostapdConfString(ws *pb.WiFiSettings) (config string, err error)
|
||||
return
|
||||
}
|
||||
|
||||
func WifiTest() {
|
||||
fmt.Println("Hostapd settings:")
|
||||
conf, err := wifiCreateHostapdConfString(GetDefaultWiFiSettings())
|
||||
if err == nil {
|
||||
fmt.Println(conf)
|
||||
} else {
|
||||
fmt.Printf("Error creating hostapd config: %v\n", err)
|
||||
}
|
||||
|
||||
fmt.Println("End of hostapd settings:")
|
||||
}
|
||||
|
||||
func hostapdCreateConfigFile(s *pb.WiFiSettings, filename string) (err error) {
|
||||
log.Printf("Creating hostapd configuration file at '%s'\n", filename)
|
||||
|
Loading…
x
Reference in New Issue
Block a user