
    =	fd                    H   d dl Z d dlZd dlZd dlZ	 d dlmZ d dlZd dlZddl	m
Z
mZmZmZmZ ddl d dlmc mZ d dlZ	 d dlmZ dZddl ddl dd
lmZmZ  ej>                  d      Z  ej>                  d      Z!	 d Z"dZ#dZ$dZ%dZ&dZ'dZ(i de)de*de+de,de-de.de/de0de1de2de3de4de5de6d e7d!e8d"e9e:e;e<e=e>d#Z?e@eAeBeCeDeAeBeCeDd$	ZEe(g eFd%ZGe"d&e#d&e$d&e%d'e&d(iZHe"d)e#d)e$de%d)e&d)iZIe"d*e#d*e$d*e%d&e&d+iZJd&d,ZKd- ZLd. ZMd/ ZNeOeOePeBeCeDeAeQeReSeTeUeVeWeXd0ZYi ej                  e[ej                  e[ej                  e^ej                  e[ej                  eaej                  ecej                  ecej                  e[ej                  egej                  e[ej                  e[ej                  e[ej                  e[ej                  e[ej                  enej                  e[ej                  e[ej                  e[ej                  e[ej                  etej                  e^ej                  e[ej                  exiZyd1 Zzd2 Z{da| e{        d3 Z}e~eeeed4Zeeeeeed5Zeeeeeeeed6Zd7 Zd8 Zd9 Zi d e*d:e*d;e.d<ed=ed>e)d?e)d@edAe)dBe2dCe7dDe2dEe)dFe2dGe2dHe;dIei dJedKedLe7dMe7dNe7dOe7dPe7dQe7dRe7dSe7dTe7dUe7dVe7dWe7dXe;dYedZei d[ed\ed]ed^e;d_e;d`e;dae;dbe;dce;ddedee*dfedge;dhe*diedje)dke)i dledme)dne)doe)dpe)dqe)dre.dse-dte-due;dve)dwedxe7dye7dze7d{e;d|e)i d}e)d~e;de)de)de)de)dede7de;de;de)de)de)de)de)de;de)i de)dede7de)de)de)de)de)de)de)de)de)de)de)de)de)de)i de)de)de)de)de)de)de)de)de)de)de)de)de)de)de)de)de)Zd Zi de*dedede)de)dede.dedede)de-de)de)de-de)de)de)i de)de-de+dedede)de7de-de+de)de)de)dede.de+dedei dededededededededededededededededei dededededededededededededededededeeeeee*ee*e7ee7eedZdZdZd'dZ ejL                  dejN                        Zd Zeae^eaecee^e^dZeQeeCeBeDeAeTeRdZeeeeeedZe~eeedZd Zd&dZd Zd&d Zd Zd Zd Zd Zd Zd Zd Zd Zd	 Zd
 ZdZdZdZeae^eaeaee^e^e^enead
ZeCeBeDeAeAeCeBeDe@d	ZeeeeedZe~eedZi de*de2de7de,dedeǓdededeȓde2deɓdeʓde˓de˓de̓de̓d e͓d!eiZϐd" ZАd# Zѐd$ ZҐd% Zy#  d dlmZ Y xY w# e$ r 	 d dlmZ dZn# e$ r d	ZY nw xY wd	ZY w xY w((      N)urlopen   )BytesIOto_bytes_utf8to_bytes_latinto_string_latinto_long)*)ElementTreeT)XMLF)pmlutilscupsexthpmudext               busyidleprntofffrprtcncliostdrywpencoopabnejbnmzphmzdpmzpajmcarspaps)penferropwdnfptsclno)	r   r   r   r   r               )revisionagentsstatus-code         r/         c                     d}g }t         }t        }t        }t        }t        }t
        }	t
        }
t        }d}	 g }t        |      dkD  rN|j                  d      }|D ]8  }t        |      dkD  s|d d dk(  s|dd  }|D cg c]  }t        |d       }}: | D cg c]  }t        |d       }}|d   }t        |cxk  r
t        k  sJ  J t        |d   t        d	      z        |d   z   t        d      z  }t        |d
   t        d	      z        |d
   z   t        d      z  }t        |d   t        d      z        |d   z   t        d      z  }t        |d   d	z        |d   z   dz  }|t        k(  rYt        |d   t        d	      z        |d   z   t        d      z  }	t        |d   t        d	      z        |d   z   t        d      z  }
