diff --git a/modules/hid/hid.go b/modules/hid/hid.go index 1ae5b3b4..21997859 100644 --- a/modules/hid/hid.go +++ b/modules/hid/hid.go @@ -17,6 +17,7 @@ type HIDRecon struct { dongle *nrf24.Dongle waitGroup *sync.WaitGroup channel int + devTTL int hopPeriod time.Duration pingPeriod time.Duration sniffPeriod time.Duration @@ -45,6 +46,7 @@ func NewHIDRecon(s *session.Session) *HIDRecon { waitGroup: &sync.WaitGroup{}, sniffLock: &sync.Mutex{}, writeLock: &sync.Mutex{}, + devTTL: 1200, hopPeriod: 100 * time.Millisecond, pingPeriod: 100 * time.Millisecond, sniffPeriod: 500 * time.Millisecond, @@ -117,6 +119,10 @@ func NewHIDRecon(s *session.Session) *HIDRecon { mod.AddHandler(inject) + mod.AddParam(session.NewIntParameter("hid.ttl", + fmt.Sprintf("%d", mod.devTTL), + "Seconds of inactivity to consider a device as not in range.")) + mod.AddParam(session.NewBoolParameter("hid.lna", "true", "If true, enable the LNA power amplifier for CrazyRadio devices.")) @@ -170,6 +176,10 @@ func (mod *HIDRecon) Configure() error { return err } + if err, mod.devTTL = mod.IntParam("hid.ttl"); err != nil { + return err + } + if err, n = mod.IntParam("hid.hop.period"); err != nil { return err } else { diff --git a/modules/hid/hid_recon.go b/modules/hid/hid_recon.go index 13df827a..9473ca93 100644 --- a/modules/hid/hid_recon.go +++ b/modules/hid/hid_recon.go @@ -68,13 +68,12 @@ func (mod *HIDRecon) onDeviceDetected(buf []byte) { } } -var maxDeviceTTL = 20 * time.Minute - func (mod *HIDRecon) devPruner() { mod.waitGroup.Add(1) defer mod.waitGroup.Done() - mod.Debug("devices pruner started.") + maxDeviceTTL := time.Duration(mod.devTTL) * time.Second + mod.Debug("devices pruner started with ttl %v", maxDeviceTTL) for mod.Running() { for _, dev := range mod.Session.HID.Devices() { sinceLastSeen := time.Since(dev.LastSeen)