Пример #1
0
func midi_init() error {
	var ctx libusb.Context
	err := libusb.Init(&ctx)
	if err != nil {
		return err
	}
	defer libusb.Exit(ctx)

	list, err := libusb.Get_Device_List(ctx)
	if err != nil {
		return err
	}
	defer libusb.Free_Device_List(list, 1)

	for _, dev := range list {
		dd, err := libusb.Get_Device_Descriptor(dev)
		if err != nil {
			return err
		}
		if dd.IdVendor == usb_vid && dd.IdProduct == usb_pid {
			fmt.Printf("found\n")
			break
		}
	}

	return nil
}
Пример #2
0
func (dpf *DPF) Close() {
	if dpf.hasClaim {
		libusb.Release_Interface(dpf.udev, AX206_INTERFACE)
	}
	if dpf.hasUdev {
		libusb.Close(dpf.udev)
	}
	if dpf.hasCtx {
		libusb.Exit(dpf.ctx)
		dpf.hasCtx = false
	}
}