n4t        |d   t        d	      z        }	t        |d   t        d	      z        }
t        |d	   t        d	      z        |d	   t        d      z  z   t        |d   t        d      z        dz  z   }t        |   }||   dz  }|dk7  r||   dz  ||dz      z   }|t         z   }i t"        |   dz   d}}}|t"        |      }d}t$        |   }t&        j)                  d|z         t+        |      D ]  }t        | |||z    d      }||d<   |dk(  rt,        j/                  t        |t        d      z  t        d      z	        d      |d<   ||dz  k  r
t0        |d<   n	t2        |d<   t        |t        d      z  t        d      z	        |d<   t        |t        d      z  t        d      z	        |d<   t        |t        d      z        |d<   d|d<   n|d	k(  rt        |t        d      z        t        |t        d       z        t        d      z  z   |d<   t        |t        d!      z  t        d"      z	        |d<   t        |d#z  t        d$      z	        |d<   t        |t        d%      z  t        d      z	        |d<   t        |t        d&      z  t        d'      z	        |d<   t        |t        d(      z        |d<   nt&        j5                  d)       t        |      dkD  r	 t        |dz   |dz    d      |d*<   t        ||dz      t        d	      z        |d+<   t        ||dz      t        d      z        |d,<   t        ||dz      t        d      z        |d-<   t        ||dz      t        d      z        |d.<   t&        j)                  d/||fz         |dz  }|j9                  |       i }||z  }||z  } 	 ||||||||	|
|d1
S c c}w c c}w # t6        $ r d|d*<   d|d+<   d|d,<   d|d-<   d|d.<   Y {w xY w# t6        t:        t<        f$ r+}t&        j?                  d0tA        |      z         Y d }~yd }~ww xY w)2N r-   r   ,r   05r3   r   r/   r   r      r,   r.   r4   0   znum_pens = %dindexi   typekindi   	   level-triggeri  health   level   idl        i   @i   ?   i      i   i   r6   r   zPen data size errordvcvirginzhp-inkknownackz	pen %d %szStatus parsing error: %s
r0   r1   top-doorr2   supply-doorduplexer
photo-trayin-tray1in-tray2
media-path)!TOP_DOOR_NOT_PRESENTSTATUS_UNKNOWNSUPPLY_DOOR_NOT_PRESENTDUPLEXER_NOT_PRESENTPHOTO_TRAY_NOT_PRESENTIN_TRAY_NOT_PRESENTMEDIA_PATH_NOT_PRESENTlensplitintSTATUS_REV_00STATUS_REV_04boolr	   STATUS_REV_02
STATUS_POSSTATUS_PRINTER_BASENUM_PEN_POSPEN_DATA_SIZElogdebugrangeREVISION_2_TYPE_MAPgetAGENT_KIND_HEADAGENT_KIND_SUPPLYerror
IndexErrorappend
ValueError	TypeErrorwarnstr)szr0   penstop_doorstatsupply_doorrQ   
photo_trayin_tray1in_tray2
media_pathZ_SIZEz1z_fieldsz_fieldz1sxs1
status_posstatus_bytepencdnum_pensr>   pen_data_sizepinfoes                                 /usr/share/hplip/base/status.pyparseSStatusr      sG   HD#HD)K#H'J"H"H'JF_6q6A:wws|H# 3w<!#t(;!!"+C.12#a*2B2	3 #$$Qc!Rj$$a59M999991,-15D2a573</02a5873<G1,-A6E"Q%#+&A.4
}$BqEGCL01BqE9GCLHHBqEGCL01BqE9GCLHHBqEGCL01HBqEGCL01H"Q%'#,./2a573<3GHTRTUWRX[bcf[gRgMhklLlm
)
na'"j>1,:>0BBK00H-a/Qk(+,%h/		/H,-x 2	AqQ./4D CL!155c4'&/;QV]^`Va:a6bdefFHqL)"1CK"3CK'*TGFO-CPQ
,R'SO$ #TGFO%;
$J KH"4'&/#9:G D	!#"4'**=#=>4wWaObHbCcfmnofpBpqF!4'**=#='"+"MNFWR[ @AD	'*D773C,CPR+S'TO$ #TGFO%;$K LH"4'$-#78G 		/02w{#!$S1QqS\2!6CJ$(AaC73<)?$@CM$(AaC73<)?$@CM#'1Q3'#,(>#?CL!%b1g&<!=CJ IIkUCL01QJEKKCAKAe2	n %!%!(%'%%'
 
q 3$H " #!"CJ$%CM$%CM#$CL!"CJ# 
I. 6+c!f4556sg   4W -W 6	W ?VW V!-P	W 7BV&?W 
W &"WW 
WW X"!XXc                     g i d}}}| j                  d      }t        j                  |       |d   }t        |      dk(  rnt        |      dk(  r	|D ]  }|dk(  r|dz  }|dk(  r|dv rt        t
        c|d<   |d<   |dz  }1|d	k(  rYt        |d
<   t        |d<   |dv r
t        |d<   n3|dv r
t        |d<   n%|dv r
t        |d<   n|dv rt        t        c|d<   |d
<   |dz  }|dk(  s|dk(  rd|d<   nd|d<   d|d<   d}	 	 ||   }|d d	 dk(  r|d   t        k(  rt        |d	d        |d<   n&|d d	 dk(  r|d   t        k(  rt        |d	d        |d<   	 |dz  }X n	 	 |d	    |d	   dk(  rd}	nd	}		 	 t        j!                  |d   j#                         t$              }
t&        ||	|
t(        t*        t,        t.        t.        t0        d
S # t        $ r Y nw xY w|j                  |       i }d}# t        $ r d}	Y w xY w# t        $ r	 t$        }
Y qw xY w)Nr   r:   r7   r/   r   )aAr?   r@   r   rC   )bB)r   C)r   D)uUr   0staterE   KPCPDNrN   )r^   rh   ri   r]   AGENT_TYPE_NONEAGENT_KIND_NONEAGENT_HEALTH_OKAGENT_KIND_HEAD_AND_SUPPLYAGENT_TYPE_BLACKAGENT_TYPE_CMYAGENT_TYPE_KCMAGENT_HEALTH_MISINSTALLEDr_   rp   rq   vstatus_xlaterl   lowerSTATUS_PRINTER_IDLESTATUS_REV_VrX   rY   rZ   r[   MEDIA_PATH_CUT_SHEET)rv   rx   r   r   fieldsf0r   iftop_lidrz   s              r   parseVStatusr     st   r1q#DWWS\FIIf	B
2w"} 		RA %	AAvQa
?/>,CKVQa /H8F*_4Dc&k*_Nc&k*_Nc&k*_?Tm&@c&k3x=Qa8AS\%&c'l G6"1I Ra5D=S[<L-L+.qu:CLrUd]s6{n/L+.qu:CLFA /%	N 	q	 !9GG#  !24GH ( # 302//0
 
= &  C     #"#s6   GG* 0+G; 	GG*G87G8;HHc                 x    d| v rt        | d         S d| v rt        | d   | j                  dd            S t        S )NVSTATUSSZr9   )r   r   rl   STATUS_BLOCK_UNKNOWN)DeviceIDs    r   parseStatusr   g  sC    HXi01	1	HSM8<<R+@AA##    c                    t         }| t        j                  t        j                  fv r|t        j                  z  r|t        j
                  z  st        }|S |t        j
                  z  rt        }|S |t        j                  z  rt        }|S |t        j                  z  rt        }|S |t        j                  z  rt        }|S |t        j                  z  rt        }|S |t        j                   k(  rt"        }|S |t        j$                  z  rt&        }|S |t        j(                  k(  rt         }|S |t        j*                  k(  rt,        }|S |t        j.                  k(  rt0        }|S N)r   r   DEVICE_STATUS_WARNINGDEVICE_STATUS_DOWN#DETECTED_ERROR_STATE_LOW_PAPER_MASK"DETECTED_ERROR_STATE_NO_PAPER_MASKSTATUS_PRINTER_LOW_PAPERSTATUS_PRINTER_OUT_OF_PAPER#DETECTED_ERROR_STATE_DOOR_OPEN_MASKSTATUS_PRINTER_DOOR_OPEN DETECTED_ERROR_STATE_JAMMED_MASKSTATUS_PRINTER_MEDIA_JAM"DETECTED_ERROR_STATE_OUT_CART_MASKSTATUS_PRINTER_NO_TONER"DETECTED_ERROR_STATE_LOW_CART_MASKSTATUS_PRINTER_LOW_TONER)DETECTED_ERROR_STATE_SERVICE_REQUEST_MASKSTATUS_PRINTER_SERVICE_REQUEST!DETECTED_ERROR_STATE_OFFLINE_MASKSTATUS_PRINTER_OFFLINEPRINTER_STATUS_IDLEPRINTER_STATUS_PRINTINGSTATUS_PRINTER_PRINTINGPRINTER_STATUS_WARMUPSTATUS_PRINTER_WARMING_UP)device_statusprinter_statusdetected_error_staterz   s       r   #LaserJetDeviceStatusToPrinterStatusr   o  s`   D22C4J4JKK#"I"II%(N(NN+DD KA "C$J$JJ.D> K; "C$K$KK+D8 K5 "C$H$HH+D2 K/ "C$J$JJ*D, K) "C$J$JJ+D& K# "S%R%RR1D  K "C$I$II)D K S444&D K s:::*D
 K s888,DKr   )otherunknownbluecyanmagentayellowblack
photoblack
matteblack	lightgraygraydarkgray	lightcyanlightmagentaredc                    	 | j                          | j                  t        j                  t        j                        \  }}| j                  t        j
                  t        j                        \  }}| j                  t        j                  t        j                        \  }}| j                  t        j                        \  }}	 t        j                  dt        |d               d   }g d}	}	 t$        j'                  dd|	dfz         t$        j'                  d|	z         t        j(                  |	z  t        j*                  f}
| j                  |
t        j                        \  }}|t,        k7  s|t$        j'                  d       nt.        D ]  }||k(  s	t.        |   } n t0        }t$        j'                  d	|	z         t        j2                  |	z  t        j4                  f}
| j                  |
      \  }}|t,        k7  rt$        j'                  d
       nrt$        j'                  d|	|fz         t$        j'                  d|	z         t        j6                  |	z  t        j8                  f}
| j                  |
      \  }}|dk(  rd}|t,        k7  rt$        j'                  d
       nt$        j'                  d|	|fz         t$        j'                  d|	z         t        j:                  |	z  t        j<                  f}
| j                  |
      \  }}|t,        k7  rt$        j'                  d
       t>        }nt$        j'                  d|z         t$        j'                  d|	z         t        j@                  |z  t        jB                  f}
| j                  |
      \  }}|t,        k7  rt$        j'                  d       t>        }nx|tD        tF        tH        tJ        fv rtL        }nXt>        }|t,        k7  rt$        j'                  d|	z         t        jN                  |	z  t        jP                  f}
| j                  |
      \  }}|t,        k7  rt$        j'                  d
       n(|t$        j'                  d|z         |jS                         jU                         }tV        D ]!  }|jY                  |      dk\  stV        |   } ny t>        }nq|Pt$        j'                  d|z         |jS                         jU                         }tV        j[                  |t>              }|t\        k(  r|t^        k(  rt>        }ntL        }t$        j'                  d|	z         t        j`                  |	z  t        jb                  f}
| j                  |
      \  }}|t,        k7  r"t$        j'                  d
       td        }tf        }nxtd        }|tf        }ni|t        jh                  k(  rtf        }nO|t        jj                  k(  rtl        }n5|t        jn                  t        jp                  fv rtf        }tr        }ntf        }tu        tw        |      |z  dz        }t$        j'                  d|	|||||fz         |jy                  |||||d       |	dz  }	|	dkD  rn|xs tz        }t$        j'                  d|z         |xs t        j|                  }t$        j'                  d|z         |xs t        j~                  }t$        j'                  d|z         |xs t        j                  }t$        j'                  d||fz         t        |||      }t$        j'                  d|z         |t        k(  rd}nd}t        ||||dddddd
