remote update
This commit is contained in:
+128
@@ -39,6 +39,7 @@ namespace SafeBagDE70
|
||||
public static int TenantId = 0;
|
||||
public static bool IsInternetOk = false;
|
||||
static Task? resendTask = null;
|
||||
static Task? commandTask = null;
|
||||
public static DeviceStatus? _DeviceStatus = null;
|
||||
public static DeviceStatus? DeviceStatus
|
||||
{
|
||||
@@ -315,6 +316,133 @@ namespace SafeBagDE70
|
||||
Log.Error($"Resend could not start IsInTransaction: {AppData.IsInTransaction} IsInternetOk: {AppData.IsInternetOk}");
|
||||
}
|
||||
}
|
||||
public static void GetandExecuteCommands()
|
||||
{
|
||||
if (IsInternetOk && (commandTask == null || commandTask.IsCompleted))
|
||||
{
|
||||
commandTask = Task.Run(async () =>
|
||||
{
|
||||
try
|
||||
{
|
||||
var commands= await APIModels.GetCommands();
|
||||
if(commands != null && commands.Count()>0)
|
||||
{
|
||||
foreach (var command in commands)
|
||||
{
|
||||
bool bResult = false;
|
||||
switch(command.CommandCode)
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
Log.Information("Remote Reset CDM Error");
|
||||
//Restart CDM
|
||||
bResult=ResetCDMError();
|
||||
break;
|
||||
case 2:
|
||||
Log.Information("Remote Reset CDM Counter");
|
||||
bResult = ResetCDMCounter();
|
||||
if (!bResult)
|
||||
{
|
||||
bResult = ResetCDMCounter();
|
||||
}
|
||||
break;
|
||||
}
|
||||
//
|
||||
await APIModels.UpdateDeviceCommand(command.Id, bResult?1:-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Fatal(ex, "GetandExecuteCommands failed");
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
var str = "";
|
||||
if (commandTask != null && !commandTask.IsCompleted)
|
||||
str += "Previous command state are running; ";
|
||||
if (!IsInternetOk)
|
||||
str += "No Internet Connection";
|
||||
Log.Error("GetandExecuteCommands error: "+str);
|
||||
}
|
||||
}
|
||||
public static bool ResetCDMCounter()
|
||||
{
|
||||
bool bResetOk = false;
|
||||
if (AppData.cCmdRsp != null)
|
||||
{
|
||||
Log.Information("[ADMIN] reset counter");
|
||||
CCmdRsp cCmdRsp = AppData.cCmdRsp;
|
||||
cCmdRsp.SendDeSense();
|
||||
Thread.Sleep(1000);
|
||||
cCmdRsp.SendXXCmd((byte)Command.CMD_DE_UNLOCK);
|
||||
Thread.Sleep(1000);
|
||||
cCmdRsp.SendDeSense();
|
||||
Thread.Sleep(1000);
|
||||
//Event fix
|
||||
var recvData = cCmdRsp.recv_dat;
|
||||
|
||||
if (recvData.dat[14] == recvData.dat[16])
|
||||
{
|
||||
cCmdRsp.SendLock();
|
||||
}
|
||||
else
|
||||
{
|
||||
cCmdRsp.SendEventFix(recvData.dat[16]);
|
||||
cCmdRsp.SendLock();
|
||||
}
|
||||
|
||||
var currentMode = cCmdRsp.GetLockParam().mode;
|
||||
cCmdRsp.GetLockParam().mode = Mode.MODE_COLLECTION;
|
||||
cCmdRsp.SendLock();
|
||||
Thread.Sleep(10000);
|
||||
cCmdRsp.SendDeSense();
|
||||
Thread.Sleep(1000);
|
||||
recvData = cCmdRsp.recv_dat;
|
||||
|
||||
if (recvData.dat[14] != recvData.dat[16])
|
||||
{
|
||||
AppData.GetCassetteData();
|
||||
bResetOk = true;
|
||||
}
|
||||
}
|
||||
return bResetOk;
|
||||
}
|
||||
public static bool ResetCDMError()
|
||||
{
|
||||
var cCmdRsp = AppData.cCmdRsp;
|
||||
bool bSuccess = false;
|
||||
if(cCmdRsp!=null && cCmdRsp.recv_dat!=null)
|
||||
{
|
||||
if(cCmdRsp.recv_dat.dat[1] == 0x1C && cCmdRsp.recv_dat.dat[2] == 0x4A)
|
||||
{
|
||||
cCmdRsp.SendXXCmd((byte)Command.CMD_DE_SENSE);
|
||||
|
||||
var recvData = cCmdRsp.recv_dat;
|
||||
|
||||
if (recvData.dat[14] == recvData.dat[16])
|
||||
{
|
||||
cCmdRsp.SendLock();
|
||||
}
|
||||
else
|
||||
{
|
||||
cCmdRsp.SendEventFix(recvData.dat[16]);
|
||||
}
|
||||
Thread.Sleep(1000);
|
||||
cCmdRsp.SendXXCmd((byte)Command.CMD_DE_RESET);
|
||||
Thread.Sleep(2000);
|
||||
cCmdRsp.SendXXCmd((byte)Command.CMD_DE_SENSE);
|
||||
if (cCmdRsp.recv_dat.dat[1] == 0x04 && cCmdRsp.recv_dat.dat[2] == 0x41)
|
||||
{
|
||||
bSuccess = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return bSuccess;
|
||||
}
|
||||
|
||||
}
|
||||
public class CustomerAccount
|
||||
|
||||
Reference in New Issue
Block a user