
    =	fv                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
 d dl d dlmZmZmZmZ d dlmZ ddl d ZdZdZd	Zd
ZdZdZd Zd ZdZdZdZd	Z dZ!dZ"dZ#d
Z$dZ%d Z&dZ'dZ(dZ)d	Z*dZ+dZ,dZ-d
Z.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6d Z7dZ8dZ9d
Z:dZ;dZ<dZ=dZ>d	Z?dZ@dZAdZdZd	Zd
ZdZd ZBdZCdZDdZEdZFd ZGdZHdZIdZJ G d deK      ZL G d dej                        ZN G d  d!eO      ZPy)"    N)StringIO)BytesIO)*)deviceutilspmlcodes)cups                           	   
                     J   $   3   i  c                       e Zd ZdddedfdZd Zd Zd Z eeed      Z	d	 Z
d
 Z eee
d      Zd Zd Zd Zd Z	 	 	 ddZy)PMLFaxDeviceNFc                 T    t         j                  | |||||       d | _        d | _        y N)	FaxDevice__init__send_fax_threadupload_log_thread)self
device_uriprinter_namecallbackfax_typedisable_dbuss         /usr/share/hplip/fax/pmlfax.pyr$   zPMLFaxDevice.__init__   s3    
 	4'#X'	)
  $!%    c                      yNF r'   s    r-   isAuthRequiredzPMLFaxDevice.isAuthRequired   s    r.   c                 T    | j                  t        j                  t        |            S r"   )setPMLr   OID_FAX_LOCAL_PHONE_NUMstr)r'   nums     r-   setPhoneNumzPMLFaxDevice.setPhoneNum   s    {{366CAAr.   c                 "   t         rUt        j                  | j                  t        j
                        d   j                  d            }|j                  d      S t        j                  | j                  t        j
                        d         S Nr   zutf-8)PY3r   	printablegetPMLr   r6   encodedecoder'   datas     r-   getPhoneNumzPMLFaxDevice.getPhoneNum   se    ??4;;s/J/J#KA#N#U#UV]#^_D;;w''??4;;s/J/J#KA#NOOr.   r6   )docc                 B    | j                  t        j                  |      S r"   )r5   r   OID_FAX_STATION_NAME)r'   names     r-   setStationNamezPMLFaxDevice.setStationName   s    {{333T::r.   c                 "   t         rUt        j                  | j                  t        j
                        d   j                  d            }|j                  d      S t        j                  | j                  t        j
                        d         S r;   )r<   r   r=   r>   r   rF   r?   r@   rA   s     r-   getStationNamezPMLFaxDevice.getStationName   se    ??4;;s/G/G#H#K#R#RSZ#[\D;;w''??4;;s/G/G#H#KLLr.   rF   c                      y r"   r1   r2   s    r-   setDateAndTimezPMLFaxDevice.setDateAndTime   s    r.   c                 z    | j                         s+t        |       | _        | j                  j                          yyNTF)isUloadLogActiveUploadLogThreadr&   startr2   s    r-   	uploadLogzPMLFaxDevice.uploadLog   s3    $$&%4T%:D"""((*r.   c                 P    | j                   | j                   j                         S yr0   )r&   is_aliver2   s    r-   isUploadLogActivezPMLFaxDevice.isUploadLogActive   s&    !!-))2244r.   c                     | j                   6| j                   j                         r| j                   j                          y y y r"   )r&   rT   joinr2   s    r-   waitForUploadLogThreadz#PMLFaxDevice.waitForUploadLogThread   s<    !!-""++-""'') . .r.   c
                     | j                         s?t        | | j                  |||||||||	      | _        | j                  j	                          yyrN   )isSendFaxActivePMLFaxSendThreadservicer%   rQ   )
r'   phone_num_listfax_file_listcover_messagecover_re
cover_funcpreserve_formattingr)   update_queueevent_queues
             r-   	sendFaxeszPMLFaxDevice.sendFaxes   sW     ##%#3D$,,Xe4A8Z4G4@,4?	$AD    &&(r.    rg   NFrg   NN)__name__
