with callback
This commit is contained in:
parent
424ac5a6b2
commit
54235996ea
15 changed files with 297 additions and 252 deletions
|
|
@ -20,19 +20,6 @@
|
|||
|
||||
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define DebugWrite_IsActive() true
|
||||
#else
|
||||
#define DebugWrite_IsActive() (g_EnableReleaseLogging)
|
||||
#endif
|
||||
|
||||
#define DebugWrite(f, ...) \
|
||||
do { \
|
||||
if (DebugWrite_IsActive()) { \
|
||||
auto _msg = std::format(f, ##__VA_ARGS__); \
|
||||
OutputDebugStringA(_msg.c_str()); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
||||
|
||||
|
|
@ -66,6 +53,7 @@ void Epd3Base::Epd3U::ResetStepReturnValues()
|
|||
HasStepError = 0;
|
||||
for (int i = MaxSteps - 1; i >= 0; --i) {
|
||||
StepReturnValues[i][static_cast<size_t>(EpdStepColumns::function)] = 0;
|
||||
StepReturnValues[i][static_cast<size_t>(EpdStepColumns::retry)] = 0;
|
||||
StepReturnValues[i][static_cast<size_t>(EpdStepColumns::commitRV)] = -998;
|
||||
StepReturnValues[i][static_cast<size_t>(EpdStepColumns::endRV)] = -1;
|
||||
StepReturnValues[i][static_cast<size_t>(EpdStepColumns::canIgnorore)] = 0;
|
||||
|
|
@ -84,6 +72,7 @@ int Epd3Base::Epd3U::SetFunctionReturnValue(enum eFunctions f, BYTE CanIgnore, i
|
|||
++CurrentStep;
|
||||
if (CurrentStep == 0) HasStepError = 0;
|
||||
StepReturnValues[CurrentStep][static_cast<size_t>(EpdStepColumns::function)] = f;
|
||||
StepReturnValues[CurrentStep][static_cast<size_t>(EpdStepColumns::retry)] = retry;
|
||||
StepReturnValues[CurrentStep][static_cast<size_t>(EpdStepColumns::commitRV)] = -998;
|
||||
StepReturnValues[CurrentStep][static_cast<size_t>(EpdStepColumns::endRV)] = -1;
|
||||
StepReturnValues[CurrentStep][static_cast<size_t>(EpdStepColumns::canIgnorore)] = CanIgnore;
|
||||
|
|
@ -125,11 +114,7 @@ uint32_t Epd3Base::Epd3U::SetEndReturnValue(int step, int32_t rv)
|
|||
auto endTime = std::chrono::steady_clock::now();
|
||||
auto duration = std::chrono::duration_cast<std::chrono::duration<int32_t, std::milli>>(endTime - sessionStart);
|
||||
StepReturnValues[step][static_cast<size_t>(EpdStepColumns::endMS)] = duration.count();
|
||||
//CommitRV = -998 if not set.
|
||||
/*if (StepReturnValues[step][static_cast<size_t>(EpdStepColumns::commitMS)] <= 0) {
|
||||
StepReturnValues[step][static_cast<size_t>(EpdStepColumns::commitRV)] = 0;
|
||||
StepReturnValues[step][static_cast<size_t>(EpdStepColumns::commitMS)] = duration.count();
|
||||
}*/
|
||||
|
||||
if (rv != 0) {
|
||||
HasStepError = 1;
|
||||
if (StepReturnValues[step][static_cast<size_t>(EpdStepColumns::canIgnorore)]) rv = 0; //if canIgnore set this return rv ok
|
||||
|
|
@ -153,23 +138,23 @@ int32_t Epd3Base::Epd3U::CommitAndSetRV()
|
|||
return r;
|
||||
}
|
||||
|
||||
int32_t Epd3Base::Epd3U::CommitAndSetRV(int idx[], int len)
|
||||
{
|
||||
int32_t r = Commit3(epdComsHandle);
|
||||
for(int i = 0; i < len ;++i)
|
||||
SetCommitReturnValue(idx[i],r);
|
||||
return r;
|
||||
}
|
||||
//int32_t Epd3Base::Epd3U::CommitAndSetRV(int idx[], int len)
|
||||
//{
|
||||
// int32_t r = Commit3(epdComsHandle);
|
||||
// for(int i = 0; i < len ;++i)
|
||||
// SetCommitReturnValue(idx[i],r);
|
||||
// return r;
|
||||
//}
|
||||
|
||||
int32_t Epd3Base::Epd3U::CommitAndEnd2RV(int32_t (WINAPI *endFunction2)(CommsHandle hComms, CompletionToken token), CompletionToken token, int waitTime)
|
||||
{
|
||||
int32_t r = Commit3(epdComsHandle);
|
||||
SetCommitReturnValue(r);
|
||||
if (waitTime) Sleep(waitTime);
|
||||
if (!r) r = (*endFunction2)(epdComsHandle, token);
|
||||
r= SetEndReturnValue(r);
|
||||
return r;
|
||||
}
|
||||
//int32_t Epd3Base::Epd3U::CommitAndEnd2RV(int32_t (WINAPI *endFunction2)(CommsHandle hComms, CompletionToken token), CompletionToken token, int waitTime)
|
||||
//{
|
||||
// int32_t r = Commit3(epdComsHandle);
|
||||
// SetCommitReturnValue(r);
|
||||
// if (waitTime) Sleep(waitTime);
|
||||
// if (!r) r = (*endFunction2)(epdComsHandle, token);
|
||||
// r= SetEndReturnValue(r);
|
||||
// return r;
|
||||
//}
|
||||
|
||||
int32_t Epd3Base::Epd3U::End2RV(int step, int32_t(WINAPI* endFunction2)(CommsHandle hComms, CompletionToken token), CompletionToken token)
|
||||
{
|
||||
|
|
@ -180,6 +165,7 @@ int32_t Epd3Base::Epd3U::End2RV(int step, int32_t(WINAPI* endFunction2)(CommsHan
|
|||
|
||||
void WINAPI completion(CommsHandle hComms, CompletionToken token)
|
||||
{
|
||||
|
||||
SetEvent(current->hCompletion);
|
||||
}
|
||||
|
||||
|
|
@ -306,7 +292,8 @@ Epd3Base::Epd3U::Epd3U(int _comport)
|
|||
if (hCompletion == 0) hCompletion = CreateEvent(NULL, TRUE, FALSE, NULL);
|
||||
if (hCancel == 0) hCancel = CreateEvent(NULL, TRUE, FALSE, NULL);
|
||||
|
||||
|
||||
s_pInstance = this;
|
||||
m_activeToken = nullptr;
|
||||
}
|
||||
|
||||
Epd3Base::Epd3U::~Epd3U()
|
||||
|
|
@ -393,9 +380,14 @@ DWORD Epd3Base::Epd3U::StartCom()
|
|||
Dll3RV = SetConnectCallback(epdComsHandle, connectcallback);
|
||||
Dll3RV = SetDisconnectCallback(epdComsHandle, disconnectcallback);
|
||||
Dll3RV = SetMultipleDiscoveryMode(epdComsHandle, false);
|
||||
Dll3RV= SetDiscoveryTimeslots(epdComsHandle, 1);
|
||||
Dll3RV = SetResponseTimeout(epdComsHandle, ResponseTimeout); //initial
|
||||
Dll3RV = SetDiscoveryCacheTimeout(epdComsHandle, DiscoveryCacheTimeout);
|
||||
#if !_DEBUG
|
||||
Dll3RV = SetRetryCount(epdComsHandle, 20);
|
||||
#else
|
||||
Dll3RV = SetRetryCount(epdComsHandle, 1);
|
||||
#endif
|
||||
|
||||
step = 4;
|
||||
SetFunctionReturnValue(fOpenReader, 0,0);
|
||||
|
|
@ -771,17 +763,17 @@ int Epd3Base::Epd3U::SetTime() //Only R3
|
|||
int r = 0;
|
||||
if (Epd.Gen == EpdGeneration::Mk3)
|
||||
{
|
||||
//SetFunctionReturnValue(WriteRTC_R3, 1);
|
||||
|
||||
utc = TimeFunctions::NowToEpd3Time();
|
||||
r = RunComsTransaction(WriteRTC_R3, 1,
|
||||
[&]() {
|
||||
return BeginWriteRTC_R3(epdComsHandle, utc, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginWriteRTC_R3(epdComsHandle, utc, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndWriteRTC_R3(epdComsHandle, token);
|
||||
}, 10
|
||||
);
|
||||
// token = BeginWriteRTC_R3(epdComsHandle, utc, nullptr); r = CommitAndEnd2RV(EndWriteRTC_R3, token,100);
|
||||
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
|
@ -790,22 +782,20 @@ int Epd3Base::Epd3U::ReadStatusOnly()
|
|||
{
|
||||
EPDStep = EpdSteps::StepReadStatus;
|
||||
int rv=0;
|
||||
ResetEvent(hCompletion);
|
||||
|
||||
|
||||
current->StatusDecoded = false;
|
||||
if (!isConnected) rv = ReConnect();
|
||||
if (rv)
|
||||
return rv;
|
||||
|
||||
|
||||
RunComsTransaction(eFunctions::ReadStatusOnly,0,
|
||||
[&]() {
|
||||
return BeginReadStatus(epdComsHandle, nullptr);
|
||||
RunComsTransaction(eFunctions::ReadStatusOnly, 0,
|
||||
[&](auto cb) {
|
||||
return BeginReadStatus(epdComsHandle, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndReadStatus(epdComsHandle, token, &epd3status);
|
||||
}, 10
|
||||
);
|
||||
);
|
||||
|
||||
|
||||
if (rv) {
|
||||
|
|
@ -879,8 +869,8 @@ int Epd3Base::Epd3U::ReadStatus(bool onlyStatus)
|
|||
step = 2;
|
||||
|
||||
rv = RunComsTransaction(eFunctions::ReadStatus, 0,
|
||||
[&]() {
|
||||
return BeginReadStatus(epdComsHandle, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginReadStatus(epdComsHandle, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndReadStatus(epdComsHandle, token, &epd3status);
|
||||
|
|
@ -900,8 +890,8 @@ int Epd3Base::Epd3U::ReadStatus(bool onlyStatus)
|
|||
// millivolt vbat0 off load battery voltage vbat1 on load battery voltage vcpu CPU supply voltage, in millivolts
|
||||
|
||||
rv = RunComsTransaction(eFunctions::ReadVoltages, 0,
|
||||
[&]() {
|
||||
return BeginReadVoltages(epdComsHandle, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginReadVoltages(epdComsHandle, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndReadVoltages(epdComsHandle, token, &vbat0, &vbat1, &vcpu);
|
||||
|
|
@ -938,8 +928,8 @@ int Epd3Base::Epd3U::ReadStatus(bool onlyStatus)
|
|||
EPDStepResult = EpdStepResults::Started;
|
||||
|
||||
rv = RunComsTransaction(eFunctions::ReadEpdIdentities, 0,
|
||||
[&]() {
|
||||
return BeginReadEpdIdentities(epdComsHandle, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginReadEpdIdentities(epdComsHandle, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndReadEpdIdentities(epdComsHandle, token, &EpdID32, reinterpret_cast<EpdTypes*>(&EpdType), &capabilities, &MarkNumber, &VersionNumber, nullptr, 0);
|
||||
|
|
@ -971,8 +961,8 @@ int Epd3Base::Epd3U::ReadStatus(bool onlyStatus)
|
|||
step = 4;
|
||||
EPDStep = EpdSteps::StepReadCounts;
|
||||
rv = RunComsTransaction(eFunctions::ReadCounts, 0,
|
||||
[&]() {
|
||||
return BeginReadCounts(epdComsHandle, nullptr,0,nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginReadCounts(epdComsHandle, nullptr,0,cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndReadCounts(epdComsHandle, token, Counts, MaxCounts, &countsRead, &utc, &seconds);
|
||||
|
|
@ -996,8 +986,8 @@ int Epd3Base::Epd3U::ReadStatus(bool onlyStatus)
|
|||
if (utc == 0) {
|
||||
EPDStep = EpdSteps::StepReadRTC;
|
||||
rv = RunComsTransaction(eFunctions::ReadRTC, 0,
|
||||
[&]() {
|
||||
return BeginReadRTC(epdComsHandle, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginReadRTC(epdComsHandle, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndReadRTC(epdComsHandle, token, &utc);
|
||||
|
|
@ -1032,8 +1022,8 @@ int Epd3Base::Epd3U::ReadStatus(bool onlyStatus)
|
|||
EPDStep = EpdSteps::StepReadWearerId;
|
||||
//batchstep = 0;
|
||||
rv = RunComsTransaction(eFunctions::ReadWearerId, 0,
|
||||
[&]() {
|
||||
return BeginReadWearerId(epdComsHandle, static_cast<uint16_t>(WearerIdType::WearerId_Name), nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginReadWearerId(epdComsHandle, static_cast<uint16_t>(WearerIdType::WearerId_Name), cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndReadWearerId(epdComsHandle, token, &mk3WearerID);
|
||||
|
|
@ -1053,8 +1043,8 @@ int Epd3Base::Epd3U::ReadStatus(bool onlyStatus)
|
|||
//batchstep = 1;
|
||||
|
||||
rv = RunComsTransaction(eFunctions::ReadWearerId, 0,
|
||||
[&]() {
|
||||
return BeginReadWearerId(epdComsHandle, static_cast<uint16_t>(WearerIdType::WearerId_Primary), nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginReadWearerId(epdComsHandle, static_cast<uint16_t>(WearerIdType::WearerId_Primary), cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndReadWearerId(epdComsHandle, token, &mk3WearerID);
|
||||
|
|
@ -1388,8 +1378,8 @@ WORD Epd3Base::Epd3U::ReadCal()
|
|||
int r = 0, r2 = 0;
|
||||
Error = 0;
|
||||
r = RunComsTransaction(eFunctions::ReadSensitivities, 0,
|
||||
[&]() {
|
||||
return BeginReadSensitivities(epdComsHandle, nullptr, 0, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginReadSensitivities(epdComsHandle, nullptr, 0, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndReadSensitivities(epdComsHandle, token, sensitivities, MaxSensitivities, &numSensitivities);
|
||||
|
|
@ -1424,8 +1414,8 @@ WORD Epd3Base::Epd3U::ReadCal()
|
|||
|
||||
|
||||
r = RunComsTransaction(eFunctions::ReadGains, 0,
|
||||
[&]() {
|
||||
return BeginReadGains(epdComsHandle, nullptr, 0, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginReadGains(epdComsHandle, nullptr, 0, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndReadGains(epdComsHandle, token, gains, MaxGains, &numGains);
|
||||
|
|
@ -1483,7 +1473,7 @@ WORD Epd3Base::Epd3U::ReadSensitivitiesAndTresholds()
|
|||
uint16_t FBthresh;
|
||||
uint16_t HGthresh;
|
||||
|
||||
token = BeginReadCalibrationData_R2(epdComsHandle, nullptr);
|
||||
CompletionToken token = BeginReadCalibrationData_R2(epdComsHandle, nullptr);
|
||||
r = Commit3(epdComsHandle);
|
||||
r = EndReadCalibrationData_R2(epdComsHandle, token,
|
||||
&HGSens10,
|
||||
|
|
@ -1512,8 +1502,8 @@ WORD Epd3Base::Epd3U::ReadSensitivitiesAndTresholds()
|
|||
}
|
||||
else {
|
||||
r = RunComsTransaction(eFunctions::ReadDetectorThresholds, 0,
|
||||
[&]() {
|
||||
return BeginReadDetectorThresholds_R3(epdComsHandle, nullptr, 0, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginReadDetectorThresholds_R3(epdComsHandle, nullptr, 0, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndReadDetectorThresholds_R3(epdComsHandle, token, dTresholds, MaxTresholds, &numTresholds);
|
||||
|
|
@ -1571,8 +1561,8 @@ WORD Epd3Base::Epd3U::ReadDoses()
|
|||
numDoses = 0; utc = 0;
|
||||
|
||||
r = RunComsTransaction(eFunctions::fReadDoses, 0,
|
||||
[&]() {
|
||||
return BeginReadDoses(epdComsHandle, nullptr, 0, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginReadDoses(epdComsHandle, nullptr, 0, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndReadDoses(epdComsHandle, token, doses, MaxDoses, &numDoses, &utc);
|
||||
|
|
@ -1599,8 +1589,8 @@ WORD Epd3Base::Epd3U::ReadDoses()
|
|||
decodeDoses(numDoses);
|
||||
|
||||
r = RunComsTransaction(eFunctions::ReadTotalDoses, 0,
|
||||
[&]() {
|
||||
return BeginReadTotalDoses(epdComsHandle, nullptr, 0, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginReadTotalDoses(epdComsHandle, nullptr, 0, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndReadTotalDoses(epdComsHandle, token, totdoses, MaxDoses, &numtotDoses, &utc);
|
||||
|
|
@ -1627,8 +1617,8 @@ WORD Epd3Base::Epd3U::ReadDoses()
|
|||
decodetotDoses(numtotDoses);
|
||||
|
||||
r = RunComsTransaction(eFunctions::ReadQualityData, 0,
|
||||
[&]() {
|
||||
return BeginReadQualityData(epdComsHandle, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginReadQualityData(epdComsHandle, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndReadQualityData(epdComsHandle, token, &quality);
|
||||
|
|
@ -1649,8 +1639,8 @@ WORD Epd3Base::Epd3U::ReadDoses()
|
|||
Resets = quality.PowerCycles;
|
||||
|
||||
r = RunComsTransaction(eFunctions::ReadPeakRates, 0,
|
||||
[&]() {
|
||||
return BeginReadPeakRates(epdComsHandle, nullptr, 0, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginReadPeakRates(epdComsHandle, nullptr, 0, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndReadPeakRates(epdComsHandle, token, peakRates, MaxPeakRates, &numRates);
|
||||
|
|
@ -1689,8 +1679,8 @@ int Epd3Base::Epd3U::ClearDoses()
|
|||
{
|
||||
int rv;
|
||||
rv = RunComsTransaction(eFunctions::ClearTotalDose, 0,
|
||||
[&]() {
|
||||
return BeginClearTotalDose(epdComsHandle, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginClearTotalDose(epdComsHandle, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndClearTotalDose(epdComsHandle, token);
|
||||
|
|
@ -1709,8 +1699,8 @@ int Epd3Base::Epd3U::ClearDoses()
|
|||
if (rv) goto error;
|
||||
|
||||
rv = RunComsTransaction(eFunctions::ClearDose, 0,
|
||||
[&]() {
|
||||
return BeginClearDose(epdComsHandle, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginClearDose(epdComsHandle, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndClearDose(epdComsHandle, token);
|
||||
|
|
@ -1730,8 +1720,8 @@ int Epd3Base::Epd3U::ClearDoses()
|
|||
if (rv) goto error;
|
||||
|
||||
rv = RunComsTransaction(eFunctions::ClearPeakRates, 0,
|
||||
[&]() {
|
||||
return BeginClearPeakRates(epdComsHandle, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginClearPeakRates(epdComsHandle, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndClearPeakRates(epdComsHandle, token);
|
||||
|
|
@ -1761,8 +1751,8 @@ int Epd3Base::Epd3U::ClearAlarms()
|
|||
int rv;
|
||||
|
||||
rv = RunComsTransaction(eFunctions::ClearFaultStatus, 0,
|
||||
[&]() {
|
||||
return BeginClearFaultStatus(epdComsHandle, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginClearFaultStatus(epdComsHandle, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndClearFaultStatus(epdComsHandle, token);
|
||||
|
|
@ -1781,8 +1771,8 @@ int Epd3Base::Epd3U::ClearAlarms()
|
|||
//}
|
||||
|
||||
rv = RunComsTransaction(eFunctions::ClearLatchedAlarms, 0,
|
||||
[&]() {
|
||||
return BeginClearLatchedAlarms(epdComsHandle, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginClearLatchedAlarms(epdComsHandle, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndClearLatchedAlarms(epdComsHandle, token);
|
||||
|
|
@ -1806,8 +1796,8 @@ int Epd3Base::Epd3U::ClearAlarms()
|
|||
WORD Epd3Base::Epd3U::SetCalDueDate() {
|
||||
UINT32 utc = TimeFunctions::NewCalDueTime();
|
||||
int rv = RunComsTransaction(eFunctions::fSetCalDueDate, 0,
|
||||
[&]() {
|
||||
return BeginWriteCalDueDate_R3(epdComsHandle, utc, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginWriteCalDueDate_R3(epdComsHandle, utc, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndWriteCalDueDate_R3(epdComsHandle, token);
|
||||
|
|
@ -1927,8 +1917,8 @@ WORD Epd3Base::Epd3U::ReadAlarmConfig() {
|
|||
//Alleen MK3 ? leeg bij MK2
|
||||
numAlarm = 0;
|
||||
int r = RunComsTransaction(eFunctions::ReadAlarmConfiguration, 0,
|
||||
[&]() {
|
||||
return BeginReadAlarmConfiguration(epdComsHandle, nullptr, 0, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginReadAlarmConfiguration(epdComsHandle, nullptr, 0, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndReadAlarmConfiguration(epdComsHandle, token, alarmConfig, MaxAlarmConfig, &numAlarm);
|
||||
|
|
@ -1951,8 +1941,8 @@ WORD Epd3Base::Epd3U::ReadAlarmTresholds() {
|
|||
if (isNeutron) measID = (uint8_t)MeasurementId::Meas_Hp10N; else measID = (uint8_t)MeasurementId::Meas_Hp07;
|
||||
hp07tresholds.MeasId = measID;
|
||||
r = RunComsTransaction(eFunctions::ReadAlarmThresholds, 0,
|
||||
[&]() {
|
||||
return BeginReadAlarmThresholds(epdComsHandle, (uint8_t)hp07tresholds.MeasId, nullptr, 0, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginReadAlarmThresholds(epdComsHandle, (uint8_t)hp07tresholds.MeasId, nullptr, 0, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndReadAlarmThresholds(epdComsHandle, token, &hp07tresholds);
|
||||
|
|
@ -1978,8 +1968,8 @@ WORD Epd3Base::Epd3U::ReadAlarmTresholds() {
|
|||
if (isNeutron) measID = (uint8_t)MeasurementId::Meas_Hp10G; else measID = (uint8_t)MeasurementId::Meas_Hp10;
|
||||
hp10tresholds.MeasId = measID;
|
||||
r = RunComsTransaction(eFunctions::ReadAlarmThresholds, 0,
|
||||
[&]() {
|
||||
return BeginReadAlarmThresholds(epdComsHandle, (uint8_t)hp10tresholds.MeasId, nullptr, 0, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginReadAlarmThresholds(epdComsHandle, (uint8_t)hp10tresholds.MeasId, nullptr, 0, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndReadAlarmThresholds(epdComsHandle, token, &hp10tresholds);
|
||||
|
|
@ -2002,8 +1992,8 @@ WORD Epd3Base::Epd3U::WriteAlarmTresholds() {
|
|||
encodeTreshold(&hp10tresholds);
|
||||
|
||||
r = RunComsTransaction(eFunctions::WriteAlarmThresholdsHP10, 0,
|
||||
[&]() {
|
||||
return BeginWriteAlarmThresholds(epdComsHandle, (uint8_t)hp10tresholds.MeasId, (uint8_t)hp10tresholds.NumberThresholds, hp10tresholds.Thresholds, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginWriteAlarmThresholds(epdComsHandle, (uint8_t)hp10tresholds.MeasId, (uint8_t)hp10tresholds.NumberThresholds, hp10tresholds.Thresholds, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndWriteAlarmThresholds(epdComsHandle, token);
|
||||
|
|
@ -2021,8 +2011,8 @@ WORD Epd3Base::Epd3U::WriteAlarmTresholds() {
|
|||
hp07tresholds.NumberThresholds = 4;
|
||||
|
||||
r = RunComsTransaction(eFunctions::WriteAlarmThresholdsHP07, 0,
|
||||
[&]() {
|
||||
return BeginWriteAlarmThresholds(epdComsHandle, (uint8_t)hp07tresholds.MeasId, (uint8_t)hp07tresholds.NumberThresholds, hp07tresholds.Thresholds, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginWriteAlarmThresholds(epdComsHandle, (uint8_t)hp07tresholds.MeasId, (uint8_t)hp07tresholds.NumberThresholds, hp07tresholds.Thresholds, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndWriteAlarmThresholds(epdComsHandle, token);
|
||||
|
|
@ -2034,8 +2024,8 @@ WORD Epd3Base::Epd3U::WriteAlarmTresholds() {
|
|||
goto error;
|
||||
|
||||
r = RunComsTransaction(eFunctions::WriteRateOffPercentage, 0,
|
||||
[&]() {
|
||||
return BeginWriteRateOffPercentage(epdComsHandle, RatePct, 2, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginWriteRateOffPercentage(epdComsHandle, RatePct, 2, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndWriteRateOffPercentage(epdComsHandle, token);
|
||||
|
|
@ -2079,8 +2069,8 @@ WORD Epd3Base::Epd3U::DeIssue()
|
|||
#endif
|
||||
|
||||
r = RunComsTransaction(eFunctions::DeissueEPD, 0,
|
||||
[&]() {
|
||||
return BeginDeissueEPD(epdComsHandle, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginDeissueEPD(epdComsHandle, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndDeissueEPD(epdComsHandle, token);
|
||||
|
|
@ -2117,8 +2107,8 @@ WORD Epd3Base::Epd3U::WriteWearer() {
|
|||
int step = 0;
|
||||
|
||||
r = RunComsTransaction(eFunctions::SetBaselineCounters, 0,
|
||||
[&]() {
|
||||
return BeginSetBaselineCounters(epdComsHandle, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginSetBaselineCounters(epdComsHandle, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndSetBaselineCounters(epdComsHandle, token);
|
||||
|
|
@ -2138,8 +2128,8 @@ WORD Epd3Base::Epd3U::WriteWearer() {
|
|||
memcpy(mk3WearerID.Utf8String, WearerName, 23);
|
||||
|
||||
r = RunComsTransaction(eFunctions::WriteWearerIdName, 0,
|
||||
[&]() {
|
||||
return BeginWriteWearerId(epdComsHandle, mk3WearerID, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginWriteWearerId(epdComsHandle, mk3WearerID, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndWriteWearerId(epdComsHandle, token);
|
||||
|
|
@ -2155,8 +2145,8 @@ WORD Epd3Base::Epd3U::WriteWearer() {
|
|||
memcpy(mk3WearerID.Utf8String, WearerID, 13);
|
||||
|
||||
r = RunComsTransaction(eFunctions::WriteWearerIdPrimary, 0,
|
||||
[&]() {
|
||||
return BeginWriteWearerId(epdComsHandle, mk3WearerID, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginWriteWearerId(epdComsHandle, mk3WearerID, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndWriteWearerId(epdComsHandle, token);
|
||||
|
|
@ -2215,8 +2205,8 @@ WORD Epd3Base::Epd3U::Issue(bool PrepareDone) //normaal is preparedone=tru
|
|||
DoProtectSession = false;
|
||||
if (DoProtectSession) {
|
||||
r = RunComsTransaction(eFunctions::EnableProtectedSession, 0,
|
||||
[&]() {
|
||||
return BeginEnableProtectedSession(epdComsHandle, 1, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginEnableProtectedSession(epdComsHandle, 1, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndIssueEPD(EndEnableProtectedSession, token);
|
||||
|
|
@ -2256,8 +2246,8 @@ WORD Epd3Base::Epd3U::Issue(bool PrepareDone) //normaal is preparedone=tru
|
|||
|
||||
tries = 1;
|
||||
r = RunComsTransaction(eFunctions::IssueEPD, 0,
|
||||
[&]() {
|
||||
return BeginIssueEPD(epdComsHandle, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginIssueEPD(epdComsHandle, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndIssueEPD(epdComsHandle, token);
|
||||
|
|
@ -2287,8 +2277,8 @@ WORD Epd3Base::Epd3U::Issue(bool PrepareDone) //normaal is preparedone=tru
|
|||
|
||||
if (DoProtectSession) {
|
||||
r = RunComsTransaction(eFunctions::DisableProtectedSession, 0,
|
||||
[&]() {
|
||||
return BeginEnableProtectedSession(epdComsHandle, 0, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginEnableProtectedSession(epdComsHandle, 0, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndIssueEPD(EndEnableProtectedSession, token);
|
||||
|
|
@ -2319,8 +2309,8 @@ WORD Epd3Base::Epd3U::EPDReadExtraStatus()
|
|||
uint32_t r;
|
||||
|
||||
r = RunComsTransaction(eFunctions::ReadBaselineCounts, 0,
|
||||
[&]() {
|
||||
return BeginReadBaselineCounts(epdComsHandle, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginReadBaselineCounts(epdComsHandle, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndReadBaselineCounts(epdComsHandle, token, Counts, 10, &utc, &countsRead);
|
||||
|
|
@ -2355,8 +2345,8 @@ WORD Epd3Base::Epd3U::WriteCal()
|
|||
Password = 9;
|
||||
|
||||
r = RunComsTransaction(eFunctions::MfrLogin_R2, 0,
|
||||
[&]() {
|
||||
return BeginMfrLogin_R2(epdComsHandle, Password, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginMfrLogin_R2(epdComsHandle, Password, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndMfrLogin_R2(epdComsHandle, token);
|
||||
|
|
@ -2370,8 +2360,8 @@ WORD Epd3Base::Epd3U::WriteCal()
|
|||
goto error;
|
||||
|
||||
r = RunComsTransaction(eFunctions::WriteSensitivities_R2, 0,
|
||||
[&]() {
|
||||
return BeginWriteSensitivities_R2(epdComsHandle, nullptr, (uint16_t)K1, (uint16_t)K2, (uint16_t)K3, (uint16_t)K4, (uint16_t)K5, (uint16_t)K6);
|
||||
[&](auto cb) {
|
||||
return BeginWriteSensitivities_R2(epdComsHandle, cb, (uint16_t)K1, (uint16_t)K2, (uint16_t)K3, (uint16_t)K4, (uint16_t)K5, (uint16_t)K6);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndWriteSensitivities_R2(epdComsHandle, token);
|
||||
|
|
@ -2395,8 +2385,8 @@ WORD Epd3Base::Epd3U::WriteCal()
|
|||
// goto error;
|
||||
|
||||
r = RunComsTransaction(eFunctions::WriteAccessLevelAdmin, 0,
|
||||
[&]() {
|
||||
return BeginWriteAccessLevel(epdComsHandle, AccessLevel_t::Admin, EC, ECLen, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginWriteAccessLevel(epdComsHandle, AccessLevel_t::Admin, EC, ECLen,cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndWriteAccessLevel(epdComsHandle, token);
|
||||
|
|
@ -2421,8 +2411,8 @@ WORD Epd3Base::Epd3U::WriteCal()
|
|||
gains[1].id = (uint16_t)SensitivityId::Fn1Sens10N; //K3
|
||||
gains[1].value = GainFn;
|
||||
r = RunComsTransaction(eFunctions::WriteGains_R3, 0,
|
||||
[&]() {
|
||||
return BeginWriteGains(epdComsHandle, gains, numGains, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginWriteGains(epdComsHandle, gains, numGains, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndWriteGains(epdComsHandle, token);
|
||||
|
|
@ -2605,8 +2595,8 @@ int Epd3Base::Epd3U::WriteConfig(void)
|
|||
// Become admin
|
||||
if (!r) {
|
||||
r = RunComsTransaction(eFunctions::WriteAccessLevelAdmin, 0,
|
||||
[&]() {
|
||||
return BeginWriteAccessLevel(epdComsHandle, AccessLevel_t::Admin, EC, ECLen, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginWriteAccessLevel(epdComsHandle, AccessLevel_t::Admin, EC, ECLen, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndWriteAccessLevel(epdComsHandle, token);
|
||||
|
|
@ -2628,8 +2618,8 @@ int Epd3Base::Epd3U::WriteConfig(void)
|
|||
{ 5,0x0062 }
|
||||
};
|
||||
r = RunComsTransaction(eFunctions::WriteQuickAccessDisplays_R3, 0,
|
||||
[&]() {
|
||||
return BeginWriteQuickAccessDisplays_R3(epdComsHandle, vdisplayIds.data(), static_cast<uint8_t>(vdisplayIds.size()), nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginWriteQuickAccessDisplays_R3(epdComsHandle, vdisplayIds.data(), static_cast<uint8_t>(vdisplayIds.size()), cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndWriteQuickAccessDisplays_R3(epdComsHandle, token);
|
||||
|
|
@ -2648,8 +2638,8 @@ int Epd3Base::Epd3U::WriteConfig(void)
|
|||
|
||||
if (SoftVersion >= 2) {
|
||||
r = RunComsTransaction(eFunctions::EnableTestSound, 0,
|
||||
[&]() {
|
||||
return BeginEnableTestSound_R3(epdComsHandle, 1, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginEnableTestSound_R3(epdComsHandle, 1, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndEnableTestSound_R3(epdComsHandle, token);
|
||||
|
|
@ -2661,8 +2651,8 @@ int Epd3Base::Epd3U::WriteConfig(void)
|
|||
if (!r && isAdmin) {
|
||||
|
||||
r = RunComsTransaction(eFunctions::WriteDoseProfileInterval, 0,
|
||||
[&]() {
|
||||
return BeginWriteDoseProfileInterval(epdComsHandle, 0, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginWriteDoseProfileInterval(epdComsHandle, 0, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndWriteDoseProfileInterval(epdComsHandle, token);
|
||||
|
|
@ -2709,8 +2699,8 @@ int Epd3Base::Epd3U::WriteConfig(void)
|
|||
// 1 0 0 0 0
|
||||
|
||||
r = RunComsTransaction(eFunctions::WriteDisplayEnables_R3, 1,
|
||||
[&]() {
|
||||
return BeginWriteDisplayEnables_R3(epdComsHandle, venables.data(), static_cast<uint8_t>(venables.size()), nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginWriteDisplayEnables_R3(epdComsHandle, venables.data(), static_cast<uint8_t>(venables.size()), cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndWriteDisplayEnables_R3(epdComsHandle, token);
|
||||
|
|
@ -2763,8 +2753,8 @@ int Epd3Base::Epd3U::WriteConfig(void)
|
|||
{ (AlarmIds)9,0,0x0000,0x9CA5,60 }
|
||||
};
|
||||
r = RunComsTransaction(eFunctions::WriteAlarmConfiguration_R3, 1,
|
||||
[&]() {
|
||||
return BeginWriteAlarmConfiguration_R3(epdComsHandle, valarmConfigIds.data(), static_cast<uint16_t>(valarmConfigIds.size()), nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginWriteAlarmConfiguration_R3(epdComsHandle, valarmConfigIds.data(), static_cast<uint16_t>(valarmConfigIds.size()), cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndWriteAlarmConfiguration_R3(epdComsHandle, token);
|
||||
|
|
@ -2792,8 +2782,8 @@ int Epd3Base::Epd3U::WriteConfig(void)
|
|||
offModeDispId = (OffModeDisplayId_t)1;
|
||||
|
||||
r = RunComsTransaction(eFunctions::WriteOffModeDisplay_R3, 1,
|
||||
[&]() {
|
||||
return BeginWriteOffModeDisplay_R3(epdComsHandle, dutyCycle, offModeDispId, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginWriteOffModeDisplay_R3(epdComsHandle, dutyCycle, offModeDispId, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndWriteOffModeDisplay_R3(epdComsHandle, token);
|
||||
|
|
@ -2817,8 +2807,8 @@ int Epd3Base::Epd3U::WriteConfig(void)
|
|||
}*/
|
||||
|
||||
r = RunComsTransaction(eFunctions::WriteAccessLevelOpen, 0 ,
|
||||
[&]() {
|
||||
return BeginWriteAccessLevel(epdComsHandle, AccessLevel_t::Open, nullptr, 0, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginWriteAccessLevel(epdComsHandle, AccessLevel_t::Open, nullptr, 0, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndWriteAccessLevel(epdComsHandle, token);
|
||||
|
|
@ -2856,22 +2846,20 @@ int Epd3Base::Epd3U::SetChirp(float Sensitivity)
|
|||
if (Sensitivity > 0.001F) {
|
||||
enable = 1;
|
||||
r = RunComsTransaction(eFunctions::WriteChirpSensitivity, 0,
|
||||
[&]() {
|
||||
return BeginWriteChirpSensitivity(epdComsHandle, Sensitivity, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginWriteChirpSensitivity(epdComsHandle, Sensitivity, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndWriteChirpSensitivity(epdComsHandle, token);
|
||||
}, 10
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
if (r) goto error;
|
||||
|
||||
if (!r) {
|
||||
r = RunComsTransaction(eFunctions::WriteChirpEnable_R3, 0,
|
||||
[&]() {
|
||||
return BeginWriteChirpEnable_R3(epdComsHandle, enable, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginWriteChirpEnable_R3(epdComsHandle, enable, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndWriteChirpEnable_R3(epdComsHandle, token);
|
||||
|
|
@ -2891,8 +2879,8 @@ int Epd3Base::Epd3U::GetSelfTestData()
|
|||
{
|
||||
int r = 1;
|
||||
r = RunComsTransaction(eFunctions::fReadSelfTestInterval, 0,
|
||||
[&]() {
|
||||
return BeginReadSelfTestInterval(epdComsHandle, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginReadSelfTestInterval(epdComsHandle, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndReadSelfTestInterval(epdComsHandle, token, &SelfTestMinutes);
|
||||
|
|
@ -2925,8 +2913,8 @@ int Epd3Base::Epd3U::DoSelfTest()
|
|||
r = SetEpdON();
|
||||
|
||||
r = RunComsTransaction(eFunctions::fDoSelfTest, 0,
|
||||
[&]() {
|
||||
return BeginStartDetectorTest(epdComsHandle, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginStartDetectorTest(epdComsHandle, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndStartDetectorTest(epdComsHandle, token);
|
||||
|
|
|
|||
|
|
@ -16,6 +16,22 @@
|
|||
|
||||
#pragma unmanaged
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define DebugWrite_IsActive() true
|
||||
#else
|
||||
#define DebugWrite_IsActive() (g_EnableReleaseLogging)
|
||||
#endif
|
||||
|
||||
#define DebugWrite(f, ...) \
|
||||
do { \
|
||||
if (DebugWrite_IsActive()) { \
|
||||
auto _msg = std::format(f, ##__VA_ARGS__); \
|
||||
OutputDebugStringA(_msg.c_str()); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
||||
|
||||
#define MaxPeakRates 10
|
||||
#define MaxSensitivities 10
|
||||
#define MaxGains 10
|
||||
|
|
@ -25,7 +41,7 @@
|
|||
#define MaxAlarmConfig 10
|
||||
#define MaxTresholds 10
|
||||
#define MaxSteps 50
|
||||
#define MaxBatch 4
|
||||
//#define MaxBatch 4
|
||||
//ResponseTimeout was set to 2500 in code, but initial this was 500ms
|
||||
// 0b 1001110010000100
|
||||
//constexpr int ResponseTimeout = 500;
|
||||
|
|
@ -114,13 +130,14 @@ namespace Epd3Base {
|
|||
{
|
||||
public:
|
||||
const char* LogFileName;
|
||||
|
||||
std::ofstream logFile;
|
||||
char comPort[5] = { "COM4" };
|
||||
CommsHandle epdComsHandle;
|
||||
//uint32_t CurrentDeviceID;
|
||||
EpdGeneration EpdGen;
|
||||
DiscoveryId Epd;
|
||||
CompletionToken token, btoken[MaxBatch];
|
||||
CompletionToken m_activeToken ; //btoken[MaxBatch],
|
||||
WORD port = 3;
|
||||
const WORD MaxDevices = 10;
|
||||
WORD DeviceCount = 0;
|
||||
|
|
@ -435,8 +452,8 @@ namespace Epd3Base {
|
|||
uint32_t SetEndReturnValue(int step, int rv);
|
||||
|
||||
int32_t CommitAndSetRV();
|
||||
int32_t CommitAndSetRV(int idx[], int len);
|
||||
int32_t CommitAndEnd2RV(int32_t (WINAPI *endFunction2)(CommsHandle hComms, CompletionToken token), CompletionToken token, int waitTime=10);
|
||||
//int32_t CommitAndSetRV(int idx[], int len);
|
||||
//int32_t CommitAndEnd2RV(int32_t (WINAPI *endFunction2)(CommsHandle hComms, CompletionToken token), CompletionToken token, int waitTime=10);
|
||||
int32_t End2RV(int step, int32_t(WINAPI* endFunction2)(CommsHandle hComms, CompletionToken token), CompletionToken token);
|
||||
int GetAll(bool Closeconnection);
|
||||
int GetAllDeissue(bool reconnect);
|
||||
|
|
@ -469,57 +486,95 @@ namespace Epd3Base {
|
|||
void incrementError(int rv);
|
||||
void ResetStepReturnValues();
|
||||
template <typename FBegin, typename FEnd>
|
||||
bool RunComsTransaction(enum eFunctions f, BYTE CanIgnor, FBegin beginCall, FEnd endCall, int waitTime=10) {
|
||||
int r = 0, trie = 0;
|
||||
SetFunctionReturnValue(f, CanIgnor, trie);
|
||||
auto token = beginCall();
|
||||
r = Commit3(epdComsHandle);
|
||||
SetCommitReturnValue(r);
|
||||
if (!r) {
|
||||
Sleep(waitTime);
|
||||
r = endCall(token);
|
||||
}
|
||||
else {
|
||||
SetEndReturnValue(r);
|
||||
trie++;
|
||||
ReConnect();
|
||||
SetFunctionReturnValue(f, CanIgnor, trie);
|
||||
token = beginCall();
|
||||
bool RunComsTransaction(enum eFunctions f, BYTE CanIgnor, FBegin beginCall, FEnd endCall, int waitTime = 10, int maxRetries = 1) {
|
||||
int r = 0;
|
||||
int trie = 0; // Current retry
|
||||
|
||||
while (trie <= maxRetries ) {
|
||||
if (isCancelled()) break;
|
||||
ResetEvent(hCompletion);
|
||||
SetFunctionReturnValue(f, CanIgnor, trie);
|
||||
m_activeToken = beginCall(completion);
|
||||
|
||||
// 1. Commit phase
|
||||
r = Commit3(epdComsHandle);
|
||||
SetCommitReturnValue(r);
|
||||
if (!r) {
|
||||
Sleep(waitTime);
|
||||
r = endCall(token);
|
||||
|
||||
// 2. End phase if commit succeeded
|
||||
if (r == 0) {
|
||||
|
||||
DWORD waitResult = WaitForSingleObject(hCompletion, 5000);
|
||||
|
||||
if (waitResult == WAIT_OBJECT_0) {
|
||||
Sleep(waitTime);
|
||||
r = endCall(m_activeToken);
|
||||
}
|
||||
else {
|
||||
// Dll Timeout or failure occurred
|
||||
m_activeToken = nullptr;
|
||||
r = -1; // Set your timeout/error code here
|
||||
}
|
||||
//r = endCall(token);
|
||||
}
|
||||
SetEndReturnValue(r);
|
||||
|
||||
if (r == 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
trie++;
|
||||
if (trie <= maxRetries) {
|
||||
#if _DEBUG
|
||||
DebugWrite("***===*** Retry rv {} trie {}", r, trie);
|
||||
#endif
|
||||
//if (r==r_ErrorNotConnected)
|
||||
ReConnect(); //misschien alleen als error = not connected ?
|
||||
r= ReadStatusOnly();
|
||||
}
|
||||
}
|
||||
return SetEndReturnValue(r);
|
||||
m_activeToken = nullptr;
|
||||
return r;
|
||||
}
|
||||
|
||||
int SetEpdOFF() {
|
||||
return RunComsTransaction(
|
||||
eFunctions::EpdOff,
|
||||
0,
|
||||
[&]() {
|
||||
return BeginEpdOnOff(epdComsHandle, 0, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginEpdOnOff(epdComsHandle, 0, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndEpdOnOff(epdComsHandle, token);
|
||||
},
|
||||
1000
|
||||
100
|
||||
);
|
||||
}
|
||||
int SetEpdON() {
|
||||
return RunComsTransaction(
|
||||
eFunctions::EpdOn,
|
||||
0,
|
||||
[&]() {
|
||||
return BeginEpdOnOff(epdComsHandle, 1, nullptr);
|
||||
[&](auto cb) {
|
||||
return BeginEpdOnOff(epdComsHandle, 1, cb);
|
||||
},
|
||||
[&](auto token) {
|
||||
return EndEpdOnOff(epdComsHandle, token);
|
||||
},
|
||||
1000
|
||||
200
|
||||
);
|
||||
}
|
||||
|
||||
inline static Epd3Base::Epd3U* s_pInstance = nullptr; // Tracks the active instance (C++17)
|
||||
|
||||
static void WINAPI completion(CommsHandle hComms, CompletionToken token)
|
||||
{
|
||||
if (s_pInstance) {
|
||||
// ONLY signal the event if the token matches our current active request!
|
||||
if (token == s_pInstance->m_activeToken) {
|
||||
SetEvent(s_pInstance->hCompletion);
|
||||
}
|
||||
}
|
||||
//SetEvent(s_pInstance->hCompletion);
|
||||
}
|
||||
|
||||
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -132,7 +132,6 @@ int EpdBaseClr::Epd2::GetSteps()
|
|||
if (nsteps>0) {
|
||||
StepReturnValues = gcnew System::Collections::Generic::List<cStepValues^>(nsteps);
|
||||
cStepValues^ x;
|
||||
|
||||
for (int i = 0; i<nsteps; i++)
|
||||
{
|
||||
x = gcnew cStepValues();
|
||||
|
|
@ -141,10 +140,10 @@ int EpdBaseClr::Epd2::GetSteps()
|
|||
x->endrv = epd3->StepReturnValues[i][2];
|
||||
x->commitms = epd3->StepReturnValues[i][4];
|
||||
x->endms = epd3->StepReturnValues[i][5];
|
||||
x->commitcode = epd3->StepReturnValues[i][6];
|
||||
x->endcode = epd3->StepReturnValues[i][7];
|
||||
x->commitcode = (Int16)epd3->StepReturnValues[i][6];
|
||||
x->endcode = epd3->StepReturnValues[i][7];
|
||||
x->retry = epd3->StepReturnValues[i][8];
|
||||
StepReturnValues->Add(x);
|
||||
|
||||
}
|
||||
int tm;
|
||||
if (nsteps>0) {
|
||||
|
|
@ -1034,6 +1033,7 @@ int EpdBaseClr::Epd2::IssueAndCheck(float gain, float ChirpRate, bool WriteConfi
|
|||
if (!isMK3) {
|
||||
LogMessage("IssueAndCheck: !isMK3 BeforeSetIssued");
|
||||
BeforeSetIssued(epd);
|
||||
|
||||
rv = epd->IssueAndCheck(gain);
|
||||
LogMessage("IssueAndCheck: !isMK3 rv={}",rv);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ namespace EpdBaseClr {
|
|||
Int32 endms;
|
||||
Int32 commitcode;
|
||||
int32_t endcode;
|
||||
Int32 retry;
|
||||
cStepValues();
|
||||
~ cStepValues();
|
||||
|
||||
|
|
@ -47,7 +48,7 @@ namespace EpdBaseClr {
|
|||
|
||||
cStepValues:: cStepValues()
|
||||
{
|
||||
func = -1; commitrv = -1; endrv = -1; commitms = -1; endms = -1; commitcode = 0; endcode = 0;
|
||||
func = -1; commitrv = -1; endrv = -1; commitms = -1; endms = -1; commitcode = 0; endcode = 0; retry = 0;
|
||||
}
|
||||
|
||||
cStepValues::~ cStepValues()
|
||||
|
|
|
|||
|
|
@ -49,7 +49,8 @@ EXPORT_MANAGED enum class EpdStepColumns
|
|||
commitMS,
|
||||
endMS,
|
||||
commitCode,
|
||||
endCode,
|
||||
endCode,
|
||||
retry,
|
||||
maxStepColumn
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
// C++ / Win32 resource editor vereist getallen met komma's
|
||||
#define VERSION_MAJOR 4
|
||||
#define VERSION_MINOR 3
|
||||
#define VERSION_BUILD 0
|
||||
#define VERSION_BUILD 2
|
||||
#define VERSION_REVISION 0
|
||||
|
||||
// Strings voor de tekstuele weergave
|
||||
#define VERSION_STRING "4.3.0.0"
|
||||
#define VERSION_STRING "4.3.2.0"
|
||||
#define COPYRIGHT_STRING "Copyright (c) 2019-2026 LSW-Tech Luc Vandenbroucke"
|
||||
#define COMPANY_STRING "LSW-Tech"
|
||||
#define PRODUCT_STRING "EpdBaseClr"
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ AS BEGIN
|
|||
VALUES(@EPDID, @FirmWare, @ID_Station, @now, @ID_Station, @now, @epdType, 0, @HardWare);
|
||||
ELSE
|
||||
UPDATE [dbo].[EPDDevice]
|
||||
SET [Last_Station]=@ID_Station, [lastseen]=@now, [synced]=0, [HardWare]=@HardWare
|
||||
SET [Last_Station]=@ID_Station, [lastseen]=@now, [synced]=0, [HardWare]=@HardWare, [FirmWare]=@FirmWare
|
||||
WHERE [EPDID]=@EPDID;
|
||||
|
||||
INSERT [dbo].[EPDDeviceLog]([EPDID], [ID_Station], [ID_Visit], [updated], [BatNoload_mV], [Batload_mV], [CPU_mV], [r_InvalidState], [r_OperationTimeout], [r_InsufficientPriv], [r_OperationFailed], [r_ErrorUnexpectedResponse], [r_OtherError], [WriteTime], [Registered] , [DllVersion])
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ namespace eDosStation
|
|||
if (Lst != null && Lst.Count > 0)
|
||||
for (int s = 0; s < Lst.Count; s++)
|
||||
{
|
||||
string msg = $"{s} {GetName(Lst[s].func)} commit: {Getresult(Lst[s].commitrv)} ({Lst[s].commitms} ms) (er {Lst[s].commitcode} ) / end : {Getresult(Lst[s].endrv)} ({Lst[s].endms} ms) (er {Lst[s].endcode} )";
|
||||
string msg = $"{s} {GetName(Lst[s].func)} commit: {Getresult(Lst[s].commitrv)} ({Lst[s].commitms} ms) (er {Lst[s].commitcode} ) / end : {Getresult(Lst[s].endrv)} ({Lst[s].endms} ms) (er {Lst[s].endcode} ) retry {Lst[s].retry}";
|
||||
spl?.WriteSplunkLog(module, null,(Lst[s].commitrv == 0 || Lst[s].commitrv == -998 )&& Lst[s].endrv == 0 ? cspl.iseverity.info : cspl.iseverity.err, msg);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -78,5 +78,5 @@ using System.Windows;
|
|||
//2026-10-16 4.1.9 : testsound only from epd software version 2+
|
||||
//2026-10-22 4.1.10-12 : register hardware version,r_ErrorUnexpectedResponse
|
||||
|
||||
[assembly: AssemblyVersion("4.1.13.0")]
|
||||
[assembly: AssemblyFileVersion("4.1.13.0")]
|
||||
[assembly: AssemblyVersion("4.1.15.0")]
|
||||
[assembly: AssemblyFileVersion("4.1.15.0")]
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
22/10/2026 15:59:17,40
|
||||
29/10/2026 10:24:54,58
|
||||
|
|
|
|||
|
|
@ -208,17 +208,17 @@ exit
|
|||
# RGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgVGlt
|
||||
# ZVN0YW1waW5nIFJTQTQwOTYgU0hBMjU2IDIwMjUgQ0ExAhAIT9wzT35FTtvDD4/5
|
||||
# khg1MA0GCWCGSAFlAwQCAQUAoGkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAc
|
||||
# BgkqhkiG9w0BCQUxDxcNMjYxMDIyMTM1OTMwWjAvBgkqhkiG9w0BCQQxIgQgwGts
|
||||
# BgkqhkiG9w0BCQUxDxcNMjYxMDI5MDkyNTA3WjAvBgkqhkiG9w0BCQQxIgQgwGts
|
||||
# hmgwg+1No3Bfq4IiEmxiCsjb9Jy7A/l9sT7ewm0wDQYJKoZIhvcNAQEBBQAEggIA
|
||||
# aid89A+Uk/vvBwIM8u9hg7hfk0rr0dfhoP/Dtubh54LKBg/0ZzwJa6uSt3zelrvu
|
||||
# mNQbsSwRRHsqJaWJ0Ao64IPhKov8hPilSJX6NRRitf4SPYXfXikaRI103PZDmusz
|
||||
# Kl5SpeYPg9VmdAgn25uwFAjQO9Kx9gCWIo6uiq/00zIQfmJRjM55NU9dWr+qWjWS
|
||||
# xA7gYSN+Len0AOdk/Eo1d7vx2C2n6fCXA079HC/e3cS7eedCEIut1D14xLdif9aH
|
||||
# qNcOVk50FhHqIqH2TKo2mPrZcyS37fnsHctvKb4CTgKBNGtUD3zD7uRFBWc5aayu
|
||||
# koe/TgFPpNeevP8AMTbPSkocZp+a5eVvyUwlTdpQ1nNHf9vqzUj7jSsymOhuajn1
|
||||
# ydD6EM5ZQwXmTzXw+BLbc0XOUHaV/cuu5sBZs/QPa1Qge9WZUh8YGst3Lxc0dmG1
|
||||
# pJ0fMz/2UG/uZFC+RGJhW4i/yfjeEzd+mpxT0xd1sJF6eyCypP7rJfMn0LO3JufZ
|
||||
# iGNeHVero2vpG9jaxjeN66I4Fa4zVQ+dmIftHjGWZjmUn7U5GJdfuLmDxeTablCT
|
||||
# XtYeSgI55nkagDgWx+p4RbQEzsQBPPNlwvhh93Kvz7+x7Jbv3VwlXigyPHuriMc5
|
||||
# C0QIKQ/mN/n7ERBFGF61LLFWbK9Urd0W7i4N/Ld4sYE=
|
||||
# J/kRH4P1VU2foQVL58+wLGu6YtqtoUfJ8/VjBeIUOaZdwuSUNWEXACQ8C1gQ66kT
|
||||
# UeISVgfxC1Ec2Aa/q5cje1cV3/BhOqT1oADVI79tyjsFgzofKAWAGKNp55dBHP99
|
||||
# H7vIBRJNaDTsNInzkAHj6FlY1Il1BEIhaXS5esaw4ej70Z3ulm1NAEgpiiuh/0kF
|
||||
# P6Q8dcGLhG+5V/Jz1ZqtXXBp6DIV9e3xycEz4dy19cFTeplPGrijP0oAY0/hdsr+
|
||||
# 5soraVsz/fjXq7bDKWX3BcA+2E4ueS8lIAFrmLtiF+A5rkHePMh9lS4wv0Q2fnLL
|
||||
# rjuGrvfvCXs5rQJ6FIC6w1dH3+/5v0aWXP1DQzkByZ8GfUa0hbjJEXlawOoY9AAu
|
||||
# hbLyDuC09GClslNB40nMRpr9qKKqhlk2i4GcXFmWI66WTx8H9/1GXSpFiUHEOcr+
|
||||
# zSiu61Yhm2WSlJzJjhv8AEaZa8/FlZsVwsSBlfrXhIVMSS49SWXAYFD9Z0eZElum
|
||||
# AC1pKCVq2BEf0HG33gaS5NbXtKgxtdThdrcT1SFyfq+jrsRPqOPTml3bFT/yN1y2
|
||||
# O0nSzyw0HMavS3VxTxPQemV79tHAIYyWQVOvY5dV25KdVUMsuKiGcvxoFi/Aml6i
|
||||
# kDPk4DVVcs00Ghoz6m78JJBbVZ33+PdLXHS8I2N02pc=
|
||||
# SIG # End signature block
|
||||
|
|
|
|||
|
|
@ -262,17 +262,17 @@ Write-Host "Database is volledig up-to-date!" -ForegroundColor Green
|
|||
# RGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgVGlt
|
||||
# ZVN0YW1waW5nIFJTQTQwOTYgU0hBMjU2IDIwMjUgQ0ExAhAIT9wzT35FTtvDD4/5
|
||||
# khg1MA0GCWCGSAFlAwQCAQUAoGkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAc
|
||||
# BgkqhkiG9w0BCQUxDxcNMjYxMDIyMTM1OTMxWjAvBgkqhkiG9w0BCQQxIgQgX8Jz
|
||||
# BgkqhkiG9w0BCQUxDxcNMjYxMDI5MDkyNTA4WjAvBgkqhkiG9w0BCQQxIgQgX8Jz
|
||||
# mt8t4dFlf6dbnq2GYMYV89o+noBMKSYbxRzsddYwDQYJKoZIhvcNAQEBBQAEggIA
|
||||
# Kj5HuXiR76PIdc4NaMipB1wQHDpXGfBVQaRHsxriX6pw9m+dPTPJSR0MyfD9cjlB
|
||||
# TR8MppvOv7g6ZlHOyrX5aaNwEtw6h4VSH1oP1cgWLNneO4W7zmmVI+VuwmiA6NMk
|
||||
# pVWakW03ax9PBVcaB1+qn3ERF5Rnh5sx30GtGdVdODn/qvFl6Mvp1NepePxky3f5
|
||||
# o7DiTvSuV+unofLopLTf0yYi9DZBGNkfhxUMPTghFmzqhLuNtw3HFzdXzAaqDu3A
|
||||
# nE8kcUeZ+LpyfMnrvMy/lZV2Sg25yVT/rAwiL8EV7Z4BmjlE2jtZXp50GeltAywY
|
||||
# Yaer/NwF1rJrkaNT7elgcrjt4HU3Qv9JwcLBVRu65zmaY7QhRAX+ukIQUZ3COjQx
|
||||
# O9GsQbXUim5nThYA0+Jr/Hl51swoNDp/udNHU7DcdkUhr5znnZQsWIz24Ab7o9OE
|
||||
# X0bSpr/hAdbzKJCrlc/Uc1BAkKgzv4vZuPtYJVib3V5IW9kX9jdsP/KecwMDdmfH
|
||||
# c2RJR4fu6sEofQG1vXoKBQGJxx9fRUbg9uvM1ngke4sirbvlDFMCH+ziVa91b+hP
|
||||
# V1KO64gDNoW2aucjFJ15cGEZ5AFXQEu7nJKI1pBcDLcWimiQ0SR2AEX16B0sQj07
|
||||
# fohQitfrS1hPn8hx4dIWMOV8wfxOs8MEfyZf+mddtyM=
|
||||
# AFh3VuR8Qz1QAhq3V2Vib3wluF0flQI7ukrJuwwfKsux95vG6EiWiKpI5jeTKIPJ
|
||||
# pgpMhSY2zCXuHUBbn/lRso1Fmj6e2Zr7GILj4xD0kT4F7kbYCm7f5oKbHfbT4M0m
|
||||
# vVZIFlHqyzilCVBJus97OMaU4Je2Wv26lLEn70n6wtmh5hdbUWHycfFssQgPiGIJ
|
||||
# s1kXwKe5iCy0wNZknUIjYBoxNuqEnRn1wMhCt7dVdadxgJGpbQp169C0qEayrLYl
|
||||
# d80u3ylQ8eMr9FE+D+aU4nP2GzdzgD//TAbft3tRfxEW+kivzfGJlsO/JsONwXsN
|
||||
# 5I7D8m34R0InDVp+5TaCWMA2mHk1IArPyDhXEN9zZJPd6xYMI4O6Ffb1BkKqOBzi
|
||||
# prkE+dyHbVRDokKLEKVjuFI5B3CMPkG4LVRJEsViwVPr72q1xFIAPdLWYBgcVmFr
|
||||
# vqyIuU+QhkFgGVKFDKfLMUIlzIeG2gbn4rb7kUhPf7kFSvIXwe2WB2PKDyMg0OuI
|
||||
# ovRLfOasxIDsNCeihCX2HCRMdDnpphLkYSXomYo2eVUm1hPPWdBum71ZhntqMbMQ
|
||||
# wsrA3YP1N8BYHZLjnWa5/OYRqsJH5O+ak0bP4UTqCICDuQ4OQfsnYJl+smn4Wofl
|
||||
# hRQnFlC4Ds31XHVESImAqRgdRdV15tgDY5BL2IwzDaA=
|
||||
# SIG # End signature block
|
||||
|
|
|
|||
|
|
@ -351,17 +351,17 @@ exit
|
|||
# RGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgVGlt
|
||||
# ZVN0YW1waW5nIFJTQTQwOTYgU0hBMjU2IDIwMjUgQ0ExAhAIT9wzT35FTtvDD4/5
|
||||
# khg1MA0GCWCGSAFlAwQCAQUAoGkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAc
|
||||
# BgkqhkiG9w0BCQUxDxcNMjYxMDIyMTM1OTMwWjAvBgkqhkiG9w0BCQQxIgQgOHLe
|
||||
# BgkqhkiG9w0BCQUxDxcNMjYxMDI5MDkyNTA3WjAvBgkqhkiG9w0BCQQxIgQgOHLe
|
||||
# 10ZbE4bBoaCBq6mdTnn2K0ymg6PqwqP+YaWiyT4wDQYJKoZIhvcNAQEBBQAEggIA
|
||||
# P+BfQ1XdMydyUvDYUcHiIiOKFhvkbS1nZH1JuK6zpCXhOOhGjf7s5o3KFnYCFG8p
|
||||
# 80lXtRb9Odpoo7su2+PJxCjEyB1BQv/AL40pIic1fHFF0sxEdtI5WbYAIcvAzAr1
|
||||
# GAeAw8WMyZw3cBGHSP7SSEfCBpA4nf3a8RMU/3fLGcJmjYtWtSYmbpsi7/A8InUC
|
||||
# Ly65wl2KlJPpGhxuYBsGzWr0VzkUDLW4qw0yAor77T8xslBsi4giVLKys8/zlJCO
|
||||
# UKev3VTdEyIQTOdrcP5cbyrN6u8aWpUXKqrHRPiVn7VNS7C+NdRkBIsrbG9SEw1A
|
||||
# +ALHrDmOKCo10cJiPJmbpLl7FiGKkFR0jcT7m/ojXPFzYZYIN8Lma8HJCRG4j0OQ
|
||||
# 7mAfhDhusQcL5AMLnNPCy68Wqajinl1+Bo5IlaRJCryUG606HsgKE6JsJ5cFSHm7
|
||||
# nXCpJSL4sJfCV/t5e/hE2hZfxYGjDgKwPlSppzTjW2GJNiu5ZlURPG8T5txmxnDt
|
||||
# w0PpVdnfIFX+PsbfeQ5yHzTxDqrgzWM6iz8nHfrpMiswhM7kSCGmHqO7ZOwAsN03
|
||||
# 8b/z7kI1bQoNbkIXP55I3sLSiabFZCSvDZIgPu+pu0mP0AKBFkBxuy21XRggWmA/
|
||||
# 2MnoHYCWENpjTWErTWQjni4yAGAbZftM9VB0ECoowxs=
|
||||
# LTMZGeT68+1HxynHj0bcDAwTr31sysVX9nzUOkFzBaqaQjtrEMpcOdurqhZSwXl6
|
||||
# o/Ilr50STTUrRlbVsxIflOw60lQzxRQsGK396siaCvcv6A+1efmVg67goEG+xcxh
|
||||
# Qn54S09awYK/X3wDlbgz8NUNHsmgTR4QoYeHtQa/p2pQ6Cf99v9S/Q4d4KkrU53e
|
||||
# dPVczxvLcuRwT992aXr6hXNOGRUzDxIOhqT2FHxQPA0hSofCemhtzgyf4opHUmAb
|
||||
# y6WuCnxz91FVdWrqh8HaJtD7A8hSLU0xgcvp5DahoyHKSPDs9GyFcIkatP5L8Emk
|
||||
# srGCaF1QGwTTvNa2QbtU6m0/zX7WM4jZmCyk0fHGKvi5GyehUYSv7GZvyt/YPeQu
|
||||
# 7vIdPWrjy+rYXVFmnXHLlAWfaqz7Na3LGNHT8jyRgEMhO9Wt/aeYwogMnXbuWkSQ
|
||||
# ac/Wo2B80M4EntIVIv6c5GrmCGxwAw9katccgH1NS3AlkDx/Avpjt0W4OiyfBCMg
|
||||
# 8jc2uel1r3LpskQO5s4GpduJluRrxrgPoln+SJlmuLUS5CC42FH94h9AKetRNYhw
|
||||
# C1p+ccLPyPmHqmvxwqFTXEjZJTEwU32vokN4zJDCWXsuVq7OzeOEbcc+EMWzNlfJ
|
||||
# rlnqr72s+beaKctoSwljRI3mjRIX2AYnN7nntX7guo0=
|
||||
# SIG # End signature block
|
||||
|
|
|
|||
|
|
@ -333,17 +333,17 @@ exit
|
|||
# RGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgVGlt
|
||||
# ZVN0YW1waW5nIFJTQTQwOTYgU0hBMjU2IDIwMjUgQ0ExAhAIT9wzT35FTtvDD4/5
|
||||
# khg1MA0GCWCGSAFlAwQCAQUAoGkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAc
|
||||
# BgkqhkiG9w0BCQUxDxcNMjYxMDIyMTM1OTMxWjAvBgkqhkiG9w0BCQQxIgQgvcaw
|
||||
# BgkqhkiG9w0BCQUxDxcNMjYxMDI5MDkyNTA3WjAvBgkqhkiG9w0BCQQxIgQgvcaw
|
||||
# S55NsqsO8cNQM/o5pcLWgsKlsCZImMggqSii8i4wDQYJKoZIhvcNAQEBBQAEggIA
|
||||
# Pwzbcf1TrlVxZSmIhiv32rVDxPVp1CdY8zyMZuvCCxyvapbHNRCxr+pzanDwdbGc
|
||||
# pOxAazRL5fcywpQ192N4VUa+2C5bPPZ/GKN+7u42Acs4xXcNytEVsAKHsODqKcFI
|
||||
# QdreC6bpdCuyIVuFpeyl8TIssjYtN6XQF8Be/qZI1FOPi7EUS1WHlsuXs8YaI9Aw
|
||||
# 9pNXbLoR03Ry3ChPmepUskrrRmPmqRoL8S6f2KxZRggO0SfnoxjGRgNCu05Yjfgp
|
||||
# Ly3vuYxUQnlj5VXGmAH0Y0QZ4mSKyC58yq3DIsRWAi7r1gY3+3gTPCwPcaj8FMAB
|
||||
# Of0jIitHHE10c+dLsCPtl2uVjM/FM3y65e6COat7I/97sbdeNHr0GWhA7haJTUtZ
|
||||
# C8TkB5kuparhD0KcekQnZDZCOJdbZzI90nRDsj4Hbgk6H/Gp64g5udNdyK7Yf+dX
|
||||
# DSwkhQ6Zjey6AHSMkIUsa8BODz3WWfSWpoqxLgBBX4BhfD+LjfY4nWUEJDWM7wc5
|
||||
# OIDaTRjGD3OPcFFOyBqp/lDS5gsi/SuO4tIs87jvVCVN9MruKUdFcT0BOzfFOYv1
|
||||
# 478HTROFlLty6yoed+am4XFWarGOxyBcHCEm8paPgmZhkxSIiYzKbauBioaYEaZD
|
||||
# 7a7SGkAR56/s9zpGGmvtt+ID83OtrfUylZ7QcCkd5j0=
|
||||
# FczbdVVtAh1Kt5kPlzPL2bns/UAU/17lW44vNeH6IZ6Roe9SZ+w+GB5tkMB6vqtR
|
||||
# DvJ/ynEL1ikYM+JA2G4AsYUVyN+LgDwuMDJkI18Liau+iMkF//wCaHq9UQNsUP3n
|
||||
# oG1Zyi9YdGAHyglVrYvu7/GF1Kxifon3JLVJHq6/RKwlT03orX+ppwct3xxT8yOA
|
||||
# GkoSbKKSHEoK/VaeYY4XfFpHwgUNeuweg/94M5GUKbVGJ6QyDNeoLFgS8MzNh8QF
|
||||
# 0hTOXTmA5LOaukpfW02YnN76jO3X836i2LBWIn9jb9bvXZI+slvCDlmU1L3Qlnew
|
||||
# /AJZv1JYhRmF6WV9z5Cmc1ETpxii/kbuj85aU1apWPqsS236/Wo0++18RE1dnQrB
|
||||
# heM4O3waUgJXZRqrhICzQxwr+eEBeEeL8ByFw6cAnPoSr3j7UtPpbjonZLQuVHoC
|
||||
# lnJqvc/lGs6hmdOmHVEK732F6+dR8S4SNgVis7CLnVQtRkZo7e1doR+/npMDnnAS
|
||||
# UxMtKbPxoWIC+F48DpejasPS+98rhyZ0yR2Gcd4yRVTf37+1Pgn0zC6hBQlJgt4u
|
||||
# YexvV2kMJizYFp+KniGVu7bxsrep8/cUnXTFxkzKFb8rqHiOZXM/RCT2dHjgCG4E
|
||||
# axVIOG+56VD8pnzHyoZgBBHjjsyxCJWFcEXbl3nqFAk=
|
||||
# SIG # End signature block
|
||||
|
|
|
|||
|
|
@ -193,17 +193,17 @@ exit
|
|||
# RGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgVGlt
|
||||
# ZVN0YW1waW5nIFJTQTQwOTYgU0hBMjU2IDIwMjUgQ0ExAhAIT9wzT35FTtvDD4/5
|
||||
# khg1MA0GCWCGSAFlAwQCAQUAoGkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAc
|
||||
# BgkqhkiG9w0BCQUxDxcNMjYxMDIyMTM1OTMxWjAvBgkqhkiG9w0BCQQxIgQg6Tgk
|
||||
# BgkqhkiG9w0BCQUxDxcNMjYxMDI5MDkyNTA4WjAvBgkqhkiG9w0BCQQxIgQg6Tgk
|
||||
# d9vgRJTrKaa/aNqr0ugqtMxl17/Df7q35ywcJSEwDQYJKoZIhvcNAQEBBQAEggIA
|
||||
# HqPO9fcFB/S6MVIdOQbai3zNPkTRN42P6weOB9R9fAthapxxn7ZtdsHrAu6JvbGq
|
||||
# jo+jkgVgjbPxhuCOhFUFGT1E9jW3bJtgjDuXSdrkdmlqhOlaS5DppFsYgl81sJfd
|
||||
# uFJPPJsYsx/tgepF2d2p9tXz7EDuAFEiiJmGnLuMP3zWp8pdsdxWcbE+lmjLRGUN
|
||||
# WOqaFXILagR1UtkzWGriAQd0Z9+7c3OTxLgRYc5Xgjd+ZAuOG+FbBUMBEJCg86jC
|
||||
# +YQLsAbSWpVlujcu5+d6CfbcLXKmq95E6Vw2kGngfpomK2/VDqyXaoJJG6NCL/Pt
|
||||
# 61cx/WLJ2JM9LKTTk6iJY7ezg/ai0WH5p5rXcvGfgXbjvpEHrootzwntl/JBmAiv
|
||||
# WDhsON4udWbQ3NfSXySts+BFzH+DOWWJ7192sPY7y1diDXmB4n3wN7UYQNbxac4D
|
||||
# NPyf3afWVQvTXxj97R1cXDRH2gA/lLF7Acdr9+FWtUYXgcwRfajk70QR7PEKHM51
|
||||
# rxMoSB5xRNOX76FymKl3d+aBvvWlI3/547scaSPSCC3qR4A4GU/sOlBDnxloZHEH
|
||||
# AMiu67w+iRAwpUTneHvEXjgPg0ca1K67svFBI3xlSdChNMngrqF+orOmmc+Upn12
|
||||
# FhPn4VvV27X3jE58Rq7HqnJ3S4IyQ9KOPwHSsdN/OeY=
|
||||
# O1suoDc1AD00ILPpPB1JzilxO8zlJCjM/HVCrZgy4d2/9XI7zjbnoqpfQj6U+aEB
|
||||
# wbNIDx4nX2r8tax29JVfWnpF18vZnKx3L+4b+upJXailgtBRgxf+TOEgayc6z0Ag
|
||||
# uvEXcp3PI58k0I+DdhHbO+aprMRHXQ/nWVSaHwCjwxIlrGwek95ybGN46bOl+tzk
|
||||
# BFY4u5sAqr3yXOIjc5Kf51rlVbHxY3T3LKLhBYY7HWv21VnliwmW45AUslbT4/xj
|
||||
# w2T4jN83Dob1P1JyGg9caBAq1vlZuIPB705zvdV/DvrnC8M39Vy+ZNux4o3b9bHH
|
||||
# M+lymJ6gw9c7EJtopISGSLmfAow56KAD7RASksGsWAcjzQZJVCQcLml8Ed3+lyYc
|
||||
# ohu/er6Q+yKT3Ydse/DzkNX6F4H+6MV/hVR9CeI+yJIm2GpB2Y3GWZYyT8knsjB9
|
||||
# w2Mypk/P8WlimYXLzOxkU1y8BR4KCFbkUFugJmOv31ao0O9+yPfioY1aRZNrtgsk
|
||||
# cE6QqMgENyPHiJqv5YObmqPnRp9JzhGj6+pThnQbuOucanLocuC1AixioVq+jrNu
|
||||
# G1/Rmdu2/t0xeJa3/hrThzbB6wMh6exuhJ6Aej84QGb1Q69jBs8Vg2OoPz9IQllq
|
||||
# VObFs4e0Jyx1G6rAbPivjnApZbHziJZxBSHn2ix2BGo=
|
||||
# SIG # End signature block
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue