Example #1
0
    def __init__(self, address=None, crypto=None):
        """
        Instantiate Smartglass Protocol handler.

        Args:
            address (str): Optional IP address to send all packets to
            crypto (:class:`.Crypto`): Instance of crypto context
        """
        self.addr = address
        self.crypto = crypto

        self._discovered = {}

        self.target_participant_id = None
        self.source_participant_id = None

        self._pending = {}
        self._chl_mgr = ChannelManager()
        self._seq_mgr = SequenceManager()
        self._frg_mgr = FragmentManager()

        self.on_timeout = Event()
        self.on_discover = Event()
        self.on_message = Event()
        self.on_json = Event()

        super(DatagramServer, self).__init__(('*:0'))
    def __init__(self,
                 address: Optional[str] = None,
                 crypto_instance: Optional[crypto.Crypto] = None):
        """
        Instantiate Smartglass Protocol handler.

        Args:
            address: Address
            crypto_instance: Crypto instance
        """
        self.address = address
        self._transport: Optional[asyncio.DatagramTransport] = None
        self.crypto = crypto_instance

        self._discovered = {}

        self.target_participant_id = None
        self.source_participant_id = None

        self._pending: Dict[str, asyncio.Future] = {}
        self._chl_mgr = ChannelManager()
        self._seq_mgr = SequenceManager()
        self._frg_mgr = FragmentManager()

        self.on_timeout = Event()
        self.on_discover = Event()
        self.on_message = Event()
        self.on_json = Event()

        self.started = False
    def __init__(self, console):
        """
        Title Manager (ServiceChannel.SystemInputTVRemote)

        Args:
             console: Console object
        """
        super(StumpManager, self).__init__(console,
                                           ServiceChannel.SystemInputTVRemote)

        self._msg_id_idx = 0
        self._msg_id_prefix = random.randint(0, 0x7FFFFFFF)

        self._appchannel_lineups = None
        self._appchannel_data = None
        self._appchannel_program_data = None
        self._stump_config = None
        self._stump_headend_info = None
        self._stump_livetv_info = None
        self._stump_program_info = None
        self._stump_recent_channels = None
        self._stump_tuner_lineups = None

        self.on_response = Event()
        self.on_notification = Event()
        self.on_error = Event()
Example #4
0
    def __init__(self, console):
        """
        Media Manager (ServiceChannel.SystemMedia)

        Args: Console object, internally passed by `Console.add_manager

        """
        super(MediaManager, self).__init__(console, ServiceChannel.SystemMedia)
        self._media_state = None
        self.on_media_state = Event()
        self.on_media_command_result = Event()
        self.on_media_controller_removed = Event()
    def __init__(self, console):
        """
        Title Manager (ServiceChannel.Title)

        Args:
             console (:class:`.Console`): Console object, internally passed
                                          by `Console.add_manager`
        """
        super(TitleManager, self).__init__(console, ServiceChannel.Title)
        self._active_surface = None
        self._connection_info = None

        self.on_surface_change = Event()
        self.on_connection_info = Event()
class LocalConnection(asyncio.Protocol):
    data_received_event = Event()
    connection_made_event = Event()

    def connection_made(self, transport: asyncio.BaseTransport) -> None:
        self.transport = transport
        self.connection_made(transport)

    def data_received(self, data: bytes) -> None:
        self.data_received(data)

    def close_connection(self) -> None:
        print('Close the client socket')
        self.transport.close()
    def __init__(self, nano: NanoProtocol):
        self._nano: NanoProtocol = nano  # Do we want this? Circular reference..

        self.connected = asyncio.Future()
        self.transport: Optional[DatagramTransport] = None

        self.on_message = Event()
    def __init__(self, address, port, nano):
        self.host = (address, port)
        self.connected = gevent.event.Event()
        self._nano = nano  # Do we want this? Circular reference..

        self.on_message = Event()

        super(DatagramServer, self).__init__(('*:0'))
    def __init__(self, address, port, nano):
        self.host = (address, port)
        self._nano = nano  # Do we want this? Circular reference..
        self._q = []
        self._socket = None
        self._recv_thread = None

        self.on_message = Event()