__module____qualname__FAX_TYPE_NONEr$   r3   r9   rC   property	phone_numrH   rJ   station_namerL   rR   rU   rX   re   r1   r.   r-   r    r    }   sy    "&T'#&BP k7PQI;M NN@VWL* SUKM15r.   r    c                       e Zd Zd Zd Zy)PMLUploadLogThreadc                 P    t         j                  j                  |        || _        y r"   )	threadingThreadr$   dev)r'   rt   s     r-   r$   zPMLUploadLogThread.__init__   s    !!$'r.   c                    d}d}d}d}d}d}d}d}d	}	d
}
|}||k7  r||k(  rn||k(  rn||k(  rn||k(  rR|}	 | j                   j                          	 t         j                  t        j                  t        j
                         nt||k(  r*|}| j                         }|t        j                  k7  rI|}nE||k(  rs|}| j                   j                  t        j                  t        j                         | j                   j                  t        j                  t        j                          n||k(  r|	}d}	 |dz  }| j                         }|t        j"                  k(  rn|t        j$                  t        j&                  fv rt        j                  d       t        }n\|dkD  rt        }t        j                  d       n;t)        j*                  d       ||	k(  rn||
k(  r| j                   j-                          ||k7  ry y # t        $ r	 t        }Y w xY w# t        $ r2}t        j                  d|j                  z         t        }Y d }~Td }~ww xY w)Nr   r               (   2   <   F   Unable to open device (%s).r   zCfg upload aborted!z Unable to get into active state!      ?)rt   openr5   r   OID_UPLOAD_TIMEOUTDEFAULT_UPLOAD_TIMEOUTErrorSTATE_ERRORlogerrormsggetCfgUploadStateUPDN_STATE_IDLEOID_FAX_CFG_UPLOAD_DATA_TYPE FAX_CFG_UPLOAD_DATA_TYPE_FAXLOGSOID_DEVICE_CFG_UPLOADUPDN_STATE_REQSTARTUPDN_STATE_XFERACTIVEUPDN_STATE_ERRORABORTUPDN_STATE_XFERDONEtimesleepclose)r'   
STATE_DONESTATE_ABORTSTATE_SUCCESS
STATE_BUSYSTATE_DEVICE_OPENSTATE_CHECK_IDLESTATE_REQUEST_STARTSTATE_WAIT_FOR_ACTIVESTATE_UPLOAD_DATASTATE_DEVICE_CLOSEstateeul_statetriess                  r-   runzPMLUploadLogThread.run   s.   

  " z!#-'*$+++	,HHMMO
,

3#9#93;U;UV **+113s222&E --- @ @#BfBfg 9 93;R;RS//)QJE#557H3#<#<<C$=$=s?V?V#WW		"78 +rz +		"DEJJsO# & ++,, { z!$ ! , +,  (II;aeeCD'E(s)   H 2H HH	I$(IIN)rh   ri   rj   r$   r   r1   r.   r-   rp   rp      s    
K!r.   rp   c                   p    e Zd Z	 	 ddZd Zd Zd Zd Zd Zd Z	dd	Z
d
 Zd ZddZd Zd Zd Zd Zy)r[   Nc                 D    t         j                  | |||||||||	|
|       y r"   )FaxSendThreadr$   )r'   rt   r\   r]   r^   r_   r`   ra   rb   r)   rc   rd   s               r-   r$   zPMLFaxSendThread.__init__-  s-     	tS'>=Hj2E<	6r.   c                 1   d}d}d}d}d}d}d}d}d	}	d
}
d}d}
d}d}d}| j                         }|}g | _        ||k7  r| j                         r|}t        j	                  d|z         ||k(  r1t        j                  d       | j                  t        ddf       |}nx||k(  r1t        j	                  d       | j                  t        ddf       |}nB||k(  r1t        j                  d       | j                  t        ddf       |}n||k(  r1t        j                  d       | j                  t        ddf       |}n||k(  rt        j	                  ddz         |}	 	 | j                  j                          	 | j                  j                  | _        t        j	                  d| j                  z         | j                  j                  | _        t        j	                  d| j                   z         | j                  j'                          n||k(  r+t        j	                  ddz         | j)                  |      }n||k(  r+t        j	                  ddz         | j+                  |      }n||k(  rrt        j	                  ddz         |	}	 t-        |      }t        j	                  d|d    z         | j                  t.        d|d    f       | j                  d d  | _        n-||	k(  r+t        j	                  d"dz         | j5                        }n||
k(  r+t        j	                  d#dz         | j7                  |      }n||k(  r+t        j	                  d$dz         | j9                  |      }n||k(  rt        j	                  d%dz         |}d}d}d}d}d}d}d}d}d	}d
}d}d}d}d} d}!d&}"d'}#d(}$d)}%d*}&t:        j<                  }'|}(|(|k7  r=| j                         rt        j                  d+       |}(|&rN| j?                         })|)t:        j@                  t:        jB                  fvrt        j                  d,|)z         |}(|}t        j	                  d-||(fz         |(|k(  rd*}&|$}(|}n|(|k(  ret        j                  d.       | jE                         }'t        j	                  d/|'t:        jF                  jI                  |'d0      fz         d*}&|$}(|}n|(|k(  rt        j                  d1       d*}&|$}(|}n|(|k(  rt        j	                  d2       d*}&|$}(|}ng|(|k(  rWt        j	                  d3dz         |}(	 | j                  j                          | j                  jJ                  tL        k(  r|}(n|(|k(  r*t        j	                  d4dz         	 | j                  jO                  t:        jP                        \  }*}+|*t:        jR                  kD  r|}(t        j	                  d5       ntU        jV                  d6tU        jX                               }+t        j	                  d7|+z         	 | j                  j[                  t:        jP                  |+       | j                  jO                  t:        jP                        \  }*},|,|+k(  r|}(nt        j                  d8       |}(n|(|k(  rt        j	                  d;dz         |}(| j                  j\                  t^        k(  r2t        j	                  d<       	 | j                  ja                          nmt        j	                  d>       nV|(|k(  rat        j	                  d?dz         |}(| j?                         }-| jc                         }.| je                         }/|-t:        jf                  k(  s&|-t:        jh                  k(  s|-t:        jB                  k(  r|.t:        jj                  k(  s|.t:        jl                  k(  r|/t:        jn                  k(  s|/t:        jp                  k(  r|-t:        jf                  k(  rt        j	                  d@       nWt        j	                  dA       | j                  j[                  t:        jr                  t:        jf                         tU        jt                  dB       n|}(n|(|k(  rt        j	                  dCdz         |}(| j?                         }-|-t:        jf                  k(  rXt        j	                  dD       t        j	                  dE       | j                  j[                  t:        jr                  t:        jv                         tU        jt                  dF       t        j	                  dG       dF}0|0dk  rt        j	                  dH|0z         	 | j?                         }-|-t:        j@                  k(  rntU        jt                  dF       t        j	                  dE       | j                  j[                  t:        jr                  t:        jv                         |0dFz  }0|0dk  rt        j                  dJ       |}(dK}&
nSt        j                  dL       |}(
n:|(|k(  rt        j	                  dMdz         |}(	 | j                  j[                  t:        jx                  t:        jz                         | j                  j[                  t:        j|                  t:        j~                         t        j	                  dN       | j                  j                          	ny|(|k(  rt        j	                  dPdz         |}(| j                  j\                  t        k(  r2t        j	                  d<       	 | j                  ja                          	nt        j	                  d>       n|(|k(  rt        j	                  dRdz         | }(t        j	                  dSdT   z         t        j	                  dU       | j                  t        dKt        t        z  t        z         |dT   j                  dV      }1t        j	                  t        |1             | j                  |1       	 | j                          n&|(| k(  rt        j	                  dXdz         |!}(	 t        | j                  dY      }2	 |2j                  t              }3| j                  |3      \
  }4}5}6}7}8}9}:};}<}=|4d[k7  rt        j                  d\       |}(nt        j	                  d]|4|5|6|7|8|9|:|;fz         t        j	                  d^       | j                  t        dKt               | j                  |6       	 | j                          n,|(|!k(  rt        j	                  d`dz         |"}(t               }>t        6      D ]  }?| j                         r|}(|(|k(  r n	 2j                  t              }3| j                  |3      \  }@}A}B}C}D}=t        j	                  da|@|A|B|C|Dfz         |>j                  |2j                  |C             |2j                  |D      }E|>j                  d       | j                  t        t        b       | j                  |@78|A|B;       	 |>j                  t              }FFdk(  rt        j                  dc       |}(| j                  F       t        }G	 |>j                  t              }FGt        z  }G| j?                         }-|-t:        jh                  k(  r|}(n| j                         r|}(nFddk(  r$| j                  B       	 | j                          n	 | j                          | jc                         }HHt:        j                  k(  r| j                  t        ddT   f       tU        jt                  de       | j                         r|}(nJ| j?                         }-|-t:        jh                  k(  r|}(n$| jc                         }H|Ht:        j                  k(  r|(||fvrHt:        j                  k(  r| j                  t        ddT   f       tU        jt                  de       | j                         r|}(nJ| j?                         }-|-t:        jh                  k(  r|}(n$| jc                         }H|Ht:        j                  k(  rHt:        j                  k(  r| j                  t        @dT   f       | j                  t        db       | j                  F       |(||fv rnH|>j                  d       |>j                  d        n`|(|"k(  r_t        j	                  dfdz         |#}(t        j	                  dg       | j                  t        d*t               	 | j                          d*}&n|(|#k(  r8t        j	                  dhdz         |#}(tU        jt                  de       | jc                         }H|Ht:        j                  k(  r2| j                  t        ddT   f       t        j	                  di       nrHt:        j                  k(  r2| j                  t        @dT   f       t        j	                  dj       n-Ht:        jl                  t:        jn                  fv r|$}(|}t        j	                  dk       n| j                  t        @dT   f       t        j	                  dl       n|(|$k(  r_t        j	                  dmdz         | j                  t        ddf       	 | j                  j[                  t:        jP                  dn       |%}(nZ|(|%k(  rTt        j	                  dpdz         |}(t        j	                  dq       	 t        j'                          	 2j'                          | j                  j\                  t        k(  r/t        j	                  dr       | j                  j                          | j                  j[                  t:        jr                  t:        jf                         tU        jt                  dF       | j                  j\                  t^        k(  r/t        j	                  dr       | j                  j                          | j                  j'                          |(|k7  rn||k(  r}t        j	                  dsdz         | j                  rWt        j	                  dt| j                  z         	 t        j                  | j                         t        j	                  du       |}||k7  ry y # t"        $ r t        j                  d       |}Y Lw xY w# t"        $ r/}t        j                  d|j$                  z         |}Y d }~d }~ww xY w# | j                  j'                          w xY w# t0        $ r |}t        j	                  d!       Y w xY w# t"        $ r/}t        j                  d|j$                  z         |}(Y d }~nd }~ww xY w# t"        $ r t        j                  d9       |}(Y w xY w# t"        $ r t        j	                  d:       |}(Y w xY w# t"        $ r/}t        j                  d=|j$                  z         |}(Y d }~d }~ww xY w# t"        $ r t        j                  dI       |}(Y yw xY w# t"        $ r/}t        j                  dO|j$                  z         |}(Y d }~Yd }~ww xY w# t"        $ r t        j                  dQ       |}(Y w xY w# t"        $ r t        j                  dW       |}(Y w xY w# t        $ r t        j                  dZ       |}(Y w xY w# t        $ r t        j                  dZ       |}(Y w xY w# t"        $ r t        j                  d_       |}(Y  w xY w# t        $ r t        j                  dZ       |}(Y 
>w xY w# t        $ r t        j                  dZ       |}(Y 
ew xY w# t"        $ r t        j                  dW       |}(Y w xY w# t"        $ r t        j                  dW       |}(Y Cw xY w# t"        $ r t        j                  dW       |}(Y w xY w# t"        $ r t        j                  do       Y fw xY w# t        $ r Y (w xY w# t        $ r Y 'w xY w# t        $ r t        j	                  dv       Y w xY w)wNr   r   rv   rw   ry   rz   r{   r|   r}   P   Z   d   n   x      zSTATE=(%d, 0, 0)zAborted by user.rg   zSuccess.zError, aborting.zDevice busy, aborting.z%s State: Get sender infoz********************zSender name=%szSender fax=%szPML get failed!r~   z!%s State: Pre-render non-G3 filesz%s State: Get total page countz%s State: Next recipientzProcessing for recipient %srG   zLast recipient.z%s State: Render cover pagez%s State: Handle single filez%s State: Merge multiple filesz%s State: Send fax            FzFax send aborted.zD/L error state=%dzSTATE=(%d, %d, 0)zFax send error.zError State=%d (%s)UnknownzFax device busy.zFax send success.z%s State: Open devicez%s State: Acquire fax tokenzSkipping token acquisition.z%d%m%Y%H:%M:%SzSetting token: %sz Unable to acquire fax token (3).z Unable to acquire fax token (2).z Unable to acquire fax token (1).z%s State: Early openzOpening fax channel.zUnable to open channel (%s).zSkipped.z%s State: Check idlezStarting in idle statezResetting to idle...r   z%s State: Request startzTry: 0z)Setting to up/down state request start...r   zWaiting for active state...zTry: %dzPML/SNMP errorz Could not get into active state!TzCould not get into idle state!z%s State: Set paramsz Setting date and time on device.zPML/SNMP error (%s)z%s State: Late openzUnable to open channel.z%s State: Send dial stringszDialing: %sfaxzSending dial strings...asciizChannel write error.z%s State: Send fax headerrbzUnable to read fax file.s   hplip_g3zInvalid file header. Bad magic.z>Magic=%s Ver=%d Pages=%d hDPI=%d vDPI=%d Size=%d Res=%d Enc=%dzSending fax header...zUnable to write to channel.z%s State: Send pagesz%Page=%d PPR=%d RPP=%d BPP=%d Thumb=%d)
page_flagszNo data!r.   g      ?z%s State: Send EOSzEnd of stream...z%s State: Wait for completionzDialing ...zTransmitting ...zTransmitting done or idle ...zPending ...z%s State: Release fax tokenz                zUnable to release fax token.z%s State: Close sessionzClosing session...zClosing fax channel.z%s State: CleanupzRemoving merged file: %sRemovedz	Not found)lnext_recipient_genrendered_file_listcheck_for_cancelr   debugr   write_queueSTATUS_IDLESTATUS_COMPLETEDSTATUS_ERRORSTATUS_BUSYrt   r   rn   sender_namerm   
sender_faxr   r   r   
pre_rendercount_pagesnextSTATUS_SENDING_TO_RECIPIENTStopIterationrecipient_file_list
cover_pagesingle_filemerge_filesr   DN_ERROR_NONEgetFaxDownloadStater   r   getFaxDownloadErrorDN_ERROR_STRgetdevice_stateDEVICE_STATE_NOT_FOUNDr>   OID_FAX_TOKENERROR_MAX_OKr   strftimegmtimer5   r+   FAX_TYPE_BLACK_SEND_EARLY_OPENopenFaxgetFaxJobTxStatusgetFaxJobRxStatusr   r   FAXJOB_TX_STATUS_IDLEFAXJOB_TX_STATUS_DONEFAXJOB_RX_STATUS_IDLEFAXJOB_RX_STATUS_DONEOID_FAX_DOWNLOADr   r   OID_DEV_DOWNLOAD_TIMEOUTDEFAULT_DOWNLOAD_TIMEOUTOID_FAXJOB_TX_TYPEFAXJOB_TX_TYPE_HOST_ONLYrL   FAX_TYPE_BLACK_SEND_LATE_OPENcreate_mfpdtf_fixed_headerDT_DIAL_STRINGSPAGE_FLAG_NEW_DOCPAGE_FLAG_END_DOCPAGE_FLAG_END_STREAMr?   reprcreate_mfpdtf_dial_stringswrite_streamfIOErrorreadFILE_HEADER_SIZEdecode_fax_headerDT_FAX_IMAGEScreate_mfpdtf_fax_headerr   rangePAGE_HEADER_SIZEdecode_page_headerwriteseekPAGE_FLAG_NEW_PAGEcreate_sop_recordRASTER_DATA_SIZEcreate_raster_data_recordcreate_eop_recordFAXJOB_TX_STATUS_DIALINGSTATUS_DIALINGFAXJOB_TX_STATUS_CONNECTINGSTATUS_CONNECTINGFAXJOB_TX_STATUS_TRANSMITTINGSTATUS_SENDINGtruncateSTATUS_CLEANUPmm	NameErrorcloseFaxremove_temp_fileosremoveOSError)Ir'   r   STATE_ABORTEDr   r   STATE_READ_SENDER_INFOSTATE_PRERENDERSTATE_COUNT_PAGESSTATE_NEXT_RECIPIENTSTATE_COVER_PAGESTATE_SINGLE_FILESTATE_MERGE_FILESSTATE_SEND_FAXSTATE_CLEANUPr   next_recipientr   r   	recipientFAX_SEND_STATE_DONEFAX_SEND_STATE_ABORTFAX_SEND_STATE_ERRORFAX_SEND_STATE_BUSYFAX_SEND_STATE_SUCCESSFAX_SEND_STATE_DEVICE_OPENFAX_SEND_STATE_SET_TOKENFAX_SEND_STATE_EARLY_OPENFAX_SEND_STATE_SET_PARAMSFAX_SEND_STATE_CHECK_IDLEFAX_SEND_STATE_START_REQUESTFAX_SEND_STATE_LATE_OPEN FAX_SEND_STATE_SEND_DIAL_STRINGSFAX_SEND_STATE_SEND_FAX_HEADERFAX_SEND_STATE_SEND_PAGES!FAX_SEND_STATE_SEND_END_OF_STREAM FAX_SEND_STATE_WAIT_FOR_COMPLETEFAX_SEND_STATE_RESET_TOKENFAX_SEND_STATE_CLOSE_SESSIONmonitor_stateerror_statefax_send_state	fax_stateresult_codetokencheck_tokendl_state	tx_status	rx_statusidial_stringsffheadermagicversiontotal_pageshort_dpivert_dpi	page_size
resolutionencoding	reserved1	reserved2pageppage_numpprrppbytes_to_readthumbnail_bytes	thumbnailrB   
total_readstatussI                                                                            r-   r   zPMLFaxSendThread.run6  s    

