mirror of
https://github.com/portapack-mayhem/mayhem-firmware.git
synced 2026-09-12 01:29:29 +00:00
Oregon fixes (#2822)
This commit is contained in:
@@ -132,15 +132,14 @@ class FProtoWeatherOregon2 : public FProtoWeatherBase {
|
||||
// waiting for variable (sensor-specific data)
|
||||
if (decode_count_bit == (uint32_t)var_bits + OREGON2_CHECKSUM_BITS) {
|
||||
var_data = decode_data & 0xFFFFFFFF;
|
||||
|
||||
// reverse nibbles in var data
|
||||
var_data = (var_data & 0x55555555) << 1 |
|
||||
(var_data & 0xAAAAAAAA) >> 1;
|
||||
var_data = (var_data & 0x33333333) << 2 |
|
||||
(var_data & 0xCCCCCCCC) >> 2;
|
||||
decode_data = var_data;
|
||||
decode_data = var_data >> OREGON2_CHECKSUM_BITS;
|
||||
decode_data |= (data << 32); // unique to portapack, i sent the upper part too, so we have all the data in one place
|
||||
// ws_oregon2_decode_var_data(OREGON2_SENSOR_ID(data), var_data >> OREGON2_CHECKSUM_BITS); //a bit stepback, but will work
|
||||
|
||||
parser_step = Oregon2DecoderStepReset;
|
||||
if (callback) callback(this);
|
||||
}
|
||||
@@ -195,8 +194,10 @@ class FProtoWeatherOregon2 : public FProtoWeatherBase {
|
||||
case ID_RTHN129_3:
|
||||
case ID_RTHN129_4:
|
||||
case ID_RTHN129_5:
|
||||
sensorType = FPW_OREGON2;
|
||||
return 16;
|
||||
case ID_THGR122N:
|
||||
sensorType = FPW_OREGON2B;
|
||||
return 24;
|
||||
default:
|
||||
return 0;
|
||||
|
||||
@@ -96,7 +96,7 @@ class FProtoWeatherOregon3 : public FProtoWeatherBase {
|
||||
(var_data & 0xAAAAAAAAAAAAAAAA) >> 1;
|
||||
var_data = (var_data & 0x3333333333333333) << 2 |
|
||||
(var_data & 0xCCCCCCCCCCCCCCCC) >> 2;
|
||||
decode_data = var_data;
|
||||
decode_data = var_data >> OREGON3_CHECKSUM_BITS;
|
||||
// ws_oregon3_decode_var_data(OREGON3_SENSOR_ID(data), var_data >> OREGON3_CHECKSUM_BITS);
|
||||
parser_step = Oregon3DecoderStepReset;
|
||||
if (callback) callback(this);
|
||||
|
||||
@@ -71,6 +71,7 @@ class WeatherProtos : public FProtoListGeneral {
|
||||
protos[FPW_Bresser3CH] = new FProtoWeatheBresser3CH();
|
||||
protos[FPW_Bresser3CH_V1] = nullptr; // done by FProtoWeatheBresser3CH
|
||||
protos[FPW_Vauno_EN8822] = new FProtoWeatherVaunoEN8822();
|
||||
protos[FPW_OREGON2B] = nullptr; // done by FProtoWeatherOregon2
|
||||
|
||||
// set callback for them
|
||||
for (uint8_t i = 0; i < FPW_COUNT; ++i) {
|
||||
|
||||
@@ -42,6 +42,7 @@ enum FPROTO_WEATHER_SENSOR {
|
||||
FPW_Bresser3CH = 24,
|
||||
FPW_Bresser3CH_V1 = 25,
|
||||
FPW_Vauno_EN8822 = 26,
|
||||
FPW_OREGON2B = 27,
|
||||
FPW_COUNT // this must be the last
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user