Lots of changes
- ✅ Feedback van dataSensor array - ✅ dataSliders min/max and unit - ✅ Camera before Unity - ✅ Restart knop buiten service mode - ✅ Operator phonenumber button - ✅ Gracefull shutdown - ✅ Out of service control
This commit is contained in:
@@ -17,7 +17,9 @@ export class UnityWebSocket {
|
||||
zedPath: '',
|
||||
zedReady: false,
|
||||
zedFPS: '-',
|
||||
parameters: [],
|
||||
outOfService: null,
|
||||
sliders: [],
|
||||
sensors: [],
|
||||
};
|
||||
|
||||
socket: WebSocket;
|
||||
@@ -32,30 +34,72 @@ export class UnityWebSocket {
|
||||
const sliderIndex: number = args[0];
|
||||
const percentage: number = args[1];
|
||||
|
||||
if (this.parameters.parameters[sliderIndex] == undefined)
|
||||
return;
|
||||
this.parameters.parameters[sliderIndex].outputValue =
|
||||
percentage;
|
||||
this.setSliderValue(sliderIndex, percentage);
|
||||
break;
|
||||
|
||||
if (
|
||||
this.socket == null ||
|
||||
this.socket.readyState !== WebSocket.OPEN
|
||||
)
|
||||
return;
|
||||
case 'enableOutOfService':
|
||||
const enableCallback: Function = args[0];
|
||||
if (typeof enableCallback !== 'function') return;
|
||||
|
||||
this.socket.send(
|
||||
JSON.stringify({
|
||||
type: 'set_slider_value',
|
||||
sliderIndex: sliderIndex,
|
||||
sliderValue: percentage,
|
||||
})
|
||||
);
|
||||
this.setOutOfService(true);
|
||||
|
||||
this.broadcastState();
|
||||
enableCallback({ succeed: true });
|
||||
break;
|
||||
|
||||
case 'disableOutOfService':
|
||||
const disableCallback: Function = args[0];
|
||||
if (typeof disableCallback !== 'function') return;
|
||||
|
||||
this.setOutOfService(false);
|
||||
|
||||
disableCallback({ succeed: true });
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
quitApplication() {
|
||||
if (this.socket == null || this.socket.readyState !== WebSocket.OPEN)
|
||||
return;
|
||||
|
||||
this.socket.send(
|
||||
JSON.stringify({
|
||||
type: 'quit_application',
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
setSliderValue(sliderIndex: number, sliderValue: number) {
|
||||
if (this.socket == null || this.socket.readyState !== WebSocket.OPEN)
|
||||
return;
|
||||
|
||||
this.socket.send(
|
||||
JSON.stringify({
|
||||
type: 'set_slider_value',
|
||||
sliderIndex,
|
||||
sliderValue,
|
||||
})
|
||||
);
|
||||
|
||||
if (this.parameters.sliders[sliderIndex] == undefined) return;
|
||||
this.parameters.sliders[sliderIndex].outputValue = sliderValue;
|
||||
this.broadcastState();
|
||||
}
|
||||
|
||||
setOutOfService(state: boolean) {
|
||||
if (this.socket == null || this.socket.readyState !== WebSocket.OPEN)
|
||||
return;
|
||||
|
||||
this.socket.send(
|
||||
JSON.stringify({
|
||||
type: 'set_out_of_service',
|
||||
showOutOfService: state,
|
||||
})
|
||||
);
|
||||
|
||||
this.parameters.outOfService = true;
|
||||
this.broadcastState();
|
||||
}
|
||||
|
||||
broadcastState() {
|
||||
this._Main.WebServer.socket.emit(
|
||||
'unityWebSocketState',
|
||||
@@ -99,7 +143,28 @@ export class UnityWebSocket {
|
||||
this.parameters.zedReady =
|
||||
message.heartbeat.zedCamera.isZedReady;
|
||||
this.parameters.zedFPS = message.heartbeat.zedCamera.cameraFPS;
|
||||
this.parameters.parameters = message.heartbeat.dataSliders;
|
||||
this.parameters.outOfService =
|
||||
message.heartbeat.showOutOfService ?? false;
|
||||
this.parameters.sensors = message.heartbeat.dataSensors;
|
||||
this.parameters.sliders = message.heartbeat.dataSliders.map(
|
||||
(slider) => {
|
||||
return {
|
||||
...slider,
|
||||
min: slider.min ?? 0,
|
||||
max: slider.max ?? 1,
|
||||
unit: slider.unit ?? '%',
|
||||
visualMultiplier:
|
||||
(slider.min ?? 0) == 0 && (slider.max ?? 1) == 1
|
||||
? 100
|
||||
: null,
|
||||
decimalPlaces:
|
||||
(slider.min ?? 0) == 0 && (slider.max ?? 1) == 1
|
||||
? 0
|
||||
: 2,
|
||||
} as UnityParameterSlider;
|
||||
}
|
||||
);
|
||||
|
||||
this.broadcastState();
|
||||
break;
|
||||
|
||||
@@ -182,6 +247,7 @@ export class UnityWebSocket {
|
||||
});
|
||||
|
||||
this.socket.on('close', () => {
|
||||
if (this._Main.UnityRunner.restartTriggered) return;
|
||||
if (this.restartRequested) return;
|
||||
this.setInfo(
|
||||
'Disconnected',
|
||||
@@ -247,7 +313,16 @@ interface UnityParameters {
|
||||
zedPath: string;
|
||||
zedReady: boolean;
|
||||
zedFPS: string;
|
||||
parameters: UnitySocketMessageHeartbeat['heartbeat']['dataSliders'];
|
||||
outOfService: boolean;
|
||||
sliders: UnityParameterSlider[];
|
||||
sensors: UnitySocketMessageHeartbeat['heartbeat']['dataSensors'];
|
||||
}
|
||||
|
||||
type UnityHeartbeatSlider =
|
||||
UnitySocketMessageHeartbeat['heartbeat']['dataSliders'][number];
|
||||
interface UnityParameterSlider extends UnityHeartbeatSlider {
|
||||
visualMultiplier?: number;
|
||||
decimalPlaces?: number;
|
||||
}
|
||||
|
||||
type UnitySocketMessage =
|
||||
@@ -261,10 +336,18 @@ interface UnitySocketMessageBase {
|
||||
interface UnitySocketMessageHeartbeat extends UnitySocketMessageBase {
|
||||
type: 'heartbeat_data';
|
||||
heartbeat: {
|
||||
dataSensors: {
|
||||
sensorIndex: number;
|
||||
deviceName: string;
|
||||
outputValue: number;
|
||||
}[];
|
||||
dataSliders: {
|
||||
sliderIndex: number;
|
||||
sliderName: string;
|
||||
outputValue: number;
|
||||
min: number;
|
||||
max: number;
|
||||
unit: string;
|
||||
}[];
|
||||
dataTimeline: {
|
||||
isStanding: boolean;
|
||||
@@ -278,6 +361,7 @@ interface UnitySocketMessageHeartbeat extends UnitySocketMessageBase {
|
||||
streamInputPort: number;
|
||||
zedGrabError: number;
|
||||
};
|
||||
showOutOfService?: boolean;
|
||||
};
|
||||
}
|
||||
interface UnitySocketMessageCameraFrame extends UnitySocketMessageBase {
|
||||
|
||||
Reference in New Issue
Block a user