proc makeHePump {} {
  if {[sicsdescriptor hepump] eq "notfound"} {
    makenv hepump -driver hepump hemot
    set type [silent xds35_auto result instconfig he_pump_type]
    if {$type eq "xds35_auto" || $type eq "other_pump_with_valve"} {
      set type 0
    } elseif {$type eq "xds35_manual"} {
      set type 1
    } elseif {$type eq "sv65"} {
      set type 2
    } elseif {$type eq "neodry"} {
      set type 8
    } else {
      error "unknown hepump type: $type"
    }
    hset /hepump $type

    if {$type == 0} {
      makenv hemot -driver trinamic -base /hepump/ hepump
      if {[silent 0 result instconfig sensirion]} {
        makenv nvflow -driver sensirion -controller _hemot
      }
      hsetprop /hepump/hemot label "valve motor"
    }
  }
}

proc pump_is_off {} {
  # used in drivers/ccu4flow.tcl and drivers/nvstep.tcl
  # to be called from /nv

  set msghead "needle valve control suspended"
  set pmsg "$msghead ([silent "" sct off_reason])"
  set now [DoubleTime]
  if {$now < [silent $now sct off_until]} {
    if {[hvali [sct]/status] ne $pmsg} {
      if {[silent "" sct off_reason] ne "pump mode changed"} {
        clientput "ERROR: $pmsg"
      }
    }
    hupdate [sct]/status $pmsg
    return 1
  }
  if {[string match ${msghead}* [hvali [sct]/status]]} {
    hupdate [sct]/status ""
  }
  return 0
}

proc pump_health_update {instrument value} {
  # this script is used on seaman
  global helium_last

  set now [DoubleTime]
  pump_health makeitem $instrument $value
  if {[silent "" hdbgetpropval /pump_health/$instrument logger_name] eq ""} {
    logsetup /pump_health/$instrument
  }
  GraphAdd pump_health.$instrument %_3 pump_$instrument auto
}


publishLazy pump_health_update Spy
