Exemple #1
0
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()
}
Exemple #2
0
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()
}