import { eiotDeviceManagerService } from '../device-manager/eiot-device-manager.service'; import { eiotSessionVarsService } from '../session-vars/eiot-session-vars.service'; class EIoTIOModuleService { ioModuleIdx:number; ioModuleInterface:string; constructor() { this.ioModuleIdx = Number(eiotSessionVarsService.DevMgrComps?.ioModule?.Idx); this.ioModuleInterface = String(eiotSessionVarsService.DevMgrComps?.ioModule?.Interface); } updateParams() { this.ioModuleIdx = Number(eiotSessionVarsService.DevMgrComps?.ioModule?.Idx); this.ioModuleInterface = String(eiotSessionVarsService.DevMgrComps?.ioModule?.Interface); } async tryConnect() { try { const proxy = await eiotDeviceManagerService.getSignalRConn(); this.updateParams() await new Promise((resolve, reject) => { proxy.invoke('IOModule_IsConnected', this.ioModuleIdx, this.ioModuleInterface).done((res:any) => { if(res) { resolve(true); } else { proxy.off('onIOModuleConnected_Event'); proxy.on('onIOModuleConnected_Event',function(evt:any) { resolve(true); }); proxy.off('onIOModuleConnectedError_Event'); proxy.on('onIOModuleConnectedError_Event',function(evt:any) { reject(evt.Payload); }); proxy.invoke('IOModule_Connect', this.ioModuleIdx, this.ioModuleInterface).done(() => undefined).fail((err:any) => { console.error(JSON.stringify(err)); console.log("Failed to invoke method on IOModule_Connect"); reject(err); }); } }).fail((err:any) => { console.error(JSON.stringify(err)); console.log("Failed to invoke method on IOModule_IsConnected"); reject(err); }); }) } catch (err) { console.error(JSON.stringify(err)); } } async setButtonInputListener(cb:any) { const proxy = await eiotDeviceManagerService.getSignalRConn(); this.updateParams() proxy.off('onIOModuleResponse_Event'); proxy.on('onIOModuleResponse_Event',function(evt:any) { if(evt.Payload.Response === "off"){ cb(evt.Payload.IOPoint) } }); } async removeButtonInputListener() { const proxy = await eiotDeviceManagerService.getSignalRConn(); await new Promise((resolve) => { proxy.off('onIOModuleResponse_Event'); resolve(true); }) } } export const eiotIoModuleService = new EIoTIOModuleService()