mx-remote 4.7.8__tar.gz → 4.7.9__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 (178) hide show
  1. mx_remote-4.7.9/.claude/settings.local.json +13 -0
  2. {mx_remote-4.7.8 → mx_remote-4.7.9}/PKG-INFO +1 -1
  3. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/const.py +10 -1
  4. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/const.pyi +3 -0
  5. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/remote/Bay.py +17 -5
  6. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/remote/Bay.pyi +1 -0
  7. mx_remote-4.7.8/.claude/agents/semble-search.md +0 -30
  8. mx_remote-4.7.8/.claude/settings.local.json +0 -9
  9. {mx_remote-4.7.8 → mx_remote-4.7.9}/.gitignore +0 -0
  10. {mx_remote-4.7.8 → mx_remote-4.7.9}/CLAUDE.md +0 -0
  11. {mx_remote-4.7.8 → mx_remote-4.7.9}/LICENSE +0 -0
  12. {mx_remote-4.7.8 → mx_remote-4.7.9}/README.md +0 -0
  13. {mx_remote-4.7.8 → mx_remote-4.7.9}/hatch_build.py +0 -0
  14. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/Interface.py +0 -0
  15. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/Interface.pyi +0 -0
  16. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/Uid.py +0 -0
  17. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/Uid.pyi +0 -0
  18. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/__init__.py +0 -0
  19. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/__init__.pyi +0 -0
  20. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/main.py +0 -0
  21. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/main.pyi +0 -0
  22. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/BayConfig.py +0 -0
  23. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/BayConfig.pyi +0 -0
  24. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/Constants.py +0 -0
  25. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/Constants.pyi +0 -0
  26. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/Data.py +0 -0
  27. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/Data.pyi +0 -0
  28. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/Factory.py +0 -0
  29. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/Factory.pyi +0 -0
  30. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameAmpDolbySettings.py +0 -0
  31. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameAmpDolbySettings.pyi +0 -0
  32. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameAmpZoneSettings.py +0 -0
  33. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameAmpZoneSettings.pyi +0 -0
  34. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameBase.py +0 -0
  35. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameBase.pyi +0 -0
  36. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameBayConfig.py +0 -0
  37. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameBayConfig.pyi +0 -0
  38. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameBayConfigSecondary.py +0 -0
  39. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameBayConfigSecondary.pyi +0 -0
  40. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameBayHide.py +0 -0
  41. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameBayHide.pyi +0 -0
  42. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameBayStatus.py +0 -0
  43. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameBayStatus.pyi +0 -0
  44. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameConnectStatus.py +0 -0
  45. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameConnectStatus.pyi +0 -0
  46. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameDebug.py +0 -0
  47. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameDebug.pyi +0 -0
  48. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameDiscover.py +0 -0
  49. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameDiscover.pyi +0 -0
  50. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameEDID.py +0 -0
  51. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameEDID.pyi +0 -0
  52. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameEDIDProfile.py +0 -0
  53. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameEDIDProfile.pyi +0 -0
  54. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameFactoryReset.py +0 -0
  55. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameFactoryReset.pyi +0 -0
  56. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameFilterStatus.py +0 -0
  57. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameFilterStatus.pyi +0 -0
  58. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameFirmwareVersion.py +0 -0
  59. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameFirmwareVersion.pyi +0 -0
  60. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameHeader.py +0 -0
  61. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameHeader.pyi +0 -0
  62. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameHello.py +0 -0
  63. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameHello.pyi +0 -0
  64. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameLinks.py +0 -0
  65. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameLinks.pyi +0 -0
  66. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameMeshOperation.py +0 -0
  67. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameMeshOperation.pyi +0 -0
  68. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameMirrorStatus.py +0 -0
  69. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameMirrorStatus.pyi +0 -0
  70. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameMonitoringPulse.py +0 -0
  71. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameMonitoringPulse.pyi +0 -0
  72. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameNetworkStatus.py +0 -0
  73. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameNetworkStatus.pyi +0 -0
  74. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FramePDUState.py +0 -0
  75. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FramePDUState.pyi +0 -0
  76. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FramePowerChange.py +0 -0
  77. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FramePowerChange.pyi +0 -0
  78. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameRCAction.py +0 -0
  79. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameRCAction.pyi +0 -0
  80. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameRCIr.py +0 -0
  81. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameRCIr.pyi +0 -0
  82. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameRCKey.py +0 -0
  83. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameRCKey.pyi +0 -0
  84. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameRCSettings.py +0 -0
  85. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameRCSettings.pyi +0 -0
  86. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameReboot.py +0 -0
  87. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameReboot.pyi +0 -0
  88. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameRoutingChange.py +0 -0
  89. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameRoutingChange.pyi +0 -0
  90. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameSetInstaller.py +0 -0
  91. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameSetInstaller.pyi +0 -0
  92. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameSetName.py +0 -0
  93. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameSetName.pyi +0 -0
  94. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameSetRoute.py +0 -0
  95. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameSetRoute.pyi +0 -0
  96. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameSetupStatus.py +0 -0
  97. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameSetupStatus.pyi +0 -0
  98. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameSignalStatus.py +0 -0
  99. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameSignalStatus.pyi +0 -0
  100. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameSignalStatusNew.py +0 -0
  101. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameSignalStatusNew.pyi +0 -0
  102. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameSysTemperature.py +0 -0
  103. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameSysTemperature.pyi +0 -0
  104. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameSystemStatus.py +0 -0
  105. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameSystemStatus.pyi +0 -0
  106. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameTXRCAction.py +0 -0
  107. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameTXRCAction.pyi +0 -0
  108. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameTopology.py +0 -0
  109. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameTopology.pyi +0 -0
  110. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameTxIR.py +0 -0
  111. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameTxIR.pyi +0 -0
  112. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameUpgradeFPGA.py +0 -0
  113. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameUpgradeFPGA.pyi +0 -0
  114. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPAudio.py +0 -0
  115. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPAudio.pyi +0 -0
  116. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPBayMapping.py +0 -0
  117. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPBayMapping.pyi +0 -0
  118. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPDeviceConfiguration.py +0 -0
  119. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPDeviceConfiguration.pyi +0 -0
  120. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPLink.py +0 -0
  121. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPLink.pyi +0 -0
  122. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPManualSourceSwitch.py +0 -0
  123. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPManualSourceSwitch.pyi +0 -0
  124. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPMultiviewer.py +0 -0
  125. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPMultiviewer.pyi +0 -0
  126. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPPowerSave.py +0 -0
  127. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPPowerSave.pyi +0 -0
  128. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPSetMaster.py +0 -0
  129. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPSetMaster.pyi +0 -0
  130. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPSourceSwitch.py +0 -0
  131. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPSourceSwitch.pyi +0 -0
  132. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPSources.py +0 -0
  133. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPSources.pyi +0 -0
  134. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPStats.py +0 -0
  135. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPStats.pyi +0 -0
  136. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPStreamDetails.py +0 -0
  137. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPStreamDetails.pyi +0 -0
  138. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPTiling.py +0 -0
  139. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameV2IPTiling.pyi +0 -0
  140. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameVolume.py +0 -0
  141. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameVolume.pyi +0 -0
  142. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameVolumeDown.py +0 -0
  143. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameVolumeDown.pyi +0 -0
  144. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameVolumeSet.py +0 -0
  145. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameVolumeSet.pyi +0 -0
  146. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameVolumeUp.py +0 -0
  147. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/FrameVolumeUp.pyi +0 -0
  148. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/LinkConfig.py +0 -0
  149. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/LinkConfig.pyi +0 -0
  150. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/Multiviewer.py +0 -0
  151. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/Multiviewer.pyi +0 -0
  152. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/PDUState.py +0 -0
  153. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/PDUState.pyi +0 -0
  154. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/Svd.py +0 -0
  155. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/Svd.pyi +0 -0
  156. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/V2IPConfig.py +0 -0
  157. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/V2IPConfig.pyi +0 -0
  158. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/V2IPStats.py +0 -0
  159. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/V2IPStats.pyi +0 -0
  160. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/__init__.py +0 -0
  161. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/__init__.pyi +0 -0
  162. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/proto/svd.csv +0 -0
  163. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/py.typed +0 -0
  164. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/remote/ConnectionAsync.py +0 -0
  165. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/remote/ConnectionAsync.pyi +0 -0
  166. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/remote/Device.py +0 -0
  167. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/remote/Device.pyi +0 -0
  168. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/remote/Link.py +0 -0
  169. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/remote/Link.pyi +0 -0
  170. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/remote/P8PDU.py +0 -0
  171. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/remote/P8PDU.pyi +0 -0
  172. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/remote/Remote.py +0 -0
  173. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/remote/Remote.pyi +0 -0
  174. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/remote/State.py +0 -0
  175. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/remote/State.pyi +0 -0
  176. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/remote/V2IP.py +0 -0
  177. {mx_remote-4.7.8 → mx_remote-4.7.9}/mx_remote/remote/V2IP.pyi +0 -0
  178. {mx_remote-4.7.8 → mx_remote-4.7.9}/pyproject.toml +0 -0