!#!002&"$z!$$&%II(501%		,-  +q"!56% -'		*%  "2Ar!:;% +%		,-  ,2!67% *$		23  +q"!56% 00		5@A'%0
0/3xx/D/DD,II&69I9I&IJ.2hh.@.@DOIIo&GH HHNN$ /)		=HI(9: ++		:fEF(()=> ..		4?@(
 $^ 4III;i>OOP$$&A1iPVFW%XY ,0+B+B1+E( **		76BC	2 ++		8FCD((8++		:fEF((8.(		.&9:,&'#')$')$&(#)+&-/*+-(,.),.),.)/1,+.(36014.,/)471360-0*/2, %!//!;$(;;,,.		"56)=$$($<$<$>	(S-F-FH_H_,``II&:Y&FG-AN$/EII1^^4TTU%)==(-)C -'+??		"34&*&>&>&@		"7;HXHXH\H\]hjsHt:u"uv(-)C +'+>>		"45(-)C *'+AA		"56(-)C 4'+EE		"9V"DE)AF HHMMO
  $xx448NN1E'+CC		"?6"JKN15ARAR1S.K
  +S-=-==1J #		*G H(,6F(V #		*=*E F!N$(HHOOC4E4Eu$M
 @DxxsO`O`?a$<K'2e';9R(+		2T(U9M (+DD		"8F"CD)B88,,0NNII&<=F $ 0 0 2
  IIj1 (+DD		"8F"CD)E#'#;#;#=$($:$:$<	$($:$:$<	%)<)<<$(A(AA$(?(??&#*C*CCyTWTmTmGm&#*C*CCyTWTmTmGm  (3+>+>> #		*B C #		*@ A $0D0DcFYFY Z $

3-@N'+GG		";v"FG)B#'#;#;#=#s':'::IIh/II&QR HHOOC,@,@#BYBYZ JJqMII&CD !A"#b& #		)a- 8!*/3/G/G/IH $,s/H/H#H$) $

1 #		*U V $0D0DcF]F] ^ !Q! #$b&& !$		*L M1D,0M  II&FG-@N (+DD		"8F"CD)AB HHOOC,H,H#JfJfg HHOOC,B,BCD`D`aII&HI HH335 (+CC		"76"BC)I88,,0MMII&<=F $ 0 0 2
  IIj1 (+KK		"?6"JK)G		-)E2B"BC		";<77-0AADXXZ (1'7'>'>w'G		$|"4577EB --/ (+II		"="HI)B%!%dffd!3B%%'WW-=%>F JNI_I_`fIgGwXx&)Y K/II&GH-ANII&f',g{HhXacmow&x'y z  II&=> ;;M4Qbc 99+FF $ 1 1 3 (+DD		"8F"CD)J&y!&{!3 u)A#4461E-1EE %))+1A)B !% 7 7 ? ZHc3PY  II&M'/c=/&Z'[ \ !JJrww}'=>(*(@I IIaL ;;MVh;i 228XxQTVY[cd)'+yy1A'B  $rz #		* 51E ( ::4@)9J"&'+yy1A'B *.> >
+/+C+C+E#+s/H/H#H5IN$)#'#8#8#:5IN$)#'3;$($:$:3$?%N(,(9(9(; %*%.(,(9(9(; *.)?)?)A&,0L0L&L$($4$4naSXIY5Z$[$(JJsO'+'<'<'>9M(-/3/G/G/IH'/33L3L'L9M(--1-C-C-EF '-0L0L&L $2:NPd9e#e*0C4S4S*S(,(8(8:KQPYZ_P`9a(b(,

3+/+@+@+B=QN,1373K3K3M+3s7P7P+P=QN,1151G1G1I +1C4S4S*S $*S-N-N#N$($4$4nhPYZ_P`5a$b $ ? ?Z[ ? \ $ > >t D#16JL`5a#a$)O #'R !MM!, IIaLku)p (+LL		"6&"AB)I		"4577uNbcB --/
 ). (+KK		"AV"LM)I

3!%!7!7!9!S%A%AA $ 0 0.!YuEU1V W #		- 8#s'H'HH ,,nh	RWHX-YZII&89#(A(A3C\C\']]-GN$8EII&EF !,,nh	RWHX-YZIIm4 (+EE		"?6"JK((.!R)@AF HHOOC,=,=yI *F (+GG		";v"FG)<		"67!HHJ!HHJ  88,,0MMII&<= HH--/(<(<c>Q>QR

188,,0NNII&<= HH--/(Y %(;;^ -'		-89((II8466AB/		$&&)		), #k z!Z  % 0II&78$/E0 ! ,		"?!%%"GH +, HHNN$0 % )EII/0@  % BII&Caee&KL-ANB. (- !J$'II.P$Q5IN!J  % GII&HI-FNGB $) F #		*H155*P Q1EFd (- !*$'II.>$?5IN$)!*D  % BII&;aee&CD-ANB $) F #		*C D1EF.  % BII&<=-ANB  ' %II&@A-AN$%  ' %II&@A-AN$%* $) F #		*G H1EF( $+ ) #		*D E1E ()( $+ ) #		*D E1E ()> ,1 %N(+		2H(I9M%N ,1 %.(+		2H(I9M(-%.v  % BII&<=-ANBN  % FII&DEF  ) ! !
  ) ! !4 # /		+./sa  !AU <A:AT AAV  AW  ,AX) 9*AX AY AZ 2BAZ2 %A[- A\ A\; A]" A^	 4A^02A_-A_> A`%E<Aa L*Aa3 M(Ab M=Ab( S 4Ab8 T AUT?AV UAUUAV U	AU>U$AU9U3AV U9AU>U>AV VAVV  AWWAWW	AW?W$AW:W:AW?X AX&X%AX&X) AYYAYY	AZY$AZZAZZ AZ/Z.AZ/Z2	A[*Z;$A[%[%A[*[- A\\A\\ A\8\7A\8\; A]]A]]" A^^A^^	 A^-^,A^-^0 A__A__ A_;_:A_;_> A`"`!A`"`% Aa	aAa	a Aa0a/Aa0a3AbbAbb	Ab%b$Ab%b(	Ab5b4Ab5b8AccAcc                     | j                   j                  t        j                        \  }}|r:t        j                  d|t        j                  j                  |d      fz         |S t        j                  S )NzD/L State=%d (%s)r   )	rt   r>   r   r   r   r   UPDN_STATE_STRr   r   r'   r/  r   s      r-   r   z$PMLFaxSendThread.getFaxDownloadState  s^    !XX__S-A-ABUII)UC4F4F4J4J5R[4\,]]^L,,,r.   c                     | j                   j                  t        j                        \  }}|r|S t        j                  S r"   )rt   r>   r   OID_FAX_DOWNLOAD_ERRORDN_ERROR_UNKNOWNrO  s      r-   r   z$PMLFaxSendThread.getFaxDownloadError  s3    !XX__S-G-GHUL'''r.   c                     | j                   j                  t        j                        \  }}|r:t        j                  d|t        j                  j                  |d      fz         |S t        j                  S )NzTx Status=%d (%s)r   )	rt   r>   r   OID_FAXJOB_TX_STATUSr   r   FAXJOB_TX_STATUS_STRr   r   r'   r/  rL  s      r-   r   z"PMLFaxSendThread.getFaxJobTxStatus  _    "hhooc.F.FGVII)VS5M5M5Q5QRXZc5d,eefM,,,r.   c                     | j                   j                  t        j                        \  }}|r:t        j                  d|t        j                  j                  |d      fz         |S t        j                  S )NzRx Status=%d (%s)r   )	rt   r>   r   OID_FAXJOB_RX_STATUSr   r   FAXJOB_RX_STATUS_STRr   r   rV  s      r-   r   z"PMLFaxSendThread.getFaxJobRxStatus  rW  r.   c                     | j                   j                  t        j                        \  }}|r:t        j                  d|t        j                  j                  |d      fz         |S t        j                  S )NzCfg Upload State = %d (%s)r   )	rt   r>   r   r   r   r   rN  r   r   rO  s      r-   r   z"PMLFaxSendThread.getCfgUploadState  s_    !XX__S-F-FGUII2eS=O=O=S=STY[d=e5ffgL,,,r.   c           	          t         }|r%|t        k(  r
|t        z  }n|t        k(  r	|t        z  }| j
                  j                  t        j                  dd|||             y )Nz<IHBBr   )	FIXED_HEADER_SIZEr    DIAL_STRINGS_VARIANT_HEADER_SIZEr   FAX_IMAGE_VARIANT_HEADER_SIZEstreamr   structpack)r'   	data_typesend_variantr   
header_lens        r-   r   z+PMLFaxSendThread.create_mfpdtf_fixed_header  sZ    &
O+"BBJm+;;
&++gZJ@ 	Ar.   c           
          t        j                  dt        t        dd|d d       }t        j                  t        |             | j                  j                  |       y )Nz<BBHH51sr   r   )	ra  rb  	MAJOR_VER	MINOR_VERr   r   r   r`  r   )r'   numberrD  s      r-   r   z+PMLFaxSendThread.create_mfpdtf_dial_strings  sH    KK
#YR. 			$q'!r.   c                     | j                   j                         }| j                   j                  d       | j                   j                  t	        j
                  d|             y )Nr   z<I)r`  tellr   r   ra  rb  )r'   sizes     r-   adjust_fixed_header_block_sizez/PMLFaxSendThread.adjust_fixed_header_block_size  sC    {{!&++dD12r.   c                     | j                   j                  t        j                  dt        |||||d|d||||d|d|             y )Nz<BBHHHIHHHHHHIHHHHr   )r`  r   ra  rb  RT_START_PAGE)r'   rE  r<  r=  rF  rG  r@  bpps           r-   r   z"PMLFaxSendThread.create_sop_record  sK    &++&:)8XxxxxA 	Br.   c                 t    | j                   j                  t        j                  dt        ddd|d             y )Nz<BBBBIIr   )r`  r   ra  rb  RT_END_PAGE)r'   rG  s     r-   r   z"PMLFaxSendThread.create_eop_record  s/    &++i'Aq% 	&r.   c           
          t        |      t        k  sJ | j                  j                  t	        j
                  dt        dt        |                   | j                  j                  |       y )Nz<BBHr   )lenr   r`  r   ra  rb  	RT_RASTERrA   s     r-   r   z*PMLFaxSendThread.create_raster_data_record  sQ    4y,,,,&++f!1c$i2 	3$r.   c                     | j                   j                  t        j                  dt        t
        t        |t        ddddd             y )Nz<BBBHBI20s20s20sIr   r.   )r`  r   ra  rb  rg  rh  SRC_HOSTTTI_PREPENDED_TO_IMAGE)r'   r;  s     r-   r   z)PMLFaxSendThread.create_mfpdtf_fax_header  s:    &++&9%y(K2AsCaI 	Jr.   c                     | j                          | j                  j                  | j                  j	                                | j                  j                  d       | j                  j                  d       y )Nr   )rm  rt   writeFaxr`  getvaluer  r   r2   s    r-   r   zPMLFaxSendThread.write_stream	  sQ    ++-$++..01Qr.   rf   )Fr   )r   )rh   ri   rj   r$   r   r   r   r   r   r   r   r   rm  r   r   r   r   r   r1   r.   r-   r[   r[   ,  sX    UZAE6m	#h-(---A3B& Jr.   r[   )Qsysr	  os.pathra  r   rr   base.sixext.movesr   ior   base.g
