From b5fde1c6b37f4f0003dd24f11ec232efcee9baab Mon Sep 17 00:00:00 2001 From: arwa Date: Sat, 14 Jun 2025 23:24:52 -0400 Subject: [PATCH] optmized the following macros: nmbs_bitfield_read, nmbs_bitfield_set, nmbs_bitfield_unset, nmbs_bitfield_write --- nanomodbus.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nanomodbus.h b/nanomodbus.h index b0c872d..8ba97df 100644 --- a/nanomodbus.h +++ b/nanomodbus.h @@ -92,23 +92,23 @@ typedef uint8_t nmbs_bitfield_256[32]; /** * Read a bit from the nmbs_bitfield bf at position b */ -#define nmbs_bitfield_read(bf, b) ((bool) ((bf)[(b) / 8] & (0x1 << ((b) % 8)))) +#define nmbs_bitfield_read(bf, b) ((bool) ((bf)[(b) >> 3] & (0x1 << ((b) & (8 - 1))))) /** * Set a bit of the nmbs_bitfield bf at position b */ -#define nmbs_bitfield_set(bf, b) (((bf)[(b) / 8]) = (((bf)[(b) / 8]) | (0x1 << ((b) % 8)))) +#define nmbs_bitfield_set(bf, b) (((bf)[(b) >> 3]) = (((bf)[(b) >> 3]) | (0x1 << ((b) & (8 - 1))))) /** * Reset a bit of the nmbs_bitfield bf at position b */ -#define nmbs_bitfield_unset(bf, b) (((bf)[(b) / 8]) = (((bf)[(b) / 8]) & ~(0x1 << ((b) % 8)))) +#define nmbs_bitfield_unset(bf, b) (((bf)[(b) >> 3]) = (((bf)[(b) >> 3]) & ~(0x1 << ((b) & (8 - 1))))) /** * Write value v to the nmbs_bitfield bf at position b */ #define nmbs_bitfield_write(bf, b, v) \ - (((bf)[(b) / 8]) = ((v) ? (((bf)[(b) / 8]) | (0x1 << ((b) % 8))) : (((bf)[(b) / 8]) & ~(0x1 << ((b) % 8))))) + (((bf)[(b) >> 3]) = ((v) ? (((bf)[(b) >> 3]) | (0x1 << ((b) & (8 - 1)))) : (((bf)[(b) >> 3]) & ~(0x1 << ((b) & (8 - 1)))))) /** * Reset (zero) the whole bitfield