namespace eval agilent53132a {} {
}

proc stdConfig::agilent53132a {} {
  controller std "\n" 5
  prop startcmd "*IDN?"
  
  pollperiod 0.1 0.1

  obj "agilent53132a" rd
  prop read agilent53132a::read
  
  kids "Frequency counter 53132a settings" {
    node base par 0
    prop width 12
    prop fmt %.8g
  }

  return "agilent53132a frequency counter"
}

proc agilent53132a::read {} {
  sct send "READ:FREQ?"
  return agilent53132a::complete
}

proc agilent53132a::complete {} {
  
  set value [string map {"," ""} [sct result]]
  lassign $value value unit
  if {$unit eq "MHz"} {
    set value [expr $value * 1e6]
  } else {
    error "unsupported unit: $unit"
  }
  set base [format %.5g [hval [sct]/base]]
  if {abs($value - $base) > 16384} { # max value for single precision with 0.001 resolution
    set base [format "%.5g" $value]
    hupdate [sct]/base $base
  }
  sct update [expr $value - $base]
  return idle
}

