fixes to handle all dongle scenarios, uat config fix back to print name

pull/279/head
Joseph Poirier 2016-02-22 10:34:51 -06:00
rodzic 6c35cd164f
commit b91b1ce06c
1 zmienionych plików z 77 dodań i 10 usunięć

Wyświetl plik

@ -150,7 +150,7 @@ const (
)
func (u *UAT) sdrConfig() (err error) {
log.Printf("===== UAT Device index: %s =====\n", rtl.GetDeviceName(u.indexID))
log.Printf("===== UAT Device Name : %s =====\n", rtl.GetDeviceName(u.indexID))
log.Printf("===== UAT Device Serial: %s=====\n", u.serial)
if u.dev, err = rtl.Open(u.indexID); err != nil {
@ -372,26 +372,93 @@ func createESDev(id int, serial string, idSet bool) error {
func configDevices(count int, es_enabled, uat_enabled bool) {
// entry to this function is only valid when both UATDev and ESDev are nil
// (A = Anonymous, UAT = 978 id, ES = 1090 id, "->" = configured to...)
// es_enabled == true and uat_enabled == true
//
// ID 0 1
// -------------------------------------------------------------------------
// A A id 0 -> UAT first pass loop 2, id 1 -> ES second pass loop 2
// A ES id 1 -> ES second pass loop 1, id 0 -> UAT first pass loop 2
// ES A id 0 -> ES first pass loop 1, id 1 -> UAT first pass loop 2
// A UAT id 1 -> UAT second pass loop 1, id 0 -> ES first pass loop 2
// UAT A id 0 -> UAT first pass loop 1, id 1 -> ES first pass loop 2
// ES UAT id 0 -> ES first pass loop 1, id 1 -> UAT second pass loop 1
// UAT ES id 0 -> UAT first pass loop 1, id 1 -> ES second pass loop 1
// ES ES id 0 -> ES first pass loop 1, id 1 -> Unconfigured
// UAT UAT id 0 -> UAT first pass loop 1, id 1 -> Unconfigured
// es_enabled == true and uat_enabled == false
//
// ID 0 1
// -------------------------------------------------------------------------
// A A id 0 -> ES first pass loop 2, id 1 -> Unconfigured
// A ES id 1 -> ES second pass loop 1, id 0 -> Unconfigured
// ES A id 0 -> ES first pass loop 1, id 1 -> Unconfigured
// A UAT id 0 -> ES first pass loop 2, id 1 -> Unconfigured
// UAT A id 1 -> ES second pass loop 2, id 1 -> Unconfigured
// ES UAT id 0 -> ES first pass loop 1, id 1 -> Unconfigured
// UAT ES id 1 -> ES second pass loop 1, id 0 -> Unconfigured
// ES ES id 0 -> ES first pass loop 1, id 1 -> unconfigured
// UAT UAT id 0 -> Unconfigured , id 1 -> Unconfigured
// es_enabled == false and uat_enabled == true
//
// ID 0 1
// -------------------------------------------------------------------------
// A A id 0 -> UAT first pass loop 2, id 1 -> Unconfigured
// A ES id 0 -> UAT first pass loop 2, id 1 -> Unconfigured
// ES A id 1 -> UAT second pass loop 2, id 0 -> Unconfigured
// A UAT id 1 -> UAT second pass loop 1, id 0 -> Unconfigured
// UAT A id 0 -> UAT first pass loop 1, id 1 -> Unconfigured
// ES UAT id 1 -> UAT second pass loop 1, id 0 -> Unconfigured
// UAT ES id 0 -> UAT first pass loop 1, id 1 -> Unconfigured
// ES ES id 0 -> Unconfigured , id 1 -> Unconfigured
// UAT UAT id 0 -> UAT first pass loop 1, id 1 -> unconfigured
// es_enabled == false and uat_enabled == false
//
// ID 0 1
// -------------------------------------------------------------------------
// A A id 0 -> Unconfigured , id 1 -> Unconfigured
// A ES id 0 -> Unconfigured , id 1 -> Unconfigured
// ES A id 0 -> Unconfigured , id 1 -> Unconfigured
// A UAT id 0 -> Unconfigured , id 1 -> Unconfigured
// UAT A id 0 -> Unconfigured , id 1 -> Unconfigured
// ES UAT id 0 -> Unconfigured , id 1 -> Unconfigured
// UAT ES id 0 -> Unconfigured , id 1 -> Unconfigured
// ES ES id 0 -> Unconfigured , id 1 -> Unconfigured
// UAT UAT id 0 -> Unconfigured , id 1 -> Unconfigured
// once the tagged dongles have been assigned explicitly range over
// the remaining IDs and assign then to any anonymous dongles
unusedIDs := make([]int, 0, count)
// loop 1: assign tagged dongles
for i := 0; i < count; i++ {
_, _, s, err := rtl.GetDeviceUsbStrings(i)
if err == nil {
if uat_enabled && UATDev == nil && rUAT.hasID(s) {
createUATDev(i, s, true)
continue
}
if es_enabled && ESDev == nil && rES.hasID(s) {
} else if es_enabled && ESDev == nil && rES.hasID(s) {
createESDev(i, s, true)
continue
} else {
unusedIDs = append(unusedIDs, i)
}
} else {
log.Printf("rtl.GetDeviceUsbStrings id %d: %s\n", i, err)
}
}
// we only get here when it's an anonymous dongle
// loop 2; assign anonymous dongles
for _, v := range a {
_, _, s, err := rtl.GetDeviceUsbStrings(i)
if err == nil {
if uat_enabled && UATDev == nil {
createUATDev(i, s, false)
continue
}
if es_enabled && ESDev == nil {
} else if es_enabled && ESDev == nil {
createESDev(i, s, false)
continue
}
} else {
log.Printf("rtl.GetDeviceUsbStrings id %d: %s\n", i, err)