Module: Qcmd::Commands

Defined in:
lib/qcmd/commands.rb

Constant Summary collapse

MACHINE_RESPONSE =

Commands that expect reponses

%w(workspaces)
WORKSPACE_RESPONSE =
%w(
  cueLists selectedCues runningCues runningOrPausedCues connect thump
)
CUE_RESPONSE =

commands that always expect a response

%w(
  uniqueID hasFileTargets hasCueTargets allowsEditingDuration isLoaded
  isRunning isPaused isBroken preWaitElapsed actionElapsed
  postWaitElapsed percentPreWaitElapsed percentActionElapsed
  percentPostWaitElapsed type sliderLevels
  basics children
)
NO_ARG_CUE_RESPONSE =

commands that expect a response if given without args

%w(
  number name notes cueTargetNumber cueTargetId preWait duration
  postWait continueMode flagged armed colorName
  sliderLevel
)

Class Method Summary collapse

Class Method Details

.cue_no_arg_response_match(command) ⇒ Object



51
52
53
# File 'lib/qcmd/commands.rb', line 51

def cue_no_arg_response_match command
  !!(cue_no_arg_response_matcher =~ command)
end

.cue_no_arg_response_matcherObject



48
49
50
# File 'lib/qcmd/commands.rb', line 48

def cue_no_arg_response_matcher
  @cue_no_arg_response_matcher ||= %r[(#{NO_ARG_CUE_RESPONSE.join('|') })]
end

.cue_response_match(command) ⇒ Object



44
45
46
# File 'lib/qcmd/commands.rb', line 44

def cue_response_match command
  !!(cue_response_matcher =~ command)
end

.cue_response_matcherObject



41
42
43
# File 'lib/qcmd/commands.rb', line 41

def cue_response_matcher
  @cue_response_matcher ||= %r[(#{CUE_RESPONSE.join('|') })]
end

.expects_reply?(osc_message) ⇒ Boolean

Returns:

  • (Boolean)


55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/qcmd/commands.rb', line 55

def expects_reply? osc_message
  address = osc_message.address

  Qcmd.debug "(check #{address} for reply expectation in connection state #{Qcmd.context.connection_state})"

  # debugger

  case Qcmd.context.connection_state
  when :none
    # shouldn't be dealing with OSC messages when unconnected to
    # machine or workspace
    response = false
  when :machine
    # could be workspace or machine command
    response = machine_response_match(address) ||
               workspace_response_match(address)
  when :workspace
    if is_cue_command?(address)
      Qcmd.debug "- (checking cue command)"
      if osc_message.has_arguments?
        Qcmd.debug "- (with arguments)"
        response = cue_response_match address
      else
        Qcmd.debug "- (without arguments)"
        response = cue_no_arg_response_match(address) ||
                   cue_response_match(address)
      end
    else
      Qcmd.debug "- (checking workspace command)"
      response = workspace_response_match(address) ||
                 machine_response_match(address)
    end
  end

  response.tap {|value|
    msg = value ? "EXPECT REPLY" : "do not expect reply"
    Qcmd.debug "- (#{ msg })"
  }
end

.is_cue_command?(address) ⇒ Boolean

Returns:

  • (Boolean)


95
96
97
# File 'lib/qcmd/commands.rb', line 95

def is_cue_command? address
  /cue/ =~ address && !(/Lists/ =~ address || /Cues/ =~ address)
end

.is_workspace_command?(address) ⇒ Boolean

Returns:

  • (Boolean)


99
100
101
# File 'lib/qcmd/commands.rb', line 99

def is_workspace_command? address
  /workspace/ =~ address && !(%r[cue/] =~ address || %r[cue_id/] =~ address)
end

.machine_response_match(command) ⇒ Object



30
31
32
# File 'lib/qcmd/commands.rb', line 30

def machine_response_match command
  !!(machine_response_matcher =~ command)
end

.machine_response_matcherObject



27
28
29
# File 'lib/qcmd/commands.rb', line 27

def machine_response_matcher
  @machine_response_matcher ||= %r[(#{MACHINE_RESPONSE.join('|')})]
end

.workspace_response_match(command) ⇒ Object



37
38
39
# File 'lib/qcmd/commands.rb', line 37

def workspace_response_match command
  !!(workspace_response_matcher =~ command)
end

.workspace_response_matcherObject



34
35
36
# File 'lib/qcmd/commands.rb', line 34

def workspace_response_matcher
  @workspace_response_matcher ||= %r[(#{WORKSPACE_RESPONSE.join('|')})]
end