Ejemplo n.º 1
0
    async def initialize_communication(self, password):
        encoded_password = self.encode_password(password)

        args = dict(
            product_id=self.settings.product_id,
            firmware=self.settings.firmware,
            panel_id=self.settings.panel_id,
            pc_password=encoded_password,
            user_code=0x000000,
            _not_used1=0x19,
            source_id=0x02,
        )

        logger.info("Installer login")
        reply = await self.core.send_wait(
            parsers.InitializeCommunication,
            args=args,
            reply_expected=[0x10, 0x70, 0x00],
        )

        if reply is None:
            logger.error("Installer login failed")
            return False

        if reply.fields.value.po.command == 0x10:
            logger.info("Authentication Success")
            return True
        elif (
            reply.fields.value.po.command == 0x70
            or reply.fields.value.po.command == 0x00
        ):
            logger.error("Authentication Failed. Wrong Password?")
            raise AuthenticationFailed("Wrong PASSWORD")
Ejemplo n.º 2
0
    async def initialize_communication(self, password) -> bool:
        encoded_password = self.encode_password(password)

        self.settings.pc_password = encoded_password
        payload = parsers.InitializeCommunication.build(
            dict(fields=dict(value=self.settings)))

        logger.info("Installer login")
        reply = await self.core.send_wait(message=payload,
                                          reply_expected=[0x1, 0x0])

        if reply is None:
            logger.error("Installer login failed")
            return False

        if reply.fields.value.po.command == 0x0:
            logger.error(
                "Authentication Failed. Wrong PASSWORD. Make sure you use correct PC Password. In Babyware: "
                "Right click on your panel -> Properties -> PC Communication (Babyware) -> PC Communication "
                "(Babyware) Tab.")
            raise AuthenticationFailed("Wrong PASSWORD")
        else:  # command == 0x1
            if reply.fields.value.po.status.Winload_connected:
                logger.info("Authentication Success")
                return True
            else:
                logger.error("Authentication Failed")
                return False
Ejemplo n.º 3
0
    def handle_error_message(self, message):
        """Handle ErrorMessage"""
        error_enum = message.fields.value.message

        if error_enum == "panel_not_connected":
            asyncio.get_event_loop().create_task(self.disconnect())
        else:
            message = self.panel.get_error_message(error_enum)
            logger.error("Got ERROR Message: {}".format(message))
            if message == "Invalid PC Password":
                raise AuthenticationFailed()