123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- package main
- import (
- "encoding/json"
- "fmt"
- "log"
- "os/exec"
- "imuslab.com/dezukvm/dezukvmd/mod/dezukvm"
- "imuslab.com/dezukvm/dezukvmd/mod/usbcapture"
- )
- func handle_debug_tool() error {
- switch *tool {
- case "dependency-precheck":
- err := run_dependency_precheck()
- if err != nil {
- return err
- }
- case "list-usbkvm-json":
- result, err := dezukvm.DiscoverUsbKvmSubtree()
- if err != nil {
- return err
- }
- jsonData, err := json.MarshalIndent(result, "", " ")
- if err != nil {
- return err
- }
- fmt.Println(string(jsonData))
- case "audio-devices":
- err := list_all_audio_devices()
- if err != nil {
- return err
- }
- case "list-usbkvm":
- err := list_usb_kvm_devcies()
- if err != nil {
- return err
- }
- default:
- return fmt.Errorf("please specify a valid tool with -tool option")
- }
- return nil
- }
- // run_dependency_precheck checks if required dependencies are available in the system
- func run_dependency_precheck() error {
- log.Println("Running precheck...")
- // Dependencies of USB capture card
- if _, err := exec.LookPath("v4l2-ctl"); err != nil {
- return fmt.Errorf("v4l2-ctl not found in PATH")
- }
- if _, err := exec.LookPath("arecord"); err != nil {
- return fmt.Errorf("arecord not found in PATH")
- }
- log.Println("v4l2-ctl and arecord found in PATH.")
- return nil
- }
- // list_usb_kvm_devcies lists all discovered USB KVM devices and their associated sub-devices
- func list_usb_kvm_devcies() error {
- result, err := dezukvm.DiscoverUsbKvmSubtree()
- if err != nil {
- return err
- }
- for i, dev := range result {
- log.Printf("USB KVM Device Tree %d:\n", i)
- log.Printf(" - USB KVM Device: %s\n", dev.USBKVMDevicePath)
- log.Printf(" - Aux MCU Device: %s\n", dev.AuxMCUDevicePath)
- for _, cap := range dev.CaptureDevicePaths {
- log.Printf(" - Capture Device: %s\n", cap)
- }
- for _, snd := range dev.AlsaDevicePaths {
- log.Printf(" - ALSA Device: %s\n", snd)
- }
- }
- return nil
- }
- // list_all_audio_devices lists all available audio capture devices
- func list_all_audio_devices() error {
- log.Println("Starting in List Audio Devices mode...")
- // Get the audio devices
- path, err := usbcapture.FindHDMICapturePCMPath()
- if err != nil {
- return err
- }
- log.Printf("Found HDMI capture PCM path: %s\n", path)
- // List all audio capture devices
- captureDevs, err := usbcapture.ListCaptureDevices()
- if err != nil {
- return err
- }
- log.Println("Available audio capture devices:")
- for _, dev := range captureDevs {
- log.Printf(" - %s\n", dev)
- }
- return nil
- }
|