S # t        $ r( | j                          t        g dt        ddddddd
cY S w xY w# t        t         f$ r t        j"                  }Y w xY w)Nr   r   rN   r   z%s Agent: %d %sz
**********zOID_MARKER_SUPPLIES_TYPE_%d:zEnd of supply information.zOID_MARKER_SUPPLIES_LEVEL_%d:Failedzagent%d-level: %dzOID_MARKER_SUPPLIES_MAX_%d:zagent%d-max: %dz&OID_MARKER_SUPPLIES_COLORANT_INDEX_%d:zColorant index: %dzOID_MARKER_COLORANT_VALUE_%dzFailed. Defaulting to black.z#OID_MARKER_SUPPLIES_DESCRIPTION_%d:zcolorant value: %szOID_MARKER_STATUS_%d:d   z@agent%d: kind=%d, type=%d, health=%d, level=%d, level-trigger=%dr@   r?   rC   rE   rB   r7   zprinter_status=%dzdevice_status=%dzcover_status=%dzdetected_error_state=%d (0x%x)zPrinter status=%d)CopenPMLgetPMLr   OID_PRINTER_STATUSINT_SIZE_BYTEOID_DEVICE_STATUSOID_COVER_STATUSOID_DETECTED_ERROR_STATEErrorclosePMLSTATUS_REV_UNKNOWNrW   structunpackr   rp   rs   r   rh   ri   OID_MARKER_SUPPLIES_TYPE_xOID_MARKER_SUPPLIES_TYPE_x_TYPEERROR_SUCCESS%MARKER_SUPPLES_TYPE_TO_AGENT_KIND_MAPAGENT_KIND_UNKNOWNOID_MARKER_SUPPLIES_LEVEL_x OID_MARKER_SUPPLIES_LEVEL_x_TYPEOID_MARKER_SUPPLIES_MAX_xOID_MARKER_SUPPLIES_MAX_x_TYPE$OID_MARKER_SUPPLIES_COLORANT_INDEX_x)OID_MARKER_SUPPLIES_COLORANT_INDEX_x_TYPEr   OID_MARKER_COLORANT_VALUE_x OID_MARKER_COLORANT_VALUE_x_TYPEAGENT_KIND_MAINT_KITAGENT_KIND_ADF_KITAGENT_KIND_DRUM_KITAGENT_KIND_TRANSFER_KITAGENT_TYPE_UNSPECIFIED!OID_MARKER_SUPPLIES_DESCRIPTION_x&OID_MARKER_SUPPLIES_DESCRIPTION_x_TYPEr   strip COLORANT_INDEX_TO_AGENT_TYPE_MAPfindrl   r   AGENT_KIND_TONER_CARTRIDGEOID_MARKER_STATUS_xOID_MARKER_STATUS_x_TYPE AGENT_LEVEL_TRIGGER_SUFFICIENT_0r   OID_MARKER_STATUS_OKOID_MARKER_STATUS_MISINSTALLEDr    OID_MARKER_STATUS_LOW_TONER_CONT OID_MARKER_STATUS_LOW_TONER_STOPAGENT_LEVEL_TRIGGER_MAY_BE_LOWr_   floatrq   r   DEVICE_STATUS_RUNNINGCOVER_STATUS_CLOSEDDETECTED_ERROR_STATE_NO_ERRORr   r   )devparsedIDresult_coder   r   cover_statusvaluer   r1   r   oidr   
agent_kindagent_level	agent_maxcolorant_index
agent_typecolorant_valuer   agent_statusagent_triggeragent_healthrz   r{   s                           r   StatusType3r+    s    '*jj#2H2H#J[J[&]#^%(ZZ1F1FHYHY%["]$'JJ0D0DcFWFW$Y!\ ZZ)E)EGU E%}}c>%(3KLQO AAF
		$6'::;		0145..2C4W4WY ZZc.?.?AU-'5=II236 	,AzB1E
	,
 ,J 			1A56//!3S5Y5Y[#&::s#4 [-'IIh		&1k);;=		/!34--133U3UW!$S!2Y>q9-'IIh		$I'779		:Q>?881<c>k>km&)jj#&7#^-'IIh)J II*^;<II4q8933nDcFjFjlC*-**c*;'Km+		89-
"68J"57N"P P "8J "2J"m3		"G!"KL"DDqH#JtJtu69jj#6G3^&-7IIh/!)5II&:^&KL-;-A-A-C-I-I-KN%E >#1#6#6q#9Q#>1QRS1TJ$)>
 .>
 *5II&:^&KL-;-A-A-C-I-I-KN)I)M)M~_o)qJ%8)-GG-=
-C
		)A-.''!+S-I-IK$'JJ$5!\-'IIh<M*L<M#.!9!99.!C!CC83#G#G#&#G#G"J J  / >  /%,Y6<= 			T
Jk=QR 	S 	
 *".!,)6	9 	: 	
Qr6_ d $:':NII!N23!>S%>%>MII =01:3#:#:LII,.//T33T3TII.2FH\1]]^.}nNbcDII!D()''.#)!(
 
u  
||~1!#!"!/!"!"!"!"!"!"
 
" 	" E"DDEs$   C]; %^/ ;.^,+^,/__c                  $   t        d      } i }t        dd      D cg c]  }t        |       c}D ]  }|| v r|||<   d||<    |j                  ddddddddddd	dd
       t	        d      t	        d      }}t        |j                               }|j                          |D ]O  }t	        d      j                  |t	        |      g      }t	        d      j                  |t	        ||         g      }Q t        j                  ||      a
y c c}w )Nz_0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~r          «   »   £r
   ?)                   =r9   )listrj   chrupdater   keyssortjoinr   
TranslatorPANEL_TRANSLATOR_FUNC)
printablesmapr   frmtomap_keyss         r   setup_panel_translatorrL    s&   &'J C#Acl+c!f+ 
?CFCF	 JJ###########  R ."4CCHHJHMMO CR %%sN1,=&>?B$$b.Q*@%ABC
 ",,S"59 ,s   Dc                    t        d      d}}| j                  t        t        fvr*	 | j	                          t
        j                  t
        j                  ft
        j                  t
        j                  fg}|D ]  \  }}| j                  |      \  }}|t
        j                  k  s.t        |j                  d            j                         }t        d      |v r |j                  t        d      d      \  }} nT| j                  |      \  }}|t
        j                  k  st        |j                  d            j                         } n 	 t#        |xs |      |xs t        d      |xs t        d      fS # t         $ r Y 7w xY w)Nr9   utf-8
