Module: LD220::Mode::UTC

Defined in:
lib/ld220/mode/utc.rb

Constant Summary collapse

ENHANCED_PREAMBLE =
"\x1b\x75"

Instance Method Summary collapse

Instance Method Details

#clearObject



8
9
10
# File 'lib/ld220/mode/utc.rb', line 8

def clear
  write "\x1f"
end

#cursor(enabled) ⇒ Object



18
19
20
# File 'lib/ld220/mode/utc.rb', line 18

def cursor(enabled)
  write enabled ? "\x13" : "\x14"
end

#enhanced_cmdObject



49
50
51
52
53
# File 'lib/ld220/mode/utc.rb', line 49

def enhanced_cmd
  enhanced_mode
  yield
  standard_mode
end

#enhanced_modeObject



55
56
57
# File 'lib/ld220/mode/utc.rb', line 55

def enhanced_mode
  write "\x1b\x64"
end

#move_cursor_to(pos) ⇒ Object

Raises:

  • (ArgumentError)


22
23
24
25
# File 'lib/ld220/mode/utc.rb', line 22

def move_cursor_to(pos)
  raise ArgumentError, "Position must be between 0 and 39" unless (0..39).include? pos
  write "\x10#{pos.chr}"
end

#resetObject



12
13
14
15
16
# File 'lib/ld220/mode/utc.rb', line 12

def reset
  standard_mode
  move_cursor_to 0
  clear
end

#scroll_msg(msg) ⇒ Object

Raises:

  • (ArgumentError)


27
28
29
30
31
32
# File 'lib/ld220/mode/utc.rb', line 27

def scroll_msg(msg)
  msg = msg.to_s
  # Messages longer than 45 chars are accepted, but truncated
  raise ArgumentError, "Message must be 45 or fewer characters" if msg.length > 45
  enhanced_cmd { write "#{ENHANCED_PREAMBLE}\x44#{msg}\x0d" }
end

#scroll_once(msg) ⇒ Object



34
35
36
# File 'lib/ld220/mode/utc.rb', line 34

def scroll_once(msg)
  enhanced_cmd { write "#{ENHANCED_PREAMBLE}\x46#{msg}\x0d" }
end

#show_time(time = Time.now) ⇒ Object



45
46
47
# File 'lib/ld220/mode/utc.rb', line 45

def show_time(time = Time.now)
  enhanced_cmd { write "#{ENHANCED_PREAMBLE}\x45#{time.strftime "%H:%M"}\x0d" }
end

#standard_modeObject



59
60
61
# File 'lib/ld220/mode/utc.rb', line 59

def standard_mode
  write "\x1b\x0f\x0d"
end

#stop_scrollObject



38
39
40
41
42
43
# File 'lib/ld220/mode/utc.rb', line 38

def stop_scroll
  # There is no documented way to stop an infinite scroll.
  # However, using "scroll once" with an empty value gets us close
  scroll_once ''
  reset
end