casambi-bt-revamped 0.3.6.dev9__tar.gz → 0.3.6.dev10__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {casambi_bt_revamped-0.3.6.dev9/src/casambi_bt_revamped.egg-info → casambi_bt_revamped-0.3.6.dev10}/PKG-INFO +1 -1
- {casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/setup.cfg +1 -1
- {casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/CasambiBt/_client.py +24 -20
- {casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10/src/casambi_bt_revamped.egg-info}/PKG-INFO +1 -1
- {casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/LICENSE +0 -0
- {casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/README.md +0 -0
- {casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/pyproject.toml +0 -0
- {casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/CasambiBt/__init__.py +0 -0
- {casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/CasambiBt/_cache.py +0 -0
- {casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/CasambiBt/_casambi.py +0 -0
- {casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/CasambiBt/_client_android_parser.py +0 -0
- {casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/CasambiBt/_constants.py +0 -0
- {casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/CasambiBt/_discover.py +0 -0
- {casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/CasambiBt/_encryption.py +0 -0
- {casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/CasambiBt/_keystore.py +0 -0
- {casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/CasambiBt/_network.py +0 -0
- {casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/CasambiBt/_operation.py +0 -0
- {casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/CasambiBt/_unit.py +0 -0
- {casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/CasambiBt/errors.py +0 -0
- {casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/CasambiBt/py.typed +0 -0
- {casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/casambi_bt_revamped.egg-info/SOURCES.txt +0 -0
- {casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/casambi_bt_revamped.egg-info/dependency_links.txt +0 -0
- {casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/casambi_bt_revamped.egg-info/requires.txt +0 -0
- {casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/casambi_bt_revamped.egg-info/top_level.txt +0 -0
|
@@ -551,7 +551,10 @@ class CasambiClient:
|
|
|
551
551
|
# Process based on message type
|
|
552
552
|
if message_type == 0x08 or message_type == 0x10: # Switch/button events
|
|
553
553
|
switch_events_found += 1
|
|
554
|
-
|
|
554
|
+
# For type 0x10 messages, include the full data from start position to current position
|
|
555
|
+
# This ensures we capture any additional bytes after the declared payload
|
|
556
|
+
full_message_data = data[oldPos:pos] if message_type == 0x10 else data
|
|
557
|
+
self._processSwitchMessage(message_type, flags, parameter, payload, full_message_data, oldPos, packet_seq, raw_packet, android_switch_event)
|
|
555
558
|
elif message_type == 0x29:
|
|
556
559
|
# This shouldn't happen due to check above, but just in case
|
|
557
560
|
self._logger.debug(f"Ignoring embedded type 0x29 message")
|
|
@@ -585,14 +588,14 @@ class CasambiClient:
|
|
|
585
588
|
self._logger.error("Switch message has empty payload")
|
|
586
589
|
return
|
|
587
590
|
|
|
588
|
-
# For type 0x10 messages, the structure
|
|
589
|
-
if message_type == 0x10 and len(payload) >= 3
|
|
590
|
-
#
|
|
591
|
+
# For type 0x10 messages, the structure is different
|
|
592
|
+
if message_type == 0x10 and len(payload) >= 3:
|
|
593
|
+
# Type 0x10: unit_id is at payload[2]
|
|
591
594
|
unit_id = payload[2]
|
|
592
595
|
action = payload[1]
|
|
593
596
|
extra_data = payload[3:] if len(payload) > 3 else b''
|
|
594
597
|
else:
|
|
595
|
-
# Standard parsing
|
|
598
|
+
# Standard parsing for other message types
|
|
596
599
|
unit_id = payload[0]
|
|
597
600
|
action = None
|
|
598
601
|
if len(payload) > 1:
|
|
@@ -610,11 +613,11 @@ class CasambiClient:
|
|
|
610
613
|
is_release = (action >> 1) & 1
|
|
611
614
|
event_string = "button_release" if is_release else "button_press"
|
|
612
615
|
elif message_type == 0x10:
|
|
613
|
-
# Type 0x10:
|
|
614
|
-
#
|
|
615
|
-
|
|
616
|
-
if
|
|
617
|
-
state_byte = full_data[
|
|
616
|
+
# Type 0x10: The state byte is at position 9 (0-indexed) from message start
|
|
617
|
+
# This applies to all units, not just unit 31
|
|
618
|
+
state_pos = 9
|
|
619
|
+
if len(full_data) > state_pos:
|
|
620
|
+
state_byte = full_data[state_pos]
|
|
618
621
|
if state_byte == 0x01:
|
|
619
622
|
event_string = "button_press"
|
|
620
623
|
elif state_byte == 0x02:
|
|
@@ -624,20 +627,21 @@ class CasambiClient:
|
|
|
624
627
|
elif state_byte == 0x0c:
|
|
625
628
|
event_string = "button_release_after_hold"
|
|
626
629
|
else:
|
|
627
|
-
self._logger.
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
# In these cases, check if we have extra_data that might contain state info
|
|
631
|
-
if len(extra_data) >= 2:
|
|
632
|
-
# Pattern observed: extra_data[0] might contain state info
|
|
633
|
-
# 0x12 seems to correlate with button release states
|
|
634
|
-
if extra_data[0] == 0x12:
|
|
630
|
+
self._logger.debug(f"Type 0x10: State byte 0x{state_byte:02x} at pos {state_pos}")
|
|
631
|
+
# Fallback: check if extra_data starts with 0x12 (indicates release)
|
|
632
|
+
if len(extra_data) >= 1 and extra_data[0] == 0x12:
|
|
635
633
|
event_string = "button_release"
|
|
636
634
|
else:
|
|
637
635
|
event_string = "button_press"
|
|
638
|
-
|
|
636
|
+
else:
|
|
637
|
+
# Fallback when message is too short
|
|
638
|
+
if len(extra_data) >= 1 and extra_data[0] == 0x12:
|
|
639
|
+
event_string = "button_release"
|
|
640
|
+
self._logger.debug(f"Type 0x10: Using extra_data pattern for release detection")
|
|
639
641
|
else:
|
|
640
|
-
|
|
642
|
+
# Cannot determine state
|
|
643
|
+
self._logger.warning(f"Type 0x10 message missing state info, unit_id={unit_id}, payload={b2a(payload)}")
|
|
644
|
+
event_string = "unknown"
|
|
641
645
|
|
|
642
646
|
action_display = f"{action:#04x}" if action is not None else "N/A"
|
|
643
647
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/CasambiBt/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/CasambiBt/_casambi.py
RENAMED
|
File without changes
|
|
File without changes
|
{casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/CasambiBt/_constants.py
RENAMED
|
File without changes
|
{casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/CasambiBt/_discover.py
RENAMED
|
File without changes
|
{casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/CasambiBt/_encryption.py
RENAMED
|
File without changes
|
{casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/CasambiBt/_keystore.py
RENAMED
|
File without changes
|
{casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/CasambiBt/_network.py
RENAMED
|
File without changes
|
{casambi_bt_revamped-0.3.6.dev9 → casambi_bt_revamped-0.3.6.dev10}/src/CasambiBt/_operation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|