r   )r   io_modeIO_MODE_RAWIO_MODE_UNIr   r   OID_HP_LINE1OID_HP_LINE2OID_SPM_LINE1OID_SPM_LINE2r   ERROR_MAX_OKrF  encoderstripr^   r   rb   )r  line1line2oidsoid1oid2results          r   
PanelCheckr`    sZ    $r5E
{{;44	KKM
 %%s'7'78''):):;=D # 
d #

4 0C,,,1%,,w2GHOOQE$V,5',{{=3H!'Lu$'JJt$4MFE 0 00 5ell76K L S S U  !;-*;U=WmTVFWWW/  		s   E= =	F	F	)r   r   r   r   r   )r   r   r   r   r   r,   ))r   P   )O   <   );   (   )'      )   r7   )rI   
   )rA   r,   )r   c           	         d}	 	 | j                          |t        k(  r| j                  t        j                        \  }}|t        j
                  kD  r<|d   j                  t        t        t        dt        d       	 | j                          y |d   j                  t        t        t        |t        d       	 | j                          y | j                  t        j                        \  }}| j                  t        j                        \  }}|||t        j                  z  r|dk\  rt         D ]!  }|d   |cxk\  r	|d   kD  sn t         |   } n |t        j"                  z  rt$        }	n |t        j&                  z  rt(        }	nt        }	|d   j                  t        t        |	|d       	 | j                          y |d   j                  t        t        t        dt        d       	 | j                          y d}	 | j                          |t,        k(  rx|rv	 	 | j3                  d      }
| j3                  d	      }| j3                  d
      }|d   j                  t        t        t4        |
   |t6        |   d       | j9                          y |d   j                  t        t        t        dt        d       y # t*        $ r# |t,        k(  rt.        j1                  d       d}Y w xY w# | j                          w xY w# t*        $ r- |d   j                  t        t        t        dt        d       Y w xY w# | j9                          w xY w)NFr1   r   r   r   Tz3PML channel open failed. Trying dynamic counters...         )r   STATUS_BATTERY_CHECK_PMLr   r   OID_BATTERY_LEVEL_2rW  rq   AGENT_KIND_INT_BATTERYr	  AGENT_HEALTH_UNKNOWNr  r   r   OID_BATTERY_LEVELOID_POWER_MODEPOWER_MODE_BATTERY_LEVEL_KNOWNBATTERY_PML_TRIGGER_MAPPOWER_MODE_CHARGINGAGENT_HEALTH_CHARGINGPOWER_MODE_DISCHARGINGAGENT_HEALTH_DISCHARGINGr   STATUS_BATTERY_CHECK_STDrh   ri   getDynamicCounterBATTERY_HEALTH_MAPBATTERY_TRIGGER_MAP
closePrint)r  status_blockbattery_checktry_dynamic_countersr_  battery_level
power_moder   battery_trigger_levelr*  battery_healths              r   BatteryCheckr    s.    NJ	0KKM  88(+

33J3J(K%C,,, *11#9#9#7#$*J3  v 	q !*11#9#9#2#0*J3  b 	] ),

33H3H(I%&)jj1C1C&D"
 ,*!C$F$FF%*!8 &A t};qt;8OPQ8R 5 %&
 &(?(??+@L'#*D*DD+CL ,;L$X.55'='='3'4.C7    	 %X.55'='=';'(.N7   	 ,0( 	 00	!$!6!6s!;(+(=(=c(B% # 5 5c :X&--551.A,&9:O&P/   NN 	X%%--+>' 	U  	, 88		OP'+$	,V 	&  X&--553 &F/  NNsn   J> A(K- *K- A:K- A+K- *K- ?K- A#L >)K*'K- )K**K- -K?3L85L; 7L88L; ;Mc                    | d   D cg c]  }|d   	 }}t        j                  |d       rt        S t        |v r>t        |v rt
        S t        |v rt        S t        |v rt        S t        |v rt        S t        S t        |v rt        |v rt        S t        |v rt        |v rt        S t        |v rt        |v rt        S t        S c c}w )Nr1   r?   c                     | t         k(  S r   )r   )r   s    r   <lambda>z%getPenConfiguration.<locals>.<lambda>{  s    !_"4 r   )r   allAGENT_CONFIG_NONEr   r   AGENT_CONFIG_BLACK_ONLYr   AGENT_CONFIG_COLOR_ONLYr   AGENT_CONFIG_PHOTO_ONLYAGENT_TYPE_GGKAGENT_CONFIG_GREY_ONLYAGENT_CONFIG_INVALIDAGENT_CONFIG_COLOR_AND_BLACKAGENT_CONFIG_COLOR_AND_PHOTOAGENT_CONFIG_COLOR_AND_GREY)rv   r   rx   s      r   getPenConfigurationr  x  s     {+!AfI+D+yy45  $t#**t#**t#**t#)) (' t#$(>//t#$(>//t#$(>.. ('C ,s   Cc                    d\  }}| j                   t        t        fvr	 | j                          | j	                  t
        j                        \  }}|t        k(  r&|r$|t
        j                  t
        j                  fvrd}| j	                  t
        j                        \  }}|t        k(  r&|r$|t
        j                  t
        j                  fvrd}| j                          ||fS ||fS # | j                          w xY w)N)FFT)rP  rR  rQ  r   r   r   OID_FAXJOB_TX_STATUSr   FAXJOB_TX_STATUS_IDLEFAXJOB_TX_STATUS_DONEOID_FAXJOB_RX_STATUSFAXJOB_RX_STATUS_IDLEFAXJOB_RX_STATUS_DONEr   )r  	tx_active	rx_activer  tx_staterx_states         r   getFaxStatusr    s    'Iy
{{;44	KKM$'JJs/G/G$H!Km+C$=$=s?X?X#YY $I$'JJs/G/G$H!Km+C$=$=s?X?X#YY $I LLNi9i LLNs   B2C) )C;i(i͵iʹi˹iϵiii"iiiiiii#iiiеiiieiiiii`iaibiiiiii¹iùi͹iiiiεii@iici:iiiزii	ii)i$i%i+i%iiii"i&i*i!i i"i.i&ii8iiiiiiiii<i>i?iAi=i;iBi:i8i9iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiic                    t               }t               }	 | j                  d|       | j                  d|       |j	                         }|j	                         }i }i }|rX	 t        j                  dt        |             t        j                         j                  |      }t        j                  |       |rX	 t        j                  dt        |             t        j                         j                  |      }t        j                  |       |j                  dd	      }|s|j                  dd	      }|j                  d
d	      }|j                  dd	      }g }|j                  t         t"        d	|d	d       | j$                  t&        k(  r|j                  dd	      }	|j                  t         t(        d	|	d	d       |j                  dd	      }
|j                  t         t*        d	|
d	d       |j                  dd	      }|j                  t         t,        d	|d	d       t.        |d	d	dd	dddt0        j                  |t2              d
S #  t        j                  d       Y ,xY w# t        j                  $ r t        j                  d       i }Y w xY w# t        j                  $ r t        j                  d       i }Y w xY w)Nz!/hp/device/info_device_status.xmlz/hp/device/info_ssp.xmlz'Failed to get Device status informationinfo_device_statuszDevice Status XML parse errorinfo_sppzSSP XML parse errorz6devicestatuspage-devicestatus-statuslist-status-code-0r   z<devicestatuspage-suppliesstatus-blacksupply-percentremainingz)suppliesstatuspage-blacksupply-lowreachedr   z;devicestatuspage-suppliesstatus-cyansupply-percentremainingz>devicestatuspage-suppliesstatus-magentasupply-percentremainingz=devicestatuspage-suppliesstatus-yellowsupply-percentremainingr   
r0   r1   rO   rP   rQ   rR   rS   rT   rU   r2   )r   	getEWSUrlrh   rt   getvaluedebug_blockr   r   XMLToDictParserparseXMLri   expat
ExpatErrorro   rl   rq   r  r   	tech_typeTECH_TYPE_COLOR_LASERAGENT_TYPE_CYANAGENT_TYPE_MAGENTAAGENT_TYPE_YELLOWr   TYPE6_STATUS_CODE_MAPr   )r  r  info_sspr   sspstatus_codeblack_supply_levelblack_supply_lowr1   cyan_supply_levelmagenta_supply_levelyellow_supply_levels               r   StatusType6r  1  s    yH9;MN/:
 ,446  "HM
C	OO0/BT2UV!113<<=OPMIIm$
 	OOJ(AB'')228<CIIcN
  ##$\^_`KggVXYZ&**+iklmwwJANF
MM8. !1'(	  }}--)--.kmno"<"1$%#4+,	 	  -001qstu"<"4$%#7+,	 	 ,//0oqrs"<"3$%#6+,	 	 /#266{DWX
 
K:;  	II56M	  	II+,C	s1   $I !AI) ;AJ I&)*JJ*KKi'  i'  i'  i'  i'  i'  i'  i'  i'  i'  i'  i'  i '  i!'  i"'  i#'  i$'  i%'  i&'  i''  i('  i)'  i*'  i+'  i,'  i-'  i.'  i/'  i0'  i1'  i2'  i3'  i4'  i'  i'  i'  i'  i'  i'  i'  i'  i'  i'  i'  i'  i'  i'  i'  i'  i'  i'  i'  i<(  i=(  i>(  i?(  i@(  iA(  iB(  iC(  iD(  iE(  iF(  iG(  iH(  iI(  iJ(  iK(  )iL(  iM(  iN(  i(  i(  i(  i(  iu  U  iV  if  i  c                 H   | t         k  rt        S |t        |       }t        |      dk  rt        S t        j                  | d       }|>t        }d| cxk  rdk  rQn nNt        |d         }t        |dd        }t        j                  d|z         t        j                  d|z         nd| cxk  rd	k  rQn nNt        |d         }t        |dd        }t        j                  d
|z         t        j                  d|z         nd| cxk  rdk  r?n n<t        |dd       }t        |d         }t        j                  d|z         t        }n6d| cxk  rdk  rn nt        }n d| cxk  rdk  r"n nt        j                  d| z         t        }nd| cxk  rdk  r
n nt        }nd| cxk  rdk  r
n nt        }nd| cxk  rdk  rVn nSt        |d         }t        |dd        }t        j                  d|z         t        j                  d|z         t        }nhd| cxk  rdk  r
n nt        }nSd| cxk  rdk  r
n nt        }n>d | cxk  rd!k  r
n nt        }n)d"| cxk  rd#k  r
n nt        }nd$| cxk  rd%k  r	n nt        }t        j                  d&| |fz         |S )'Nr,   i*  i.  r   r   z%Background paper loading for tray #%dzMedia code = %di.  i2  z)Background paper tray status for tray #%dStatus code = %di:  i>  r   zOutput bin full for bin #%diN  i`m  i/u  iy  zAuto continuation condition #%di  i  i?  i(  i'  i  z%Foreground paper loading for tray #%di  i  i  i  i߫  iȯ  iO  i8  i  i  z*Mapped PJL error code %d to status code %d)MIN_PJL_ERROR_CODESTATUS_PRINTER_BUSYru   r]   PJL_STATUS_MAPrl   r_   rh   ri   STATUS_PRINTER_OUTPUT_BIN_FULLr   r   r   STATUS_PRINTER_HARD_ERROR)
error_codestr_coder  traymediastatusbins          r   MapPJLErrorCoder    s\   &&""z?
8}q"" $$Z6K):%% x{#D%EII=DEII'%/0Z'%' x{#D!"&FIIADHIII(612Z'%' hqm$C!%FII3c9:8KZ'%'8KZ'%'II7*DE-KZ'%'8KZ'%'8KZ'%' x{#D%EII=DEII'%/05KZ'%'2KZ'%'8KZ'%'2KZ'%'3KZ'%'3KII:j+=VVWr   z^CODE\s*=\s*(\d.*)$c                 $   	 | j                          	 	 | j                  t        d             | j                  ddd      }| j	                          t
        j                  dt        |             d}|j                         D ]K  }|j                         }t        j                  |j                  d            }|:|j                  d	      } n t
        j                  d