@@ -0,0 +1,13 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(scp *)",
5
+ "Bash(ssh hass@home '~/venv-hass/bin/pip install --upgrade /tmp/mx_remote-4.3.0-py3-none-any.whl')",
6
+ "Bash(ssh hass@home *)",
7
+ "Bash(git reset *)",
8
+ "Bash(mount)",
9
+ "Bash(curl -s -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiI1ZTU3MjI0Zjc3ZjQ0OWVkYjEzMzU5YjAyMTMzN2IzMiIsImlhdCI6MTc3NTQ4MjM0NiwiZXhwIjoyMDkwODQyMzQ2fQ.EzuPwl8JfzUFkWQIczcKGc_bUEfKKzXfday8t7EB93M' http://10.8.100.5:8123/api/states/media_player.video_output_kantoor)",
10
+ "Bash(git pull *)"
11
+ ]
12
+ }
13
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mx_remote
3
- Version: 4.7.8
3
+ Version: 4.7.9
4
4
  Summary: Python 3 library for interfacing with MX Remote compatible devices
5
5
  Project-URL: Homepage, https://github.com/opdenkamp/mx-remote/
6
6
  Project-URL: Documentation, https://github.com/opdenkamp/mx-remote/
@@ -14,7 +14,7 @@ Default communication modes:
14
14
  """
15
15
  import os
16
16
 
17
- VERSION = '4.7.8'
17
+ VERSION = '4.7.9'
18
18
  __version__ = VERSION
19
19
 
20
20
  MX_BCAST_UDP_PORT = 8811
@@ -26,4 +26,13 @@ MX_MCAST_UDP_IP = '224.8.8.8'
26
26
  MX_MCAST_UDP_PORT = 8812
27
27
  """UDP port used in multicast mode (default)."""
28
28
 
29
+ V2IP_UDP_PORT_VIDEO = 50020
30
+ """Default destination UDP port for a V2IP video stream (firmware ``V2IP_UDP_PORT_VIDEO``)."""
31
+
32
+ V2IP_UDP_PORT_ANC = 50021
33
+ """Default destination UDP port for a V2IP ancillary stream (firmware ``V2IP_UDP_PORT_ANC``)."""
34
+
35
+ V2IP_UDP_PORT_AUDIO = 50022
36
+ """Default destination UDP port for a V2IP audio stream (firmware ``V2IP_UDP_PORT_AUDIO``)."""
37
+
29
38
  BASE_PATH = os.path.dirname(__file__)
@@ -5,4 +5,7 @@ __version__ = VERSION
5
5
  MX_BCAST_UDP_PORT: int
6
6
  MX_MCAST_UDP_IP: str
7
7
  MX_MCAST_UDP_PORT: int
8
+ V2IP_UDP_PORT_VIDEO: int
9
+ V2IP_UDP_PORT_ANC: int
10
+ V2IP_UDP_PORT_AUDIO: int
8
11
  BASE_PATH: Incomplete
@@ -43,6 +43,7 @@ from ..Interface import (
43
43
  AudioChangeSource,
44
44
  )
45
45
  from ..Uid import MxrBayUid
46
+ from ..const import V2IP_UDP_PORT_AUDIO
46
47
 
47
48
  _LOGGER = logging.getLogger(__name__)
48
49
 
@@ -830,9 +831,13 @@ class Bay(BayBase):
830
831
  async def select_audio_source(self, source:int|BayBase|str|None, endpoint:str|None=None, audio_fmt:V2IPAudioFormat|None=None) -> bool:
831
832
  '''Select the audio source for this output bay.
832
833
 
833
- When ``audio_fmt`` is provided, the manual V2IP source switch frame (0x24)
834
- is used so the receiver's audio sample rate and channel count can be
835
- overridden; video/anc are sent as 0.0.0.0:0 (no change).
834
+ ``source`` may be an input port number, a source ``BayBase``, or a raw
835
+ ``"ip[:port]"`` multicast address string. The manual V2IP source switch
836
+ frame (0x24) is used when ``audio_fmt`` is provided (so the receiver's
837
+ sample rate and channel count can be overridden) or when ``source`` is a
838
+ raw address (so its destination port is carried -- the legacy 0x1F frame
839
+ has no port field). A raw address without a port defaults to the standard
840
+ V2IP audio port. video/anc are sent as 0.0.0.0:0 (no change).
836
841
  '''
837
842
  if not self.is_v2ip_sink:
838
843
  return False
@@ -846,7 +851,14 @@ class Bay(BayBase):
846
851
  if (source is None) or (not isinstance(source, (BayBase, str))):
847
852
  return False
848
853
 
849
- if audio_fmt is not None:
854
+ # A raw "ip[:port]" source string carries a destination port that only the
855
+ # manual switch frame (0x24) can express; the legacy source-switch frame
856
+ # (0x1F) has no port field, so the receiver resolves the address against
857
+ # its known sources and, failing that, falls back to the *default* audio
858
+ # port -- a custom stream on any other port never routes. Use the manual
859
+ # frame whenever the source is a raw address or an audio format override
860
+ # is requested; a known input bay with neither still uses 0x1F.
861
+ if (audio_fmt is not None) or isinstance(source, str):
850
862
  if isinstance(source, BayBase):
851
863
  if (source.v2ip_source is None) or (source.v2ip_source.audio is None):
852
864
  return False
@@ -855,7 +867,7 @@ class Bay(BayBase):
855
867
  else:
856
868
  host, _, port_s = source.partition(':')
857
869
  audio_ip = host
858
- audio_port = int(port_s) if port_s else 0
870
+ audio_port = int(port_s) if port_s else V2IP_UDP_PORT_AUDIO
859
871
  frame = FrameV2IPManualSourceSwitch.construct(
860
872
  mxr=self.device.registry, target=self.device,
861
873
  video_ip="0.0.0.0", video_port=0,
@@ -1,5 +1,6 @@
1
1
  from ..Interface import AmpZoneSettings as AmpZoneSettings, AudioChangeSource as AudioChangeSource, AudioEndpoint as AudioEndpoint, BayBase as BayBase, BayLink as BayLink, BayMirrorStatus as BayMirrorStatus, ConnectStatus as ConnectStatus, DeviceBase as DeviceBase, DeviceStatus as DeviceStatus, FilteredDevices as FilteredDevices, HiddenStatus as HiddenStatus, MxrCallbacks as MxrCallbacks, MxrDeviceUid as MxrDeviceUid, PowerStatus as PowerStatus, SelectedBays as SelectedBays, SignalStatus as SignalStatus, V2IPStreamSources as V2IPStreamSources
2
2
  from ..Uid import MxrBayUid as MxrBayUid
3
+ from ..const import V2IP_UDP_PORT_AUDIO as V2IP_UDP_PORT_AUDIO
3
4
  from ..proto.BayConfig import BayConfig as BayConfig
4
5
  from ..proto.Constants import BayFeaturesMask as BayFeaturesMask, BayStatusMask as BayStatusMask, EdidProfile as EdidProfile, RCAction as RCAction, RCKey as RCKey, RCType as RCType
5
6
  from ..proto.Data import VolumeMuteStatus as VolumeMuteStatus
@@ -1,30 +0,0 @@
1
- ---
2
- name: semble-search
3
- description: Code search agent for exploring any codebase. Use for finding code by intent, locating implementations, understanding how something works, or discovering related code. Prefer over Grep/Glob/Read for any semantic or exploratory question.
4
- tools: Bash, Read
5
- ---
6
-
7
- Use `semble search` to find code by describing what it does or naming a symbol/identifier, instead of grep:
8
-
9
- ```bash
10
- semble search "authentication flow" ./my-project
11
- semble search "save_pretrained" ./my-project
12
- semble search "save model to disk" ./my-project --top-k 10
13
- ```
14
-
15
- Use `semble find-related` to discover code similar to a known location (pass `file_path` and `line` from a prior search result):
16
-
17
- ```bash
18
- semble find-related src/auth.py 42 ./my-project
19
- ```
20
-
21
- `path` defaults to the current directory when omitted; git URLs are accepted.
22
-
23
- If `semble` is not on `$PATH`, use `uvx --from "semble[mcp]" semble` in its place.
24
-
25
- ## Workflow
26
-
27
- 1. Start with `semble search` to find relevant chunks.
28
- 2. Inspect full files only when the returned chunk is not enough context.
29
- 3. Optionally use `semble find-related` with a promising result's `file_path` and `line` to discover related implementations.
30
- 4. Use grep only when you need exhaustive literal matches or quick confirmation of an exact string.
@@ -1,9 +0,0 @@
1
- {
2
- "permissions": {
3
- "allow": [
4
- "Bash(git fetch *)",
5
- "Bash(ssh hass@home *)",
6
- "Bash(python -c \"import ast; ast.parse\\(open\\('mx_remote/const.py'\\).read\\(\\)\\)\")"
7
- ]
8
- }
9
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes