nemikor-solutions / blue-owl-core

Technical Official device integration for OWLCMS
ISC License
5 stars 0 forks source link

Blue Owl

Blue Owl provides Technical Official device integration for owlcms via a microcontroller powered by Johnny-Five.

Overview

Referees

Referee control boxes may be used in compliance with the IWF Referee Light System as documented in TCRR 3.3.6. The referee control boxes support:

Single Referee Mode

For competitions run with only one referee, simply configure all three referees with the same buttons. This will cause the single referee control box to send a decision for all three referees.

Down Signal

The down signal box may be used in compliance with the IWF Referee Lifht System as documented in TCRR 3.3.6.5. The down signal box supports:

Timekeeper

The timekeeper control box may be used to fully control the timing clock as documented in TCRR 7.10. The timekeeper control box supports:

Jury

The jury control panel and jury control units may be used to fulfill all jury member requiremensts as documented in TCRR 3.3.6.11, TCRR 3.3.6.12, and TCRR 7.5. The jury control panel supports:

API

Each technical official is represented by a model, e.g., Referee. These models provide the logic and APIs necessary for the official, but do not provide any hardware-specific implementations. Instead, the models provide methods for actions that the official can perform and emits events for information provided by owlcms. Each model must be instantiated with a set of modules which provide the hardware-specific implementations.

Types

The documentation uses a few custom types:

Color

The strings aqua, cyan, fuchsia, lime, magenta, white, and yellow.

Decision

The strings bad and good.

JuryMemberDecision

The strings bad, good, and hidden.

JuryMemberNumber

The numbers 1, 2, 3, 4, and 5.

RefereeNumber

The numbers 1, 2, and 3.

Owlcms

The Owlcms class provides the necessary APIs for two way communication between the models and owlcms. Unless you are building a custom integration with owlcms that does not use the provided models, the API provided by Owlcms will not be used directly.

constructor(options)

Jury

constructor(options)

Modules

buttons(options)

Provides functionality for starting and stopping the competition, including summoning other officials.

referee-leds(options)

Provides functionality for real-time referee decision LEDs.

referee-rgb-leds(options)

Provides functionality for real-time referee decision RGB LEDs.

Events

initialized

The model has been initialized.

refereeDecision(data)

A referee decision has been made.

resetRefereeDecisions

The referee decisions should be cleared because a clock has started for a new attempt.

Methods

publishDecision(decision)

Publish the jury's decision for the lift under deliberation.

resumeCompetition()

Resume the competition.

startChallenge()

Stop the competition for the jury to deliberate about the previous attempt due to a challenge.

startDeliberation()

Stop the competition for the jury to deliberate about the previous attempt.

startTechnicalBreak()

Stop the competition for a technical break.

summonReferee(referee)

Summon a referee to the jury table.

summonTechnicalController()

Summon the technical controller to the jury table.

JuryMember

constructor(options)

Modules

buttons(options)

Provides functionality for good and bad lift buttons to submit the jury member's decision.

leds(options)

Provides functionality for displaying the jury member's decision on the jury panel using three individual LEDs for each jury member.

rgb-led(options)

Provides functionality for displaying the jury member's decision on the jury panel using a single RGB LED for each jury member. When a decision is made, the light will turn green and when all jury members have made a decision, the light will chnge to white or red to indicate a good or bad lift.

Events

decisionConfirmed(data)

The jury member has made a decision about the current attempt.

reset

Methods

publishDecision(decision)

Publish the jury member's decision for the current attempt.

resetDecision()

Reset the decision because a clock has started for a new attempt.

Referee

constructor(options)

Modules

buttons(options)

Provides functionality for good and bad lift buttons to submit the referee's decision.

buzzer(options)

Provides audible feedback to the referee, via a piezo buzzer, when a decision is required and when the jury summons the referee.

confirmation-leds(options)

Provides visual confirmation that OWLCMS has acknowledged the decision.

NOTE: badLiftLed and goodLiftLed may be set to the same pin if a single LED is being used to confirm the decision was submitted, without indicating which decision was submitted.

rgb-led(options)

Provides visual feedback to the referee, via an RGB LED, when a decision is required, when OWLCMS has acknowledged the decision, and when the jury summons the referee.

warning-led(options)

Provides visual feedback to the referee, via an LED, when a decision is required and when the jury summons the referee.

vibration(options)

Provides tactile feedback to the referee, via a vibration motor, when a decision is required and when the jury summons the referee.

Events

The Referee class emits the following events:

decisionConfirmed(data)

OWLCMS has acknowledged the referee's decision.

decisionRequest

The other two referees have made a decision and the athlete is waiting for a decision from the final referee.

initialized

The model has been initialized.

summon

The jury has summoned the referee to the jury table.

Methods

publishDecision(decision)

Publish a decision for the current attempt.

DownSignal

constructor(options)

Modules

clock-relay(options)

Provides functionality for controlling electrical power to a device via a relay when the clock reaches 90, 30, or 0 seconds.

relay(options)

Provides functionality for controlling electrical power to a device via a relay.

Events

initialized

The model has been initialized.

down

The down signal should be shown.

Timekeeper

constructor(options)

Modules

buttons(options)

Provides functionality for controlling the clock.

Events

initialized

The model has been initialized.

Methods

oneMinuteClock()

Reset the clock to one minute.

startClock()

Start (resume) the clock.

stopClock()

Stop (pause) the clock.

twoMinuteClock()

Reset the clock to two minutes.

License

Copyright Scott González. Released under the terms of the ISC license.