soms alarm
This commit is contained in:
parent
54ec2e1084
commit
ac283fdb0e
15 changed files with 328 additions and 252 deletions
|
|
@ -608,7 +608,7 @@ int EpdBase::Epd2U::ConnectAndStatus(int tokenSourceTimeoutms)
|
|||
{
|
||||
WORD dllStatus;
|
||||
int rv = 1;
|
||||
if (CommsInitialized == 0) StartCom();
|
||||
if (CommsInitialized == 0) StartCom();
|
||||
if (CommsInitialized == 0) rv = 1;
|
||||
else {
|
||||
dllStatus = StartDiscover(tokenSourceTimeoutms);
|
||||
|
|
|
|||
|
|
@ -16,18 +16,25 @@ void WINAPI discovery(CommsHandle hComms, DiscoveryId const discovered[], int32_
|
|||
{
|
||||
if (count > 0)
|
||||
{
|
||||
memcpy(¤t->Epd, &discovered[0], sizeof(DiscoveryId));
|
||||
current->CurrentDeviceID = discovered[0].Id;
|
||||
current->DeviceCount = count;
|
||||
memcpy(¤t->Epd, &discovered[0], sizeof(DiscoveryId));
|
||||
SetEvent(current->hCompletion);
|
||||
current->isMK3 = (current->Epd.Gen == EpdGeneration::Mk3);
|
||||
current->EpdID = current->Epd.Id;
|
||||
}
|
||||
}
|
||||
|
||||
void WINAPI connectcallback(CommsHandle hComms, DiscoveryId ID)
|
||||
{
|
||||
current->isConnected = 1;
|
||||
current->CurrentDeviceID = ID.Id;
|
||||
current->DeviceCount = 1;
|
||||
}
|
||||
|
||||
void WINAPI disconnectcallback(CommsHandle hComms, DiscoveryId ID)
|
||||
{
|
||||
current->EpdID = 0;
|
||||
current->isConnected = 0;
|
||||
current->CurrentDeviceID = 0;
|
||||
current->DeviceCount = 0;
|
||||
SetEvent(current->hCompletion);
|
||||
|
|
@ -38,7 +45,7 @@ Epd3Base::Epd3U::Epd3U(int _comport)
|
|||
port = _comport;
|
||||
comPort[3] = 48 + _comport;
|
||||
CommsInitialized = 0;
|
||||
epdComsHandle = INVALID_HANDLE_VALUE;
|
||||
epdComsHandle = nullptr;
|
||||
isBG = isNG = VersionOK = 0;
|
||||
Error = 123;
|
||||
current = this;
|
||||
|
|
@ -64,8 +71,10 @@ Epd3Base::Epd3U::Epd3U(int _comport)
|
|||
ErrorStatus = (FaultStatusFlags)0;
|
||||
IssueCount = OtherAlarms = EEPROMBadSectors = 0;
|
||||
RealTime = EpdClock = OffTime = EpdID = 0;
|
||||
EPDFaulty = false;
|
||||
hasAlarm = hasFault = 0;
|
||||
ErrorSource = ErrorReason = ErrorData = 0;
|
||||
HardVersion = HardVersionMinor= SoftVersion = FunctionFlags = 0;
|
||||
HardVersion = HardVersionMinor = SoftVersion = FunctionFlags = 0;
|
||||
|
||||
K1 = K2 = K3 = K4 = K4 = K6 = 0.0F;
|
||||
HG = SG = BC = FB = 0;
|
||||
|
|
@ -90,28 +99,60 @@ Epd3Base::Epd3U::Epd3U(int _comport)
|
|||
Epd3Base::Epd3U::~Epd3U()
|
||||
{
|
||||
EndCom();
|
||||
if (hCompletion != 0) { CloseHandle(hCompletion); hCompletion = 0; }
|
||||
if (hCompletion != 0) { CloseHandle(hCompletion); hCompletion = 0; }
|
||||
//if (hWaitTimer != 0) { CloseHandle(hWaitTimer); hWaitTimer = 0; }
|
||||
}
|
||||
|
||||
DWORD Epd3Base::Epd3U::StartCom()
|
||||
{
|
||||
ErrorReason = 0;
|
||||
ConnectRetries = 0;
|
||||
int step = 1;
|
||||
int mx = 10;
|
||||
epdComsHandle = INVALID_HANDLE_VALUE;
|
||||
|
||||
epdComsHandle = nullptr;
|
||||
if (port == 0) {
|
||||
CommsInitialized = 1;
|
||||
return 1;
|
||||
}
|
||||
if (CommsInitialized == 0) {
|
||||
|
||||
if (CommsInitialized == 0 || epdComsHandle == nullptr) {
|
||||
step = 2;
|
||||
epdComsHandle = CreateReaderInterface();
|
||||
Dll3RV = OpenReader(epdComsHandle, comPort);
|
||||
if (Dll3RV == 0)
|
||||
{
|
||||
Dll3RV = SetMultipleDiscoveryMode(epdComsHandle, false);
|
||||
CommsInitialized = 1;
|
||||
if (epdComsHandle == nullptr) {
|
||||
++ConnectRetries;
|
||||
step = 3;
|
||||
Sleep(100);
|
||||
epdComsHandle = CreateReaderInterface(); //try again;
|
||||
}
|
||||
if (epdComsHandle != nullptr) {
|
||||
step = 4;
|
||||
Dll3RV = OpenReader(epdComsHandle, comPort); //-6 = r_OperationFailed
|
||||
if (Dll3RV) { //retry
|
||||
++ConnectRetries;
|
||||
step = 5;
|
||||
Sleep(100);
|
||||
Dll3RV = OpenReader(epdComsHandle, comPort);
|
||||
}
|
||||
if (Dll3RV == 0)
|
||||
{
|
||||
step = 7;
|
||||
CommsInitialized = 1;
|
||||
Dll3RV = SetMultipleDiscoveryMode(epdComsHandle, false);
|
||||
Dll3RV = SetResponseTimeout(epdComsHandle, 1000);
|
||||
//Dll3RV = GetRetryCount(epdComsHandle, &retries); = 3
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
Dll3RV = r_FunctionFail;
|
||||
}
|
||||
}
|
||||
if (Dll3RV) goto error;
|
||||
return Dll3RV;
|
||||
error:
|
||||
ErrorStep = step;
|
||||
Error = Dll3RV;
|
||||
return Dll3RV;
|
||||
}
|
||||
|
||||
|
|
@ -120,7 +161,7 @@ void Epd3Base::Epd3U::EndCom()
|
|||
int rv;
|
||||
if (CommsInitialized == 1 || CurrentDeviceID != 0) {
|
||||
if (CommsInitialized == 1) {
|
||||
if (epdComsHandle != INVALID_HANDLE_VALUE) {
|
||||
if (epdComsHandle != nullptr) {
|
||||
DisCon(0);
|
||||
Dll3RV = CloseReader(epdComsHandle);
|
||||
if (Dll3RV) {
|
||||
|
|
@ -135,7 +176,7 @@ void Epd3Base::Epd3U::EndCom()
|
|||
Epd.Id = 0;
|
||||
CurrentDeviceID = 0;
|
||||
CommsInitialized = 0;
|
||||
epdComsHandle = INVALID_HANDLE_VALUE;
|
||||
epdComsHandle = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -146,38 +187,42 @@ void Epd3Base::Epd3U::EndCom()
|
|||
/// <returns>rv=1 ,ook bij timeout <>1 voor error</returns>
|
||||
int Epd3Base::Epd3U::StartDiscover(int tokentimeout)
|
||||
{
|
||||
int32_t rv=1;
|
||||
int32_t rv = 1;
|
||||
int32_t rv2 = 0;
|
||||
Error = 0;
|
||||
if (port == 0) {
|
||||
DeviceCount = 1;
|
||||
isBG = 1;
|
||||
isBG = 1;
|
||||
DeviceIDs[0] = 768;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
current = this;
|
||||
Dll3RV = SetDiscoveryCacheTimeout(epdComsHandle, tokentimeout);
|
||||
//Dll3RV = Commit3(epdComsHandle);
|
||||
DeviceCount = 0; ConnectTries = 1;
|
||||
//rv2 = Cancel(epdComsHandle); Cancel bestaat niet
|
||||
DeviceCount = 0;
|
||||
ResetEvent(hCompletion);
|
||||
ConnectTimerFired = 0;
|
||||
current = this;
|
||||
isConnected = 0;
|
||||
|
||||
Dll3RV = StartDiscovery(epdComsHandle, discovery);
|
||||
if (Dll3RV == 0) {
|
||||
Dll3RV = WaitForSingleObject(hCompletion, tokentimeout);
|
||||
if (Dll3RV == WAIT_OBJECT_0) rv = 1;
|
||||
else if (Dll3RV == WAIT_TIMEOUT) {
|
||||
rv = 1; ConnectTimerFired = 1;
|
||||
rv2= StopDiscovery(epdComsHandle);
|
||||
DeviceCount = 0;
|
||||
} else rv = 2;
|
||||
Dll3RV = WaitForSingleObject(hCompletion, tokentimeout);
|
||||
if (Dll3RV == WAIT_OBJECT_0) rv = 1;
|
||||
else if (Dll3RV == WAIT_TIMEOUT) {
|
||||
rv = 1;
|
||||
ConnectTimerFired = 1;
|
||||
rv2 = StopDiscovery(epdComsHandle);
|
||||
DeviceCount = 0;
|
||||
}
|
||||
else rv = 2;
|
||||
}
|
||||
if ( DeviceCount > 0) {
|
||||
if (DeviceCount > 0) {
|
||||
Dll3RV = SetConnectCallback(epdComsHandle, connectcallback);
|
||||
Dll3RV = Connect3(epdComsHandle, Epd, true);
|
||||
if (Dll3RV != 0) rv = 2;
|
||||
else Dll3RV = SetDisconnectCallback(epdComsHandle, disconnectcallback);
|
||||
if (Dll3RV != 0) rv = 2;
|
||||
else {
|
||||
Dll3RV = SetDisconnectCallback(epdComsHandle, disconnectcallback);
|
||||
}
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
|
@ -185,7 +230,7 @@ int Epd3Base::Epd3U::StartDiscover(int tokentimeout)
|
|||
int Epd3Base::Epd3U::OpenDev(DiscoveryId DeviceID)
|
||||
{
|
||||
CurrentDeviceID = DeviceID.Id;
|
||||
if (epdComsHandle != INVALID_HANDLE_VALUE)
|
||||
if (epdComsHandle != nullptr)
|
||||
{
|
||||
Dll3RV = Connect3(epdComsHandle, DeviceID, true);
|
||||
}
|
||||
|
|
@ -195,12 +240,13 @@ int Epd3Base::Epd3U::OpenDev(DiscoveryId DeviceID)
|
|||
|
||||
int Epd3Base::Epd3U::ReOpenDev()
|
||||
{
|
||||
if (epdComsHandle != INVALID_HANDLE_VALUE)
|
||||
if (epdComsHandle != nullptr)
|
||||
{
|
||||
Dll3RV = Connect3(epdComsHandle, Epd, true);
|
||||
}
|
||||
else {
|
||||
Dll3RV = r_InvalidCommsHandle; } //no handle ..
|
||||
else {
|
||||
Dll3RV = r_InvalidCommsHandle;
|
||||
} //no handle ..
|
||||
return Dll3RV;
|
||||
}
|
||||
|
||||
|
|
@ -219,17 +265,17 @@ int Epd3Base::Epd3U::DisCon(UINT16 alarm)
|
|||
Dll3RV = Disconnect(epdComsHandle);
|
||||
|
||||
if (Dll3RV) { rv = Dll3RV; goto error; }
|
||||
|
||||
|
||||
step = 2;
|
||||
Dll3RV = WaitForSingleObject(hCompletion, 3000);
|
||||
switch (Dll3RV) {
|
||||
case WAIT_OBJECT_0: rv = 0; break;
|
||||
case WAIT_TIMEOUT:
|
||||
rv = 0;
|
||||
current->CurrentDeviceID = 0;
|
||||
current->DeviceCount = 0;
|
||||
break;
|
||||
default: rv = 3; break;
|
||||
case WAIT_OBJECT_0: rv = 0; break;
|
||||
case WAIT_TIMEOUT:
|
||||
rv = 0;
|
||||
current->CurrentDeviceID = 0;
|
||||
current->DeviceCount = 0;
|
||||
break;
|
||||
default: rv = 3; break;
|
||||
}
|
||||
}
|
||||
return rv;
|
||||
|
|
@ -239,12 +285,12 @@ error:
|
|||
|
||||
void Epd3Base::Epd3U::CloseDev(bool CloseAll)
|
||||
{
|
||||
if (epdComsHandle != INVALID_HANDLE_VALUE) {
|
||||
if (epdComsHandle != nullptr) {
|
||||
DisCon(0);
|
||||
if (CloseAll) {
|
||||
CloseReader(epdComsHandle);
|
||||
DestroyReaderInterface(epdComsHandle);
|
||||
epdComsHandle = INVALID_HANDLE_VALUE;
|
||||
epdComsHandle = nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -280,9 +326,9 @@ void Epd3Base::Epd3U::DecodeStatus()
|
|||
EPDIssued = checkStatus(epd3status.OperatingStatus, OpStatusFlags::EpdIssued);
|
||||
EPDLocked = checkStatus(epd3status.OperatingStatus, OpStatusFlags::GainAdjustable);
|
||||
EPDTesting = checkStatus(epd3status.OperatingStatus, OpStatusFlags::DetectorTestRequested);
|
||||
EPDFaulty = checkStatus(epd3status.FaultStatus, FaultStatusFlags::EpdFaulty);
|
||||
|
||||
EPDNewFault = checkStatus(epd3status.FaultStatus, FaultStatusFlags::EpdFaulty);
|
||||
EPDFaulty = checkStatus(epd3status.FaultStatus, FaultStatusFlags::EpdFaulty);
|
||||
EPDNewFault = checkStatus(epd3status.FaultStatus, FaultStatusFlags::ErrorLogged);
|
||||
EPDComFault = checkStatus(epd3status.FaultStatus, FaultStatusFlags::EarlyCommsTermination);
|
||||
EPDCalFault = checkStatus(epd3status.FaultStatus, FaultStatusFlags::NotCalibrated);
|
||||
EPDDetFault = checkStatus(epd3status.FaultStatus, FaultStatusFlags::DetectorTestFail);
|
||||
|
|
@ -300,7 +346,7 @@ void Epd3Base::Epd3U::DecodeStatus()
|
|||
eDosDose07Alarm = checkStatus(status, DoseAlarmFlags::DoseAlarm);
|
||||
eDosRate07Warning = checkStatus(status, DoseAlarmFlags::LatchedRateWarning) | checkStatus(status, DoseAlarmFlags::RateWarning);
|
||||
eDosRate07Alarm = checkStatus(status, DoseAlarmFlags::LatchedRateAlarm) | checkStatus(status, DoseAlarmFlags::RateAlarm);
|
||||
AlarmDoseHP07N = checkStatus(status, DoseAlarmFlags::DoseAlarm) ;
|
||||
AlarmDoseHP07N = checkStatus(status, DoseAlarmFlags::DoseAlarm);
|
||||
AlarmRateHP07N = checkStatus(status, DoseAlarmFlags::RateAlarm) | checkStatus(status, DoseAlarmFlags::LatchedRateAlarm);
|
||||
break;
|
||||
case MeasurementId::Meas_Hp10:
|
||||
|
|
@ -316,18 +362,17 @@ void Epd3Base::Epd3U::DecodeStatus()
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
OtherAlarmReturn = checkStatus(epd3status.AlarmStatus, AlarmStatusFlags::ReturnForRead);
|
||||
OtherAlarmBatLow = checkStatus(epd3status.AlarmStatus, AlarmStatusFlags::LowBattery);
|
||||
OtherAlarmCarrier = checkStatus(epd3status.AlarmStatus, AlarmStatusFlags::TelemetryAlert);
|
||||
OtherAlarmBatVolt = checkStatus(epd3status.AlarmStatus, AlarmStatusFlags::LowBattery);
|
||||
|
||||
|
||||
eDosDoseAlarm = eDosDose10Alarm || eDosDose07Alarm || checkStatus(epd3status.AlarmStatus, AlarmStatusFlags::DoseAlarm);
|
||||
eDosRateAlarm = eDosRate07Alarm || eDosRate10Alarm || checkStatus(epd3status.AlarmStatus, AlarmStatusFlags::RateAlarm);
|
||||
hasAlarm = eDosDoseAlarm || eDosRateAlarm ;
|
||||
if (hasAlarm) {
|
||||
|
||||
}
|
||||
hasFault = (int)epd3status.FaultStatus != 0;
|
||||
hasAlarm = eDosDoseAlarm || eDosRateAlarm;
|
||||
hasFault = ((uint32_t)epd3status.FaultStatus & ~(uint32_t)FaultStatusFlags::ErrorLogged) != 0;
|
||||
eDosBatteryWarning = OtherAlarmBatLow | OtherAlarmBatVolt;
|
||||
}
|
||||
|
||||
|
|
@ -337,7 +382,7 @@ void Epd3Base::Epd3U::SetTime() //Only R3
|
|||
utc = TimeFunctions::NowToEpdTime(Epd.Gen == EpdGeneration::Mk2);
|
||||
token = BeginWriteRTC_R3(epdComsHandle, utc, nullptr);
|
||||
uint32_t r = Commit3(epdComsHandle);
|
||||
Dll3RV = EndWriteRTC_R3(epdComsHandle, token);
|
||||
if (!r) Dll3RV = EndWriteRTC_R3(epdComsHandle, token);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
|
|
@ -375,14 +420,12 @@ int Epd3Base::Epd3U::ReadStatus()
|
|||
ErrorSource = ErrorReason = ErrorData = 0;
|
||||
HardVersion = HardVersionMinor = SoftVersion = FunctionFlags = 0;
|
||||
|
||||
r = ReOpenDev();
|
||||
|
||||
step = 1;
|
||||
token = BeginReadStatus(epdComsHandle, nullptr);
|
||||
r = Commit3(epdComsHandle);
|
||||
r = EndReadStatus(epdComsHandle, token, &epd3status);
|
||||
if (!r) r = EndReadStatus(epdComsHandle, token, &epd3status);
|
||||
if (r != 0) {
|
||||
Error = GetErrorCode();
|
||||
Error = GetErrorCode();
|
||||
goto error;
|
||||
}
|
||||
|
||||
|
|
@ -396,16 +439,16 @@ int Epd3Base::Epd3U::ReadStatus()
|
|||
uint32_t capabilities;
|
||||
MarkNumber_t MarkNumber;
|
||||
VersionNumber_t VersionNumber;
|
||||
|
||||
|
||||
step = 2;
|
||||
token = BeginReadEpdIdentities(epdComsHandle, nullptr);
|
||||
r = Commit3(epdComsHandle);
|
||||
r = EndReadEpdIdentities(epdComsHandle, token, &EpdID32, (EpdTypes*)&EpdType, &capabilities, &MarkNumber, &VersionNumber, NULL, 0);
|
||||
if (!r) r = EndReadEpdIdentities(epdComsHandle, token, &EpdID32, (EpdTypes*)&EpdType, &capabilities, &MarkNumber, &VersionNumber, NULL, 0);
|
||||
if (r != 0) {
|
||||
Error = GetErrorCode();
|
||||
Error = GetErrorCode();
|
||||
goto error;
|
||||
}
|
||||
|
||||
|
||||
EpdID = EpdID32;
|
||||
isBG = (EpdType == EpdTypes::Mk2BetaGamma || EpdType == EpdTypes::Mk3BetaGamma);
|
||||
isNG = (EpdType == EpdTypes::Mk2Neutron || EpdType == EpdTypes::Mk3Neutron);
|
||||
|
|
@ -413,16 +456,17 @@ int Epd3Base::Epd3U::ReadStatus()
|
|||
HardVersionMinor = MarkNumber.Minor;
|
||||
SoftVersion = VersionNumber.Major;
|
||||
VersionOK = true;
|
||||
|
||||
DecodeStatus(); //Alarm status...
|
||||
|
||||
step = 3;
|
||||
token = BeginReadCounts(epdComsHandle, nullptr, 0, nullptr);
|
||||
r = Commit3(epdComsHandle);
|
||||
r = EndReadCounts(epdComsHandle, token, Counts, MaxCounts, &countsRead, &utc, &seconds);
|
||||
if (!r) r = EndReadCounts(epdComsHandle, token, Counts, MaxCounts, &countsRead, &utc, &seconds);
|
||||
// - 101 = InvalidParam
|
||||
// - 104 = FunctionFail,
|
||||
if (r != 0 && r != -104) {
|
||||
Error = GetErrorCode();
|
||||
Error = GetErrorCode();
|
||||
goto error;
|
||||
}
|
||||
decodeCounters(countsRead); //HG,SG ..
|
||||
|
|
@ -436,7 +480,7 @@ int Epd3Base::Epd3U::ReadStatus()
|
|||
r = Commit3(epdComsHandle);
|
||||
r = EndReadWearerId(epdComsHandle, token, &mk3WearerID);
|
||||
if (r != 0) {
|
||||
Error = GetErrorCode();
|
||||
Error = GetErrorCode();
|
||||
goto error;
|
||||
}
|
||||
|
||||
|
|
@ -446,9 +490,9 @@ int Epd3Base::Epd3U::ReadStatus()
|
|||
step = 5;
|
||||
token = BeginReadWearerId(epdComsHandle, static_cast<uint16_t>(WearerIdType::WearerId_Primary), nullptr);
|
||||
r = Commit3(epdComsHandle);
|
||||
r = EndReadWearerId(epdComsHandle, token, &mk3WearerID);
|
||||
if (!r) r = EndReadWearerId(epdComsHandle, token, &mk3WearerID);
|
||||
if (r != 0) {
|
||||
Error = GetErrorCode();
|
||||
Error = GetErrorCode();
|
||||
goto error;
|
||||
}
|
||||
|
||||
|
|
@ -465,7 +509,7 @@ int Epd3Base::Epd3U::ReadStatus()
|
|||
if (utc == 0) {
|
||||
token = BeginReadRTC(epdComsHandle, nullptr);
|
||||
r = Commit3(epdComsHandle);
|
||||
r = EndReadRTC(epdComsHandle, token, &utc); //EpdClock for MK2
|
||||
if (!r) r = EndReadRTC(epdComsHandle, token, &utc); //EpdClock for MK2
|
||||
if (r) goto error;
|
||||
EpdClock = utc;
|
||||
utc = TimeFunctions::NowToEpdTime(true);
|
||||
|
|
@ -484,7 +528,7 @@ error:
|
|||
Error = r;
|
||||
ErrorStep = step;
|
||||
return r;
|
||||
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// discover, connect and read status
|
||||
|
|
@ -495,7 +539,7 @@ int Epd3Base::Epd3U::ConnectAndStatus(int tokenSourceTimeout)
|
|||
{
|
||||
WORD dllStatus;
|
||||
int rv = 1;
|
||||
Error = 0; ErrorStep = 0;
|
||||
Error = 0; ErrorStep = 0; hasAlarm = hasFault = 0;
|
||||
if (CommsInitialized == 0) StartCom();
|
||||
if (CommsInitialized) {
|
||||
dllStatus = StartDiscover(tokenSourceTimeout);
|
||||
|
|
@ -505,7 +549,7 @@ int Epd3Base::Epd3U::ConnectAndStatus(int tokenSourceTimeout)
|
|||
else rv = 0;
|
||||
}
|
||||
else rv = 1;
|
||||
|
||||
|
||||
return rv;
|
||||
}
|
||||
/// <summary>
|
||||
|
|
@ -780,9 +824,9 @@ WORD Epd3Base::Epd3U::ReadSensitivitiesAndTresholds()
|
|||
if (r != 0)
|
||||
goto error;
|
||||
decodedTresholds(numTresholds); // HG, SG, BC, FB, BC, FB
|
||||
|
||||
|
||||
r = ReadCal();// K1 = K2 = K3 = K4 = K4 = K6
|
||||
|
||||
|
||||
}
|
||||
return r;
|
||||
error:
|
||||
|
|
@ -807,12 +851,11 @@ WORD Epd3Base::Epd3U::ReadDoses()
|
|||
ErrorSource = ErrorReason = ErrorData = 0;
|
||||
K1 = 1; K2 = 2; K3 = 3; K4 = 4; K5 = 5; K6 = 6;
|
||||
SG = 7; BC = 8; FB = 9; HG = 10;
|
||||
return 0;
|
||||
return r_OK;
|
||||
}
|
||||
|
||||
|
||||
numDoses = 0; utc = 0;
|
||||
SetResponseTimeout(epdComsHandle, 2000);
|
||||
|
||||
|
||||
step = 1;
|
||||
token = BeginReadDoses(epdComsHandle, nullptr, 0, nullptr);
|
||||
r = Commit3(epdComsHandle);
|
||||
|
|
@ -839,7 +882,7 @@ WORD Epd3Base::Epd3U::ReadDoses()
|
|||
|
||||
Knocks = quality.Knocks;
|
||||
Resets = quality.PowerCycles;
|
||||
|
||||
|
||||
step = 4;
|
||||
token = BeginReadPeakRates(epdComsHandle, nullptr, 0, nullptr);
|
||||
r = Commit3(epdComsHandle);
|
||||
|
|
@ -849,12 +892,15 @@ WORD Epd3Base::Epd3U::ReadDoses()
|
|||
decodePeakRates(numRates);
|
||||
|
||||
step = 5;
|
||||
r= ReadSensitivitiesAndTresholds(); //K1 .. K6, SG , BC ,FB , HG
|
||||
r = ReadSensitivitiesAndTresholds(); //K1 .. K6, SG , BC ,FB , HG
|
||||
if (r != 0)
|
||||
goto error;
|
||||
|
||||
return r;
|
||||
|
||||
error:
|
||||
Error = r;
|
||||
ErrorStep = step;
|
||||
return r;
|
||||
}
|
||||
/// <summary>
|
||||
|
|
@ -869,28 +915,30 @@ int Epd3Base::Epd3U::ClearDoses()
|
|||
token = BeginClearTotalDose(epdComsHandle, nullptr);
|
||||
r = Commit3(epdComsHandle);
|
||||
if (!r) r = EndClearTotalDose(epdComsHandle, token);
|
||||
if (r != 0 && r!= -105 )
|
||||
if (r != 0 && r != r_InvalidOp)
|
||||
goto error;
|
||||
|
||||
step++;
|
||||
token = BeginClearDose(epdComsHandle, nullptr);
|
||||
r = Commit3(epdComsHandle);
|
||||
if (!r) r = EndClearDose(epdComsHandle, token);
|
||||
if (r != 0 && r != -105)
|
||||
if (r != 0 && r != r_InvalidOp)
|
||||
goto error;
|
||||
|
||||
|
||||
step++;
|
||||
token = BeginClearPeakRates(epdComsHandle, nullptr);
|
||||
r = Commit3(epdComsHandle);
|
||||
if (!r) r = EndClearPeakRates(epdComsHandle, token);
|
||||
if (r != 0 && r != -105)
|
||||
if (r != 0 && r != r_InvalidOp)
|
||||
goto error;
|
||||
|
||||
if (r == -105) r = 0;
|
||||
if (r == r_InvalidOp) r = 0;
|
||||
return r;
|
||||
|
||||
error:
|
||||
ErrorStep = step;
|
||||
Error = r;
|
||||
return r;
|
||||
error:
|
||||
return r;
|
||||
}
|
||||
|
||||
int Epd3Base::Epd3U::ClearAlarms()
|
||||
|
|
@ -911,7 +959,7 @@ int Epd3Base::Epd3U::ClearAlarms()
|
|||
if (!r) r = EndClearLatchedAlarms(epdComsHandle, token);
|
||||
if (r != 0 && r != -105)
|
||||
goto error;
|
||||
|
||||
|
||||
if (r == -105) r = 0;
|
||||
return r;
|
||||
|
||||
|
|
@ -925,7 +973,7 @@ WORD Epd3Base::Epd3U::PrepareForIssue()
|
|||
int rv = 0;
|
||||
int step = 0;
|
||||
if (port == 0) return 0;
|
||||
|
||||
|
||||
step = 1;
|
||||
if (DetectorsOn) {
|
||||
token = BeginEpdOnOff(epdComsHandle, 0, nullptr);
|
||||
|
|
@ -945,7 +993,7 @@ WORD Epd3Base::Epd3U::PrepareForIssue()
|
|||
|
||||
step = 3;
|
||||
rv = ReOpenDev();
|
||||
|
||||
|
||||
step = 4;
|
||||
rv = ClearDoses();
|
||||
if (rv != 0)
|
||||
|
|
@ -955,7 +1003,7 @@ WORD Epd3Base::Epd3U::PrepareForIssue()
|
|||
rv = ClearAlarms();
|
||||
if (rv != 0)
|
||||
goto error;
|
||||
|
||||
|
||||
|
||||
return rv;
|
||||
|
||||
|
|
@ -1008,7 +1056,7 @@ WORD Epd3Base::Epd3U::WriteAlarmTresholds() {
|
|||
if (isNeutron) measID = (uint8_t)MeasurementId::Meas_Hp10G; else measID = (uint8_t)MeasurementId::Meas_Hp10;
|
||||
hp10tresholds.MeasId = measID;
|
||||
encodeTreshold(&hp10tresholds);
|
||||
|
||||
|
||||
token = BeginWriteAlarmThresholds(epdComsHandle, (uint8_t)hp10tresholds.MeasId, (uint8_t)hp10tresholds.NumberThresholds, hp10tresholds.Thresholds, nullptr);
|
||||
r = Commit3(epdComsHandle);
|
||||
if (r != 0)
|
||||
|
|
@ -1048,9 +1096,10 @@ error:
|
|||
WORD Epd3Base::Epd3U::DeIssue()
|
||||
{
|
||||
int r = 1;
|
||||
int ErrorStep = 0;
|
||||
int ErrorStep = 0;
|
||||
if (port == 0) return 0;
|
||||
if (CurrentDeviceID==0) return 0;
|
||||
if (CurrentDeviceID == 0) return 0;
|
||||
|
||||
|
||||
//ReOpenDev();
|
||||
ErrorStep = 1;
|
||||
|
|
@ -1058,21 +1107,21 @@ WORD Epd3Base::Epd3U::DeIssue()
|
|||
|
||||
ErrorStep = 2;
|
||||
r = ClearDoses();
|
||||
|
||||
|
||||
ErrorStep = 3;
|
||||
if (EPDIssued) {
|
||||
token = BeginDeissueEPD(epdComsHandle, nullptr);
|
||||
r = Commit3(epdComsHandle);
|
||||
r = EndDeissueEPD(epdComsHandle, token);
|
||||
if (r != 0)
|
||||
if (!r) r = EndDeissueEPD(epdComsHandle, token);
|
||||
if (r)
|
||||
r = 0; // goto error;
|
||||
}
|
||||
|
||||
ErrorStep = 4;
|
||||
token = BeginEpdOnOff(epdComsHandle, 0, nullptr);
|
||||
r = Commit3(epdComsHandle);
|
||||
r = EndEpdOnOff(epdComsHandle, token);
|
||||
if (r != 0)
|
||||
if (!r) r = EndEpdOnOff(epdComsHandle, token);
|
||||
if (r)
|
||||
goto error;
|
||||
|
||||
ErrorStep = 5;
|
||||
|
|
@ -1093,7 +1142,7 @@ WORD Epd3Base::Epd3U::WriteWearer() {
|
|||
token = BeginSetBaselineCounters(epdComsHandle, nullptr);
|
||||
r = Commit3(epdComsHandle);
|
||||
r = EndSetBaselineCounters(epdComsHandle, token);
|
||||
if (r != 0)
|
||||
if (r != 0)
|
||||
goto error;
|
||||
|
||||
IdString_t mk3WearerID;
|
||||
|
|
@ -1102,7 +1151,7 @@ WORD Epd3Base::Epd3U::WriteWearer() {
|
|||
mk3WearerID.IdType = (uint16_t)WearerIdType::WearerId_Name;
|
||||
mk3WearerID.Length = 23;
|
||||
memcpy(mk3WearerID.Utf8String, WearerName, 23);
|
||||
|
||||
|
||||
step = 1;
|
||||
token = BeginWriteWearerId(epdComsHandle, mk3WearerID, nullptr);
|
||||
r = Commit3(epdComsHandle);
|
||||
|
|
@ -1113,7 +1162,7 @@ WORD Epd3Base::Epd3U::WriteWearer() {
|
|||
mk3WearerID.IdType = (uint16_t)WearerIdType::WearerId_Primary;
|
||||
mk3WearerID.Length = 13;
|
||||
memcpy(mk3WearerID.Utf8String, WearerID, 13);
|
||||
|
||||
|
||||
step = 2;
|
||||
token = BeginWriteWearerId(epdComsHandle, mk3WearerID, nullptr);
|
||||
r = Commit3(epdComsHandle);
|
||||
|
|
@ -1135,7 +1184,7 @@ error:
|
|||
|
||||
WORD Epd3Base::Epd3U::Issue(bool PrepareDone)
|
||||
{
|
||||
int r=0;
|
||||
int r = 0;
|
||||
int step = 0;
|
||||
int tries = 0;
|
||||
if (port == 0) return r;
|
||||
|
|
@ -1145,7 +1194,7 @@ WORD Epd3Base::Epd3U::Issue(bool PrepareDone)
|
|||
r = PrepareForIssue();
|
||||
if (r) goto error;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*if (isMK3) {
|
||||
token = BeginEnableProtectedSession_R3(epdComsHandle, 1, nullptr);
|
||||
|
|
@ -1155,14 +1204,14 @@ WORD Epd3Base::Epd3U::Issue(bool PrepareDone)
|
|||
goto error;
|
||||
}*/
|
||||
step = 1;
|
||||
r=ReOpenDev();
|
||||
r = ReOpenDev();
|
||||
if (r) goto error;
|
||||
|
||||
step = 2;
|
||||
r = WriteAlarmTresholds();
|
||||
if (r != 0)
|
||||
goto error;
|
||||
|
||||
|
||||
step = 3;
|
||||
r = WriteWearer();
|
||||
if (r != 0)
|
||||
|
|
@ -1172,14 +1221,14 @@ WORD Epd3Base::Epd3U::Issue(bool PrepareDone)
|
|||
step = 4;
|
||||
//EPDIssued
|
||||
//if (!DetectorsOn) {
|
||||
token = BeginEpdOnOff(epdComsHandle, 1, nullptr);
|
||||
r = Commit3(epdComsHandle);
|
||||
if (!r) r = EndEpdOnOff(epdComsHandle, token);
|
||||
// OKRV = EpdOn(); OKRV = Commit3();
|
||||
if (r != 0)
|
||||
r=0;
|
||||
token = BeginEpdOnOff(epdComsHandle, 1, nullptr);
|
||||
r = Commit3(epdComsHandle);
|
||||
if (!r) r = EndEpdOnOff(epdComsHandle, token);
|
||||
// OKRV = EpdOn(); OKRV = Commit3();
|
||||
if (r != 0)
|
||||
r = 0;
|
||||
//}
|
||||
|
||||
|
||||
//step = 5;
|
||||
//ReOpenDev();
|
||||
|
||||
|
|
@ -1196,13 +1245,13 @@ WORD Epd3Base::Epd3U::Issue(bool PrepareDone)
|
|||
r = EndIssueEPD(epdComsHandle, token);
|
||||
}
|
||||
if (r)
|
||||
goto error;
|
||||
|
||||
goto error;
|
||||
|
||||
/*if (isMK3) {
|
||||
token = BeginEnableProtectedSession_R3(epdComsHandle, 0, nullptr);
|
||||
r = Commit3(epdComsHandle);
|
||||
r = EndEnableProtectedSession_R3(epdComsHandle, token);
|
||||
if (r)
|
||||
if (r)
|
||||
goto error;
|
||||
}*/
|
||||
|
||||
|
|
@ -1227,6 +1276,7 @@ error:
|
|||
WORD Epd3Base::Epd3U::EPDReadExtraStatus()
|
||||
{
|
||||
if (port == 0) return 1;
|
||||
uint32_t r;
|
||||
//byBatADC = bySupplyADC = 0;
|
||||
/*CommitRV = ReadA2ConfigStatus(
|
||||
&byBatADC,
|
||||
|
|
@ -1236,9 +1286,9 @@ WORD Epd3Base::Epd3U::EPDReadExtraStatus()
|
|||
if (CommitRV == 1) CommitRV = Commit3();*/
|
||||
|
||||
token = BeginReadBaselineCounts(epdComsHandle, nullptr);
|
||||
uint32_t r = Commit3(epdComsHandle);
|
||||
r = EndReadBaselineCounts(epdComsHandle, token, Counts, 10, &utc, &countsRead);
|
||||
decodeBaseCounters(countsRead);
|
||||
r = Commit3(epdComsHandle);
|
||||
if (!r) r = EndReadBaselineCounts(epdComsHandle, token, Counts, 10, &utc, &countsRead);
|
||||
if (!r) decodeBaseCounters(countsRead);
|
||||
//if (CommitRV == 1) CommitRV = ReadCounts(&D1, &D2, &D3, &D4, &CountsClock);
|
||||
//if (CommitRV == 1) CommitRV = Commit3();
|
||||
//if (CommitRV == 1) CommitRV = ReadBaseCounts(&BaseD1, &BaseD2, &BaseD3, &BaseD4, &BaseCountsClock);
|
||||
|
|
@ -1283,11 +1333,10 @@ error:
|
|||
|
||||
int Epd3Base::Epd3U::GetAll(bool Closeconnection)
|
||||
{
|
||||
int rv = 0, step=1;
|
||||
int rv = 0, step = 1;
|
||||
rv = ReadDoses();
|
||||
step++;
|
||||
step=2;
|
||||
if (!rv) rv = ReadAlarmTresholds();
|
||||
|
||||
if (Closeconnection) EndCom();
|
||||
return rv;
|
||||
}
|
||||
|
|
@ -1296,20 +1345,16 @@ int Epd3Base::Epd3U::GetAllDeissue(bool reconnect)
|
|||
{
|
||||
int rv = 0;
|
||||
int step = 0;
|
||||
|
||||
/*if (reconnect)
|
||||
rv = ReOpenDev();
|
||||
if (!rv) goto error;*/
|
||||
|
||||
|
||||
step = 1;
|
||||
rv = ReadDoses(); //0 = success
|
||||
if (rv) goto error;
|
||||
//rv = ReadAlarmTresholds(); //0 = success
|
||||
|
||||
|
||||
step = 2;
|
||||
rv = EPDReadExtraStatus();
|
||||
if (rv) goto error;
|
||||
|
||||
|
||||
step = 3;
|
||||
rv = DeIssue(); //does close
|
||||
if (rv) goto error;
|
||||
|
|
@ -1321,12 +1366,12 @@ error:
|
|||
return rv;
|
||||
}
|
||||
|
||||
int Epd3Base::Epd3U::IssueAndCheck(float gain,float ChirpRate)
|
||||
int Epd3Base::Epd3U::IssueAndCheck(float gain, float ChirpRate)
|
||||
{
|
||||
int rv = 0;
|
||||
int step = 0;
|
||||
|
||||
rv = ReOpenDev();
|
||||
|
||||
if (!isConnected) rv = ReOpenDev();
|
||||
if (rv) goto error;
|
||||
|
||||
if (isNG) {
|
||||
|
|
@ -1343,7 +1388,7 @@ int Epd3Base::Epd3U::IssueAndCheck(float gain,float ChirpRate)
|
|||
}
|
||||
}
|
||||
step = 3;
|
||||
rv = SetChirp( ChirpRate);
|
||||
rv = SetChirp(ChirpRate);
|
||||
if (rv) goto error;
|
||||
|
||||
step = 4;
|
||||
|
|
@ -1363,11 +1408,11 @@ error:
|
|||
|
||||
int Epd3Base::Epd3U::WriteConfig(void)
|
||||
{
|
||||
if (port == 0 || WriteConfig32==0) return 1;
|
||||
if (port == 0 || WriteConfig32 == 0) return 1;
|
||||
int32_t r = 0;
|
||||
ECLen = 32;
|
||||
|
||||
token = BeginWriteAccessLevel(epdComsHandle, AccessLevel_t::Admin, EC, ECLen, nullptr);
|
||||
token = BeginWriteAccessLevel(epdComsHandle, AccessLevel_t::Admin, EC, ECLen, nullptr);
|
||||
r = Commit3(epdComsHandle);
|
||||
r = EndWriteAccessLevel(epdComsHandle, token);
|
||||
|
||||
|
|
@ -1399,7 +1444,7 @@ int Epd3Base::Epd3U::WriteConfig(void)
|
|||
{ 6,0x97FF,0xFFF9 },
|
||||
{ 7,0x97FF,0xFFD3 },
|
||||
{ 8,0x97FF,0xFFFF }
|
||||
};
|
||||
};
|
||||
// 0x1 Operation Menu Back /0x2 On / Off 0x4 Clear Dose 0x8 Toggle Telemtry 0x10 Responder Trigger
|
||||
// 1 0 0 0 0
|
||||
|
||||
|
|
@ -1474,7 +1519,7 @@ int Epd3Base::Epd3U::SetChirp(float Sensitivity)
|
|||
|
||||
if (Sensitivity > 0.001F) {
|
||||
enable = 1;
|
||||
token = BeginWriteChirpSensitivity(epdComsHandle, Sensitivity, nullptr);
|
||||
token = BeginWriteChirpSensitivity(epdComsHandle, Sensitivity, nullptr);
|
||||
r = Commit3(epdComsHandle);
|
||||
if (!r) r = EndWriteChirpSensitivity(epdComsHandle, token);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,6 +37,9 @@ namespace Epd3Base {
|
|||
WORD ErrorReason;
|
||||
WORD ErrorData;
|
||||
|
||||
int ConnectRetries = 0;
|
||||
BYTE isConnected = 0;
|
||||
|
||||
int32_t Dll3RV;
|
||||
UINT16 EndSessionControl;
|
||||
public:
|
||||
|
|
@ -47,13 +50,17 @@ namespace Epd3Base {
|
|||
private:
|
||||
WORD CommsInitialized = 0;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
Epd3U(int _comport);
|
||||
~Epd3U();
|
||||
DWORD StartCom();
|
||||
void EndCom();
|
||||
int StartDiscover(int tokentimeout);
|
||||
|
||||
|
||||
|
||||
//OperatingStatus
|
||||
BYTE DetectorsOn = 0;
|
||||
BYTE EPDIssued = 0;
|
||||
|
|
@ -127,6 +134,7 @@ namespace Epd3Base {
|
|||
bool isMK3 = false;
|
||||
bool hasAlarm = false;
|
||||
bool hasFault = false;
|
||||
|
||||
SYSTEMTIME tRealTime;
|
||||
|
||||
//Wearer
|
||||
|
|
@ -196,7 +204,7 @@ namespace Epd3Base {
|
|||
|
||||
|
||||
BYTE ConnectTimerFired;
|
||||
int ConnectTries;
|
||||
|
||||
|
||||
OpStatusFlags OperatingStatus;
|
||||
FaultStatusFlags ErrorStatus;
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ int EpdBaseClr::Epd2::Close()
|
|||
}
|
||||
int EpdBaseClr::Epd2::DecodeStatus(Epd3Base::Epd3U* epd)
|
||||
{
|
||||
epd->DecodeStatus();
|
||||
epd->DecodeStatus(); // set hasAlarm
|
||||
//OperatingStatus
|
||||
DetectorsOn = epd->DetectorsOn;
|
||||
EPDIssued = epd->EPDIssued;
|
||||
|
|
@ -180,7 +180,9 @@ int EpdBaseClr::Epd2::AfterGetStatus(EpdBase::Epd2U *epd)
|
|||
otherAlarms = epd->OtherAlarms;
|
||||
errorStatus = epd->ErrorStatus;
|
||||
operatingStatus = epd->OperatingStatus;
|
||||
hasAlarm = epd->hasAlarm;
|
||||
//hasAlarm = epd->hasAlarm; //?1
|
||||
eDoshasAlarm = epd->hasAlarm;
|
||||
eDosHasFault = epd->hasFault;
|
||||
EpdID = epd->EpdID;
|
||||
HardVersion = epd->HardVersion / 100;
|
||||
HardVersionMinor = epd->HardVersion % 100;
|
||||
|
|
@ -190,6 +192,7 @@ int EpdBaseClr::Epd2::AfterGetStatus(EpdBase::Epd2U *epd)
|
|||
DecodeStatus(epd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int EpdBaseClr::Epd2::AfterGetStatus(Epd3Base::Epd3U* epd)
|
||||
{
|
||||
EPDIssued= epd->EPDIssued;
|
||||
|
|
@ -205,14 +208,16 @@ int EpdBaseClr::Epd2::AfterGetStatus(Epd3Base::Epd3U* epd)
|
|||
otherAlarms = (int)epd->OtherAlarms;
|
||||
errorStatus = (int)epd->ErrorStatus;
|
||||
operatingStatus = (int)epd->OperatingStatus;
|
||||
hasAlarm = epd->hasAlarm;
|
||||
|
||||
eDoshasAlarm = epd->hasAlarm;
|
||||
eDosHasFault = epd->hasFault;
|
||||
EpdID = epd->EpdID;
|
||||
HardVersion = epd->HardVersion;
|
||||
HardVersionMinor = epd->HardVersionMinor;
|
||||
SoftVersion = epd->SoftVersion;
|
||||
FunctionFlags = epd->FunctionFlags;
|
||||
CountsClock = epd->EpdClock;
|
||||
DecodeStatus( epd);
|
||||
DecodeStatus( epd); // zet hasAlarm
|
||||
return 0;
|
||||
}
|
||||
int EpdBaseClr::Epd2::AfterGetStatus()
|
||||
|
|
@ -251,6 +256,7 @@ int EpdBaseClr::Epd2::GetDoses(EpdBase::Epd2U* epd)
|
|||
}
|
||||
int EpdBaseClr::Epd2::AfterGetDoses(Epd3Base::Epd3U* epd)
|
||||
{
|
||||
eDoshasAlarm = eDosHasFault = false;
|
||||
int rv = 0;
|
||||
rv = 0;
|
||||
GetDosesError = 0;
|
||||
|
|
@ -316,8 +322,8 @@ int EpdBaseClr::Epd2::GetDoses(Epd3Base::Epd3U* epd)
|
|||
{
|
||||
int rv = 1;
|
||||
Hp10 = Hp07 = 0.0;
|
||||
int ReadDosesRV = epd->ReadDoses();
|
||||
|
||||
int ReadDosesRV = epd->ReadDoses(); //0 = succes
|
||||
|
||||
if (ReadDosesRV == 0) {
|
||||
rv = AfterGetDoses(epd3);
|
||||
}
|
||||
|
|
@ -828,14 +834,15 @@ void EpdBaseClr::Epd2::InitData()
|
|||
/// <returns>0=success 1=Connect error 2=TO 3=StatusReadError</returns>
|
||||
int EpdBaseClr::Epd2::ConnectAndStatus()
|
||||
{
|
||||
//0 = ok, 2=TO , anders error
|
||||
int rv = 1;
|
||||
int step = 0;
|
||||
ErrorStep = ErrorRV = 0;
|
||||
ErrorStep = ErrorRV = 0; ConnectError = 0; eDoshasAlarm = eDosHasFault = false;
|
||||
|
||||
if (!onlyMK2) epd->EndCom(); //indien Mk2
|
||||
|
||||
InitData();
|
||||
//Sleep(100);
|
||||
Sleep(100);
|
||||
step = 1;
|
||||
if (onlyMK2 || !epd3)
|
||||
rv = epd->ConnectAndStatus(tokenSourceTimeout);
|
||||
|
|
@ -889,6 +896,7 @@ error:
|
|||
ErrorRV = rv;
|
||||
return rv;
|
||||
}
|
||||
|
||||
void EpdBaseClr::Epd2::WaitEpd()
|
||||
{
|
||||
int rv = 0; //start
|
||||
|
|
@ -905,10 +913,11 @@ void EpdBaseClr::Epd2::WaitEpd()
|
|||
_EpdTO(this, gcnew EpdTOEventArgs(0, 0)); // epd3->ConnectTries, epd3->ConnectTimerFired));
|
||||
}
|
||||
else if (rv > 0 && _EpdError != nullptr) {
|
||||
_EpdError(this, gcnew EpdErrorEventArgs(rv,ErrorRV,ErrorStep));
|
||||
_EpdError(this, gcnew EpdErrorEventArgs(rv, ErrorRV, ErrorStep));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
System::Threading::Tasks::Task^ EpdBaseClr::Epd2::Wait(int timeout, int Retries)
|
||||
{
|
||||
if (waitTask == nullptr)
|
||||
|
|
|
|||
|
|
@ -136,6 +136,8 @@ namespace EpdBaseClr {
|
|||
}
|
||||
}
|
||||
|
||||
//private:
|
||||
//bool hasAlarm = false;
|
||||
|
||||
public:
|
||||
bool onlyMK2;
|
||||
|
|
@ -153,7 +155,7 @@ namespace EpdBaseClr {
|
|||
bool isOn;
|
||||
bool isBG, isNG, VersionOK;
|
||||
bool isMK3;
|
||||
bool hasAlarm = false;
|
||||
|
||||
|
||||
int InitRV;
|
||||
int DiscRV;
|
||||
|
|
|
|||
|
|
@ -387,8 +387,8 @@ namespace eDosStation
|
|||
VisitExitCommand.SetBoolParam("eDosRate10Warning", ep.eDosRate10Warning);
|
||||
VisitExitCommand.SetBoolParam("eDosRate10Alarm", ep.eDosRate10Alarm);
|
||||
|
||||
VisitExitCommand.SetBoolParam("isAlarm", ep.hasAlarm);
|
||||
VisitExitCommand.SetBoolParam("isFault", ep.eDosHasFault);
|
||||
VisitExitCommand.SetBoolParam("isAlarm", ep.eDoshasAlarm, splunkLog);
|
||||
VisitExitCommand.SetBoolParam("isFault", ep.eDosHasFault, splunkLog);
|
||||
checkCon(true);
|
||||
VisitExitCommand.Connection = localConnection;
|
||||
VisitExitCommand.ExecuteNonQuery();
|
||||
|
|
|
|||
|
|
@ -1,55 +1,55 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace eDosStation
|
||||
{
|
||||
static class Decoder
|
||||
{
|
||||
static StackPanel sp;
|
||||
|
||||
|
||||
private static void tb_Add( string s)
|
||||
{
|
||||
TextBlock x = new TextBlock();
|
||||
x.Text = s;
|
||||
sp.Children.Add(x);
|
||||
}
|
||||
public static void AlarmToTextBox(StackPanel s,EpdBaseClr.Epd2 ep)
|
||||
{
|
||||
sp = s;
|
||||
if (ep.DetectorsOn > 0) tb_Add("DetectorsOn");
|
||||
if (ep.EPDIssued ) tb_Add("EPD Issued");
|
||||
//if (ep.EPDLocked > 0) tb_Add("EPD Locked");
|
||||
if (ep.EPDTesting > 0) tb_Add("EPD Detector test active");
|
||||
if (ep.EPDProcSec > 0) tb_Add("EPD Processing every second");
|
||||
if (ep.EPDFaulty > 0) tb_Add("EPD Faulty");
|
||||
|
||||
if (ep.EPDNewFault > 0) tb_Add("EPD New Fault in History");
|
||||
if (ep.EPDComFault > 0) tb_Add("EPD Communication fault");
|
||||
if (ep.EPDCalFault > 0) tb_Add("EPD Calibration factors faulty");
|
||||
if (ep.EPDDetFault > 0) tb_Add("EPD Detector faulty");
|
||||
if (ep.EPDEprFault > 0) tb_Add("EPD Eprom faulty");
|
||||
if (ep.EPDTrhFault > 0) tb_Add("EPD Tresholds faulty");
|
||||
if (ep.EPDOthFault > 0) tb_Add("EPD Other Fault");
|
||||
|
||||
if (ep.AlarmDoseHP101G > 0) tb_Add("Alarm Dose HP10");
|
||||
if (ep.AlarmDoseHP102G > 0) tb_Add("Alarm Dose HP10");
|
||||
if (ep.AlarmDoseHP07N > 0) tb_Add("Alarm Dose HP07");
|
||||
if (ep.AlarmRateHP101G > 0) tb_Add("Alarm RateHP10 ");
|
||||
if (ep.AlarmRateHP102G > 0) tb_Add("Alarm RateHP10 ");
|
||||
if (ep.AlarmRateHP07N > 0) tb_Add("Alarm Rate HP07");
|
||||
|
||||
if (ep.OtherAlarmRateHp101G > 0) tb_Add("Alarm Rate Hp10 /G");
|
||||
if (ep.OtherAlarmRateHp102G > 0) tb_Add("Alarm Rate Hp10 /G");
|
||||
if (ep.OtherAlarmRateHp07N > 0) tb_Add("Alarm Rate Hp07 /HPN");
|
||||
if (ep.OtherAlarmReturn > 0) tb_Add("Please Return");
|
||||
if (ep.OtherAlarmBatLow > 0) tb_Add("Battery Low");
|
||||
if (ep.OtherAlarmCarrier > 0) tb_Add("Carrier present");
|
||||
if (ep.OtherAlarmBatVolt > 0) tb_Add("Battery Volt");
|
||||
}
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace eDosStation
|
||||
{
|
||||
static class Decoder
|
||||
{
|
||||
static StackPanel sp;
|
||||
|
||||
|
||||
private static void tb_Add( string s)
|
||||
{
|
||||
TextBlock x = new TextBlock();
|
||||
x.Text = s;
|
||||
sp.Children.Add(x);
|
||||
}
|
||||
public static void AlarmToTextBox(StackPanel s,EpdBaseClr.Epd2 ep)
|
||||
{
|
||||
sp = s;
|
||||
if (ep.DetectorsOn > 0) tb_Add("DetectorsOn");
|
||||
if (ep.EPDIssued ) tb_Add("EPD Issued");
|
||||
//if (ep.EPDLocked > 0) tb_Add("EPD Locked");
|
||||
if (ep.EPDTesting > 0) tb_Add("EPD Detector test active");
|
||||
if (ep.EPDProcSec > 0) tb_Add("EPD Processing every second");
|
||||
if (ep.EPDFaulty > 0) tb_Add("EPD Faulty");
|
||||
|
||||
if (ep.EPDNewFault > 0) tb_Add("EPD New Fault in History");
|
||||
if (ep.EPDComFault > 0) tb_Add("EPD Communication fault");
|
||||
if (ep.EPDCalFault > 0) tb_Add("EPD Calibration factors faulty");
|
||||
if (ep.EPDDetFault > 0) tb_Add("EPD Detector faulty");
|
||||
if (ep.EPDEprFault > 0) tb_Add("EPD Eprom faulty");
|
||||
if (ep.EPDTrhFault > 0) tb_Add("EPD Tresholds faulty");
|
||||
if (ep.EPDOthFault > 0) tb_Add("EPD Other Fault");
|
||||
|
||||
if (ep.AlarmDoseHP101G > 0) tb_Add("Alarm Dose HP10l");
|
||||
if (ep.AlarmDoseHP102G > 0) tb_Add("Alarm Dose HP10h");
|
||||
if (ep.AlarmDoseHP07N > 0) tb_Add("Alarm Dose HP07");
|
||||
if (ep.AlarmRateHP101G > 0) tb_Add("Alarm RateHP10 ");
|
||||
if (ep.AlarmRateHP102G > 0) tb_Add("Alarm RateHP10 ");
|
||||
if (ep.AlarmRateHP07N > 0) tb_Add("Alarm Rate HP07");
|
||||
|
||||
if (ep.OtherAlarmRateHp101G > 0) tb_Add("Alarm Rate Hp10 /G");
|
||||
if (ep.OtherAlarmRateHp102G > 0) tb_Add("Alarm Rate Hp10 /G");
|
||||
if (ep.OtherAlarmRateHp07N > 0) tb_Add("Alarm Rate Hp07 /HPN");
|
||||
if (ep.OtherAlarmReturn > 0) tb_Add("Please Return");
|
||||
if (ep.OtherAlarmBatLow > 0) tb_Add("Battery Low");
|
||||
if (ep.OtherAlarmCarrier > 0) tb_Add("Carrier present");
|
||||
if (ep.OtherAlarmBatVolt > 0) tb_Add("Battery Volt");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ namespace eDosStation
|
|||
endPage();
|
||||
return false;
|
||||
}
|
||||
if (ep.hasAlarm && ep.OtherAlarmBatLow > 0)
|
||||
if (ep.eDoshasAlarm || ep.OtherAlarmBatLow > 0 || ep.eDosHasFault)
|
||||
{
|
||||
TextBlock il = new TextBlock();
|
||||
il.Inlines.Add(new Run("EPD is in alarm status\n\n")
|
||||
|
|
|
|||
|
|
@ -17,14 +17,12 @@ namespace eDosStation
|
|||
private bool EpdReading = false;
|
||||
private bool FinalTimeOut = false;
|
||||
|
||||
|
||||
#if SimulateEPD
|
||||
public SimulateData simulData = new SimulateData();
|
||||
#endif
|
||||
public EpdExit(Station curStation)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
thisStation = curStation;
|
||||
dataInterface = curStation.dataInterface;
|
||||
}
|
||||
|
|
@ -147,7 +145,7 @@ namespace eDosStation
|
|||
}
|
||||
|
||||
//bool NoTimeout = false;
|
||||
|
||||
|
||||
if (ep.alarmStatus != 0)
|
||||
{
|
||||
DosePanel.Background = AlarmBrush;
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Tue 05/28/2024 7:59:42.11
|
||||
Wed 05/29/2024 15:58:06.78
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ namespace eDosStation
|
|||
|
||||
HardVersion.Text = ep.HardVersion.ToString() + '.' + ep.HardVersionMinor.ToString(); // ep.SoftVersion.ToString();
|
||||
|
||||
if (ep.hasAlarm)
|
||||
if (ep.eDoshasAlarm)
|
||||
{
|
||||
hasAlarm.Text = "Yes";
|
||||
} else
|
||||
|
|
|
|||
|
|
@ -68,7 +68,21 @@ static public class extensions
|
|||
}
|
||||
return found;
|
||||
}
|
||||
public static bool BoolOrDefault( this System.Data.SqlClient.SqlDataReader rs, string colName, bool defaultValue)
|
||||
static public bool SetBoolParam(this System.Data.SqlClient.SqlCommand c, string paramname, bool value, LSWLib.CLog spl=null )
|
||||
{
|
||||
bool found = true;
|
||||
if (c.Parameters.Contains(paramname)) c.Parameters[paramname].Value = value;
|
||||
else
|
||||
{
|
||||
if (paramname[0] != '@') paramname = "@" + paramname; else paramname = paramname.Substring(1);
|
||||
if (c.Parameters.Contains(paramname)) c.Parameters[paramname].Value = value;
|
||||
else found = false;
|
||||
}
|
||||
if (!found && spl != null) spl.WriteSplunkLog("SetBoolParam", LSWLib.CLog.iseverity.err, paramname);
|
||||
return found;
|
||||
}
|
||||
|
||||
public static bool BoolOrDefault( this System.Data.SqlClient.SqlDataReader rs, string colName, bool defaultValue)
|
||||
{
|
||||
bool rv = defaultValue;
|
||||
try
|
||||
|
|
|
|||
|
|
@ -213,17 +213,17 @@ exit
|
|||
# aWdpQ2VydCwgSW5jLjE7MDkGA1UEAxMyRGlnaUNlcnQgVHJ1c3RlZCBHNCBSU0E0
|
||||
# MDk2IFNIQTI1NiBUaW1lU3RhbXBpbmcgQ0ECEAVEr/OUnQg5pr/bP1/lYRYwDQYJ
|
||||
# YIZIAWUDBAIBBQCgaTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3
|
||||
# DQEJBTEPFw0yNDA1MjgwNTM0MTJaMC8GCSqGSIb3DQEJBDEiBCDbjZuxJgcSDufz
|
||||
# +ekiprJJKPMdOid8HFavnX4C8hgeWzANBgkqhkiG9w0BAQEFAASCAgCH9lWfpp5t
|
||||
# b00PHQlLYC1Jy5yb4gosf7fEOR4TS0cduRMhLuUEqij7nUSwPiqAZjNV1eaH3eb9
|
||||
# QFzcr9kxcFAtoY8R8pf4G+YSJaiQ7QB2DfbEdkusuxrOtxCIRNwhbaynT0Hhuysj
|
||||
# t0VxhU828B1iYpoWTPYnapExqgVokEmuK4kbNNSGJI1BYfE0iqSyMxHvj3brmAnW
|
||||
# OzacfYfX//MMvbxno+JP/ynbg8EnAfVxZVL9W8CRTCTEotQFtEVdz/XPfFRQy1IU
|
||||
# fN2e4FDuzXS9tf1a6Dn6F8F6FTkCDFP/qZtHIgGI6pk1Kad+vfZh/hpGnvFo+A6B
|
||||
# SGh3qNdayL1XGcpnKTm/Yz2faZ05xas+VgmnZ+qO6i6L5Ia1zcsPzQUzylFpqE+v
|
||||
# 0rt2OO8yC+UcDhihny09vtnaZvGSg2QCagKqx/lVQEmfBxx4e2zbCKL/NvMm0CB+
|
||||
# VyFxku4NvMu28vCVQ029incGJMCsYaOdW8HUFdT6ei9HPU0B5p9dzprqU7xJibkb
|
||||
# t3eplK/KgSyHRDnzg2h1DnkY7VzA+cn2WWs9hXX+5PeoDJ3rT4zhkYPQi7gxj0r0
|
||||
# Ong4FIclb9y/xVx9y+j//hQKN4SOulJv9xkdGPrIrwpZCdndQjgOcJ8uZBwaOA2g
|
||||
# CmZ92tG+4gn8CNOp9zi042M5EwkTtq4u2g==
|
||||
# DQEJBTEPFw0yNDA1MjkxMzU4MzFaMC8GCSqGSIb3DQEJBDEiBCDbjZuxJgcSDufz
|
||||
# +ekiprJJKPMdOid8HFavnX4C8hgeWzANBgkqhkiG9w0BAQEFAASCAgBGjdQr8S+I
|
||||
# nwuGA0gDFbifrx8gb9772uSbSfgF4GM3zmVlNC21F2ZVJruG6N8MN/W3uZxsRjVD
|
||||
# /pY0v7kXTJ3ygrvmcKt0reuUkj+qv0HMLa7gd3yTLealUT7+JtzraalEzEsVCGiI
|
||||
# OzM/7S2N1Z5YgsjfudW0v5sP4sDjUAUGYIgs2lH+qBFBSH2l/I9pV7gi/obxC7+4
|
||||
# EYKLcGWsuXf+q2KRoEPnr5p3fYOrNuNXaVRJkn8NPxRArupcMUddIDV6eMBQ85Xn
|
||||
# wPPdap/jjTV839y89km8h/zf70XYrGJDBeevl2VCa2TmlmMJYmQF+6T+zVzSTPyU
|
||||
# dnGAoC1ing+ky9U9WZ14K5DNRgbxkAnIgV723BEsI6Vkj55WYQ3a4OKwx080a+rV
|
||||
# GeeMKYjhbgnTyD9exX8TkFYdklKY+A1Vurhxjq5BiektiXriw93w5Dsrwq8TnT0o
|
||||
# GvaDt3FO+kXRWYBXUMvFBu3ID5wYw/q688g9IF7G0VAxDa73lBF4GC15TkSALVLR
|
||||
# eliiwBfdRnoLfxMYurGne4Iux7G4iSxBDlonsHur7Lcc/6jrtIIM8mHn11GWZwXv
|
||||
# Dk+CJBvtno+UU2VCCelL+7mZEFQ1cwQLaCM3A8MY+3tgenFke+4HnYLN1AG+D68o
|
||||
# h4eZTK9m9nojRGxKVYFVZJc+VhsdkQhHyQ==
|
||||
# SIG # End signature block
|
||||
|
|
|
|||
|
|
@ -328,17 +328,17 @@ exit
|
|||
# aWdpQ2VydCwgSW5jLjE7MDkGA1UEAxMyRGlnaUNlcnQgVHJ1c3RlZCBHNCBSU0E0
|
||||
# MDk2IFNIQTI1NiBUaW1lU3RhbXBpbmcgQ0ECEAVEr/OUnQg5pr/bP1/lYRYwDQYJ
|
||||
# YIZIAWUDBAIBBQCgaTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3
|
||||
# DQEJBTEPFw0yNDA1MjgwNTM0MTJaMC8GCSqGSIb3DQEJBDEiBCAcllG2mSPxCJ8u
|
||||
# oQsIqOunNyELPZuVN2PuUwDZLmIbpTANBgkqhkiG9w0BAQEFAASCAgArsQWfdjSe
|
||||
# QOVAwFE2Axz5OLj8HMNdSIp0fBDZRJyiL0Pu7JkAcSPvK44kQ/yK9+pLJyLKN3hC
|
||||
# 1s9GtSMGdYdqpmrVPvVS8WA0sOH+YtxN+VgudyJ0f1QWHJGJT4BQDRxMYQInBePB
|
||||
# 79VJIveRqlSkxjRHLtrZQ56rr5HHukBWkxP0mxEkl8g6U/VbfxgwkgMcm63kv5xT
|
||||
# 8tY5jqBj3tRkYg3zoirNEUNH8VzVvtQ6hBfoMM1gZmj7A/QbB4jd3ssawEDY/P3+
|
||||
# TQ1Pr4T5wP+0XPis24qwpxjJ6IDFoGodM18MJkAczC6lLraf4DfwdszVJy3yRZov
|
||||
# ShR3ueUDeQHZzUEmVh7ZmWv/YYyWexuVHhyR4HBR1Brb3W1XF+/ouSyPba3z06WU
|
||||
# UmIMZzy/7VxNtSIBbwFx9le0cn5c5mi4+cNx6nOoT/JAQ4TVckcTOPcTbp3xNbcx
|
||||
# Ez1nekS/6hksT5bzogwN9Q7h/yB+kkEKeNc8+5UKtIE6s+5y4+i7RNz5a54549iL
|
||||
# Sbg35F+ZyqOpB3bAPafj0p9RpXoqugMISQ5STklSKDmU69/bFsnEPGmMQKfW590G
|
||||
# XuhscXk1bSPvx/0decysPJU/tMbj0U1mDMTfXL2pmt+MKcwYirw35t4zGsB31Zpx
|
||||
# kf8GhZRTzB0PRN1R0WuQStX3XlF3IsH41A==
|
||||
# DQEJBTEPFw0yNDA1MjkxMzU4MzFaMC8GCSqGSIb3DQEJBDEiBCAcllG2mSPxCJ8u
|
||||
# oQsIqOunNyELPZuVN2PuUwDZLmIbpTANBgkqhkiG9w0BAQEFAASCAgBnR/5a25Cy
|
||||
# oS6Ylo3RZzQJZkih7pEQYAzzhnhueErTJjKQ/xxdvN+IUn/RvUPkas7QRboqfrJm
|
||||
# 4xGwmBbEsZuQyt7XBXz7ZS2sVuzpBwN96JhRmIuTZk5uIGbQ0EI9cy1m84MCjOaC
|
||||
# dF0+XITTunQBIZs91fQWdhQhi0oDES6yrmi4ziTd2auFoMCD0l4xDQm0AXZ0aGGZ
|
||||
# H9mGwuYA5kP8GWj/2Q90wG7/ivnqE7vVQ2ogRuqTQSfYJhy45n1yZh3MC2lHiA83
|
||||
# yOiWlr2CZP1vn7kTiPHwDaWJn8YuEhG45Xg9DYSd+yhwmIG+Cy7h3BDE2XTVdhwi
|
||||
# CvzLpfCPTJq5xS9G2wMGpxrQYff+EKlXNrVYZCYvlvSm+p5cLGfitgJvUy9Neyuq
|
||||
# FMAqzdTcBgf+TBmOP4hwryQKeE1/ZghZ+DnOb3g5JMPyOjqqeMf37aLObl+jiQrN
|
||||
# 6apWTPysMla2x1f7QCTqv5a0kElKqdVt/zF/lJekCtWpK//tznXPHDtnyPnb3w0c
|
||||
# 9/1j2oClQc0+pVWUnoq8mBb61bvi/9E6EemMSRJ9qHio4+H6J+SHqNKPgiOu4VFT
|
||||
# sfHBV6h649yroU8bHMlYkc+52YNoBbJANgeA5ihS02+C2N74mdlmkUEE52unk+2J
|
||||
# oQ2vybH262KiIJSPgIQb91KPw4+FjaCtQg==
|
||||
# SIG # End signature block
|
||||
|
|
|
|||
|
|
@ -192,17 +192,17 @@ exit
|
|||
# aWdpQ2VydCwgSW5jLjE7MDkGA1UEAxMyRGlnaUNlcnQgVHJ1c3RlZCBHNCBSU0E0
|
||||
# MDk2IFNIQTI1NiBUaW1lU3RhbXBpbmcgQ0ECEAVEr/OUnQg5pr/bP1/lYRYwDQYJ
|
||||
# YIZIAWUDBAIBBQCgaTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3
|
||||
# DQEJBTEPFw0yNDA1MjgwNTM0MTJaMC8GCSqGSIb3DQEJBDEiBCDpOCR32+BElOsp
|
||||
# pr9o2qvS6Cq0zGXXv8N/urfnLBwlITANBgkqhkiG9w0BAQEFAASCAgCfTHsVbpZf
|
||||
# W4dpipchv87UBpejQZy21Uu7uYXTZtVQuyRItstCVQ0xeZU96pBIlhC+o38O+K4O
|
||||
# w/VF79BzDe0mA+xbKM7XX3g4JSWgNTARzYSoA5f3UIYWiECk2zkR3s9XHzzBg11D
|
||||
# 3DnaVOhpxnz3X9r7dTNHI5iV8pqFQN6L6Hyuc6J4nH+6vLp80BVG4rp29wz6expK
|
||||
# 78+nozPHE4lgFEedom0cgDCe6p3UEx77xI2JzlKdl0B3E5B+zY9tAfhMmmtGoZ1y
|
||||
# DqhHWiNYCGxVnalkmru9Hte4AiHFpvxUPnPFqRUFuzbyzAZZvePftrRadE4SLIn+
|
||||
# 2h7ckT7BAB42y78o7b/DLCAKK5MF6HCuNbmbBMzb0FlnYujGR3wTOFiTTw3gDtPy
|
||||
# pH3gSlZVx4pRD5o9lyEv/Vi7yJy7PGt1bikFKA4C57NWtbZn76ZFrfaz2u4KUZEz
|
||||
# 0SjK1gPy1ZgF3XksGCRMuL5UtEQH5qP3hVhyL31KeNsadrVpsOQSkCPcQVi7SVe6
|
||||
# UVLSjVFxZDTheYy6/zGmzuCJp6i/3+xubSPTIiQSgYcR4C0S8OIGY+2LItXIaNNb
|
||||
# j4A20QZPx41CnpMz+8jkHpkXl3j5GNDLxFgI+m83T7efbzOyzPu5RpQQx3eITnZD
|
||||
# KJPM7nx/c1O6IgKPN3YIMJjmZ0SE1rwyYA==
|
||||
# DQEJBTEPFw0yNDA1MjkxMzU4MzFaMC8GCSqGSIb3DQEJBDEiBCDpOCR32+BElOsp
|
||||
# pr9o2qvS6Cq0zGXXv8N/urfnLBwlITANBgkqhkiG9w0BAQEFAASCAgALWrY16T9Q
|
||||
# jGcDVEEOobysVU7id8rnqKMXfCLAIlVyI44uEwXMk854ZoUmv7lItRGpLto03sTs
|
||||
# 9NI4LOp2rJA90bN1EZZbL05a10elnxbGarZNnHUEA5LKyIFrcTrnASLJ2Hz7PCmW
|
||||
# /QBO2lb0AtBtyxmXfzjxAJj+RLbD+lJxWkgEaTidT36foaCbNQvb0qap3B8g+r0K
|
||||
# SG9THPmYivEmme2gThHZSJ5emre6cUdZ3cpvKoCuqCMErXKik1az4KDMX6Ym/3AU
|
||||
# EW5/WmZkCAiYCEOHlaOLoW3X/XiPW5p72viy5qwaO0f9NfleXU0FkChAvYUgL2jq
|
||||
# UjKszVphMrqYJFwc9zLU5zVP+WyA/kOxW7uNs2HzYxMZribDsOaJQQro8T+5iO13
|
||||
# 2Ws5tH/hHxPvVH4NHOFctdUg/j2ntJfoAcGYo4j+o6zJQOmInNA3vi0IM8BNSfar
|
||||
# BogdNzBVYW5f4giwGLfCN0SEjL8l1m/Rmf7DWhyLpK9T6Lr+t9Fuh6PAE1Icr3Wv
|
||||
# PXeS237UKqfEr25i6mDfIEOCiltJfZa88ooJE5eruv6ZD/2nc4U+UZDLYPB/inlZ
|
||||
# b1bU17qxfue5MhOA7UQY8xNifuPaf21tgTUAHW71ub3dY4r1FE/7k9uQbU0BxsGA
|
||||
# PAD79tEAEFh6FCBKOQtKG0lE2ntikNRQ5Q==
|
||||
# SIG # End signature block
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue