conson-xp 1.50.1__tar.gz → 1.51.0__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.
Files changed (317) hide show
  1. {conson_xp-1.50.1 → conson_xp-1.51.0}/PKG-INFO +1 -1
  2. {conson_xp-1.50.1 → conson_xp-1.51.0}/pyproject.toml +1 -1
  3. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/__init__.py +1 -1
  4. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/conbus/conbus_export_commands.py +8 -2
  5. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/conbus/actiontable/actiontable_download_service.py +2 -0
  6. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/conbus/conbus_export_actiontable_service.py +47 -27
  7. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/utils/dependencies.py +12 -0
  8. {conson_xp-1.50.1 → conson_xp-1.51.0}/LICENSE +0 -0
  9. {conson_xp-1.50.1 → conson_xp-1.51.0}/README.md +0 -0
  10. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/__init__.py +0 -0
  11. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/__main__.py +0 -0
  12. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/__init__.py +0 -0
  13. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/conbus/__init__.py +0 -0
  14. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/conbus/conbus.py +0 -0
  15. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/conbus/conbus_actiontable_commands.py +0 -0
  16. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/conbus/conbus_autoreport_commands.py +0 -0
  17. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/conbus/conbus_blink_commands.py +0 -0
  18. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/conbus/conbus_config_commands.py +0 -0
  19. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/conbus/conbus_custom_commands.py +0 -0
  20. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/conbus/conbus_datapoint_commands.py +0 -0
  21. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/conbus/conbus_discover_commands.py +0 -0
  22. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/conbus/conbus_event_commands.py +0 -0
  23. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/conbus/conbus_lightlevel_commands.py +0 -0
  24. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/conbus/conbus_linknumber_commands.py +0 -0
  25. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/conbus/conbus_modulenumber_commands.py +0 -0
  26. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/conbus/conbus_msactiontable_commands.py +0 -0
  27. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/conbus/conbus_output_commands.py +0 -0
  28. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/conbus/conbus_raw_commands.py +0 -0
  29. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/conbus/conbus_receive_commands.py +0 -0
  30. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/conbus/conbus_scan_commands.py +0 -0
  31. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/file_commands.py +0 -0
  32. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/homekit/__init__.py +0 -0
  33. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/homekit/homekit.py +0 -0
  34. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/homekit/homekit_start_commands.py +0 -0
  35. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/module_commands.py +0 -0
  36. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/reverse_proxy_commands.py +0 -0
  37. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/server/__init__.py +0 -0
  38. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/server/server_commands.py +0 -0
  39. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/telegram/__init__.py +0 -0
  40. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/telegram/telegram.py +0 -0
  41. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/telegram/telegram_blink_commands.py +0 -0
  42. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/telegram/telegram_checksum_commands.py +0 -0
  43. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/telegram/telegram_discover_commands.py +0 -0
  44. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/telegram/telegram_linknumber_commands.py +0 -0
  45. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/telegram/telegram_parse_commands.py +0 -0
  46. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/telegram/telegram_version_commands.py +0 -0
  47. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/term/__init__.py +0 -0
  48. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/term/term.py +0 -0
  49. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/commands/term/term_commands.py +0 -0
  50. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/main.py +0 -0
  51. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/utils/__init__.py +0 -0
  52. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/utils/click_tree.py +0 -0
  53. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/utils/datapoint_type_choice.py +0 -0
  54. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/utils/decorators.py +0 -0
  55. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/utils/error_handlers.py +0 -0
  56. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/utils/formatters.py +0 -0
  57. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/utils/module_type_choice.py +0 -0
  58. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/utils/serial_number_type.py +0 -0
  59. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/cli/utils/system_function_choice.py +0 -0
  60. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/__init__.py +0 -0
  61. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/actiontable/__init__.py +0 -0
  62. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/actiontable/actiontable.py +0 -0
  63. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/actiontable/actiontable_type.py +0 -0
  64. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/actiontable/msactiontable_xp20.py +0 -0
  65. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/actiontable/msactiontable_xp24.py +0 -0
  66. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/actiontable/msactiontable_xp33.py +0 -0
  67. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/conbus/__init__.py +0 -0
  68. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/conbus/conbus.py +0 -0
  69. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/conbus/conbus_autoreport.py +0 -0
  70. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/conbus/conbus_blink.py +0 -0
  71. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/conbus/conbus_client_config.py +0 -0
  72. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/conbus/conbus_connection_status.py +0 -0
  73. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/conbus/conbus_custom.py +0 -0
  74. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/conbus/conbus_datapoint.py +0 -0
  75. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/conbus/conbus_discover.py +0 -0
  76. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/conbus/conbus_event_list.py +0 -0
  77. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/conbus/conbus_event_raw.py +0 -0
  78. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/conbus/conbus_export.py +0 -0
  79. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/conbus/conbus_lightlevel.py +0 -0
  80. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/conbus/conbus_linknumber.py +0 -0
  81. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/conbus/conbus_logger_config.py +0 -0
  82. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/conbus/conbus_output.py +0 -0
  83. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/conbus/conbus_raw.py +0 -0
  84. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/conbus/conbus_receive.py +0 -0
  85. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/conbus/conbus_writeconfig.py +0 -0
  86. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/config/__init__.py +0 -0
  87. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/config/conson_module_config.py +0 -0
  88. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/homekit/__init__.py +0 -0
  89. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/homekit/homekit_accessory.py +0 -0
  90. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/homekit/homekit_config.py +0 -0
  91. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/log_entry.py +0 -0
  92. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/protocol/__init__.py +0 -0
  93. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/protocol/conbus_protocol.py +0 -0
  94. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/response.py +0 -0
  95. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/telegram/__init__.py +0 -0
  96. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/telegram/action_type.py +0 -0
  97. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/telegram/datapoint_type.py +0 -0
  98. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/telegram/event_telegram.py +0 -0
  99. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/telegram/event_type.py +0 -0
  100. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/telegram/input_action_type.py +0 -0
  101. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/telegram/input_type.py +0 -0
  102. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/telegram/module_type.py +0 -0
  103. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/telegram/module_type_code.py +0 -0
  104. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/telegram/output_telegram.py +0 -0
  105. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/telegram/reply_telegram.py +0 -0
  106. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/telegram/system_function.py +0 -0
  107. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/telegram/system_telegram.py +0 -0
  108. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/telegram/telegram.py +0 -0
  109. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/telegram/telegram_type.py +0 -0
  110. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/telegram/timeparam_type.py +0 -0
  111. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/term/__init__.py +0 -0
  112. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/term/connection_state.py +0 -0
  113. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/term/module_state.py +0 -0
  114. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/term/protocol_keys_config.py +0 -0
  115. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/term/status_message.py +0 -0
  116. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/term/telegram_display.py +0 -0
  117. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/models/write_config_type.py +0 -0
  118. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/__init__.py +0 -0
  119. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/actiontable/__init__.py +0 -0
  120. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/actiontable/actiontable_serializer.py +0 -0
  121. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/actiontable/download_state_machine.py +0 -0
  122. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/actiontable/msactiontable_serializer.py +0 -0
  123. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/actiontable/msactiontable_xp20_serializer.py +0 -0
  124. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/actiontable/msactiontable_xp24_serializer.py +0 -0
  125. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/actiontable/msactiontable_xp33_serializer.py +0 -0
  126. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/actiontable/serializer_protocol.py +0 -0
  127. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/conbus/__init__.py +0 -0
  128. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/conbus/actiontable/__init__.py +0 -0
  129. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/conbus/actiontable/actiontable_list_service.py +0 -0
  130. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/conbus/actiontable/actiontable_show_service.py +0 -0
  131. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/conbus/actiontable/actiontable_upload_service.py +0 -0
  132. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/conbus/conbus_blink_all_service.py +0 -0
  133. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/conbus/conbus_blink_service.py +0 -0
  134. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/conbus/conbus_custom_service.py +0 -0
  135. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/conbus/conbus_datapoint_queryall_service.py +0 -0
  136. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/conbus/conbus_datapoint_service.py +0 -0
  137. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/conbus/conbus_discover_service.py +0 -0
  138. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/conbus/conbus_event_list_service.py +0 -0
  139. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/conbus/conbus_event_raw_service.py +0 -0
  140. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/conbus/conbus_export_service.py +0 -0
  141. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/conbus/conbus_output_service.py +0 -0
  142. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/conbus/conbus_raw_service.py +0 -0
  143. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/conbus/conbus_receive_service.py +0 -0
  144. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/conbus/conbus_scan_service.py +0 -0
  145. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/conbus/write_config_service.py +0 -0
  146. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/homekit/__init__.py +0 -0
  147. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/homekit/homekit_cache_service.py +0 -0
  148. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/homekit/homekit_conbus_service.py +0 -0
  149. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/homekit/homekit_config_validator.py +0 -0
  150. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/homekit/homekit_conson_validator.py +0 -0
  151. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/homekit/homekit_dimminglight.py +0 -0
  152. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/homekit/homekit_dimminglight_service.py +0 -0
  153. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/homekit/homekit_hap_service.py +0 -0
  154. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/homekit/homekit_lightbulb.py +0 -0
  155. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/homekit/homekit_lightbulb_service.py +0 -0
  156. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/homekit/homekit_module_service.py +0 -0
  157. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/homekit/homekit_outlet.py +0 -0
  158. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/homekit/homekit_outlet_service.py +0 -0
  159. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/homekit/homekit_service.py +0 -0
  160. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/log_file_service.py +0 -0
  161. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/module_type_service.py +0 -0
  162. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/protocol/__init__.py +0 -0
  163. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/protocol/conbus_event_protocol.py +0 -0
  164. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/protocol/protocol_factory.py +0 -0
  165. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/protocol/telegram_protocol.py +0 -0
  166. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/reverse_proxy_service.py +0 -0
  167. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/server/__init__.py +0 -0
  168. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/server/base_server_service.py +0 -0
  169. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/server/client_buffer_manager.py +0 -0
  170. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/server/cp20_server_service.py +0 -0
  171. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/server/device_service_factory.py +0 -0
  172. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/server/server_service.py +0 -0
  173. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/server/xp130_server_service.py +0 -0
  174. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/server/xp20_server_service.py +0 -0
  175. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/server/xp230_server_service.py +0 -0
  176. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/server/xp24_server_service.py +0 -0
  177. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/server/xp33_server_service.py +0 -0
  178. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/telegram/__init__.py +0 -0
  179. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/telegram/telegram_blink_service.py +0 -0
  180. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/telegram/telegram_checksum_service.py +0 -0
  181. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/telegram/telegram_datapoint_service.py +0 -0
  182. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/telegram/telegram_discover_service.py +0 -0
  183. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/telegram/telegram_link_number_service.py +0 -0
  184. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/telegram/telegram_output_service.py +0 -0
  185. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/telegram/telegram_service.py +0 -0
  186. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/telegram/telegram_version_service.py +0 -0
  187. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/term/__init__.py +0 -0
  188. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/term/protocol_monitor_service.py +0 -0
  189. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/services/term/state_monitor_service.py +0 -0
  190. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/term/__init__.py +0 -0
  191. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/term/protocol.py +0 -0
  192. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/term/protocol.tcss +0 -0
  193. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/term/state.py +0 -0
  194. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/term/state.tcss +0 -0
  195. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/term/widgets/__init__.py +0 -0
  196. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/term/widgets/help_menu.py +0 -0
  197. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/term/widgets/modules_list.py +0 -0
  198. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/term/widgets/protocol_log.py +0 -0
  199. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/term/widgets/status_footer.py +0 -0
  200. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/utils/__init__.py +0 -0
  201. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/utils/checksum.py +0 -0
  202. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/utils/event_helper.py +0 -0
  203. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/utils/logging.py +0 -0
  204. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/utils/serialization.py +0 -0
  205. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/utils/state_machine.py +0 -0
  206. {conson_xp-1.50.1 → conson_xp-1.51.0}/src/xp/utils/time_utils.py +0 -0
  207. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/.coverage +0 -0
  208. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/__init__.py +0 -0
  209. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/conftest.py +0 -0
  210. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/integration/.coverage +0 -0
  211. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/integration/__init__.py +0 -0
  212. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/integration/telegram_test_data.py +0 -0
  213. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/integration/test_actiontable_integration.py +0 -0
  214. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/integration/test_api/.coverage +0 -0
  215. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/integration/test_api/__init__.py +0 -0
  216. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/integration/test_blink_integration.py +0 -0
  217. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/integration/test_checksum_integration.py +0 -0
  218. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/integration/test_conbus_blink_integration.py +0 -0
  219. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/integration/test_conbus_datapoint_integration.py +0 -0
  220. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/integration/test_conbus_raw_integration.py +0 -0
  221. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/integration/test_conbus_receive_integration.py +0 -0
  222. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/integration/test_discovery_integration.py +0 -0
  223. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/integration/test_event_telegram_integration.py +0 -0
  224. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/integration/test_homekit_config_integration.py +0 -0
  225. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/integration/test_link_number_integration.py +0 -0
  226. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/integration/test_module_integration.py +0 -0
  227. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/integration/test_output_integration.py +0 -0
  228. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/integration/test_reverse_proxy_integration.py +0 -0
  229. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/integration/test_system_reply_telegram_integration.py +0 -0
  230. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/integration/test_term_logging_integration.py +0 -0
  231. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/integration/test_version_integration.py +0 -0
  232. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/integration/test_xp20_action_table_integration.py +0 -0
  233. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/integration/test_xp24_action_table_integration.py +0 -0
  234. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/__init__.py +0 -0
  235. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_api/__init__.py +0 -0
  236. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_cli/__init__.py +0 -0
  237. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_cli/test_click_tree.py +0 -0
  238. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_cli/test_conbus_actiontable_commands.py +0 -0
  239. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_cli/test_conbus_blink_commands.py +0 -0
  240. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_cli/test_conbus_msactiontable_upload_commands.py +0 -0
  241. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_cli/test_datapoint_type_choice.py +0 -0
  242. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_cli/test_decorators.py +0 -0
  243. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_cli/test_error_handlers.py +0 -0
  244. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_cli/test_formatters.py +0 -0
  245. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_cli/test_serial_number_type.py +0 -0
  246. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_cli/test_system_function_choice.py +0 -0
  247. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_cli/test_term_commands.py +0 -0
  248. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_encoding/__init__.py +0 -0
  249. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_encoding/test_latin1_edge_cases.py +0 -0
  250. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_models/__init__.py +0 -0
  251. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_models/test_conbus.py +0 -0
  252. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_models/test_conbus_client_send.py +0 -0
  253. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_models/test_conbus_discover.py +0 -0
  254. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_models/test_conbus_linknumber.py +0 -0
  255. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_models/test_event_telegram.py +0 -0
  256. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_models/test_log_entry.py +0 -0
  257. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_models/test_logger_config.py +0 -0
  258. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_models/test_module_type.py +0 -0
  259. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_models/test_reply_telegram.py +0 -0
  260. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_models/test_system_telegram.py +0 -0
  261. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_models/test_system_telegram_enhancements.py +0 -0
  262. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_models/test_version_telegram.py +0 -0
  263. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_models/test_write_config_type.py +0 -0
  264. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_models/test_xp20_action_table.py +0 -0
  265. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_models/test_xp24_action_table.py +0 -0
  266. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_models/test_xp24_action_table_short_format.py +0 -0
  267. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_models/test_xp24_action_telegram.py +0 -0
  268. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/__init__.py +0 -0
  269. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_actiontable_download_service.py +0 -0
  270. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_actiontable_serializer.py +0 -0
  271. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_actiontable_service.py +0 -0
  272. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_actiontable_upload_service.py +0 -0
  273. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_base_server_service.py +0 -0
  274. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_blink_service.py +0 -0
  275. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_checksum_service.py +0 -0
  276. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_client_buffer_manager.py +0 -0
  277. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_conbus_blink_service.py +0 -0
  278. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_conbus_event_list_service.py +0 -0
  279. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_conbus_event_protocol.py +0 -0
  280. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_conbus_event_raw_service.py +0 -0
  281. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_conbus_output_service.py +0 -0
  282. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_conbus_raw_service.py +0 -0
  283. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_conbus_receive_service.py +0 -0
  284. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_conbus_reverse_proxy_service.py +0 -0
  285. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_conbus_scan_service.py +0 -0
  286. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_device_service_factory.py +0 -0
  287. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_discovery_service.py +0 -0
  288. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_homekit_cache_service.py +0 -0
  289. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_homekit_config_validator.py +0 -0
  290. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_homekit_conson_service.py +0 -0
  291. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_homekit_services.py +0 -0
  292. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_log_file_service.py +0 -0
  293. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_module_type_service.py +0 -0
  294. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_protocol.py +0 -0
  295. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_protocol_monitor_service.py +0 -0
  296. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_server_service.py +0 -0
  297. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_state_monitor_service.py +0 -0
  298. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_telegram_input_service.py +0 -0
  299. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_telegram_output_service.py +0 -0
  300. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_telegram_protocol.py +0 -0
  301. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_telegram_service.py +0 -0
  302. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_version_service.py +0 -0
  303. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_xp20_action_table_serializer.py +0 -0
  304. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_xp24_action_service.py +0 -0
  305. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_xp24_action_table_serializer.py +0 -0
  306. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_xp24_action_table_service.py +0 -0
  307. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_xp33_action_table_serializer.py +0 -0
  308. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_xp33_short_format.py +0 -0
  309. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_services/test_xp_server_services.py +0 -0
  310. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_tui/__init__.py +0 -0
  311. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_tui/test_protocol_log.py +0 -0
  312. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_utils/__init__.py +0 -0
  313. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_utils/test_checksum.py +0 -0
  314. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_utils/test_event_helper.py +0 -0
  315. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_utils/test_logging.py +0 -0
  316. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_utils/test_serialization.py +0 -0
  317. {conson_xp-1.50.1 → conson_xp-1.51.0}/tests/unit/test_utils/test_time_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: conson-xp
