@@ -118,10 +118,11 @@ static int lacrossetx_decode(r_device *decoder, bitbuffer_t *bitbuffer)
118
118
119
119
// TODO: check if message length is a valid value
120
120
//uint8_t msg_len = msg_nybbles[1];
121
- uint8_t msg_type = msg_nybbles [2 ];
122
- uint8_t sensor_id = (msg_nybbles [3 ] << 3 ) + (msg_nybbles [4 ] >> 1 );
123
- float msg_value = msg_nybbles [5 ] * 10 + msg_nybbles [6 ] + msg_nybbles [7 ] * 0.1f ;
124
- int msg_value_int = msg_nybbles [8 ] * 10 + msg_nybbles [9 ];
121
+ uint8_t msg_type = msg_nybbles [2 ];
122
+ uint8_t sensor_id = (msg_nybbles [3 ] << 3 ) + (msg_nybbles [4 ] >> 1 );
123
+ uint16_t msg_value_raw = (msg_nybbles [5 ] << 8 ) | (msg_nybbles [6 ] << 4 ) | msg_nybbles [7 ];
124
+ float msg_value = msg_nybbles [5 ] * 10 + msg_nybbles [6 ] + msg_nybbles [7 ] * 0.1f ;
125
+ int msg_value_int = msg_nybbles [8 ] * 10 + msg_nybbles [9 ];
125
126
126
127
// Check Repeated data values as another way of verifying
127
128
// message integrity.
@@ -152,7 +153,7 @@ static int lacrossetx_decode(r_device *decoder, bitbuffer_t *bitbuffer)
152
153
data_t * data = data_make (
153
154
"model" , "" , DATA_STRING , "LaCrosse-TX" ,
154
155
"id" , "" , DATA_INT , sensor_id ,
155
- "humidity" , "Humidity" , DATA_FORMAT , "%.1f %%" , DATA_DOUBLE , msg_value ,
156
+ "humidity" , "Humidity" , DATA_COND , msg_value_raw != 0xff , DATA_FORMAT , "%.1f %%" , DATA_DOUBLE , msg_value ,
156
157
"mic" , "Integrity" , DATA_STRING , "PARITY" ,
157
158
NULL );
158
159
/* clang-format on */
0 commit comments