fix: heartbeat no longer emits 'status' with remaining_ms=0
Heartbeat (1-byte FFE4 notify) now emits 'heartbeat' event only. Only 33-byte state responses emit 'status' with parsed IO data. Fixes timer jumping to 0 every second during treatment.
这个提交包含在:
@@ -85,19 +85,11 @@ function handleValueChange(res) {
|
|||||||
if (protocol.PROTOCOL_MODE === 'vendor_33') {
|
if (protocol.PROTOCOL_MODE === 'vendor_33') {
|
||||||
var parsed = protocol.parseVendorStatus(res.value)
|
var parsed = protocol.parseVendorStatus(res.value)
|
||||||
emit('vendor_raw', parsed)
|
emit('vendor_raw', parsed)
|
||||||
var status = {
|
if (parsed.is_heartbeat) {
|
||||||
mode_state: parsed.is_heartbeat ? (parsed.heartbeat || 0) : protocol.MODE_STATE.IDLE,
|
emit('heartbeat', { value: parsed.heartbeat })
|
||||||
region_mask: protocol.REGION.FULL_FACE,
|
return
|
||||||
wavelength: 0,
|
|
||||||
brightness: 0,
|
|
||||||
remaining_ms: 0,
|
|
||||||
error_code: 0,
|
|
||||||
battery: 0,
|
|
||||||
temperature: 0,
|
|
||||||
bind_status: 1,
|
|
||||||
subscription: 1
|
|
||||||
}
|
}
|
||||||
if (!parsed.is_heartbeat && parsed.ios) {
|
if (parsed.ios) {
|
||||||
var anyActive = false
|
var anyActive = false
|
||||||
for (var i = 0; i < parsed.ios.length; i++) {
|
for (var i = 0; i < parsed.ios.length; i++) {
|
||||||
if (parsed.ios[i].red || parsed.ios[i].infrared || parsed.ios[i].uv || parsed.ios[i].warm_yellow) {
|
if (parsed.ios[i].red || parsed.ios[i].infrared || parsed.ios[i].uv || parsed.ios[i].warm_yellow) {
|
||||||
@@ -105,12 +97,19 @@ function handleValueChange(res) {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
status.mode_state = anyActive ? protocol.MODE_STATE.ACTIVE : protocol.MODE_STATE.IDLE
|
emit('status', {
|
||||||
if (parsed.hold_time > 0) {
|
mode_state: anyActive ? protocol.MODE_STATE.ACTIVE : protocol.MODE_STATE.IDLE,
|
||||||
status.remaining_ms = parsed.hold_time * 1000
|
region_mask: protocol.REGION.FULL_FACE,
|
||||||
}
|
wavelength: 0,
|
||||||
|
brightness: 0,
|
||||||
|
remaining_ms: parsed.hold_time > 0 ? parsed.hold_time * 1000 : 0,
|
||||||
|
error_code: 0,
|
||||||
|
battery: 0,
|
||||||
|
temperature: 0,
|
||||||
|
bind_status: 1,
|
||||||
|
subscription: 1
|
||||||
|
})
|
||||||
}
|
}
|
||||||
emit('status', status)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var frame = protocol.parseFrame(res.value)
|
var frame = protocol.parseFrame(res.value)
|
||||||
|
|||||||
在新工单中引用
屏蔽一个用户