WS: add protocol Acurite 592TXR

OFW PR 1916 by Skorpionm
This commit is contained in:
MX
2022-10-24 21:22:11 +03:00
parent 517d4ffb73
commit 29ab1088bd
8 changed files with 454 additions and 1 deletions
+30
View File
@@ -216,4 +216,34 @@ uint16_t subghz_protocol_blocks_lfsr_digest16(
}
}
return sum;
}
uint8_t subghz_protocol_blocks_add_bytes(uint8_t const message[], unsigned num_bytes) {
int result = 0;
for(unsigned i = 0; i < num_bytes; ++i) {
result += message[i];
}
return (uint8_t)result;
}
int subghz_protocol_blocks_parity8(uint8_t byte) {
byte ^= byte >> 4;
byte &= 0xf;
return (0x6996 >> byte) & 1;
}
int subghz_protocol_blocks_parity_bytes(uint8_t const message[], unsigned num_bytes) {
int result = 0;
for(unsigned i = 0; i < num_bytes; ++i) {
result ^= subghz_protocol_blocks_parity8(message[i]);
}
return result;
}
uint8_t subghz_protocol_blocks_xor_bytes(uint8_t const message[], unsigned num_bytes) {
uint8_t result = 0;
for(unsigned i = 0; i < num_bytes; ++i) {
result ^= message[i];
}
return result;
}
+31
View File
@@ -161,6 +161,37 @@ uint16_t subghz_protocol_blocks_lfsr_digest16(
uint16_t gen,
uint16_t key);
/**
* Compute Addition of a number of bytes.
* @param message bytes of message data
* @param num_bytes number of bytes to sum
* @return summation value
**/
uint8_t subghz_protocol_blocks_add_bytes(uint8_t const message[], unsigned num_bytes);
/**
* Compute bit parity of a single byte (8 bits).
* @param byte single byte to check
* @return 1 odd parity, 0 even parity
**/
int subghz_protocol_blocks_parity8(uint8_t byte);
/**
* Compute bit parity of a number of bytes.
* @param message bytes of message data
* @param num_bytes number of bytes to sum
* @return 1 odd parity, 0 even parity
**/
int subghz_protocol_blocks_parity_bytes(uint8_t const message[], unsigned num_bytes);
/**
* Compute XOR (byte-wide parity) of a number of bytes.
* @param message bytes of message data
* @param num_bytes number of bytes to sum
* @return summation value, per bit-position 1 odd parity, 0 even parity
**/
uint8_t subghz_protocol_blocks_xor_bytes(uint8_t const message[], unsigned num_bytes);
#ifdef __cplusplus
}
#endif