typedef.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package dezukvm
  2. import (
  3. "imuslab.com/dezukvm/dezukvmd/mod/kvmaux"
  4. "imuslab.com/dezukvm/dezukvmd/mod/kvmhid"
  5. "imuslab.com/dezukvm/dezukvmd/mod/usbcapture"
  6. )
  7. type UsbKvmDeviceOption struct {
  8. /* Device Paths */
  9. USBKVMDevicePath string `json:"usb_kvm_device_path"` // Path to the USB KVM HID device (e.g., /dev/ttyUSB0)
  10. AuxMCUDevicePath string `json:"aux_mcu_device_path"` // Path to the auxiliary MCU device (e.g., /dev/ttyACM0)
  11. VideoCaptureDevicePath string `json:"video_capture_device_path"` // Path to the video capture device (e.g., /dev/video0)
  12. AudioCaptureDevicePath string `json:"audio_capture_device_path"` // Path to the audio capture device (e.g., /dev/snd/pcmC1D0c)
  13. /* Capture Settings */
  14. CaptureVideoResolutionWidth int `json:"capture_video_resolution_width"` // Video capture resolution width in pixels, e.g., 1920
  15. CaptureeVideoResolutionHeight int `json:"capture_video_resolution_height"` // Video capture resolution height in pixels, e.g., 1080
  16. CaptureeVideoFPS int `json:"capture_video_resolution_fps"` // Video capture frames per second, e.g., 25
  17. CaptureAudioSampleRate int `json:"capture_audio_sample_rate"` // Audio capture sample rate in Hz, e.g., 48000
  18. CaptureAudioChannels int `json:"capture_audio_channels"` // Number of audio channels, e.g., 2 for stereo
  19. CaptureAudioBytesPerSample int `json:"capture_audio_bytes_per_sample"` // Bytes per audio sample, e.g., 2 for 16-bit audio
  20. CaptureAudioFrameSize int `json:"capture_audio_frame_size"` // Size of each audio frame in bytes, e.g., 1920
  21. /* Communication Settings */
  22. USBKVMBaudrate int `json:"usb_kvm_baudrate"` // Baudrate for USB KVM HID communication, e.g., 115200
  23. AuxMCUBaudrate int `json:"aux_mcu_baudrate"` // Baudrate for auxiliary MCU communication, e.g., 115200
  24. }
  25. type UsbKvmDeviceInstance struct {
  26. Config *UsbKvmDeviceOption
  27. /* Processed Configs */
  28. captureConfig *usbcapture.Config
  29. videoResoltuionConfig *usbcapture.CaptureResolution
  30. /* Internals */
  31. uuid string // Session UUID obtained from AuxMCU
  32. usbKVMController *kvmhid.Controller
  33. auxMCUController *kvmaux.AuxMcu
  34. usbCaptureDevice *usbcapture.Instance
  35. parent *DezukVM
  36. }
  37. type RuntimeOptions struct {
  38. EnableLog bool `json:"enable_log"` // Enable or disable logging
  39. }
  40. type DezukVM struct {
  41. UsbKvmInstance []*UsbKvmDeviceInstance
  42. /* Internals */
  43. occupiedUUIDs map[string]bool // Track occupied UUIDs to prevent duplicate connections
  44. option *RuntimeOptions // Runtime options
  45. }