diff --git a/public/new_icon/center_control.png b/public/new_icon/center_control.png new file mode 100644 index 0000000..5e70814 Binary files /dev/null and b/public/new_icon/center_control.png differ diff --git a/public/new_icon/power_off.png b/public/new_icon/power_off.png new file mode 100644 index 0000000..255c1c8 Binary files /dev/null and b/public/new_icon/power_off.png differ diff --git a/public/new_icon/power_on.png b/public/new_icon/power_on.png new file mode 100644 index 0000000..b1409c9 Binary files /dev/null and b/public/new_icon/power_on.png differ diff --git a/public/toolbar_icon/grid_setting.png b/public/toolbar_icon/grid_setting.png deleted file mode 100644 index c7e8895..0000000 Binary files a/public/toolbar_icon/grid_setting.png and /dev/null differ diff --git a/public/toolbar_icon/mode_setting.png b/public/toolbar_icon/mode_setting.png deleted file mode 100644 index 79b1580..0000000 Binary files a/public/toolbar_icon/mode_setting.png and /dev/null differ diff --git a/public/toolbar_icon/network_interface_setting.png b/public/toolbar_icon/network_interface_setting.png deleted file mode 100644 index 89a4420..0000000 Binary files a/public/toolbar_icon/network_interface_setting.png and /dev/null differ diff --git a/public/toolbar_icon/source_setting.png b/public/toolbar_icon/source_setting.png deleted file mode 100644 index fae13eb..0000000 Binary files a/public/toolbar_icon/source_setting.png and /dev/null differ diff --git a/public/toolbar_icon/wifi_ap.png b/public/toolbar_icon/wifi_ap.png deleted file mode 100644 index de3e2b6..0000000 Binary files a/public/toolbar_icon/wifi_ap.png and /dev/null differ diff --git a/public/toolbar_icon/wifi_setting.png b/public/toolbar_icon/wifi_setting.png deleted file mode 100644 index 787d81e..0000000 Binary files a/public/toolbar_icon/wifi_setting.png and /dev/null differ diff --git a/public/toolbar_icon/window_setting.png b/public/toolbar_icon/window_setting.png deleted file mode 100644 index 115d087..0000000 Binary files a/public/toolbar_icon/window_setting.png and /dev/null differ diff --git a/src/common/ClientConnection.ts b/src/common/ClientConnection.ts index f6d565f..0e5f610 100644 --- a/src/common/ClientConnection.ts +++ b/src/common/ClientConnection.ts @@ -903,6 +903,22 @@ export default class ClientConnection { ); } + public async wakeUpDevice() { + return await this.doRpc( + new Protocol.SetDevicePowerRequestEntity( + Protocol.SetDevicePowerRequestEntity.kPowerStatePowerOn + ) + ); + } + + public async deviceStandByMode() { + return await this.doRpc( + new Protocol.SetDevicePowerRequestEntity( + Protocol.SetDevicePowerRequestEntity.kPowerStateStandBy + ) + ); + } + public setEdgeBlendingPoint(point: EdgeBlendingPoint) { this.ws?.send( JSON.stringify(new Protocol.SetEdgeBlendingPointRequestEntity(point)) diff --git a/src/entities/ExternalControlTableEntity.ts b/src/entities/ExternalControlTableEntity.ts new file mode 100644 index 0000000..a31c149 --- /dev/null +++ b/src/entities/ExternalControlTableEntity.ts @@ -0,0 +1,8 @@ +import BaseEntity from "./BaseEntity"; + +export class ExternalControlTableEntity extends BaseEntity { + name = ""; + command = ""; + icon = ""; + number = 0; +} diff --git a/src/entities/SerialPortConfigEntity.ts b/src/entities/SerialPortConfigEntity.ts new file mode 100644 index 0000000..650170e --- /dev/null +++ b/src/entities/SerialPortConfigEntity.ts @@ -0,0 +1,106 @@ +export enum ESerialPortParity { + None = 0, + Odd, + Even, +} + +export const kSerialPortParityMap = new Map([ + [ESerialPortParity.None, "ESerialPortParity.None"], + [ESerialPortParity.Odd, "ESerialPortParity.Odd"], + [ESerialPortParity.Even, "ESerialPortParity.Even"], +]); + +export class ESerialPortParityHelper { + toString(e: ESerialPortParity) { + if (kSerialPortParityMap.has(e)) { + return kSerialPortParityMap.get(e); + } + return "ESerialPortParity.None"; + } + + fromString(str: string) { + let ret = ESerialPortParity.None; + for (const item of kSerialPortParityMap.entries()) { + if (item && item[1] == str) { + ret = item[0]; + break; + } + } + return ret; + } +} + +export enum ESerialPortStopBits { + One = 0, + OnePointFive, + Two, +} + +export const kSerialPortStopBitsMap = new Map([ + [ESerialPortStopBits.One, "ESerialPortStopBits.One"], + [ESerialPortStopBits.OnePointFive, "ESerialPortStopBits.OnePointFive"], + [ESerialPortStopBits.Two, "ESerialPortStopBits.Two"], +]); + +export class ESerialPortStopBitsHelper { + toString(e: ESerialPortStopBits) { + if (kSerialPortStopBitsMap.has(e)) { + return kSerialPortStopBitsMap.get(e); + } + return "ESerialPortStopBits.One"; + } + + fromString(str: string) { + let ret = ESerialPortStopBits.One; + for (const item of kSerialPortStopBitsMap.entries()) { + if (item && item[1] == str) { + ret = item[0]; + break; + } + } + return ret; + } +} + +export enum ESerialPortFlowControl { + None = 0, + Software, + Hardware, +} + +export const kSerialPortFlowControlMap = new Map< + ESerialPortFlowControl, + string +>([ + [ESerialPortFlowControl.None, "ESerialPortFlowControl.None"], + [ESerialPortFlowControl.Software, "ESerialPortFlowControl.Software"], + [ESerialPortFlowControl.Hardware, "ESerialPortFlowControl.Hardware"], +]); + +export class ESerialPortFlowControlHelper { + toString(e: ESerialPortFlowControl) { + if (kSerialPortFlowControlMap.has(e)) { + return kSerialPortFlowControlMap.get(e); + } + return "ESerialPortStopBits.One"; + } + + fromString(str: string) { + let ret = ESerialPortFlowControl.None; + for (const item of kSerialPortFlowControlMap.entries()) { + if (item && item[1] == str) { + ret = item[0]; + break; + } + } + return ret; + } +} + +export class SerialPortConfigEntity { + baud_rate = 9600; + character_size = 8; + parity: ESerialPortParity = ESerialPortParity.None; + stop_bits: ESerialPortStopBits = ESerialPortStopBits.One; + flow_control: ESerialPortFlowControl = ESerialPortFlowControl.None; +} diff --git a/src/entities/WSProtocol.ts b/src/entities/WSProtocol.ts index daf7df9..b939e75 100644 --- a/src/entities/WSProtocol.ts +++ b/src/entities/WSProtocol.ts @@ -6,6 +6,8 @@ import { PlanEntity } from "./PlanEntity"; import SubtitleEntity from "./SubtitleEntity"; import { PollingEntity, PollingGroupEntity } from "./PollingEntity"; import { EdgeBlendingPoint } from "./EdgeBlendingEntities"; +import { ExternalControlTableEntity } from "./ExternalControlTableEntity"; +import { SerialPortConfigEntity } from "./SerialPortConfigEntity"; export namespace Protocol { export class Commands { @@ -354,6 +356,29 @@ export namespace Protocol { return Commands.PROTOCOL_PREFIX + "RpcFileOperator"; } + public static get kRpcGetExternalControlDatas() { + return Commands.PROTOCOL_PREFIX + "RpcGetExternalControlDatas"; + } + + public static get kRpcDeleteExternalControlData() { + return Commands.PROTOCOL_PREFIX + "RpcDeleteExternalControlData"; + } + public static get kRpcEditExternalControlData() { + return Commands.PROTOCOL_PREFIX + "RpcEditExternalControlData"; + } + public static get kRpcAddExternalControlData() { + return Commands.PROTOCOL_PREFIX + "RpcAddExternalControlData"; + } + public static get kCallExternalControlData() { + return Commands.PROTOCOL_PREFIX + "CallExternalControlData"; + } + public static get kRpcGetExternalControlSerialPortConfig() { + return Commands.PROTOCOL_PREFIX + "RpcGetExternalControlSerialPortConfig"; + } + public static get kRpcSetExternalControlSerialPortConfig() { + return Commands.PROTOCOL_PREFIX + "RpcSetExternalControlSerialPortConfig"; + } + static _all_commands = new Set([ Commands.kUnKnowCommand, Commands.kSearchDevice, @@ -441,6 +466,13 @@ export namespace Protocol { Commands.kSetEdgeBlendingPoint, Commands.kRpcSetDevicePowerMode, Commands.kRpcFileOperator, + Commands.kRpcGetExternalControlDatas, + Commands.kRpcDeleteExternalControlData, + Commands.kRpcEditExternalControlData, + Commands.kRpcAddExternalControlData, + Commands.kCallExternalControlData, + Commands.kRpcGetExternalControlSerialPortConfig, + Commands.kRpcSetExternalControlSerialPortConfig, ]); public static get AllCommands() { @@ -2171,4 +2203,196 @@ export namespace Protocol { this.command = Commands.kRpcFileOperator; } } + + export class SetDevicePowerRequestEntity extends PacketEntity { + power_state: string; + + static kPowerStatePowerOn = "POWER_ON"; + static kPowerStatePowerOff = "POWER_OFF"; + static kPowerStateStandBy = "STAND_BY"; + constructor(power_state: string, rpcid?: number) { + super(); + this.rpc_id = rpcid ?? 0; + this.command = Commands.kRpcSetDevicePowerMode; + this.power_state = power_state; + } + } + + export class SetDevicePowerResponseEntity extends PacketEntity { + success = true; + + constructor() { + super(); + this.command = Commands.kRpcSetDevicePowerMode; + } + } + + export class RpcGetExternalControlDatasRequestEntity extends PacketEntity { + constructor(rpc_id = 0) { + super(); + super.command = Commands.kRpcGetExternalControlDatas; + super.flag = PacketEntity.FLAG_REQUEST; + super.rpc_id = rpc_id; + } + + timestamp = 0; + } + + export class RpcGetExternalControlDatasResponseEntity extends PacketEntity { + constructor() { + super(); + super.flag = PacketEntity.FLAG_RESPONSE; + } + + datas: ExternalControlTableEntity[] = []; + } + + export class RpcDeleteExternalControlDataRequestEntity extends PacketEntity { + constructor(rpc_id = 0) { + super(); + super.command = Commands.kRpcDeleteExternalControlData; + super.flag = PacketEntity.FLAG_REQUEST; + super.rpc_id = rpc_id; + } + + uuid = ""; + } + + export class RpcDeleteExternalControlDataResponseEntity extends PacketEntity { + constructor() { + super(); + super.flag = PacketEntity.FLAG_RESPONSE; + } + RpcDeleteExternalControlDataResponseEntity() {} + + success = false; + } + + export class ExternalControlDataDeleteNotifyEntity extends PacketEntity { + constructor() { + super(); + super.command = Commands.kRpcDeleteExternalControlData; + super.flag = PacketEntity.FLAG_NOTIFY; + super.rpc_id = 0; + } + + uuid = ""; + } + + export class RpcEditExternalControlDataRequestEntity extends PacketEntity { + constructor(rpc_id = 0) { + super(); + super.command = Commands.kRpcEditExternalControlData; + super.flag = PacketEntity.FLAG_REQUEST; + super.rpc_id = rpc_id; + } + + entity: ExternalControlTableEntity = new ExternalControlTableEntity(); + } + + export class RpcEditExternalControlDataResponseEntity extends PacketEntity { + constructor() { + super(); + super.flag = PacketEntity.FLAG_RESPONSE; + } + RpcEditExternalControlDataResponseEntity() {} + + success = false; + } + + export class ExternalControlDataEditNotifyEntity extends PacketEntity { + constructor() { + super(); + super.command = Commands.kRpcDeleteExternalControlData; + super.flag = PacketEntity.FLAG_NOTIFY; + super.rpc_id = 0; + } + + entity = new ExternalControlTableEntity(); + } + + export class RpcAddExternalControlDataRequestEntity extends PacketEntity { + constructor(rpc_id = 0) { + super(); + super.command = Commands.kRpcAddExternalControlData; + super.flag = PacketEntity.FLAG_REQUEST; + super.rpc_id = rpc_id; + } + + entity = new ExternalControlTableEntity(); + } + + export class RpcAddExternalControlDataResponseEntity extends PacketEntity { + constructor() { + super(); + super.flag = PacketEntity.FLAG_RESPONSE; + } + RpcAddExternalControlDataResponseEntity() {} + + success = false; + } + + export class ExternalControlDataAddNotifyEntity extends PacketEntity { + constructor() { + super(); + super.command = Commands.kRpcDeleteExternalControlData; + super.flag = PacketEntity.FLAG_NOTIFY; + super.rpc_id = 0; + } + + entity = new ExternalControlTableEntity(); + } + + export class CallExternalControlDataRequestEntity extends PacketEntity { + constructor(rpc_id = 0) { + super(); + super.command = Commands.kCallExternalControlData; + super.flag = PacketEntity.FLAG_REQUEST; + super.rpc_id = rpc_id; + } + + uuid = ""; + } + + export class RpcGetExternalControlSerialPortConfigRequestEntity extends PacketEntity { + constructor(rpc_id = 0) { + super(); + super.command = Commands.kRpcGetExternalControlSerialPortConfig; + super.flag = PacketEntity.FLAG_REQUEST; + super.rpc_id = rpc_id; + } + + timestamp = 0; + } + + export class RpcGetExternalControlSerialPortConfigResponseEntity extends PacketEntity { + constructor() { + super(); + super.flag = PacketEntity.FLAG_RESPONSE; + } + RpcGetExternalControlSerialPortConfigResponseEntity() {} + + config = new SerialPortConfigEntity(); + } + + export class RpcSetExternalControlSerialPortConfigRequestEntity extends PacketEntity { + constructor(rpc_id = 0) { + super(); + super.command = Commands.kRpcSetExternalControlSerialPortConfig; + super.flag = PacketEntity.FLAG_REQUEST; + super.rpc_id = rpc_id; + } + + config = new SerialPortConfigEntity(); + } + + export class RpcSetExternalControlSerialPortConfigResponseEntity extends PacketEntity { + constructor() { + super(); + super.flag = PacketEntity.FLAG_RESPONSE; + } + RpcSetExternalControlSerialPortConfigResponseEntity() {} + + success = false; + } } diff --git a/src/i18n/zh-CN/index.ts b/src/i18n/zh-CN/index.ts index 43de30b..d9a8052 100644 --- a/src/i18n/zh-CN/index.ts +++ b/src/i18n/zh-CN/index.ts @@ -437,4 +437,7 @@ export default { "file count": "文件数量", "directoriy count": "文件夹数量", "free space": "剩余空间", + "center contorl": "中控", + "power on": "开机", + "power off": "关机", }; diff --git a/src/pages/TopToolBar.vue b/src/pages/TopToolBar.vue index 9709794..0a16725 100644 --- a/src/pages/TopToolBar.vue +++ b/src/pages/TopToolBar.vue @@ -151,6 +151,36 @@ @click="stopPlan" /> + + + + + + `, }); }, + async powerOff() { + let success = false; + try { + const response = await GlobalData.getInstance() + .getCurrentClient() + ?.deviceStandByMode(); + if (response) { + success = response?.success ?? false; + } + } catch {} + }, + async powerOn() { + let success = false; + try { + const response = await GlobalData.getInstance() + .getCurrentClient() + ?.wakeUpDevice(); + if (response) { + success = response?.success ?? false; + } + } catch {} + }, }; }, });