Skip to content

Commit a08dac7

Browse files
committed
sun2000: cargo fmt
1 parent 33ee383 commit a08dac7

File tree

1 file changed

+79
-70
lines changed

1 file changed

+79
-70
lines changed

src/sun2000.rs

+79-70
Original file line numberDiff line numberDiff line change
@@ -1075,15 +1075,18 @@ impl Sun2000 {
10751075
let mut params: Vec<Parameter> = vec![];
10761076
let mut disconnected = false;
10771077
let now = Instant::now();
1078-
let mut params_wanted: Vec<_> = parameters.into_iter().filter(|s| {
1079-
(initial_read && s.initial_read)
1080-
|| (!initial_read
1081-
&& (s.save_to_influx
1082-
|| s.name.starts_with("state_")
1083-
|| s.name.starts_with("alarm_")
1084-
|| s.name.ends_with("_status")
1085-
|| s.name.ends_with("_code")))
1086-
}).collect();
1078+
let mut params_wanted: Vec<_> = parameters
1079+
.into_iter()
1080+
.filter(|s| {
1081+
(initial_read && s.initial_read)
1082+
|| (!initial_read
1083+
&& (s.save_to_influx
1084+
|| s.name.starts_with("state_")
1085+
|| s.name.starts_with("alarm_")
1086+
|| s.name.ends_with("_status")
1087+
|| s.name.ends_with("_code")))
1088+
})
1089+
.collect();
10871090

10881091
//sort by register address
10891092
params_wanted.sort_by(|a, b| a.reg_address.cmp(&b.reg_address));
@@ -1099,9 +1102,9 @@ impl Sun2000 {
10991102
start_addr = Some(p.reg_address);
11001103
} else {
11011104
if p.reg_address + p.len - start_addr.unwrap() > 64 {
1102-
start_addr = Some(p.reg_address);
1103-
all_blocks.push(reg_block);
1104-
reg_block = vec![];
1105+
start_addr = Some(p.reg_address);
1106+
all_blocks.push(reg_block);
1107+
reg_block = vec![];
11051108
}
11061109
}
11071110
reg_block.push(p);
@@ -1121,7 +1124,10 @@ impl Sun2000 {
11211124
let mut attempts = 0;
11221125
while attempts < SUN2000_ATTEMPTS_PER_PARAM {
11231126
attempts = attempts + 1;
1124-
debug!("-> obtaining register block #{} start={:#x}, len={}, attempt={}", i, start_addr, len, attempts);
1127+
debug!(
1128+
"-> obtaining register block #{} start={:#x}, len={}, attempt={}",
1129+
i, start_addr, len, attempts
1130+
);
11251131
let retval = ctx.read_holding_registers(start_addr, len);
11261132
let read_res;
11271133
let start = Instant::now();
@@ -1154,69 +1160,72 @@ impl Sun2000 {
11541160
);
11551161
}
11561162

1157-
for p in reg_block {
1158-
let offset = (p.reg_address - start_addr) as usize;
1159-
let data = &data[offset..offset + (p.len as usize)];
1160-
debug!("-> parsing {} ({:?}) @ {:#x} offset={:#x} len={}...", p.name, p.desc, p.reg_address, offset, p.len);
1161-
let mut val;
1162-
match &p.value {
1163-
ParamKind::Text(_) => {
1164-
let bytes: Vec<u8> = data.iter().fold(vec![], |mut x, elem| {
1165-
if (elem >> 8) as u8 != 0 {
1166-
x.push((elem >> 8) as u8);
1167-
}
1168-
if (elem & 0xff) as u8 != 0 {
1169-
x.push((elem & 0xff) as u8);
1163+
for p in reg_block {
1164+
let offset = (p.reg_address - start_addr) as usize;
1165+
let data = &data[offset..offset + (p.len as usize)];
1166+
debug!(
1167+
"-> parsing {} ({:?}) @ {:#x} offset={:#x} len={}...",
1168+
p.name, p.desc, p.reg_address, offset, p.len
1169+
);
1170+
let mut val;
1171+
match &p.value {
1172+
ParamKind::Text(_) => {
1173+
let bytes: Vec<u8> = data.iter().fold(vec![], |mut x, elem| {
1174+
if (elem >> 8) as u8 != 0 {
1175+
x.push((elem >> 8) as u8);
1176+
}
1177+
if (elem & 0xff) as u8 != 0 {
1178+
x.push((elem & 0xff) as u8);
1179+
}
1180+
x
1181+
});
1182+
let id = String::from_utf8(bytes).unwrap();
1183+
val = ParamKind::Text(Some(id));
1184+
}
1185+
ParamKind::NumberU16(_) => {
1186+
debug!("-> {} = {:?}", p.name, data);
1187+
val = ParamKind::NumberU16(Some(data[0] as u16));
1188+
}
1189+
ParamKind::NumberI16(_) => {
1190+
debug!("-> {} = {:?}", p.name, data);
1191+
val = ParamKind::NumberI16(Some(data[0] as i16));
1192+
}
1193+
ParamKind::NumberU32(_) => {
1194+
let new_val: u32 = ((data[0] as u32) << 16) | data[1] as u32;
1195+
debug!("-> {} = {:X?} {:X}", p.name, data, new_val);
1196+
val = ParamKind::NumberU32(Some(new_val));
1197+
if p.unit.unwrap_or_default() == "epoch" && new_val == 0 {
1198+
//zero epoch makes no sense, let's set it to None
1199+
val = ParamKind::NumberU32(None);
11701200
}
1171-
x
1172-
});
1173-
let id = String::from_utf8(bytes).unwrap();
1174-
val = ParamKind::Text(Some(id));
1175-
}
1176-
ParamKind::NumberU16(_) => {
1177-
debug!("-> {} = {:?}", p.name, data);
1178-
val = ParamKind::NumberU16(Some(data[0] as u16));
1179-
}
1180-
ParamKind::NumberI16(_) => {
1181-
debug!("-> {} = {:?}", p.name, data);
1182-
val = ParamKind::NumberI16(Some(data[0] as i16));
1183-
}
1184-
ParamKind::NumberU32(_) => {
1185-
let new_val: u32 = ((data[0] as u32) << 16) | data[1] as u32;
1186-
debug!("-> {} = {:X?} {:X}", p.name, data, new_val);
1187-
val = ParamKind::NumberU32(Some(new_val));
1188-
if p.unit.unwrap_or_default() == "epoch" && new_val == 0 {
1189-
//zero epoch makes no sense, let's set it to None
1190-
val = ParamKind::NumberU32(None);
1201+
}
1202+
ParamKind::NumberI32(_) => {
1203+
let new_val: i32 =
1204+
((data[0] as i32) << 16) | (data[1] as u32) as i32;
1205+
debug!("-> {} = {:X?} {:X}", p.name, data, new_val);
1206+
val = ParamKind::NumberI32(Some(new_val));
11911207
}
11921208
}
1193-
ParamKind::NumberI32(_) => {
1194-
let new_val: i32 =
1195-
((data[0] as i32) << 16) | (data[1] as u32) as i32;
1196-
debug!("-> {} = {:X?} {:X}", p.name, data, new_val);
1197-
val = ParamKind::NumberI32(Some(new_val));
1198-
}
1199-
}
1200-
let param = Parameter::new_from_string(
1201-
p.name.clone(),
1202-
val,
1203-
p.desc.clone(),
1204-
p.unit.clone(),
1205-
p.gain,
1206-
p.reg_address,
1207-
p.len,
1208-
p.initial_read,
1209-
p.save_to_influx,
1210-
);
1211-
params.push(param.clone());
1209+
let param = Parameter::new_from_string(
1210+
p.name.clone(),
1211+
val,
1212+
p.desc.clone(),
1213+
p.unit.clone(),
1214+
p.gain,
1215+
p.reg_address,
1216+
p.len,
1217+
p.initial_read,
1218+
p.save_to_influx,
1219+
);
1220+
params.push(param.clone());
12121221

1213-
//write data to influxdb if configured
1214-
if let Some(c) = client.clone() {
1215-
if !initial_read && p.save_to_influx {
1216-
let _ = Sun2000::save_to_influxdb(c, &self.name, param).await;
1222+
//write data to influxdb if configured
1223+
if let Some(c) = client.clone() {
1224+
if !initial_read && p.save_to_influx {
1225+
let _ = Sun2000::save_to_influxdb(c, &self.name, param).await;
1226+
}
12171227
}
12181228
}
1219-
}
12201229
//we parsed all parameters in this block,
12211230
//break the attempt loop and try next register block
12221231
break;

0 commit comments

Comments
 (0)