Skip to content

Commit c6d4610

Browse files
committed
WIP
1 parent 79726c9 commit c6d4610

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

src/handlers/surface-handler.ts

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
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+
}

src/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { StateHandler } from './handlers/state-handler.js'
1616
import { FeedbackHandler } from './handlers/feedback-handler.js'
1717
import { VariableHandler } from './variables/variable-handler.js'
1818
import { OscForwarder } from './handlers/osc-forwarder.js'
19+
import { SurfaceAnnouncer as SurfaceHandler } from './handlers/surface-handler.js'
1920

2021
export 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[] {

0 commit comments

Comments
 (0)