You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

42 lines
1.1 KiB

# -*- coding: utf-8 -*-
"""UPnP printer module."""
import logging
from typing import List, NamedTuple
from async_upnp_client.profile import UpnpProfileDevice
_LOGGER = logging.getLogger(__name__)
PrinterAttributes = NamedTuple(
'PrinterAttributes', [
('printer_state', str),
('printer_state_reasons', str),
('job_id_list', List[int]),
('job_id', int)])
class PrinterDevice(UpnpProfileDevice):
"""Representation of a printer device."""
DEVICE_TYPES = [
'urn:schemas-upnp-org:device:printer:1',
]
_SERVICE_TYPES = {
'BASIC': {
'urn:schemas-upnp-org:service:PrintBasic:1',
},
}
async def async_get_printer_attributes(self) -> PrinterAttributes:
"""Get printer attributes."""
action = self._action('BASIC', 'GetPrinterAttributes')
result = await action.async_call()
return PrinterAttributes(
result['PrinterState'],
result['PrinterStateReasons'],
[int(x) for x in result['JobIdList'].split(',')],
int(result['JobId']))