3
- Version: 1.50.1
3
+ Version: 1.51.0
4
4
  Summary: XP Protocol Communication Tools
5
5
  Author-Email: ldvchosal <ldvchosal@github.com>
6
6
  License: MIT License
@@ -23,7 +23,7 @@ dependencies = [
23
23
  ]
24
24
  requires-python = ">=3.11"
25
25
  readme = "README.md"
26
- version = "1.50.1"
26
+ version = "1.51.0"
27
27
 
28
28
  [project.license]
29
29
  file = "LICENSE"
@@ -4,7 +4,7 @@ XP CLI tool for remote console bus operations.
4
4
  conson-xp package.
5
5
  """
6
6
 
7
- __version__ = "1.50.1"
7
+ __version__ = "1.51.0"
8
8
  __manufacturer__ = "salchichon"
9
9
  __model__ = "xp.cli"
10
10
  __serial__ = "2025.09.23.000"
@@ -117,16 +117,21 @@ def export_conbus_actiontable(ctx: click.Context) -> None:
117
117
  xp conbus export actiontable
118
118
  """
119
119
 
120
- def on_progress(serial_number: str, current: int, total: int) -> None:
120
+ def on_progress(
121
+ serial_number: str, actiontable_type: str, current: int, total: int
122
+ ) -> None:
121
123
  """
122
124
  Handle progress updates during export.
123
125
 
124
126
  Args:
125
127
  serial_number: Serial number of discovered device.
128
+ actiontable_type: Type of action table being exported.
126
129
  current: Current device number.
127
130
  total: Total devices discovered.
128
131
  """
