From 069b5f81a00eac8a5fb06b2c97069792415d86a5 Mon Sep 17 00:00:00 2001 From: Samuel Sieb Date: Wed, 22 Feb 2023 15:40:20 -0800 Subject: [PATCH] fix parity (#4476) Co-authored-by: Samuel Sieb --- esphome/components/wiegand/wiegand.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/esphome/components/wiegand/wiegand.cpp b/esphome/components/wiegand/wiegand.cpp index 67558da731ac..c4e834c85ad7 100644 --- a/esphome/components/wiegand/wiegand.cpp +++ b/esphome/components/wiegand/wiegand.cpp @@ -38,8 +38,8 @@ void Wiegand::setup() { bool check_eparity(uint64_t value, int start, int length) { int parity = 0; uint64_t mask = 1LL << start; - for (int i = 0; i <= length; i++, mask <<= 1) { - if (value & i) + for (int i = 0; i < length; i++, mask <<= 1) { + if (value & mask) parity++; } return !(parity & 1); @@ -48,8 +48,8 @@ bool check_eparity(uint64_t value, int start, int length) { bool check_oparity(uint64_t value, int start, int length) { int parity = 0; uint64_t mask = 1LL << start; - for (int i = 0; i <= length; i++, mask <<= 1) { - if (value & i) + for (int i = 0; i < length; i++, mask <<= 1) { + if (value & mask) parity++; } return parity & 1;