Beispiel #1
0
    async def _get_system_info(self) -> Sysinfo:
        """Return system information including mac addresses and current version."""

        if self.services["system"].has_method("getSystemInformation"):
            return Sysinfo.make(
                **await self.services["system"]["getSystemInformation"]())
        elif self.services["system"].has_method("getNetworkSettings"):
            info = await self.services["system"]["getNetworkSettings"](netif=""
                                                                       )

            def get_addr(info, iface):
                addr = next((i for i in info if i["netif"] == iface),
                            {}).get("hwAddr")
                return addr.lower().replace("-", ":") if addr else addr

            macAddr = get_addr(info, "eth0")
            wirelessMacAddr = get_addr(info, "wlan0")
            version = self._upnp_discovery.version if self._upnp_discovery else None
            return Sysinfo.make(macAddr=macAddr,
                                wirelessMacAddr=wirelessMacAddr,
                                version=version)
        else:
            raise SongpalException("getSystemInformation not supported")
Beispiel #2
0
 async def get_system_info(self) -> Sysinfo:
     """Return system information including mac addresses and current version."""
     return Sysinfo.make(
         **await self.services["system"]["getSystemInformation"]())
Beispiel #3
0
def _create_mocked_device(throw_exception=False, wired_mac=MAC, wireless_mac=None):
    mocked_device = MagicMock()

    type(mocked_device).get_supported_methods = AsyncMock(
        side_effect=SongpalException("Unable to do POST request: ")
        if throw_exception
        else None
    )

    interface_info = MagicMock()
    interface_info.modelName = MODEL
    type(mocked_device).get_interface_information = AsyncMock(
        return_value=interface_info
    )

    sys_info = Sysinfo(
        bdAddr=None,
        macAddr=wired_mac,
        wirelessMacAddr=wireless_mac,
        bssid=None,
        ssid=None,
        bleID=None,
        serialNumber=None,
        generation=None,
        model=None,
        version=SW_VERSION,
    )
    type(mocked_device).get_system_info = AsyncMock(return_value=sys_info)

    volume1 = MagicMock()
    volume1.maxVolume = 100
    volume1.minVolume = 0
    volume1.volume = 50
    volume1.is_muted = False
    volume1.set_volume = AsyncMock()
    volume1.set_mute = AsyncMock()
    volume2 = MagicMock()
    volume2.maxVolume = 100
    volume2.minVolume = 0
    volume2.volume = 20
    volume2.is_muted = True
    mocked_device.volume1 = volume1
    type(mocked_device).get_volume_information = AsyncMock(
        return_value=[volume1, volume2]
    )

    power = MagicMock()
    power.status = True
    type(mocked_device).get_power = AsyncMock(return_value=power)

    input1 = MagicMock()
    input1.title = "title1"
    input1.uri = "uri1"
    input1.active = False
    input1.activate = AsyncMock()
    mocked_device.input1 = input1
    input2 = MagicMock()
    input2.title = "title2"
    input2.uri = "uri2"
    input2.active = True
    type(mocked_device).get_inputs = AsyncMock(return_value=[input1, input2])

    type(mocked_device).set_power = AsyncMock()
    type(mocked_device).set_sound_settings = AsyncMock()
    type(mocked_device).listen_notifications = AsyncMock()
    type(mocked_device).stop_listen_notifications = AsyncMock()

    notification_callbacks = {}
    mocked_device.notification_callbacks = notification_callbacks

    def _on_notification(name, callback):
        notification_callbacks[name] = callback

    type(mocked_device).on_notification = MagicMock(side_effect=_on_notification)
    type(mocked_device).clear_notification_callbacks = MagicMock()

    return mocked_device