|z         	 t        |      }t
        j                  d|z         t%        ||      }	 | j+                          g }|t2        t4        fv rt6        }	t8        }
d}n&|t:        k(  rt<        }	t8        }
d}nt6        }	t>        }
d}t
        j                  d|	||
fz         |jA                  tB        tD        |	||
d       | jF                  tH        k(  rd}t>        }
|tJ        k(  rd}t8        }
t
        j                  d|	||
fz         |jA                  tB        tL        t6        ||
d       d}t>        }
|tN        k(  rd}t8        }
t
        j                  d|	||
fz         |jA                  tB        tP        t6        ||
d       d}t>        }
|tR        k(  rd}t8        }
t
        j                  d|	||
fz         |jA                  tB        tT        t6        ||
d       |dk(  rd}nd	}t
        j                  d|z         tV        |||ddd	d	d	|d
S # t         $ r
 t"        }Y w xY w# t&        $ r
 t(        }Y w xY w# t&        $ r Y w xY w# 	 | j+                          w # t&        $ r Y w w xY wxY w# t&        $ r0}t
        j-                  |j.                         t0        }Y d }~`d }~ww xY w)Nz%%-12345X@PJL INFO STATUS 
%-12345Xi   r,   T)timeoutallow_short_readzPJL return:10001rN  r   z	Code = %szError code = %dr   r   z&Agent: health=%d, level=%d, trigger=%dr   r  r  r  ),	openPrint
writePrintr   	readPrintcloserh   r  r   
splitlinesr  pjl_code_patmatchdecodegroupri   r_   rr   DEFAULT_PJL_ERROR_CODEr  r   r  r  rt   msgr  r   STATUS_PRINTER_LOW_BLACK_TONERr   r  r   r   r  rq   r  r   r  r  STATUS_PRINTER_LOW_CYAN_TONERr   STATUS_PRINTER_LOW_MAGENTA_TONERr  STATUS_PRINTER_LOW_YELLOW_TONERr  r   )r  
pjl_returnr  liner  r  r  r   r1   rC   level_triggerrE   ry   s                r   StatusType8r  C  su   )
"	8}-\]^ ]]4T]R
		z/JK"&113 D::<D(..t{{7/CDE(#(;;q> 		+018!$XJ 		+j89-j(C  F /1OPP 6	/	/*6 !8II6&%9WWX
MM8. &$'4	  }}--877E:M		:fe]=[[\"<"1$3#(+8	 	 8::E:M		:fe]=[[\"<"4$3#(+8	 	 899E:M		:fe]=[[\"<"3$3#(+8	 	 eII ;.//#%%(
 
} " 8!7J8  878
    K  *)*s   M B(L =,L *K5 5$L L! 5LL LL LL1 LL1 !	L.-L.1M3MM	MMMM	N%N

N)inkrechargeableTonerinkTankinkCartridge	printheadtonertonerCartridge)pKCMYMr   YKGmK)oklowoutemptymissingr   )r  misinstalledr  r   c                     | dk(  r| S | dd dk7  rhd}t        d      }|rW| j                  t        d            }t        | d|dz    d      }|| |d	z   |d	z   |z    z   }| |d	z   |z   d	z   t        |        } |rW|} | S )
Nz404 Not Found
r   r      <rj  r9   z
r3   r   )r   r  r_   r]   )datasizetempr>   s       r   ExtractXMLDatar    s    ""AayDR IImF34EtAeAg+D$uQwuQwt|44DaQs4y1D	 
 Kr   c                 N   t               }|r | |||      }|S  | ||      }|r|j                  t        d            dk7  rW|j                  t        d      d      d   }|j	                  t        d            sn|j                  t        d            dk7  rW|rt        |      }|S )Nz

rj  r   HTTP)r   r  r   r^   
startswithr  )funcurlfooterdata_fpr  s        r   StatusType10FetchUrlr    s    iGC&) K C!))M*56"<zz-
";Q?B}V'<= ))M*56"<
 %d+Kr   c                 <   t         g t        t        t        t        t        t        t
        t        d
}t        st        st        j                  d       |S t        |       }i }t        |       }|j                  |       i }t        |       }|j                  |       |S )Nr  z=cannot get status for printer. please load ElementTree module)r   rV   rY   rZ   r[   r\   r   etree_loadedelementtree_loadedrh   ro   StatusType10AgentsStatusType10MediarA  StatusType10Statusr   r  temp_status_blocks      r   StatusType10r    s    %7%'%9%9%9%;%8%8%;%8
L  2		QR%d+L)$/)**40)*r   c                 ,    t               } | |d      }|S )N/cdm/supply/v1/suppliesPublic)r   )r   r  r  r  s       r   StatusTypeCDMFetchUrl_USBr  +  s    9D34DKr   c                 d    t        | t        j                               }|j                         }|S )Ncontextr   ssl_create_unverified_contextread)r  responser  s      r   StatusTypeCDMFetchUrl_Netr  0  s'    sC$B$B$DEH==?DKr   c                      i } t         | d<   | S )Nr2   )r   )r  s    r   StatusTypeCDMStatusr  5  s    L"5Lr   c                     t         g t        t        t        t        t        t        t
        t        d
}t        |       }i }t               }|j                  |       |S Nr  )
r   rV   rY   rZ   r[   r\   r   StatusTypeCDMAgentsr  rA  r  s      r   StatusTypeCDM_USBr  ;  sW    %7%'%9%9%9%;%8%8%;%8
L 't,L+-)*r   c                     t         g t        t        t        t        t        t        t
        t        d
}t        |       }i }t               }|j                  |       |S r  )
r   rV   rY   rZ   r[   r\   r   StatusTypeCDMAgents_Netr  rA  )r  r  r  s      r   StatusTypeCDM_Netr"  P  sW    %7%'%9%9%9%;%8%8%;%8
L +3/L+-)*r   c           	         i }t        |       }t        j                  |      }t        j                  t        j
                  |            }g }|d   D ]  }t        }d}d}|d   }|d   }	|dk(  s|dk(  s|dk(  s|d	k(  s
|d
k(  s|dk(  r"|d   }
|	dk7  r,	 |d   }|dk(  rd}	n|dk  rd}	d}n|dk(  s|dk(  rbd}
|	dk(  rd}	 |d   }t        j                  |t              t        j                  |
t              t        j                  |	t              t        |      t        j                  |	t              |d}|j!                  |        ||d<   |S #  d}Y xY w#  	 |d   }n#  Y nxY wY xY w)NsuppliesListr   r9   
supplyTypesupplyStater  r  r  r  r  r  supplyColorCoder  percentLifeDisplayr   ri  r  Unknown	printHead	imageDrumr  r   productNumberselectabilityNumberr@   r?   rC   rE   rB   z	agent-skur1   )r  jsonloadsastliteral_evaldumpsr   element_type10_xlaterl   r   pen_type10_xlater   pen_health10_xlater_   pen_level10_xlater  rq   )r  r  r  r1   eachrC   	ink_level	agent_skur&  r   ink_typeentrys               r   r!  r!  d  s   L$S)D::dDDJJt,-DF^$ , 		,'
]#*">*PWBW[eiy[y  ~H  L_  ~_  cm  qz  cz-.H	!	" $%9 :I A~ )"R % )I ;&**CH}		_-I 033JP#3#7#7/#R%7%;%;E?%S$'	N,=,A,A%Ii,j(1 	eY,Z $L7" !I	 !67	s0   E>EEE*E! E*!E%#E*c           	         i }t               }t        | d      }t        j                  |j	                               }t        j                  t        j                  |            }g }|d   D ]  }t        }d}d}|d   }|d   }	|dk(  s|dk(  s|d	k(  s|d
k(  s
|dk(  s|dk(  r"|d   }
|	dk7  r,	 |d   }|dk(  rd}	n|dk  rd}	d}n|dk(  s|dk(  rbd}
|	dk(  rd}	 |d   }t        j                  |t              t        j                  |
t              t        j                  |	t              t        |      t         j                  |	t"              |d}|j%                  |        ||d<   |S #  d}Y xY w#  	 |d   }n#  Y nxY wY xY w)Nr  r$  r   r9   r%  r&  r  r  r  r  r  r  r'  r  r(  r   ri  r  r)  r  r+  r  r   r,  r-  r.  r1   )r   r  r/  r0  r  r1  r2  r3  r   r4  rl   r   r5  r   r6  r_   r7  r  rq   )r   r  r  r1   r8  rC   r9  r:  r&  r   r;  r<  s               r   r  r    s   L9D$T*IJD::djjl#DDJJt,-DF^$ - 		,'
]#*">*PWBW[eiy[y  ~H  L_  ~_  cm  qz  cz-.H	!	" $%9 :I A~ )"R % )I ;&**CH}		_-I 033JP#3#7#7/#R%7%;%;E?%S$'	N,=,A,A%Ii,j(1 	e[-\ $L9" !I	 !67	s0   +E(E1(E.1F4E:9F:E><Fc                    i }t        | d      }|s|S |j                  t        d      t        d            j                  t        d      t        d            }|j                  t        d      t        d            j                  t        d      t        d            j                  t        d      t        d            }	 t        rt	        j
                  |      }t        st        rt        |      }j                  d      }|D ]  }|j                  d	k(  r
t        |d
<   |j                  dk(  r
t        |d
<   6|j                  dk(  r
t        |d
<   O|j                  dk(  r
t        |d
<   h|j                  dk(  r
t         |d
<   |j                  dk(  r
t"        |d
<   |j                  dk(  r
t$        |d
<   |j                  dk(  r
t&        |d
<   |j                  dk(  r
t(        |d
<   |j                  dk(  s|j                  dk(  rt*        |d
<   |j                  dk(  rt,        |d
<   (|j                  dk(  rt.        |d
<   B|j                  dk(  rt0        |d
<   \|j                  dk(  rt2        |d
<   v|j                  dk(  rt4        |d
<   |j                  dk(  rt6        |d
<   |j                  dk(  rt8        |d
<   |j                  dk(  rt:        |d
<   |j                  dk(  rt<        |d
<   |j                  dk(  rt>        |d
<   |j                  dk(  rt@        |d
<   ,|j                  d k(  rtB        |d
<   F|j                  d!k(  rtD        |d
<   `|j                  d"k(  rtF        |d
<   z|j                  d#k(  rtH        |d
<   |j                  d$k(  rtJ        |d
<   |j                  d%k(  rtL        |d
<   |j                  d&k(  rtN        |d
<   |j                  d'k(  rtP        |d
<   |j                  d(k(  rtR        |d
<   |j                  d)k(  rtT        |d
<   0|j                  d*k(  rtV        |d
<   J|j                  d+k(  rtX        |d
<   d|j                  d,k(  rtZ        |d
<   ~|j                  d-k(  rt\        |d
<   |j                  d.k(  rt^        |d
<   |j                  d/k(  rt`        |d
<   |j                  d0k(  rtb        |d
<   |j                  d1k(  rtd        |d
<    |j                  d2k(  rtf        |d
<   |j                  d3k(  rth        |d
<   4|j                  d4k(  rtj        |d
<   N|j                  d5k(  rtj        |d
<   h|j                  d6k(  rtl        |d
<   |j                  d7k(  rtn        |d
<   |j                  d8k(  rtp        |d
<   tr        |d
<    |S # t        j                  t        f$ r g }Y w xY w9Nz/DevMgmt/ProductStatusDyn.xmlzpsdyn:r9   zlocid:zpscat:dd:zad:zStatus/StatusCategory
processingr2   readycloseDoorOrCovershuttingDown	cancelJobtrayEmptyOrOpenjamInPrinter	hardErroroutputBinFullunexpectedSizeInTraysizeMismatchInTrayinsertOrCloseTray2scannerErrorscanProcessingscannerAdfLoadedscanToDestinationNotSetscanWaitingForPCscannerAdfJamscannerAdfDoorOpenfaxProcessing
faxSendingfaxReceiving
faxDialingfaxConnectingfaxSendErrorfaxErrorStorageFullfaxReceiveErrorfaxBlockinginPowerSaveincorrectCartridgecartridgeMissingmissingPrintHeadscannerADFMispickmediaTooShortToAutoDuplexinsertOrCloseTrayinkTooLowToPrimecartridgeVeryLowwasteMarkerCollectorAlmostFullwasteMarkerCollectorFullwasteMarkerCollectorFullPromptmissingDuplexerprintBarStalloutputBinClosedoutputBinOpenedreseatDuplexerunexpectedTypeInTraymanuallyFeed:r  replacer   r  r   r   r  findallr  r  UnboundLocalErrortextr   r   r   STATUS_PRINTER_TURNING_OFFSTATUS_PRINTER_CANCELINGr   r   r  r  "STATUS_PRINTER_MEDIA_SIZE_MISMATCHSTATUS_PRINTER_TRAY_2_MISSINGEVENT_SCANNER_FAILEVENT_START_SCAN_JOBEVENT_SCAN_ADF_LOADED EVENT_SCAN_TO_DESTINATION_NOTSETEVENT_SCAN_WAITING_FOR_PCEVENT_SCAN_ADF_JAMEVENT_SCAN_ADF_DOOR_OPENEVENT_START_FAX_JOBSTATUS_FAX_TX_ACTIVESTATUS_FAX_RX_ACTIVEEVENT_FAX_DIALINGEVENT_FAX_CONNECTINGEVENT_FAX_SEND_ERROREVENT_FAX_ERROR_STORAGE_FULLEVENT_FAX_RECV_ERROREVENT_FAX_BLOCKINGSTATUS_PRINTER_POWER_SAVESTATUS_PRINTER_CARTRIDGE_WRONG STATUS_PRINTER_CARTRIDGE_MISSING STATUS_PRINTER_PRINTHEAD_MISSINGSTATUS_SCANNER_ADF_MISPICK,STATUS_PRINTER_PAPER_TOO_SHORT_TO_AUTODUPLEX!STATUS_PRINTER_TRAY_2_3_DOOR_OPEN#STATUS_PRINTER_INK_TOO_LOW_TO_PRIMESTATUS_PRINTER_VERY_LOW_ON_INK0STATUS_PRINTER_SERVICE_INK_CONTAINER_ALMOST_FULL)STATUS_PRINTER_SERVICE_INK_CONTAINER_FULL0STATUS_PRINTER_SERVICE_INK_CONTAINER_FULL_PROMPT$STATUS_PRINTER_DUPLEX_MODULE_MISSINGSTATUS_PRINTER_PRINTHEAD_JAM STATUS_PRINTER_CLEAR_OUTPUT_AREASTATUS_PRINTER_RESEAT_DUPLEXER"STATUS_PRINTER_MEDIA_TYPE_MISMATCHSTATUS_MANUALLY_FEEDSTATUS_UNKNOWN_CODEr   r  r  treeelementsr   s         r   StatusType13Statusr    X   L&EFD<<h/r1BCKKMZbLcersuevwD<<h/r1BCKKMZ_L`boprbst||  ~K  LQ  ~R  Ta  bd  Te  fD??4(D 2t9D<< 78  q>66\!*AL'VVw*=L'VV))*BL'VV~%*DL'VV{"*BL'VV((*EL'VV~%*BL'VV{"*CL'VV&*HL'VV--;O1O*LL'VV++*GL'VV~%*<L'VV''*>L'VV))*?L'VV00*JL'VV))*CL'VV&*<L'VV++*BL'VV&*=L'VV|#*>L'VV~%*>L'VV|#*;L'VV&*>L'VV~%*>L'VV,,*FL'VV((*>L'VV}$*<L'VV}$*CL'VV++*HL'VV))*JL'VV))*JL' VV***DL'VV22*VL'VV***KL'VV))*ML'VV))*HL'VV77*ZL'VV11*SL'VV77*ZL'VV((*NL'VV&*FL'VV((*JL'VV((*JL'VV''*HL'VV--*LL'VV~%*>L' +>L'cq>f m /0    AW W*)W*c           	         i }t        | d      }|s|S |j                  t        d      t        d            j                  t        d      t        d            }g }	 t        rt	        j
                  |      }t        st        rt        |      }j                  d      }|D ]  }t        }d}d}		 |j                  d      j                  }
