namespace eval ami136 {} {
}

proc stdConfig::ami136 {{unit cm}} {
  controller std \r\n 10
  if {$unit ne "cm" && $unit ne "percent"} {
    error "illegal ami136 unit: $unit"
  }
  prop startcmd $unit

  obj ami_level rd
  prop readcmd "level"
  prop update ami136::update
  prop last -2
  kids "LHe vessel" {
    node mode -int wr
    prop enum slow,fast
    prop write ami136::wrmode
    prop read ami136::rdmode
  }
}

proc ami136::update {} {
  set res [sct result]
  # workaround for misreadings
  if {abs($res - [sct last]) < 0.5} {
    sct update $res
  }
  sct last $res
  return idle
}

proc ami136::wrmode {} {
  if {[sct target]} {
    sct send "interval=0"
  } else {
    sct send "interval=10"
  }
  return stdSct::completeUpdate
}

proc ami136::rdmode {} {
  sct send interval
  return ami136::updmode
}

proc ami136::updmode {} {
  if {[sct result] < 0.25} {
    sct update 1
  } else {
    sct update 0
  }
  return idle
}