129
- click.echo(f"Querying device {current}/{total}: {serial_number}...")
132
+ click.echo(
133
+ f"Querying device {current}/{total}: {serial_number} / {actiontable_type}."
134
+ )
130
135
 
131
136
  def on_device_actiontable_exported(
132
137
  module: ConsonModuleConfig,
@@ -176,4 +181,5 @@ def export_conbus_actiontable(ctx: click.Context) -> None:
176
181
  service.on_device_actiontable_exported.connect(on_device_actiontable_exported)
177
182
  service.on_finish.connect(on_finish)
178
183
  service.set_timeout(5)
184
+ service.configure()
179
185
  service.start_reactor()
@@ -292,6 +292,8 @@ class ActionTableDownloadService(DownloadStateMachine):
292
292
  raise RuntimeError("Cannot configure while download in progress")
293
293
  self.logger.info("Configuring actiontable download")
294
294
  self.serial_number = serial_number
295
+ self.actiontable_data = []
296
+
295
297
  if actiontable_type == ActionTableType.ACTIONTABLE:
296
298
  self.serializer = self.actiontable_serializer
297
299
  elif actiontable_type == ActionTableType.MSACTIONTABLE_XP20:
@@ -3,7 +3,7 @@
3
3
  import asyncio
4
4
  import logging
5
5
  from pathlib import Path
6
- from queue import SimpleQueue
6
+ from queue import Empty, SimpleQueue
7
7
  from typing import Any, Optional, Tuple
8
8
 
9
9
  import yaml
@@ -38,7 +38,7 @@ class ConbusActiontableExportService:
38
38
  """
39
39
 
40
40
  # Signals (class attributes)
41
- on_progress: Signal = Signal(str, int, int) # serial, current, total
41
+ on_progress: Signal = Signal(str, str, int, int) # serial, current, total
42
42
  on_device_actiontable_exported: Signal = Signal(
43
43
  ConsonModuleConfig, ActionTableType, str
44
44
  )
@@ -64,25 +64,35 @@ class ConbusActiontableExportService:
64
64
  self.logger = logging.getLogger(__name__)
65
65
  self.download_service = download_service
66
66
  self._module_list: ConsonModuleListConfig = module_list
67
+ self._module_dic: dict[str, ConsonModuleConfig] = {
68
+ module.serial_number: module for module in module_list.root
69
+ }
67
70
  # State management
68
- self.device_queue: SimpleQueue[Tuple[ConsonModuleConfig, ActionTableType]] = (
71
+ self.device_queue: SimpleQueue[Tuple[str, ActionTableType]] = (
69
72
  SimpleQueue()
70
73
  ) # FIFO
71
74
  for module in self._module_list.root:
72
- self.device_queue.put((module, ActionTableType.ACTIONTABLE))
73
- if module.module_type == "xp20":
74
- self.device_queue.put((module, ActionTableType.MSACTIONTABLE_XP20))
75
- if module.module_type == "xp24":
76
- self.device_queue.put((module, ActionTableType.MSACTIONTABLE_XP24))
77
- if module.module_type == "xp33":
78
- self.device_queue.put((module, ActionTableType.MSACTIONTABLE_XP33))
75
+ self.logger.info("Export module %s", module)
76
+ if module.module_type.lower() == "xp20":
77
+ self.device_queue.put(
78
+ (module.serial_number, ActionTableType.MSACTIONTABLE_XP20)
79
+ )
80
+ if module.module_type.lower() == "xp24":
81
+ self.device_queue.put(
82
+ (module.serial_number, ActionTableType.MSACTIONTABLE_XP24)
83
+ )
84
+ if module.module_type.lower() == "xp33":
85
+ self.device_queue.put(
86
+ (module.serial_number, ActionTableType.MSACTIONTABLE_XP33)
87
+ )
88
+ self.device_queue.put((module.serial_number, ActionTableType.ACTIONTABLE))
89
+
90
+ self.logger.info("Export module %s", self.device_queue.qsize())
79
91
 
80
92
  self.current_module: Optional[ConsonModuleConfig] = None
81
- self.curent_actiontable_type: Optional[ActionTableType] = None
93
+ self.current_actiontable_type: Optional[ActionTableType] = None
82
94
  self.export_result = ConbusExportResponse(success=False)
83
95
  self.export_status = "OK"
84
- # Connect protocol signals
85
- self._connect_signals()
86
96
 
87
97
  def on_module_actiontable_received(
88
98
  self, actiontable: Any, short_actiontable: list[str]
@@ -94,7 +104,7 @@ class ConbusActiontableExportService:
94
104
  actiontable: Full actiontable data.
95
105
  short_actiontable: Short representation of the actiontable.
96
106
  """
97
- if not self.curent_actiontable_type:
107
+ if not self.current_actiontable_type:
98
108
  self._fail("Invalid state (curent_actiontable_type)")
99
109
  return
100
110
 
@@ -102,17 +112,17 @@ class ConbusActiontableExportService:
102
112
  self._fail("Invalid state (current_module)")
103
113
  return
104
114
 
105
- if self.curent_actiontable_type == ActionTableType.ACTIONTABLE:
115
+ if self.current_actiontable_type == ActionTableType.ACTIONTABLE:
106
116
  self.current_module.action_table = short_actiontable
107
- elif self.curent_actiontable_type == ActionTableType.MSACTIONTABLE_XP20:
117
+ elif self.current_actiontable_type == ActionTableType.MSACTIONTABLE_XP20:
108
118
  self.current_module.xp20_msaction_table = short_actiontable
109
- elif self.curent_actiontable_type == ActionTableType.MSACTIONTABLE_XP24:
119
+ elif self.current_actiontable_type == ActionTableType.MSACTIONTABLE_XP24:
110
120
  self.current_module.xp24_msaction_table = short_actiontable
111
- elif self.curent_actiontable_type == ActionTableType.MSACTIONTABLE_XP33:
121
+ elif self.current_actiontable_type == ActionTableType.MSACTIONTABLE_XP33:
112
122
  self.current_module.xp33_msaction_table = short_actiontable
113
123
 
114
124
  self.on_device_actiontable_exported.emit(
115
- self.current_module, self.curent_actiontable_type, actiontable
125
+ self.current_module, self.current_actiontable_type, short_actiontable
116
126
  )
117
127
 
118
128
  def on_module_finish(self) -> None:
@@ -127,10 +137,13 @@ class ConbusActiontableExportService:
127
137
  serial_number = (
128
138
  self.current_module.serial_number if self.current_module else "UNKNOWN"
129
139
  )
140
+ current_actiontable_type = self.current_actiontable_type or "UNKNOWN"
130
141
  total_modules = len(self._module_list.root)
131
142
  current_index = total_modules - self.device_queue.qsize()
132
143
 
133
- self.on_progress.emit(serial_number, current_index, total_modules)
144
+ self.on_progress.emit(
145
+ serial_number, current_actiontable_type, current_index, total_modules
146
+ )
134
147
 
135
148
  def on_module_error(self, error_message: str) -> None:
136
149
  """
@@ -162,7 +175,6 @@ class ConbusActiontableExportService:
162
175
  "enabled",
163
176
  "conbus_ip",
164
177
  "conbus_port",
165
- "action_table",
166
178
  }
167
179
  }
168
180
  },
@@ -203,16 +215,24 @@ class ConbusActiontableExportService:
203
215
  True if there is a module to export, False otherwise.
204
216
  """
205
217
  self.download_service.reset()
206
- (self.current_module, self.curent_actiontable_type) = (
207
- self.device_queue.get_nowait()
208
- )
209
- if not (self.current_module or self.curent_actiontable_type):
218
+ try:
219
+ (current_serial_number, self.current_actiontable_type) = (
220
+ self.device_queue.get_nowait()
221
+ )
222
+ except Empty:
223
+ return False
224
+
225
+ self.current_module = self._module_dic[current_serial_number]
226
+ if not (self.current_module or self.current_actiontable_type):
210
227
  self.logger.error("No module to export")
211
228
  return False
212
229
 
230
+ self.logger.info(
231
+ f"Downloading {self.current_module.serial_number} / {self.current_actiontable_type}"
232
+ )
213
233
  self.download_service.configure(
214
234
  self.current_module.serial_number,
215
- self.curent_actiontable_type,
235
+ self.current_actiontable_type,
216
236
  )
217
237
  self.download_service.do_connect()
218
238
  return True
@@ -275,7 +295,7 @@ class ConbusActiontableExportService:
275
295
 
276
296
  def _disconnect_signals(self) -> None:
277
297
  """Disconnect download service signals from handlers."""
278
- self.download_service.on_actiontable_received.connect(
298
+ self.download_service.on_actiontable_received.disconnect(
279
299
  self.on_module_actiontable_received
280
300
  )
281
301
  self.download_service.on_finish.disconnect(self.on_module_finish)
@@ -46,6 +46,9 @@ from xp.services.conbus.conbus_datapoint_service import (
46
46
  from xp.services.conbus.conbus_discover_service import ConbusDiscoverService
47
47
  from xp.services.conbus.conbus_event_list_service import ConbusEventListService
48
48
  from xp.services.conbus.conbus_event_raw_service import ConbusEventRawService
49
+ from xp.services.conbus.conbus_export_actiontable_service import (
50
+ ConbusActiontableExportService,
51
+ )
49
52
  from xp.services.conbus.conbus_export_service import ConbusExportService
50
53
  from xp.services.conbus.conbus_output_service import ConbusOutputService
51
54
  from xp.services.conbus.conbus_raw_service import ConbusRawService
@@ -217,6 +220,15 @@ class ServiceContainer:
217
220
  scope=punq.Scope.singleton,
218
221
  )
219
222
 
223
+ self.container.register(
224
+ ConbusActiontableExportService,
225
+ factory=lambda: ConbusActiontableExportService(
226
+ download_service=self.container.resolve(ActionTableDownloadService),
227
+ module_list=self.container.resolve(ConsonModuleListConfig),
228
+ ),
229
+ scope=punq.Scope.singleton,
230
+ )
231
+
220
232
  # Terminal UI
221
233
  self.container.register(
222
234
  ProtocolMonitorService,
File without changes
File without changes