File tree Expand file tree Collapse file tree 2 files changed +47
-0
lines changed
Expand file tree Collapse file tree 2 files changed +47
-0
lines changed Original file line number Diff line number Diff line change 1+ import net from 'net'
2+ import { ModuleLogger } from './logger.js'
3+
4+ const ANNOUNCE_HOST = '127.0.0.1'
5+ const ANNOUNCE_PORT = 6942
6+ const ANNOUNCE_INTERVAL_MS = 1000
7+ const ANNOUNCE_PAYLOAD = 'hello\n\n'
8+
9+ export class SurfaceAnnouncer {
10+ private logger ?: ModuleLogger
11+ private interval : NodeJS . Timeout | undefined
12+
13+ constructor ( logger ?: ModuleLogger ) {
14+ this . logger = logger
15+ }
16+
17+ start ( ) : void {
18+ if ( this . interval ) return
19+
20+ this . interval = setInterval ( ( ) => {
21+ this . sendAnnounce ( )
22+ } , ANNOUNCE_INTERVAL_MS )
23+ }
24+
25+ stop ( ) : void {
26+ if ( ! this . interval ) return
27+
28+ clearInterval ( this . interval )
29+ this . interval = undefined
30+ }
31+
32+ private sendAnnounce ( ) : void {
33+ const socket = net . connect ( ANNOUNCE_PORT , ANNOUNCE_HOST , ( ) => {
34+ socket . write ( ANNOUNCE_PAYLOAD )
35+ socket . end ( )
36+ } )
37+ this . logger ?. info ( 'Sending surface announce' )
38+ // Ignore errors (receiver may not be running yet)
39+ socket . on ( 'error' , ( ) => {
40+ socket . destroy ( )
41+ } )
42+ }
43+ }
Original file line number Diff line number Diff line change @@ -16,6 +16,7 @@ import { StateHandler } from './handlers/state-handler.js'
1616import { FeedbackHandler } from './handlers/feedback-handler.js'
1717import { VariableHandler } from './variables/variable-handler.js'
1818import { OscForwarder } from './handlers/osc-forwarder.js'
19+ import { SurfaceAnnouncer as SurfaceHandler } from './handlers/surface-handler.js'
1920
2021export class WingInstance extends InstanceBase < WingConfig > implements InstanceBaseExt < WingConfig > {
2122 config ! : WingConfig
@@ -29,6 +30,7 @@ export class WingInstance extends InstanceBase<WingConfig> implements InstanceBa
2930 stateHandler : StateHandler | undefined
3031 feedbackHandler : FeedbackHandler | undefined
3132 variableHandler : VariableHandler | undefined
33+ surfaceHandler : SurfaceHandler | undefined
3234 transitions : WingTransitions
3335 oscForwarder : OscForwarder | undefined
3436
@@ -86,6 +88,8 @@ export class WingInstance extends InstanceBase<WingConfig> implements InstanceBa
8688 this . setupOscForwarder ( )
8789
8890 this . deviceDetector ?. subscribe ( this . id )
91+ this . surfaceHandler = new SurfaceHandler ( this . logger )
92+ this . surfaceHandler . start ( )
8993 }
9094
9195 getConfigFields ( ) : SomeCompanionConfigField [ ] {
You can’t perform that action at this time.
0 commit comments