namespace eval cemhack {} {
}

proc stdConfig::cemhack {bronkobj} {
  controller syncedprot

  obj CEM_HACK rd
  prop read cemhack::read
  prop obj $bronkobj
  prop register_update 1

  kids "CEM workaround" {
    node set par 0
    node prop par 5
    node offset par 2.5
  }
}

proc cemhack::read {} {
  if {[sct register_update]} {
    on_update_call [sct obj] cemhack::update
  }
  sct register_update 1
  # cemhack::update will set this flag to 0
  return idle
}

proc cemhack::update {} {
  sct on_update_call_cnt 5
  set t [sct value]
  sct register_update 0
  if {$t == 0} {
    set t [hval [sct]]
  } else {
    sct update $t
  }
  set soll [hval [sct]/set]
  set prop [hval [sct]/prop]
  set offset [hval [sct]/offset]
  set output [expr $offset + $prop * ($soll - $t)]
  if {$output > 100} {
    set output 100
  } elseif {$output < 0} {
    set output 0
  }
  hset [sct obj]/output $output
  return idle
}

