Skip to content

Commit 9a19122

Browse files
committed
- Clean-up and separate "processInputKo".
- Build 0.6.4 for testing.
1 parent ad636fb commit 9a19122

6 files changed

Lines changed: 200 additions & 191 deletions

File tree

dependencies.txt

2 Bytes
Binary file not shown.

include/knxprod.h

Lines changed: 128 additions & 128 deletions
Large diffs are not rendered by default.

include/versions.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#pragma once
22

3-
#define MAIN_Version "931b030"
4-
#define KNX_Version "2.1.0+e69f636"
3+
#define MAIN_Version "ad636fb"
4+
#define KNX_Version "2.1.0+84a0ce3"
55
#define MODULE_Common_Version "1.2.0+8410b2a"
66
#define MODULE_Common_ETS 18
77
#define MODULE_SwitchActuator_Version "0.1.0+cfaf665"

src/FingerprintModule.cpp

Lines changed: 65 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ void FingerprintModule::loop()
173173

174174
if (resetLedsTimer > 0 && delayCheck(resetLedsTimer, LED_RESET_TIMEOUT))
175175
{
176-
setLedDefault();
176+
resetRingLed();
177177
resetLedsTimer = 0;
178178
}
179179

@@ -250,9 +250,10 @@ bool FingerprintModule::searchForFinger()
250250
return true;
251251
}
252252

253-
void FingerprintModule::setLedDefault()
253+
void FingerprintModule::resetRingLed()
254254
{
255255
finger.setLed(KoFIN_LedRingColor.value(Dpt(5, 10)), KoFIN_LedRingControl.value(Dpt(5, 10)), KoFIN_LedRingSpeed.value(Dpt(5, 10)), KoFIN_LedRingCount.value(Dpt(5, 10)));
256+
logInfoP("LED ring: color=%u, control=%u, speed=%u, count=%u", (uint8_t)KoFIN_LedRingColor.value(Dpt(5, 10)), (uint8_t)KoFIN_LedRingControl.value(Dpt(5, 10)), (uint8_t)KoFIN_LedRingSpeed.value(Dpt(5, 10)), (uint8_t)KoFIN_LedRingCount.value(Dpt(5, 10)));
256257
}
257258

258259
void FingerprintModule::processScanSuccess(uint16_t location, bool external)
@@ -393,106 +394,111 @@ bool FingerprintModule::deleteFinger(uint16_t location, bool sync)
393394
return success;
394395
}
395396

396-
void FingerprintModule::processInputKo(GroupObject& iKo)
397+
void FingerprintModule::processInputKo(GroupObject& ko)
397398
{
398399
uint16_t location;
399400

400-
uint16_t lAsap = iKo.asap();
401-
switch (lAsap)
401+
uint16_t asap = ko.asap();
402+
switch (asap)
402403
{
403404
case FIN_KoLock:
404-
isLocked = KoFIN_Lock.value(DPT_Switch);
405-
KoFIN_LockStatus.value(isLocked, DPT_Switch);
406-
logInfoP("Locked: %d", isLocked);
407-
408-
if (isLocked)
409-
finger.setLed(Fingerprint::State::Locked);
410-
else
411-
setLedDefault();
412-
405+
processInputKoLock(ko);
413406
break;
414407
case FIN_KoLedRingColor:
415408
case FIN_KoLedRingControl:
416409
case FIN_KoLedRingSpeed:
417410
case FIN_KoLedRingCount:
418-
setLedDefault();
419-
logInfoP("LED ring: color=%u, control=%u, speed=%u, count=%u", (uint8_t)KoFIN_LedRingColor.value(Dpt(5, 10)), (uint8_t)KoFIN_LedRingControl.value(Dpt(5, 10)), (uint8_t)KoFIN_LedRingSpeed.value(Dpt(5, 10)), (uint8_t)KoFIN_LedRingCount.value(Dpt(5, 10)));
411+
resetRingLed();
420412
break;
421413
case FIN_KoTouchPcbLedRed:
422-
if (iKo.value(DPT_Switch))
423-
digitalWrite(LED_RED_PIN, HIGH);
424-
else
425-
digitalWrite(LED_RED_PIN, LOW);
426-
427-
break;
428414
case FIN_KoTouchPcbLedGreen:
429-
if (iKo.value(DPT_Switch))
430-
digitalWrite(LED_GREEN_PIN, HIGH);
431-
else
432-
digitalWrite(LED_GREEN_PIN, LOW);
433-
415+
processInputKoTouchPcbLed(ko);
434416
break;
435417
case FIN_KoSync:
436-
processSyncReceive(iKo.valueRef());
418+
processSyncReceive(ko.valueRef());
437419
break;
438420
}
439421

440422
if (isLocked)
441423
return;
442424

443-
switch (lAsap)
425+
switch (asap)
444426
{
445427
case FIN_KoEnrollNext:
446428
case FIN_KoEnrollId:
447429
case FIN_KoEnrollData:
448-
if (lAsap == FIN_KoEnrollNext)
449-
{
450-
location = finger.getNextFreeLocation();
451-
logInfoP("Next availabe location: %d", location);
452-
}
453-
else if (lAsap == FIN_KoEnrollId)
454-
{
455-
location = iKo.value(Dpt(7, 1));
456-
logInfoP("Location provided: %d", location);
457-
}
458-
else
459-
{
460-
location = iKo.value(Dpt(15, 1, 0));
461-
logInfoP("Location provided: %d", location);
462-
}
463-
464-
enrollRequestedTimer = delayTimerInit();
465-
enrollRequestedLocation = location;
430+
processInputKoEnroll(ko);
466431
break;
467432
case FIN_KoDeleteId:
468433
case FIN_KoDeleteData:
469-
if (lAsap == FIN_KoDeleteId)
470-
{
471-
location = iKo.value(Dpt(7, 1));
472-
logInfoP("Location provided: %d", location);
473-
}
434+
if (asap == FIN_KoDeleteId)
435+
location = ko.value(Dpt(7, 1));
474436
else
475-
{
476-
location = iKo.value(Dpt(15, 1, 0));
477-
logInfoP("Location provided: %d", location);
478-
}
437+
location = ko.value(Dpt(15, 1, 0));
479438

439+
logInfoP("Location provided: %d", location);
480440
deleteFinger(location);
481441
break;
482442
case FIN_KoExternFingerId:
483-
location = iKo.value(Dpt(7, 1));
443+
location = ko.value(Dpt(7, 1));
484444
logInfoP("FingerID received: %d", location);
485445

486446
processScanSuccess(location, true);
487447
break;
488448
default:
489449
{
490450
for (uint16_t i = 0; i < ParamFIN_VisibleActions; i++)
491-
_channels[i]->processInputKo(iKo);
451+
_channels[i]->processInputKo(ko);
492452
}
493453
}
494454
}
495455

