Cheshire Café Control Flow

Press "Press to Start" on the TEC-X 2000 and both screens come down, both Epson L260F projectors turn on, and both switch to HDMI 1 at the 34 s mark, all from logic inside one TesiraFORTÉ X 400. This page traces that chain and every other one in the v1_0_3 Tesira design, as decoded from the file: the 47 buttons, the projectors and screens, the mic levels, and the check that asks the Shure ULXD4D which transmitters are in use.

Page theme

Control flow, lane by lane

TEC-X buttons Tesira logic Command strings and logic outputs Devices Feedback and status Audio blocks Replies flowing back

Each lane shows Projector 1 and Projector 2 together; the P1 and P2 blocks are wired identically. Lanes 4, 6 and 9 run right to left: they carry replies and status back into the design.

What each lane does

1 · Room power

Press to Start / Power Off→RmPowerOn / RmPowerOff→Power Both On / Off→P1 and P2 sequences

The Splash page's single button starts RmPowerOn and opens Home. The Confirm page's Power Off starts RmPowerOff and returns to Splash. Each is a one-step Logic Sequence (500 ms on, 500 ms off) whose output goes through a Fan-In OR Pulse to start both projectors' sequences at once.

2 · Projector power and input

Power (latch)→P1PowerUp / P1PowerDwn→Pulse custom block, OR Gate→ProjectorNCS1→Projector 1

Power Up Sequence: step 1 lowers the screen at once, step 2 sends PWR ON 1 s in, step 3 sends SOURCE 30 (HDMI 1) 34 s in, after the L260F's 30 s warm-up (steps of 500/500, 500/32,500 and 500/500 ms). Power Off Sequence: step 1 raises the screen, step 2 sends PWR OFF 1 s in, step 3 sends it again 36.5 s in (500/500, 500/35,000, 500/500 ms). Steps 2 and 3 meet at an OR Gate, because the L260F ignores PWR OFF during warm-up. A custom block of two Fan-In OR Pulses turns each step into a single command trigger. The projector pages' Power button is a latch: showing "Power Off" it starts the Up sequence; showing "Power On" it starts the Off sequence.

3 · Status polling

init (saved on)→Boot pulse→LogicDelay3, 250 ms→P1Poll / P2Poll→PWR? MUTE? FREEZE? SOURCE? ERR?

The init Logic State is saved on, so at boot it fires a Fan-In OR Pulse. That pulse also triggers the ULXD4D query (lane 8), and 250 ms later starts both Polling Sequences. Each has five steps of 500 ms on and 3,000 ms off and repeats indefinitely, so a projector is asked one question every 3.5 s and gets a full pass every 17.5 s. On connect, each projector block first sends the Epson handshake ESC/VP.net from its Connection Sequence.

4 · Status replies

Projector reply→27 response patterns→Logic Selectors→Projector Status meter

Each reply that matches a pattern pulses a logic output into one of five Logic Selectors: POWER (standby, normal, warm, cool, abnormal), A/V MUTE, FREEZE, SOURCE (eleven inputs) and ERROR. Their outputs light a 19-indicator Logic Meter per projector. A PWR=05 (abnormal) reply also sends ERR? straight away. In standby the L260F answers only the power query, so the mute, freeze and source indicators hold their last values.

5 · Screens

Screen Up / Down→P1Screen→Up / Down Pulse→LogicOutput1→Screen 1

P1Screen is a three-state Logic Selector: 1 Down, 2 Up, 3 idle. Screen Down sets state 1 and Screen Up sets state 2; the power sequences drive inputs 1 and 2 the same way. The Down output pulses Logic Output 1 channel 1, and the Up output pulses channel 2.

6 · Screen re-arm and status

Up or Down Pulse→OR→"Logic VIA"→LogicDelay1, 250 ms→P1Screen input 3

A Logic Selector only pulses when its state changes, so a second press of the same button would do nothing. After every move, an OR feeds the "Logic VIA" custom block: the logic drives a mute on a tone, a signal-present meter turns the tone back into logic, and a 250 ms Logic Delay sets the selector to state 3 (idle). The same pulses also set a Screen State selector, which lights the Screen Status meter.

7 · Video mute and freeze

Freeze / Video Mute (latch)→P1AVMute / P1Freeze→Pulse custom block→MUTE / FREEZE ON, OFF

Both are two-state Logic Selectors: state 1 Off, state 2 On. The button sends the opposite of what it shows, so "Video Mute Off" sets state 2 and sends MUTE ON. If the selector is already in that state nothing is sent.