Example #10
0
    def __init__(self, address, port, crypto):
        self.host = (address, port)
        self.crypto = crypto

        self._socket = None
        self._recv_thread = None

        self.on_message = Event()
    def __init__(self, address: str, port: int, nano: NanoProtocol):
        self.host: Tuple[str, int] = (address, port)
        self._nano = nano  # Do we want this? Circular reference..
        self._q = []
        self._reader: Optional[StreamReader] = None
        self._writer: Optional[StreamWriter] = None
        self._recv_task: Optional[asyncio.Task] = None

        self.on_message = Event()
Example #12
0
    def __init__(self, console):
        """
        Text Manager (ServiceChannel.SystemText)

        Args:
             console: Console object, internally passed by `Console.add_manager

        """
        super(TextManager, self).__init__(console, ServiceChannel.SystemText)

        self.session_config = None
        self.current_session_input = None
        self.last_session_ack = None
        self._current_text_version = 0

        self.on_systemtext_configuration = Event()
        self.on_systemtext_input = Event()
        self.on_systemtext_done = Event()
Example #13
0
    def __init__(self,
                 address: str,
                 name: str,
                 uuid: UUID,
                 liveid: str,
                 flags: PrimaryDeviceFlag = PrimaryDeviceFlag.Null,
                 last_error: int = 0,
                 public_key: EllipticCurvePublicKey = None):
        """
        Initialize an instance of Console

        Args:
            address: IP address of console.
            flags: Primary device flags
            name: Name of console.
            uuid: UUID of console.
            liveid: Live ID of console.
            public_key: Console's Public Key.
        """
        self.address = address
        self.name = name
        self.uuid = uuid
        self.liveid = liveid
        self.flags = flags
        self.last_error = last_error
        self._public_key = None
        self._crypto = None

        if public_key:
            # This sets up the crypto context
            self.public_key = public_key

        self._device_status = DeviceStatus.Unavailable
        self._connection_state = ConnectionState.Disconnected
        self._pairing_state = PairedIdentityState.NotPaired
        self._console_status = None
        self._active_surface = None

        self.on_device_status = Event()
        self.on_connection_state = Event()
        self.on_pairing_state = Event()
        self.on_console_status = Event()
        self.on_active_surface = Event()
        self.on_timeout = Event()

        self.managers: Dict[str, Manager] = {}
        self._functions = {}

        self.on_message = Event()
        self.on_json = Event()

        self.power_on = self._power_on  # Dirty hack

        self.protocol: Optional[SmartglassProtocol] = None
    def __init__(self, address, port, crypto):
        self.address = address
        self.port = port
        self.crypto = crypto

        self._reader: Optional[asyncio.StreamReader] = None
        self._writer: Optional[asyncio.StreamWriter] = None

        self._recv_task: Optional[asyncio.Task] = None
        self.on_message = Event()
Example #15
0
    def __init__(self, console):
        super(NanoManager, self).__init__(console,
                                          ServiceChannel.SystemBroadcast)

        self.client = None
        self._protocol = None
        self._connected = False
        self._current_state = GameStreamState.Unknown

        self.on_gamestream_error = Event()

        self._stream_states = {}
        self._stream_enabled = None
        self._stream_error = None
        self._stream_telemetry = None
        self._stream_previewstatus = None
Example #16
0
    def __init__(self,
                 address,
                 name,
                 uuid,
                 liveid,
                 flags=PrimaryDeviceFlag.Null,
                 public_key=None):
        """
        Initialize an instance of Console

        Args:
            address (str): IP address of console.
            flags (:class:`PrimaryDeviceFlag`): Primary device flags
            name (str): Name of console.
            uuid (:obj:`UUID`): UUID of console.
            liveid (str): Live ID of console.
            public_key (:obj:`ec.EllipticCurvePrivateKey`):
                Console's Public Key.
        """
        self.address = address
        self.name = name
        self.uuid = uuid
        self.liveid = liveid
        self.flags = flags
        self._public_key = None
        self._crypto = None

        if public_key:
            # This sets up the crypto context
            self.public_key = public_key

        self._device_status = DeviceStatus.Unavailable
        self._connection_state = ConnectionState.Disconnected
        self._pairing_state = PairedIdentityState.NotPaired
        self._console_status = None
        self._active_surface = None

        self.on_device_status = Event()
        self.on_connection_state = Event()
        self.on_pairing_state = Event()
        self.on_console_status = Event()
        self.on_active_surface = Event()
        self.on_timeout = Event()

        self.managers = {}
        self._functions = {}

        self.power_on = self._power_on  # Dirty hack

        self._init_protocol()