|j                  d      j                  }|j                  d	      j                  }|
d
k(  s|
dk(  s|
dk(  s|
dk(  s
|
dk(  s|
dk(  rd|j                  d      j                  }|dk7  rX	 t        |j                  d      j                        }|dk(  r|dk(  rd}n|dk(  rd}n|dk  rd}d}	n|
dk(  s|
dk(  rd}|dk(  rd}	 |j                  d      j                  }	t        j                  d|
||||	fz         t        j                  |
t               t"        j                  |t$              t&        j                  |t              t        |      t(        j                  |t*              |	d}t        j                  d |z         |j-                  |        	 ||d"<   |S #  d}Y xY w#  	 |j                  d      j                  }	n#  Y nxY wY xY w# t.        $ r t        j                  d!       Y *w xY w# t0        j2                  t4        f$ r g }Y }w xY w)#Nz /DevMgmt/ConsumableConfigDyn.xmlzccdyn:r9   r@  ConsumableInfor   ConsumableTypeEnumz#ConsumableLifeState/ConsumableStatez)ConsumableLifeState/MeasuredQuantityStater  r  r  r  r  r  ConsumableLabelCoder  "ConsumablePercentageLevelRemainingr   r  ri  r  r)  r  r+  r  r   ProductNumberConsumableSelectibilityNumberz>type '%s' state '%s' ink_type '%s' ink_level %d agent_sku = %sr.  %sno value found for attributer1   )r  rq  r   r  r   r   r  rr  r   r  rt  r_   rh   ri   r4  rl   r   r5  r   r6  r7  r  rq   AttributeErrorr  r  rs  )r   r  r  r1   r  r  r   rC   r9  r:  r?   r   quantityStater;  r<  s                  r   r  r  b  s   L&HID<<h/r1BCKKMZ_L`boprbstD F=??4(D 2t9D<< 01 5	:A$FII1:vv2388DEJJ !'R S X X 5=DN$:dgoQUYiQimq  vI  nI  MQ  U^  M^ vv&;<AAH	))'*1662V+W+\+\']9'1n)1K(1 )Q'.u )B',u'09 [(DK,?!H}$'	 ! 7 < <I 		Z^bdiksu~  @I  ^J  J  K#7#;#;D/#R#3#7#7/#R%7%;%;E?%S$'	N,=,A,A%Ii,j(1 		$,'e$g5	:p $LG)'(9$%FF+J$K$P$P	 " :		89:/0 s   AK 0BJ* AI6J*K 	J*I?3B8J*+K 6I<:J*?J'JJ'J" J'%J**KK KK K-,K-c                    i }t        | d      }|s|S |j                  t        d      t        d            j                  t        d      t        d            }	 t        rt	        j
                  |      }t        st        rt        |      }j                  d      }|D ]J  }|j                  d      j                  }|dk(  r
t        |d<   -|d	k(  r
t        |d
<   <|dk(  sBt        |d<   L 	 j                  d      }|D ]  }|j                  dk(  st        |d<    |S # t        j                  t        f$ r g }Y w xY w# t        $ r g }Y Pw xY w)Nz/DevMgmt/MediaHandlingDyn.xmlzmhdyn:r9   r@  	InputTrayInputBinTray1rS   Tray2rT   	PhotoTrayrR   z+Accessories/MediaHandlingDeviceFunctionTypeautoDuplexorrQ   )r  rq  r   r  r   r   r  rr  r  r  rs  r  rt  IN_TRAY_PRESENTPHOTO_TRAY_ENGAGEDDUPLEXER_DOOR_CLOSED)r   r  r  r  r  r   bin_names          r   r	  r	    sY   L&EFD<<h/r1BCKKMZ_L`boprbstD??4(D 2t9D<<,  <66*%**w'6L$ '6L$$);L&<<< MN  <66^#';L$< ' /0   s%   AD  -E  D>=D>EEc                    i }t        | d      }|s|S |j                  t        d      t        d            j                  t        d      t        d            }|j                  t        d      t        d            j                  t        d      t        d            j                  t        d      t        d            }	 t        rt	        j
                  |      }t        st        rt        |      }j                  d      }|D ]  }|j                  d	k(  r
t        |d
<   |j                  dk(  r
t        |d
<   6|j                  dk(  r
t        |d
<   O|j                  dk(  r
t        |d
<   h|j                  dk(  r
t         |d
<   |j                  dk(  r
t"        |d
<   |j                  dk(  r
t$        |d
<   |j                  dk(  r
t&        |d
<   |j                  dk(  r
t(        |d
<   |j                  dk(  s|j                  dk(  rt*        |d
<   |j                  dk(  rt,        |d
<   (|j                  dk(  rt.        |d
<   B|j                  dk(  rt0        |d
<   \|j                  dk(  rt2        |d
<   v|j                  dk(  rt4        |d
<   |j                  dk(  rt6        |d
<   |j                  dk(  rt8        |d
<   |j                  dk(  rt:        |d
<   |j                  dk(  rt<        |d
<   |j                  dk(  rt>        |d
<   |j                  dk(  rt@        |d
<   ,|j                  d k(  rtB        |d
<   F|j                  d!k(  rtD        |d
<   `|j                  d"k(  rtF        |d
<   z|j                  d#k(  rtH        |d
<   |j                  d$k(  rtJ        |d
<   |j                  d%k(  rtL        |d
<   |j                  d&k(  rtN        |d
<   |j                  d'k(  rtP        |d
<   |j                  d(k(  rtR        |d
<   |j                  d)k(  rtT        |d
<   0|j                  d*k(  rtV        |d
<   J|j                  d+k(  rtX        |d
<   d|j                  d,k(  rtZ        |d
<   ~|j                  d-k(  rt\        |d
<   |j                  d.k(  rt^        |d
<   |j                  d/k(  rt`        |d
<   |j                  d0k(  rtb        |d
<   |j                  d1k(  rtd        |d
<    |j                  d2k(  rtf        |d
<   |j                  d3k(  rth        |d
<   4|j                  d4k(  rtj        |d
<   N|j                  d5k(  rtj        |d
<   h|j                  d6k(  rtl        |d
<   |j                  d7k(  rtn        |d
<   |j                  d8k(  rtp        |d
<   tr        |d
<    |S # t        j                  t        f$ r g }Y w xY wr?  rp  r  s         r   r
  r
    r  r  r,   )
r  r  r  r  r  r  r  ztoner-cartridgemaintenanceKitzink-cartridge)	zmagenta inkzcyan inkz
yellow inkz	black inkzBlack CartridgezMagenta CartridgezCyan CartridgezYellow CartridgezMaintenance Kit)r  r  r  r  r  )r  r  r  nonezmedia-neededz	media-jamshutdownz	toner-lowztoner-emptyz
cover-openz	door-openzinput-tray-missingz	media-lowzmedia-emptyzoutput-tray-missingzoutput-area-almost-fullzoutput-area-fullzmarker-supply-lowzmarker-supply-emptypausedr   c                    i }| s|S 	 | d   d   }| d   d   }|t         k(  rt        |d<   |S |t        k(  rt        |d<   |S |j	                  dd      }|j	                  dd      }|j	                  dd      }t
        j                  |t              |d<   	 |S # t        $ r2}t        j                  d	|j                  d   z         i }Y d }~|S d }~ww xY w)
Nzprinter-stater   zprinter-state-reasonsr2   z-errorr9   z-warningz-reportz3Exception occured while updating printer-state [%s])IPP_PRINTER_STATE_IDLEr   IPP_PRINTER_STATE_PROCESSINGr   rq  printer_state_reasons_xlaterl   	Exceptionrh   ri   args)attrsr  printer_stateprinter_state_reasonsr   s        r   StatusTypeIPPStatusr    s   Lo.q1 %&= >q A22*=L'  ::*AL'  %:$A$A(B$O!$9$A$A*b$Q!$9$A$A)R$P!*E*I*IJ_at*uL' 	  		GPQRS	s#   "B B  AB 	C'CCc                    i }g }| s|S d}	 	 |t        | d         k\  rn| d   |   dk(  r|dz   }&| d   |   | d   |   kD  rd}nd	}t        j                         D cg c]  \  }}| d   |   j                  |      s|! }}}t        j                  | d   |   t              t        |      dkD  r|d   ndt        j                  |t              | d   |   t        j                  |t              d
d}t        j                  d|z         |j                  |       |dz   }||d<   |S c c}}w # t        $ r t        j                  d       g cY S w xY w)Nr   zmarker-nameszmarker-typesr  r   zmarker-levelszmarker-low-levelsr  r  r9   r.  r  r  r1   )r]   marker_type_xlateitemsr  marker_kind_xlaterl   r   marker_state_xlater   marker_leveltrigger_xlater  rh   ri   rq   r  ro   )	r  r  r1   loopcntrr   kvmtyper<  s	            r   StatusTypeIPPAgentsr    s   LFH
	3u^455^$X.2BB#a<_%h/%8K2LX2VV #4"9"9";m31Qu^?TU]?^?i?ijk?lQmEm044U>5J85TVef+.u:>uQxq!3!7!7!O %o 6x @(A(E(EeMm(n$&E IIdUl#MM% 
 a<? B $L) n  	II45I	s4   D2 D2 -D2 D,>D,BD2 ,D2 2 EEc                     t         g t        t        t        t        t        t        t
        t        d
}t        j                  | |      }|r4|j                  t        |             |j                  t        |             |S r  )r   rV   rY   rZ   r[   r\   r   r   getStatusAttributesrA  r  r  )
device_uriprinter_namer  status_attrss       r   StatusTypeIPPr    sl    %7%'%9%9%9%;%8%8%;%8
L ..z,GL/=?/>@r   c                 |    d}d}|| z   |z   }t        |t        j                               }|j                         }|S )Nzhttp://r  r  r  )hostheaderpathr  r  r  s         r   StatusTypeCDMFetchUrlr    s?    F*D
4-4
CsC$B$B$DEH==?DKr   )r9   r   )r/  r1  r  sysurllib.requestr   urllibr   iosixextr   r   r   r   r	   gxml.parsers.expatparsersr  re	xml.etreer   r  ImportErrorelementtree.ElementTreer   r  codesr9   r   r   
import_extr   r   r`   STATUS_REV_01rc   STATUS_REV_03ra   r   r   r  r   r   ru  STATUS_PRINTER_REPORT_PRINTINGrv  STATUS_PRINTER_IO_STALLSTATUS_PRINTER_DRY_WAIT_TIMESTATUS_PRINTER_PEN_CHANGEr   STATUS_PRINTER_BANNER_EJECTSTATUS_PRINTER_BANNER_MISMATCHSTATUS_PRINTER_PHOTO_MISMATCHSTATUS_PRINTER_DUPLEX_MISMATCHr   STATUS_PRINTER_CARRIAGE_STALLSTATUS_PRINTER_PAPER_STALLSTATUS_PRINTER_PEN_FAILUREr  STATUS_PRINTER_POWER_DOWNSTATUS_PRINTER_FRONT_PANEL_TEST%STATUS_PRINTER_CLEAN_OUT_TRAY_MISSINGr   r   r   r  r  r  rk   rW   r   rf   rg   rd   r   r   r   r   r	  AGENT_TYPE_BLUEAGENT_TYPE_PHOTO_BLACKAGENT_TYPE_MATTE_BLACKAGENT_TYPE_LGAGENT_TYPE_GAGENT_TYPE_DGAGENT_TYPE_LCAGENT_TYPE_LMAGENT_TYPE_REDr  OID_MARKER_SUPPLIES_TYPE_OTHERr    OID_MARKER_SUPPLIES_TYPE_UNKNOWNOID_MARKER_SUPPLIES_TYPE_TONERr  $OID_MARKER_SUPPLIES_TYPE_WASTE_TONEROID_MARKER_SUPPLIES_TYPE_INKrn   !OID_MARKER_SUPPLIES_TYPE_INK_CARTr   #OID_MARKER_SUPPLIES_TYPE_INK_RIBBON"OID_MARKER_SUPPLIES_TYPE_WASTE_INKOID_MARKER_SUPPLIES_TYPE_OPCr  "OID_MARKER_SUPPLIES_TYPE_DEVELOPER"OID_MARKER_SUPPLIES_TYPE_FUSER_OIL"OID_MARKER_SUPPLIES_TYPE_SOLID_WAX#OID_MARKER_SUPPLIES_TYPE_RIBBON_WAX"OID_MARKER_SUPPLIES_TYPE_WASTE_WAXOID_MARKER_SUPPLIES_TYPE_FUSERr  $OID_MARKER_SUPPLIES_TYPE_CORONA_WIRE'OID_MARKER_SUPPLIES_TYPE_FUSER_OIL_WICK%OID_MARKER_SUPPLIES_TYPE_CLEANER_UNIT+OID_MARKER_SUPPLIES_TYPE_FUSER_CLEANING_PAD&OID_MARKER_SUPPLIES_TYPE_TRANSFER_UNITr  #OID_MARKER_SUPPLIES_TYPE_TONER_CART$OID_MARKER_SUPPLIES_TYPE_FUSER_OILER&OID_MARKER_SUPPLIES_TYPE_ADF_MAINT_KITr  r   r+  rL  rF  r`  r   AGENT_HEALTH_OVERTEMPrx  r   AGENT_HEALTH_FAILEDr}  r  )AGENT_LEVEL_TRIGGER_ALMOST_DEFINITELY_OUT AGENT_LEVEL_TRIGGER_PROBABLY_OUT AGENT_LEVEL_TRIGGER_SUFFICIENT_4 AGENT_LEVEL_TRIGGER_SUFFICIENT_2r~   AGENT_LEVEL_TRIGGER_SUFFICIENT_1 AGENT_LEVEL_TRIGGER_SUFFICIENT_3r  rv  r  r  r  r   STATUS_PRINTER_PEN_CLEANING"STATUS_PRINTER_MANUAL_DUPLEX_BLOCKr   "STATUS_PRINTER_MANUAL_FEED_BLOCKEDSTATUS_PRINTER_FUSER_ERRORSTATUS_PRINTER_NON_HP_INKr   r   r  r  r   r   r  r  r  r  r  r  r  r  compile
IGNORECASEr  r  rm   r4  r   r5  AGENT_LEVEL_UNKNOWNr7  rr  r6  r  r  r  r  r  r  r  r"  r!  r  r  r  r	  r
  r  r  IPP_PRINTER_STATE_STOPPEDr  r  r  r  STATUS_PRINTER_EMPTY_TONERr   STATUS_PRINTER_MEDIA_EMPTY_ERRORrx  r  r  STATUS_PRINTER_PAUSEDr  r  r  r  r  r   r   r   <module>r0     s  2  
 