456+
void FingerprintModule::processInputKoLock(GroupObject &ko)
457+
{
458+
isLocked = ko.value(DPT_Switch);
459+
KoFIN_LockStatus.value(isLocked, DPT_Switch);
460+
logInfoP("Locked: %d", isLocked);
461+
462+
if (isLocked)
463+
finger.setLed(Fingerprint::State::Locked);
464+
else
465+
resetRingLed();
466+
}
467+
468+
void FingerprintModule::processInputKoTouchPcbLed(GroupObject &ko)
469+
{
470+
bool ledOn = ko.value(DPT_Switch);
471+
uint16_t asap = ko.asap();
472+
if (asap == FIN_KoTouchPcbLedRed)
473+
digitalWrite(LED_RED_PIN, ledOn ? HIGH : LOW);
474+
else if (asap == FIN_KoTouchPcbLedGreen)
475+
digitalWrite(LED_GREEN_PIN, ledOn ? HIGH : LOW);
476+
}
477+
478+
void FingerprintModule::processInputKoEnroll(GroupObject &ko)
479+
{
480+
uint16_t location;
481+
uint16_t asap = ko.asap();
482+
if (asap == FIN_KoEnrollNext)
483+
{
484+
location = finger.getNextFreeLocation();
485+
logInfoP("Next availabe location: %d", location);
486+
}
487+
else if (asap == FIN_KoEnrollId)
488+
{
489+
location = ko.value(Dpt(7, 1));
490+
logInfoP("Location provided: %d", location);
491+
}
492+
else
493+
{
494+
location = ko.value(Dpt(15, 1, 0));
495+
logInfoP("Location provided: %d", location);
496+
}
497+
498+
enrollRequestedTimer = delayTimerInit();
499+
enrollRequestedLocation = location;
500+
}
501+
496502
void FingerprintModule::startSyncDelete(uint16_t fingerId)
497503
{
498504
if (!ParamFIN_EnableSync ||
@@ -549,7 +555,7 @@ void FingerprintModule::startSyncSend(uint16_t fingerId, bool loadModel)
549555
return;
550556
}
551557

552-
setLedDefault();
558+
resetRingLed();
553559

554560
uint32_t storageOffset = FIN_CaclStorageOffset(fingerId);
555561
uint8_t personData[29] = {};

src/FingerprintModule.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,14 @@ class FingerprintModule : public OpenKNX::Module
6262
bool enrollFinger(uint16_t location);
6363
bool deleteFinger(uint16_t location, bool sync = true);
6464
bool searchForFinger();
65-
void setLedDefault();
65+
void resetRingLed();
6666
void startSyncDelete(uint16_t fingerId);
6767
void startSyncSend(uint16_t fingerId, bool loadModel = true);
6868
void processSyncSend();
6969
void processSyncReceive(uint8_t* data);
70+
void processInputKoLock(GroupObject &ko);
71+
void processInputKoTouchPcbLed(GroupObject &ko);
72+
void processInputKoEnroll(GroupObject &ko);
7073
void handleFunctionPropertyEnrollFinger(uint8_t *data, uint8_t *resultData, uint8_t &resultLength);
7174
void handleFunctionPropertySyncFinger(uint8_t *data, uint8_t *resultData, uint8_t &resultLength);
7275
void handleFunctionPropertyDeleteFinger(uint8_t *data, uint8_t *resultData, uint8_t &resultLength);

src/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
void setup()
99
{
10-
const uint8_t firmwareRevision = 3;
10+
const uint8_t firmwareRevision = 4;
1111
openknx.init(firmwareRevision);
1212
openknx.addModule(1, openknxLogic);
1313
openknx.addModule(2, openknxFingerprintModule);

0 commit comments

Comments
 (0)