func main() { flag.Parse() ctx := usb.NewContext() // defer func () { // ctx.Close() // }() ctx.Debug(*Debug) devs, err := ctx.ListDevices(func(desc *usb.Descriptor) bool { if fmt.Sprintf("%s:%s", desc.Vendor, desc.Product) != *Device { return false } return true }) // defer func() { // for _, dev := range devs { // dev.Close() // } // }() if err != nil { log.Fatalf("usb.Open: %v", err) } if len(devs) == 0 { log.Fatal("not device.") } powerData := getPowerData() musicMicData := getMusicMicData() echoData := getEchoData() data := []byte{ getStx(), getTextTop(), powerData[*Power], musicMicData[*Music], musicMicData[*Mic], echoData[*Echo], getEtx(), } data = append(data, getXor(data)) ep, err := devs[0].OpenEndpoint(uint8(*Config), uint8(*Interface), uint8(*Setup), uint8(*Ep)|uint8(usb.ENDPOINT_DIR_OUT)) if err != nil { log.Fatalf("open device faild: %s", err) } _, err = ep.Write(data) if err != nil { log.Fatalf("control faild: %v", err) } devs[0].Close() ctx.Close() }
func main() { flag.Parse() ctx := usb.NewContext() // defer func() { // ctx.Close() // }() ctx.Debug(*Debug) devs, err := ctx.ListDevices(func(desc *usb.Descriptor) bool { if fmt.Sprintf("%s:%s", desc.Vendor, desc.Product) != *Device { return false } return true }) // defer func() { // for _, dev := range devs { // dev.Close() // } // // }() if err != nil { log.Fatalf("usb.Open: %v", err) } if len(devs) == 0 { log.Fatal("not device.") } var ir_data []byte var ir_data_size int if *Key != "none" { ir_data, ir_data_size = getDataByKey(*Key) } else { ir_data, ir_data_size = getDataByNumber(*Number) } ep, err := devs[0].OpenEndpoint(uint8(*Config), uint8(*Interface), uint8(*Setup), uint8(*Ep)|uint8(usb.ENDPOINT_DIR_OUT)) if err != nil { log.Fatalf("open device faild: %s", err) } transfer(ep, ir_data, ir_data_size) devs[0].Close() ctx.Close() }