8 · Mic type query

Boot · connect · mute release→CommandString15→Shure ULXD4D

CommandString15 sends < GET 0 TX_TYPE > three ways: from its Connection Sequence when it connects, from the boot pulse on its INIT input, and whenever the receiver reports TX_MUTE_BUTTON_STATUS RELEASED (response 9 sends command 1). So releasing a transmitter's mute button re-checks both channels.

9 · Mic type replies

REP n TX_TYPE→8 patterns→WLX1Type / WLX2Type→EQ preset

Patterns ?LXD2, ?LXD1, ?LXD6 and ?LXD8 match handheld, bodypack, boundary and gooseneck transmitters; the ? wildcard also covers QLX-D. Outputs 1 to 4 drive channel 1's Source Selector and outputs 5 to 8 drive channel 2's, picking HH - 7, Lav - 7, Boundary - 7 or Goose - 7. A transmitter that matches nothing leaves the last preset in place. An 8-channel Logic Meter shows the current choice.

10 · Levels

Volume Up / Down · Mute→Ramp Logic States→Level +1 / −1→Matrix Mixer

Each ramp (Wlx1Ramp, Wlx2Ramp, MicRamp, USBRamp) is a two-channel Logic State. Volume Up sets channel 1 on press and hold and clears it on release; Volume Down does the same on channel 2. Channel 1 drives the Level block's +1 input and channel 2 its −1 input, so the level moves only while a button is held. Mute writes the Level block's mute attribute directly, with no logic in between.

Arrows are the Page Flip links. Every page below Home also has a Back or Home button that returns one level up. Confirm's Power Off ends at Splash; its Go Back returns to Home.

Button map

