Class: TimexDatalinkClient::Protocol6::Alarm

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Validations, Helpers::CharEncoders, Helpers::CrcPacketsWrapper
Defined in:
lib/timex_datalink_client/protocol_6/alarm.rb

Constant Summary collapse

CPACKET_ALARM =
0x51
VALID_DAYS_IN_MONTH =
{
  1 => 1..31,
  2 => 1..29,
  3 => 1..31,
  4 => 1..30,
  5 => 1..31,
  6 => 1..30,
  7 => 1..31,
  8 => 1..31,
  9 => 1..30,
  10 => 1..31,
  11 => 1..30,
  12 => 1..31
}.freeze
ALARM_STATUS_MAP =
{
  disarmed: 0,
  armed: 1,
  unused: 2
}.freeze
DEFAULT_TIME =
Time.new(0, 1, 1, 6, 0)

Constants included from Helpers::CharEncoders

Helpers::CharEncoders::CHARS, Helpers::CharEncoders::CHARS_PROTOCOL_6, Helpers::CharEncoders::EEPROM_CHARS, Helpers::CharEncoders::EEPROM_TERMINATOR, Helpers::CharEncoders::INVALID_CHAR, Helpers::CharEncoders::PHONE_CHARS

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Helpers::CharEncoders

#chars_for, #eeprom_chars_for, #phone_chars_for, #protocol_6_chars_for

Constructor Details

#initialize(number:, status:, time: DEFAULT_TIME, message: "", month: nil, day: nil) ⇒ Alarm

Create an Alarm instance.

Parameters:

  • number (Integer)

    Alarm number (from 1 to 8).

  • status (Symbol)

    Alarm status (:armed, :disarmed, or :unused).

  • time (::Time) (defaults to: DEFAULT_TIME)

    Time of alarm.

  • message (String) (defaults to: "")

    Alarm message text.

  • month (Integer, nil) (defaults to: nil)

    Month of alarm.

  • day (Integer, nil) (defaults to: nil)

    Day of alarm.



83
84
85
86
87
88
89
90
# File 'lib/timex_datalink_client/protocol_6/alarm.rb', line 83

def initialize(number:, status:, time: DEFAULT_TIME, message: "", month: nil, day: nil)
  @number = number
  @status = status
  @time = time
  @message = message
  @month = month
  @day = day
end

Instance Attribute Details

#dayObject

Returns the value of attribute day.



40
41
42
# File 'lib/timex_datalink_client/protocol_6/alarm.rb', line 40

def day
  @day
end

#messageObject

Returns the value of attribute message.



40
41
42
# File 'lib/timex_datalink_client/protocol_6/alarm.rb', line 40

def message
  @message
end

#monthObject

Returns the value of attribute month.



40
41
42
# File 'lib/timex_datalink_client/protocol_6/alarm.rb', line 40

def month
  @month
end

#numberObject

Returns the value of attribute number.



40
41
42
# File 'lib/timex_datalink_client/protocol_6/alarm.rb', line 40

def number
  @number
end

#statusObject

Returns the value of attribute status.



40
41
42
# File 'lib/timex_datalink_client/protocol_6/alarm.rb', line 40

def status
  @status
end

#timeObject

Returns the value of attribute time.



40
41
42
# File 'lib/timex_datalink_client/protocol_6/alarm.rb', line 40

def time
  @time
end

Instance Method Details

#packetsArray<Array<Integer>>

Compile packets for an alarm.

Returns:

  • (Array<Array<Integer>>)

    Two-dimensional array of integers that represent bytes.

Raises:

  • (ActiveModel::ValidationError)

    One or more model values are invalid.



96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/timex_datalink_client/protocol_6/alarm.rb', line 96

def packets
  validate!

  [
    [
      CPACKET_ALARM,
      number,
      time.hour,
      time.min,
      month.to_i,
      day.to_i,
      status_formatted,
      message_characters,
    ].flatten
  ]
end