&  	 T T  ! ! 		%L   
%

9
%5J'8  C&. C/C3C 6C :	C
 4C 3C 8C 5C 7C 7C :C 9C :C 4C 9C  6!C" 755;A+C. +,+.-,+.-	  &8$&)7 
 r	$ !!!!	% brrrr	#
x|M`$)Z 1G0F0?0?0B0A0@2H3I2?,80=1>4A,:$%  $)&&6H)((6H) &&6P) ,,6H	)
 $$6G) ))6P) ++6P) **6H) $$6I) **6H) **6H) **6H) ++6H) **6H) &&6J)  ,,6H!)" //6H#)$ --6H336H..6M++6P,,6H..6H/) %6M^"6H    XB *004.	  <E<<<<  6555535>	
 vx"(J 2yy
y $y %	y
 'y y y .y y 'y $y 'y y 'y 'y  %!y" $#y$ $%y& .'y( $)y* $+y, $-y. $/y0 $1y2 $3y4 $5y6 $7y8 $9y: $;y< $=y> $?y@ %AyB &CyD &EyF &GyH &IyJ &KyL %MyN %OyP %QyR %SyT %UyV %WyX %YyZ [y\ %]y^ %_y` ayb $cyd eyf gyh #iyj kyl myn oyp qyr syt $uyv *wyx *yyz %{y| }y~ $y@ $AyB $CyD $EyF %GyH IyJ KyL %MyN OyP QyR SyT UyV $WyX $YyZ %[y\ %]y^ _y` ayb cyd eyf gyh %iyj kyl myn $oyp $qyr syt uyv wyx yyz {y| }y~ y@ AyB CyD EyF GyH IyJ KyL MyN OyP QyR SyT UyV WyX YyZ [y\ ]y^ _y` ayb cyd eyf gyh iyj kyl myn oy vUpa	a	!a 
