Skip to content

Latest commit

 

History

History
272 lines (229 loc) · 6.44 KB

motorola_beepwear_pro_protocol_6.md

File metadata and controls

272 lines (229 loc) · 6.44 KB

Using TimexDatalinkClient with Protocol 6

This document describes how to use protocol 6 devices with this library by comparing code examples to the Motorola BeepwearPRO software version 1.03.

image

Time Of Day

image

image

TimexDatalinkClient::Protocol6::Time.new(
  zone: 1,
  time: TZInfo::Timezone.get("America/Los_Angeles").local_time(2023, 7, 4, 20, 34, 44),
  is_24h: false,
  date_format: "%_m-%d-%y"
)

TimexDatalinkClient::Protocol6::Time.new(
  zone: 2,
  flex_time: true,
  flex_time_zone: true,
  is_24h: true,
  date_format: "%_m-%d-%y"
)

Here are the valid values for date_format, represented by Time#strftime format, followed by an example of 2023-09-06 in %Y-%m-%d format:

date_format value Formatted example
"%_m-%d-%y" 9-06-23
"%_d-%m-%y" 6-09-23
"%y-%m-%d" 23-09-06
"%_m.%d.%y" 9.06.23
"%_d.%m.%y" 6.09.23
"%y.%m.%d" 23.09.06

Watch Options

image

image

image

TimexDatalinkClient::Protocol6::PagerOptions.new(
  auto_on_off: true,
  on_hour: 6,
  on_minute: 15,
  off_hour: 22,
  off_minute: 45,
  alert_sound: 4
)

TimexDatalinkClient::Protocol6::NightModeOptions.new(
  night_mode_deactivate_hours: 6,
  indiglo_timeout_seconds: 10,
  night_mode_on_notification: true
)

TimexDatalinkClient::Protocol6::SoundScrollOptions.new(
  hourly_chime: true,
  button_beep: false,
  scroll_speed: 2
)

Alarms

image

TimexDatalinkClient::Protocol6::Alarm.new(
  number: 1,
  status: :armed,
  message: "State-of-the-art",
  time: Time.new(0, 1, 1, 6, 30)  # Year, month, and day is ignored.
)

TimexDatalinkClient::Protocol6::Alarm.new(
  number: 2,
  status: :disarmed,
  message: "900 MHz",
  day: 4,
  time: Time.new(0, 1, 1, 7, 0)  # Year, month, and day is ignored.
)

TimexDatalinkClient::Protocol6::Alarm.new(
  number: 3,
  status: :unused
)

TimexDatalinkClient::Protocol6::Alarm.new(
  number: 4,
  status: :armed,
  message: "FLEX",
  month: 7,
  day: 4,
  time: Time.new(0, 1, 1, 6, 30)  # Year, month, and day is ignored.
)

TimexDatalinkClient::Protocol6::Alarm.new(
  number: 5,
  status: :unused
)

TimexDatalinkClient::Protocol6::Alarm.new(
  number: 6,
  status: :unused
)

TimexDatalinkClient::Protocol6::Alarm.new(
  number: 7,
  status: :disarmed,
  message: "Motorola",
  time: Time.new(0, 1, 1, 12, 25)  # Year, month, and day is ignored.
)

TimexDatalinkClient::Protocol6::Alarm.new(
  number: 8,
  status: :armed,
  message: "Pager",
  time: Time.new(0, 1, 1, 21, 15)  # Year, month, and day is ignored.
)

Phone Book

image

phone_numbers = [
  TimexDatalinkClient::Protocol6::Eeprom::PhoneNumber.new(
    name: "Doc Brown",
    number: "1112223333",
    type: "C"
  ),
  TimexDatalinkClient::Protocol6::Eeprom::PhoneNumber.new(
    name: "Doc Brown",
    number: "4445556666",
    type: "HF"
  )
]

TimexDatalinkClient::Protocol6::Eeprom.new(phone_numbers: phone_numbers)

Complete code example

Here is an example that syncs all models to a device that supports protocol 6:

require "timex_datalink_client"

phone_numbers = [
  TimexDatalinkClient::Protocol6::Eeprom::PhoneNumber.new(
    name: "Doc Brown",
    number: "1112223333",
    type: "C"
  ),
  TimexDatalinkClient::Protocol6::Eeprom::PhoneNumber.new(
    name: "Doc Brown",
    number: "4445556666",
    type: "HF"
  )
]

time1 = Time.now
time2 = time1.dup.utc

models = [
  TimexDatalinkClient::Protocol6::Sync.new,
  TimexDatalinkClient::Protocol6::Start.new,

  TimexDatalinkClient::Protocol6::Time.new(
    zone: 1,
    time: time1,
    is_24h: false,
    date_format: "%_m-%d-%y"
  ),
  TimexDatalinkClient::Protocol6::Time.new(
    zone: 2,
    time: time2,
    is_24h: true,
    date_format: "%_m-%d-%y"
  ),

  TimexDatalinkClient::Protocol6::PagerOptions.new(
    auto_on_off: true,
    on_hour: 6,
    on_minute: 15,
    off_hour: 22,
    off_minute: 45,
    alert_sound: 4
  ),
  TimexDatalinkClient::Protocol6::NightModeOptions.new(
    night_mode_deactivate_hours: 6,
    indiglo_timeout_seconds: 10,
    night_mode_on_notification: true
  ),
  TimexDatalinkClient::Protocol6::SoundScrollOptions.new(
    hourly_chime: true,
    button_beep: false,
    scroll_speed: 2
  ),

  TimexDatalinkClient::Protocol6::Alarm.new(
    number: 1,
    status: :armed,
    message: "State-of-the-art",
    time: Time.new(0, 1, 1, 6, 30)  # Year, month, and day is ignored.
  ),
  TimexDatalinkClient::Protocol6::Alarm.new(
    number: 2,
    status: :disarmed,
    message: "900 MHz",
    day: 4,
    time: Time.new(0, 1, 1, 7, 0)  # Year, month, and day is ignored.
  ),
  TimexDatalinkClient::Protocol6::Alarm.new(
    number: 3,
    status: :unused
  ),
  TimexDatalinkClient::Protocol6::Alarm.new(
    number: 4,
    status: :armed,
    message: "FLEX",
    month: 7,
    day: 4,
    time: Time.new(0, 1, 1, 6, 30)  # Year, month, and day is ignored.
  ),
  TimexDatalinkClient::Protocol6::Alarm.new(
    number: 5,
    status: :unused
  ),
  TimexDatalinkClient::Protocol6::Alarm.new(
    number: 6,
    status: :unused
  ),
  TimexDatalinkClient::Protocol6::Alarm.new(
    number: 7,
    status: :disarmed,
    message: "Motorola",
    time: Time.new(0, 1, 1, 12, 25)  # Year, month, and day is ignored.
  ),
  TimexDatalinkClient::Protocol6::Alarm.new(
    number: 8,
    status: :armed,
    message: "Pager",
    time: Time.new(0, 1, 1, 21, 15)  # Year, month, and day is ignored.
  ),

  TimexDatalinkClient::Protocol6::Eeprom.new(phone_numbers: phone_numbers),

  TimexDatalinkClient::Protocol6::End.new
]

timex_datalink_client = TimexDatalinkClient.new(
  serial_device: "/dev/ttyACM0",
  models: models,
  verbose: true
)

timex_datalink_client.write