50 lines
1.3 KiB
Go
50 lines
1.3 KiB
Go
package main
|
|
|
|
// #cgo CFLAGS: -I../../../../include
|
|
// #cgo LDFLAGS: -L../../../../build -licsneo -lstdc++
|
|
// #include "icsneo/icsneo.h"
|
|
import "C"
|
|
import (
|
|
"fmt"
|
|
"unsafe"
|
|
)
|
|
|
|
func main() {
|
|
findDevices()
|
|
}
|
|
|
|
func findDevices() {
|
|
// Get all devices attached to host
|
|
devices := [255]*C.icsneo_device_t{nil}
|
|
devicesCount := 255
|
|
res := C.icsneo_device_find_all(&devices[0], (*C.uint)(unsafe.Pointer(&devicesCount)), nil)
|
|
if res != C.icsneo_error_success {
|
|
printError(res)
|
|
return
|
|
}
|
|
println("Found", devicesCount, "device(s):")
|
|
// Iterate through all the devices
|
|
for i, device := range devices[:devicesCount] {
|
|
description := make([]byte, 255)
|
|
descriptionLength := 255
|
|
res := C.icsneo_device_get_description(device, (*C.char)(unsafe.Pointer(&description[0])), (*C.uint)(unsafe.Pointer(&descriptionLength)))
|
|
if res != C.icsneo_error_success {
|
|
printError(res)
|
|
continue
|
|
}
|
|
fmt.Printf("\t%d. %s\n", i+1, string(description[:descriptionLength]))
|
|
}
|
|
}
|
|
|
|
func printError(err C.icsneo_error_t) C.icsneo_error_t {
|
|
buffer := make([]byte, 255)
|
|
bufferLength := 255
|
|
res := C.icsneo_get_error_code(err, (*C.char)(unsafe.Pointer(&buffer[0])), (*C.uint)(unsafe.Pointer(&bufferLength)))
|
|
if res != C.icsneo_error_success {
|
|
println("icsneo_get_error_code failed, original error:", err)
|
|
return res
|
|
}
|
|
println("Error:", string(buffer[:bufferLength]))
|
|
return res
|
|
}
|