Files
cms_thermo_active/Step/Controllers/SignalR/NcHub.cs
T
Lucio Maranta bfc8bc8451 Fix sofkey config and name
Added refresh alarm
2018-03-15 17:27:43 +01:00

167 lines
5.4 KiB
C#

using Microsoft.AspNet.SignalR;
using Step.NC;
using System.Collections.Generic;
using System.Threading.Tasks;
using TeamDev.SDK.MVVM;
using static CMS_CORE_Library.DataStructures;
using static Step.Config.ServerConfig;
using static Step.Model.Constants;
namespace Step.Controllers.SignalR
{
// [SignalRAuthorize(FunctionAccess = "functionAccess", Action = ACTIONS.READ)]
public class NcHub : Hub
{
public static List<string> ConnectedClients = new List<string>();
public static bool NewConnectedClients = false;
public override Task OnConnected()
{
Groups.Add(Context.ConnectionId, "ncData");
NewConnectedClients = true;
ConnectedClients.Add(Context.ConnectionId);
var result = base.OnConnected();
// Resends data to all the clients
MessageServices.Current.Publish(BROADCAST_DATA);
return result;
}
public override Task OnReconnected()
{
Groups.Add(Context.ConnectionId, "ncData");
NewConnectedClients = true;
ConnectedClients.Add(Context.ConnectionId);
var result = base.OnReconnected();
// Resends data to all the clients
MessageServices.Current.Publish(BROADCAST_DATA);
return result;
}
public override Task OnDisconnected(bool stopCalled)
{
Groups.Remove(Context.ConnectionId, "ncData");
ConnectedClients.Remove(Context.ConnectionId);
return base.OnDisconnected(stopCalled);
}
public void PutPowerOnData(uint id)
{
using (NcHandler ncHandler = new NcHandler())
{
ncHandler.Connect();
ncHandler.PutPowerOnData(id);
}
}
// [SignalRAuthorize(FunctionAccess = "functionAccess", Action = ACTIONS.READ)]
public void RefreshAllAlarms()
{
using (NcHandler ncHandler = new NcHandler())
{
ncHandler.Connect();
ncHandler.RefreshAllAlarms();
}
MessageServices.Current.Publish(SHOW_MSG_UI, null, "Refresh All Alarms.");
}
public void RefreshAlarm(uint id)
{
using (NcHandler ncHandler = new NcHandler())
{
CmsError libraryError = ncHandler.Connect();
if (libraryError.IsError())
throw new HubException(libraryError.message);
libraryError = ncHandler.numericalControl.PLC_WRefreshMessage(id);
if (libraryError.IsError())
throw new HubException(libraryError.message);
}
MessageServices.Current.Publish(SHOW_MSG_UI, null, "Refresh Single Alarm. ID: " + id);
}
public void RecoveryProcedure(string id)
{
MessageServices.Current.Publish(SHOW_MSG_UI, null, "Recovery Alarm. ID: " + id);
}
public void UserSoftKeyClicked(int id)
{
using (NcHandler ncHandler = new NcHandler())
{
ncHandler.Connect();
foreach (var softKey in SoftKeysConfig)
{
// Check softKey type
if (softKey.Type == SOFTKEY_TYPE.GROUP)
{
// Find in the subkeys
foreach (var subkey in softKey.SubKeys)
{
if (subkey.Id == id)
{
// Write click button
ncHandler.PutSoftKeyValue((uint)softKey.PlcId);
break;
}
}
}
else
{
if (softKey.Id == id)
{
// Write click button
ncHandler.PutSoftKeyValue((uint)softKey.PlcId);
break;
}
}
}
}
}
public void SelectProcess(ushort procNumber)
{
using (NcHandler ncHandler = new NcHandler())
{
CmsError libraryError = ncHandler.Connect();
if (libraryError.IsError())
throw new HubException(libraryError.message);
libraryError = ncHandler.PutSelectProcess(procNumber);
if (libraryError.IsError())
throw new HubException(libraryError.message);
}
}
public void AddOverride(uint id)
{
using (NcHandler ncHandler = new NcHandler())
{
CmsError libraryError = ncHandler.Connect();
if (libraryError.IsError())
throw new HubException(libraryError.message);
libraryError = ncHandler.PutOverride(id, "plus");
}
}
public void SubOverride(uint id)
{
using (NcHandler ncHandler = new NcHandler())
{
CmsError libraryError = ncHandler.Connect();
if (libraryError.IsError())
throw new HubException(libraryError.message);
libraryError = ncHandler.PutOverride(id, "minus");
}
}
}
}