soms alarm
This commit is contained in:
parent
54ec2e1084
commit
ac283fdb0e
15 changed files with 328 additions and 252 deletions
|
|
@ -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,6 +71,8 @@ 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;
|
||||
|
||||
|
|
@ -97,21 +106,53 @@ Epd3Base::Epd3U::~Epd3U()
|
|||
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();
|
||||
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)
|
||||
{
|
||||
Dll3RV = SetMultipleDiscoveryMode(epdComsHandle, false);
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -156,28 +197,32 @@ int Epd3Base::Epd3U::StartDiscover(int tokentimeout)
|
|||
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;
|
||||
rv = 1;
|
||||
ConnectTimerFired = 1;
|
||||
rv2 = StopDiscovery(epdComsHandle);
|
||||
DeviceCount = 0;
|
||||
} else rv = 2;
|
||||
}
|
||||
else rv = 2;
|
||||
}
|
||||
if (DeviceCount > 0) {
|
||||
Dll3RV = SetConnectCallback(epdComsHandle, connectcallback);
|
||||
Dll3RV = Connect3(epdComsHandle, Epd, true);
|
||||
if (Dll3RV != 0) rv = 2;
|
||||
else Dll3RV = SetDisconnectCallback(epdComsHandle, disconnectcallback);
|
||||
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 ..
|
||||
Dll3RV = r_InvalidCommsHandle;
|
||||
} //no handle ..
|
||||
return Dll3RV;
|
||||
}
|
||||
|
||||
|
|
@ -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);
|
||||
|
|
@ -316,6 +362,7 @@ void Epd3Base::Epd3U::DecodeStatus()
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
OtherAlarmReturn = checkStatus(epd3status.AlarmStatus, AlarmStatusFlags::ReturnForRead);
|
||||
OtherAlarmBatLow = checkStatus(epd3status.AlarmStatus, AlarmStatusFlags::LowBattery);
|
||||
OtherAlarmCarrier = checkStatus(epd3status.AlarmStatus, AlarmStatusFlags::TelemetryAlert);
|
||||
|
|
@ -323,11 +370,9 @@ void Epd3Base::Epd3U::DecodeStatus()
|
|||
|
||||
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,12 +420,10 @@ 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();
|
||||
goto error;
|
||||
|
|
@ -400,7 +443,7 @@ int Epd3Base::Epd3U::ReadStatus()
|
|||
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();
|
||||
goto error;
|
||||
|
|
@ -413,12 +456,13 @@ 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) {
|
||||
|
|
@ -446,7 +490,7 @@ 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();
|
||||
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);
|
||||
|
|
@ -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);
|
||||
|
|
@ -807,11 +851,10 @@ 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);
|
||||
|
|
@ -854,7 +897,10 @@ WORD Epd3Base::Epd3U::ReadDoses()
|
|||
goto error;
|
||||
|
||||
return r;
|
||||
|
||||
error:
|
||||
Error = r;
|
||||
ErrorStep = step;
|
||||
return r;
|
||||
}
|
||||
/// <summary>
|
||||
|
|
@ -869,27 +915,29 @@ 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;
|
||||
}
|
||||
|
||||
|
|
@ -1052,6 +1100,7 @@ WORD Epd3Base::Epd3U::DeIssue()
|
|||
if (port == 0) return 0;
|
||||
if (CurrentDeviceID == 0) return 0;
|
||||
|
||||
|
||||
//ReOpenDev();
|
||||
ErrorStep = 1;
|
||||
r = ClearAlarms();
|
||||
|
|
@ -1063,16 +1112,16 @@ WORD Epd3Base::Epd3U::DeIssue()
|
|||
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;
|
||||
|
|
@ -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);
|
||||
|
|
@ -1285,9 +1335,8 @@ int Epd3Base::Epd3U::GetAll(bool Closeconnection)
|
|||
{
|
||||
int rv = 0, step = 1;
|
||||
rv = ReadDoses();
|
||||
step++;
|
||||
step=2;
|
||||
if (!rv) rv = ReadAlarmTresholds();
|
||||
|
||||
if (Closeconnection) EndCom();
|
||||
return rv;
|
||||
}
|
||||
|
|
@ -1297,10 +1346,6 @@ 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;
|
||||
|
|
@ -1326,7 +1371,7 @@ 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) {
|
||||
|
|
|
|||
|
|
@ -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,7 +322,7 @@ 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
|
||||
|
|
@ -909,6 +917,7 @@ void EpdBaseClr::Epd2::WaitEpd()
|
|||
}
|
||||
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();
|
||||
|
|
|
|||
|
|
@ -36,8 +36,8 @@ namespace eDosStation
|
|||
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.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 ");
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,6 +68,20 @@ static public class extensions
|
|||
}
|
||||
return found;
|
||||
}
|
||||
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;
|
||||
|
|
|
|||
|
|
@ -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