[FL-2934] WS: add protocol Acurite 592TXR (#1916)
* WS: add protocol Acurite 592TXR * WS: fix decoder Acurite_592TXR * SubGhz: proper types in math Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
This commit is contained in:
@@ -216,4 +216,34 @@ uint16_t subghz_protocol_blocks_lfsr_digest16(
|
||||
}
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
uint8_t subghz_protocol_blocks_add_bytes(uint8_t const message[], size_t num_bytes) {
|
||||
int result = 0;
|
||||
for(size_t 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[], size_t num_bytes) {
|
||||
int result = 0;
|
||||
for(size_t 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[], size_t num_bytes) {
|
||||
uint8_t result = 0;
|
||||
for(size_t i = 0; i < num_bytes; ++i) {
|
||||
result ^= message[i];
|
||||
}
|
||||
return result;
|
||||
}
|
@@ -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[], size_t 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[], size_t 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[], size_t num_bytes);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user