PageButtonTypeWhat it sendsResultGoes to
SplashPress to Start Projectors turn on and screens lowerMomentaryPress: RmPowerOn startSequenceRoom Power On: starts both projectors' Power Up SequencesHome
HomeProjector ControlsMomentaryNothingPage change onlyProjector Controls
HomeAudio ControlsMomentaryNothingPage change onlyAudio Controls
HomePower Room OffMomentaryNothingPage change onlyConfirm
Projector ControlsHomeMomentaryNothingPage change onlyHome
Projector ControlsProjector 1 ControlsMomentaryNothingPage change onlyProjector 1
Projector ControlsProjector 2 ControlsMomentaryNothingPage change onlyProjector 2
Projector 1BackMomentaryNothingPage change onlyProjector Controls
Projector 1Power Off / Power OnLatchShowing "Power Off": P1PowerUp startSequence
Showing "Power On": P1PowerDwn startSequence
Projector 1 Power Up Sequence: screen down, PWR ON, then HDMI 1
Projector 1 Power Off Sequence: screen up, PWR OFF, then a PWR OFF retry
Projector 1Screen UpMomentaryPress: P1Screen set state 2 trueScreen 1 up: Logic Output 1, channel 2
Projector 1Screen DownMomentaryPress: P1Screen set state 1 trueScreen 1 down: Logic Output 1, channel 1
Projector 1Freeze Off / Freeze OnLatchShowing "Freeze Off": P1Freeze set state 2 true
Showing "Freeze On": P1Freeze set state 1 true
Sends FREEZE ON to Projector 1
Sends FREEZE OFF to Projector 1
Projector 1Video Mute Off / Video Mute OnLatchShowing "Video Mute Off": P1AVMute set state 2 true
Showing "Video Mute On": P1AVMute set state 1 true
Sends MUTE ON to Projector 1
Sends MUTE OFF to Projector 1
Projector 2BackMomentaryNothingPage change onlyProjector Controls
Projector 2Power Off / Power OnLatchShowing "Power Off": P2PowerUp startSequence
Showing "Power On": P2PowerDwn startSequence
Projector 2 Power Up Sequence: screen down, PWR ON, then HDMI 1
Projector 2 Power Off Sequence: screen up, PWR OFF, then a PWR OFF retry
Projector 2Screen UpMomentaryPress: P2Screen set state 2 trueScreen 2 up: Logic Output 2, channel 2
Projector 2Screen DownMomentaryPress: P2Screen set state 1 trueScreen 2 down: Logic Output 2, channel 1
Projector 2Freeze Off / Freeze OnLatchShowing "Freeze Off": P2Freeze set state 2 true
Showing "Freeze On": P2Freeze set state 1 true
Sends FREEZE ON to Projector 2
Sends FREEZE OFF to Projector 2
Projector 2Video Mute Off / Video Mute OnLatchShowing "Video Mute Off": P2AVMute set state 2 true
Showing "Video Mute On": P2AVMute set state 1 true
Sends MUTE ON to Projector 2
Sends MUTE OFF to Projector 2
Audio ControlsHomeMomentaryNothingPage change onlyHome
Audio ControlsMicrophone ControlsMomentaryNothingPage change onlyMicrophone Controls
Audio ControlsLevel ControlsMomentaryNothingPage change onlyLevel Controls
Microphone ControlsBackMomentaryNothingPage change onlyAudio Controls
Microphone ControlsWireless 1MomentaryNothingPage change onlyWireless 1
Microphone ControlsWireless 2MomentaryNothingPage change onlyWireless 2
Wireless 1BackMomentaryNothingPage change onlyMicrophone Controls
Wireless 1Volume UpMomentaryPress: Wlx1Ramp set state 1 true
Hold: Wlx1Ramp set state 1 true
Release: Wlx1Ramp set state 1 false
Starts ramping Wireless 1 up
Stops ramping Wireless 1 up
Wireless 1Unmuted / MutedLatchShowing "Unmuted": Wlx1Level set mute 1 true
Showing "Muted": Wlx1Level set mute 1 false
Mutes Wireless 1
Unmutes Wireless 1
Wireless 1Volume DownMomentaryPress: Wlx1Ramp set state 2 true
Hold: Wlx1Ramp set state 2 true
Release: Wlx1Ramp set state 2 false
Starts ramping Wireless 1 down
Stops ramping Wireless 1 down
Wireless 2BackMomentaryNothingPage change onlyMicrophone Controls
Wireless 2Volume UpMomentaryPress: Wlx2Ramp set state 1 true
Hold: Wlx2Ramp set state 1 true
Release: Wlx2Ramp set state 1 false
Starts ramping Wireless 2 up
Stops ramping Wireless 2 up
Wireless 2Unmuted / MutedLatchShowing "Unmuted": Wlx2Level set mute 1 true
Showing "Muted": Wlx2Level set mute 1 false
Mutes Wireless 2
Unmutes Wireless 2
Wireless 2Volume DownMomentaryPress: Wlx2Ramp set state 2 true
Hold: Wlx2Ramp set state 2 true
Release: Wlx2Ramp set state 2 false
Starts ramping Wireless 2 down
Stops ramping Wireless 2 down
Level ControlsBackMomentaryNothingPage change onlyAudio Controls
Level ControlsMicrophone MixMomentaryNothingPage change onlyMicrophone Mix
Level ControlsUSB AudioMomentaryNothingPage change onlyUSB Audio
Microphone MixBackMomentaryNothingPage change onlyLevel Controls
Microphone MixVolume UpMomentaryPress: MicRamp set state 1 true
Hold: MicRamp set state 1 true
Release: MicRamp set state 1 false
Starts ramping Mic Mix up
Stops ramping Mic Mix up
Microphone MixUnmuted / MutedLatchShowing "Unmuted": MicLevel set mute 1 true
Showing "Muted": MicLevel set mute 1 false
Mutes Mic Mix
Unmutes Mic Mix
Microphone MixVolume DownMomentaryPress: MicRamp set state 2 true
Hold: MicRamp set state 2 true
Release: MicRamp set state 2 false
Starts ramping Mic Mix down
Stops ramping Mic Mix down
USB AudioBackMomentaryNothingPage change onlyLevel Controls
USB AudioVolume UpMomentaryPress: USBRamp set state 1 true
Hold: USBRamp set state 1 true
Release: USBRamp set state 1 false
Starts ramping USB Rx up
Stops ramping USB Rx up
USB AudioUnmuted / MutedLatchShowing "Unmuted": USBLevel set mute 1 true
Showing "Muted": USBLevel set mute 1 false
Mutes USB Rx
Unmutes USB Rx
USB AudioVolume DownMomentaryPress: USBRamp set state 2 true
Hold: USBRamp set state 2 true
Release: USBRamp set state 2 false
Starts ramping USB Rx down
Stops ramping USB Rx down
ConfirmPower OffMomentaryPress: RmPowerOff startSequenceRoom Power Off: starts both projectors' Power Off SequencesSplash
Confirm(blank spacer)MomentaryNothingNo action
ConfirmGo BackMomentaryNothingPage change onlyHome

Commands are shown exactly as stored in the TEC-X block. A latch button sends the action stored with the state it is showing, then switches to the other state.

