Skip to content

Commit 47bd03a

Browse files
committed
fix: detected devices show up in ip address dropdown
1 parent 2936f4a commit 47bd03a

File tree

2 files changed

+17
-13
lines changed

2 files changed

+17
-13
lines changed

src/handlers/device-detector.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export interface WingDeviceDetectorInterface {
1414
subscribe(instanceId: string): void
1515
unsubscribe(instanceId: string): void
1616
listKnown(): DeviceInfo[]
17+
addLogger(logger: ModuleLogger): void
1718
}
1819

1920
/**
@@ -33,15 +34,21 @@ export class WingDeviceDetector extends EventEmitter implements WingDeviceDetect
3334
this.logger = logger
3435
}
3536

37+
/**
38+
* Add a logger
39+
* @param logger An instance of a ModuleLogger
40+
*/
41+
public addLogger(logger: ModuleLogger): void {
42+
this.logger = logger
43+
}
44+
3645
/**
3746
* Register a subscriber to start device detection.
3847
* @param instanceId Unique identifier for the subscriber.
3948
*/
4049
public subscribe(instanceId: string): void {
4150
const startListening = this.subscribers.size === 0
42-
4351
this.subscribers.add(instanceId)
44-
4552
if (startListening) {
4653
this.startListening()
4754
}
@@ -71,7 +78,6 @@ export class WingDeviceDetector extends EventEmitter implements WingDeviceDetect
7178
*/
7279
private startListening(): void {
7380
this.knownDevices.clear()
74-
7581
if (this.subscribers.size === 0) {
7682
return
7783
}
@@ -112,6 +118,7 @@ export class WingDeviceDetector extends EventEmitter implements WingDeviceDetect
112118
})
113119

114120
this.osc.on('message', (message): void => {
121+
this.logger?.debug(`received device detector message ${JSON.stringify(message)}`)
115122
const args = message.args as osc.MetaArgument[]
116123
if (!args || args.length === 0 || args[0].type !== 's') {
117124
return
@@ -152,7 +159,6 @@ export class WingDeviceDetector extends EventEmitter implements WingDeviceDetect
152159
this.noDeviceTimeout = undefined
153160
}
154161
})
155-
156162
this.osc.open()
157163
}
158164

src/index.ts

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { createActions } from './actions/index.js'
1313
import { GetFeedbacksList } from './feedbacks.js'
1414
import { OscMessage } from 'osc'
1515
import { WingTransitions } from './handlers/transitions.js'
16-
import { WingDeviceDetector } from './handlers/device-detector.js'
16+
import { WingDeviceDetectorInstance, WingDeviceDetectorInterface } from './handlers/device-detector.js'
1717
import { ModelSpec, WingModel } from './models/types.js'
1818
import { getDeskModel } from './models/index.js'
1919
import { GetPresets } from './presets.js'
@@ -34,7 +34,7 @@ export class WingInstance extends InstanceBase<WingConfig> implements InstanceBa
3434

3535
connected: boolean = false
3636

37-
deviceDetector: WingDeviceDetector | undefined
37+
deviceDetector: WingDeviceDetectorInterface | undefined
3838
connection: ConnectionHandler | undefined
3939
stateHandler: StateHandler | undefined
4040
feedbackHandler: FeedbackHandler | undefined
@@ -66,7 +66,6 @@ export class WingInstance extends InstanceBase<WingConfig> implements InstanceBa
6666
this.logger.setLoggerFn((level, message) => {
6767
this.log(level, message)
6868
})
69-
this.logger.disable()
7069
this.logger.debugMode = config.debugMode ?? false
7170
this.logger.timestamps = config.debugMode ?? false
7271
await this.configUpdated(config)
@@ -102,8 +101,6 @@ export class WingInstance extends InstanceBase<WingConfig> implements InstanceBa
102101
this.updateFeedbacks()
103102

104103
this.setupOscForwarder()
105-
106-
this.deviceDetector?.subscribe(this.id)
107104
}
108105

109106
getConfigFields(): SomeCompanionConfigField[] {
@@ -119,9 +116,11 @@ export class WingInstance extends InstanceBase<WingConfig> implements InstanceBa
119116
}
120117

121118
private setupDeviceDetector(): void {
122-
this.deviceDetector = new WingDeviceDetector(this.logger)
123-
this.deviceDetector?.unsubscribe(this.id)
124-
119+
this.deviceDetector = WingDeviceDetectorInstance
120+
if (this.logger !== undefined) {
121+
this.deviceDetector.addLogger(this.logger)
122+
}
123+
this.deviceDetector.subscribe(this.id)
125124
if (this.deviceDetector) {
126125
;(this.deviceDetector as any).on?.('no-device-detected', () => {
127126
this.logger?.warn('No console detected on the network')
@@ -175,7 +174,6 @@ export class WingInstance extends InstanceBase<WingConfig> implements InstanceBa
175174
this.connected = true
176175

177176
this.logger?.info('OSC connection established')
178-
this.logger?.enable()
179177

180178
this.feedbackHandler?.startPolling()
181179
this.stateHandler?.state?.requestNames(this)

0 commit comments

Comments
 (0)