$a 
	a
 
a 
#a 
#a 
)a 
!a 
a 
)a 
a 
a 
)a 
a  
!a" 
#a$ 
%a& 
)'a( 
")a* 
)+a, 
)-a. 
/a0 
#1a2 
)3a4 
"5a6 
7a8 
9a: 
;a< 
)=a> 
#?a@ 
"AaB 
$CaD 
)EaF 
(GaH 
+IaJ 
*KaL 
#MaN 
)OaP 
(QaR 
+SaT 
*UaV 
)WaX 
(YaZ 
+[a\ 
*]a^ 
)_a` 
)aab 
)cad 
)eaf 
)gah 
#iaj 
)kal 
(man 
+oap 
*qar 
)sat 
)uav 
)wax 
)yaz 
){a| 
)}a~ 
)a@ 
)AaB 
)CaD 
)EaF 
)GaH 
)IaJ *))$) $ $##"uaF   M` rzz4bmmDFR "3/I%6*D'6#=,F  3+-*,+'2  ><G I"K"5  .(A#<#7  :

*(6p:xFTJX"HFR  #   !2/I%6*;'6#=,F-G,@+<
  &8"1$5#3)9+=(7*;)8	  &F&D&O(Q*S	  .(A#< 
)< -0K*-E  *,F  +-E	
  -/I  ,.F  +-E  46W  +-H  -/O  57T  9;[  24T  35S  57U   (*?!"  ')<# (6,\,mF  #/! #"#LsA   W1 W? 1W<?X!XX!XX!XX! X!