Command strings

Projector commandStringSent by
1 Power QueryPWR?~0DPolling step 1
2 Power OffPWR OFF~0DPower Off Sequence, steps 2 and 3
3 Power OnPWR ON~0DPower Up Sequence, step 2
4 A/V Mute QueryMUTE?~0DPolling step 2
5 A/V Mute OffMUTE OFF~0DAV Mute selector, state 1
6 A/V Mute OnMUTE ON~0DAV Mute selector, state 2
7 Freeze QueryFREEZE?~0DPolling step 3
8 Freeze OffFREEZE OFF~0DFreeze selector, state 1
9 Freeze OnFREEZE ON~0DFreeze selector, state 2
10 Source QuerySOURCE?~0DPolling step 4
11 Source HDMI 1SOURCE 30~0DPower Up Sequence, step 3
12 Source HDMI 2SOURCE A0~0DNot wired
13 Error QueryERR?~0DPolling step 5, and a PWR=05 reply
Projector replyLogic outputSelector input
PWR=00, 04, 091POWER: standby
PWR=012POWER: normal
PWR=023POWER: warm
PWR=034POWER: cool
PWR=055POWER: abnormal (also sends ERR?)
MUTE=OFF, MUTE=ON6, 7A/V MUTE
FREEZE=OFF, FREEZE=ON8, 9FREEZE
SOURCE=30, A0, 10, 20, 41, 51, 52, 53, 56, 59, 5810 to 20SOURCE: HDMI 1, HDMI 2, Comp 1, Comp 2, Video, USB Display, USB, LAN, Mirroring 1, Mirroring 2, Spotlight
ERR=0021ERROR: none
ERR=01, 04, 06, FF22ERROR: error
ULXD4D (CommandString15)PatternResult
Command 1, TX MODEL GET< GET 0 TX_TYPE >Asks both channels for their transmitter type
Responses 1 to 4*< REP 1 TX_TYPE ?LXD2 >, ?LXD1, ?LXD6, ?LXD8Outputs 1 to 4: WLX1Type picks HH - 7, Lav - 7, Boundary - 7 or Goose - 7
Responses 5 to 8*< REP 2 TX_TYPE ?LXD2 >, ?LXD1, ?LXD6, ?LXD8Outputs 5 to 8: WLX2Type, same four presets
Response 9*< REP ? TX_MUTE_BUTTON_STATUS RELEASED >Sends command 1 again

Projector 1 uses ProjectorNCS1 and Projector 2 uses CommandString17; both have the same 13 commands and 27 response patterns, on TCP port 3629. The ULXD4D block uses TCP port 2202.

Logic blocks in the file

Block typeInstance tagsJob
Logic SequenceRmPowerOn, RmPowerOffRoom power, one step each
Logic SequenceP1PowerUp, P2PowerUp, P1PowerDwn, P2PowerDwnProjector power, three steps each
Logic SequenceP1Poll, P2PollStatus polling, five steps, repeats
Logic SelectorP1Screen, P2ScreenScreen control: Down, Up, idle
Logic SelectorP1AVMute, P2AVMute, P1Freeze, P2FreezeVideo mute and freeze: Off, On
Logic SelectorPOWER, A/V MUTE, FREEZE, SOURCE, ERROR per projector; Screen State per screenTurn replies and screen moves into status
Logic StateWlx1Ramp, Wlx2Ramp, MicRamp, USBRampVolume ramps: channel 1 up, channel 2 down
Logic StateinitSaved on; fires once at boot
Fan-In OR PulseUp Pulse, Down Pulse, Power Both On, Power Both Off, boot pulse, and pairs inside the pulse custom blocksTurn a state change into one short trigger
ORLogic1, Logic2; OR Gates Logic3, Logic4Screen re-arm trigger; PWR OFF plus its retry
Logic DelayLogicDelay1, LogicDelay2, LogicDelay3250 ms: screen re-arm and polling start
Custom block"Logic VIA" (one per screen)Tone, mute and signal-present meter that re-arm the screen selector
Custom blockPulse blocks (three per projector)Two Fan-In OR Pulses each, for power, A/V mute and freeze
Command StringProjectorNCS1, CommandString17, CommandString15Projector 1, Projector 2, ULXD4D
Logic OutputLogicOutput1, LogicOutput2Screen relays: channel 1 Down, channel 2 Up
Logic MeterProjector Status ×2, Screen Status ×2, Logic Meter 8 ChannelStatus shown in Tesira

Check on site