base.codesbaser   r   r   r	   prntr
   r   PAGE_FLAG_NONEr   PAGE_FLAG_END_PAGEr   r   r   rg  rh  MFPDTF_RASTER_BITMAPMFPDTF_RASTER_GRAYMAPMFPDTF_RASTER_MHMFPDTF_RASTER_MRMFPDTF_RASTER_MMRMFPDTF_RASTER_RGBMFPDTF_RASTER_YCC411MFPDTF_RASTER_JPEGMFPDTF_RASTER_PCLMFPDTF_RASTER_NOT
DT_UNKNOWNr   DT_SCANNED_IMAGESr   DT_DEMO_PAGESDT_SPEED_DIALSDT_FAX_LOGSDT_CFG_PARMSDT_LANG_STRSDT_JUNK_FAX_CSIDSDT_REPORT_STRSDT_FONTSDT_TTI_BITMAPDT_COUNTERSDT_DEF_PARMSDT_SCAN_OPTIONSDT_FW_JOB_TABLEro  ru  rr  r]  IMAGE_VARIANT_HEADER_SIZEr^  r_  SOP_RECORD_SIZERASTER_RECORD_SIZEEOP_RECORD_SIZEDIAL_STRING_RECORD_SIZESRC_UNKNOWNrw  SRC_SCANNERSRC_HOST_THEN_SCANNERSRC_SCANNER_THEN_HOSTTTI_NONErx  TTI_OVERLAYED_ON_IMAGEr   r#   r    rs   rp   r   r[   r1   r.   r-   <module>r     s  .  	     &    * *        		           
   	    #$   "                 
T9 TrQ!)) Q!la} ar.   