3
NZ7                 @   s   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	T d dl
T d dlmZmZmZmZ dZd ZdZdZdZd	Zd
ZG dd dejZG dd dejZdS )    N)queue)StringIO)*)deviceutilsstatuspml               c               @   sD   e Zd ZdddZdddejejeddfddZd	d
 Z	dd Z
dS )PMLCopyDeviceNc             C   s   t jj| |||| d | _d S )N)r   Device__init__copy_thread)selfZ
device_uriZprinter_nameservicecallback r   !/usr/share/hplip/copier/copier.pyr   4   s    zPMLCopyDevice.__init__r	   r   d   c	       	   
   C   s8   | j  s0t| ||||||||	| _| jj  dS dS d S )NTF)isCopyActivePMLCopyThreadr   start)	r   
num_copiescontrast	reductionqualityfit_to_pagescan_srcupdate_queueevent_queuer   r   r   copy<   s    
zPMLCopyDevice.copyc             C   s   | j d k	r| j j S dS d S )NF)r   isAlive)r   r   r   r   r   J   s    

zPMLCopyDevice.isCopyActivec             C   s"   | j d k	r| j j r| j j  d S )N)r   r$   join)r   r   r   r   waitForCopyThreadP   s    

zPMLCopyDevice.waitForCopyThread)NNNN)__name__
__module____qualname__r   r   ZCOPIER_QUALITY_NORMALCOPIER_FIT_TO_PAGE_ENABLEDSCAN_SRC_FLATBEDr#   r   r&   r   r   r   r   r   3   s    

r   c               @   s.   e Zd Zd
ddZdd Zdd Zdd	 ZdS )r   Nc
       
      C   sf   t jj|  || _|| _|| _|| _|| _|| _|| _	|	| _
|| _d| _| jj| _tjd| j  d S )N zCopy-type = %d)	threadingThreadr   devr   r   r   r   r   r    r"   r!   prev_update	copy_typelogdebug)
r   r/   r   r   r   r   r   r    r!   r"   r   r   r   r   Y   s    
zPMLCopyThread.__init__c             C   s  d}d}d}d}d}d}d}d}d	}	d
}
d}|}x||kr||krbt jdd,  | jt |}||krt jdd-  | jt |}q4||krt jdd.  | jt |}q4||krt jdd/  | jt |}q4||krt jdd0  | jt y| jjtj	\}}W n$ t
k
r0   t jd |}Y nX |tjkrN|}t jd ntjdtj }t jd|  y| jjtj	| W n$ t
k
r   t jd t}Y n2X | jjtj	\}}||kr|}nt jd |}q4||krnt jdd1  | jtkr8| jjtj\}}|tjkr2| jjtjtj |}n|}n4| jtkr| jjtj\}}|tjkrh|}n|}q4||kr|t jdd2  | jdk rd| _| jdkrd| _| jtkr | jjtj| j | jjtj| j | jjtj| j | jjtj| j  | j!t"kr&| jjtj#| j$ n| jjtj%| j | jd d d | _| jjtj&| j | j$tj'krld| _| jjtj(| j | jjtj)| j  | jjtj*tj+ | jjtj,tj- | jjtj.tj/tj0B  | jjtj1tj2 | jjtj3tj4 | jjtj*tj+ | jjtj,tj- | jjtj5tj6 t jd| j  t jd| j  t jd| j  t jd| j   t jd | j$  |	}q4||	krt jd!d3  | jtkr| jjtjtj7 n| jtkr| jjtjtj8 |
}q4||
krt jd"d4  | jtkrx| jjtj\}}| j9 r2| jjtjtj |}P |tj7krVt jd# tj:d q|tj;kr| jt< t jd$ tj:d% qn:|tj=krt jd& |}P n|tjkrt jd' |}P qW n| jtkrx| jjtj\}}| j9 r
| jjtjtj |}P |tj8kr.t jd# tj:d q|tj>kr^| jt< t jd$ tj:d% qn:|tj?kr|t jd& |}P n|tjkrt jd' |}P qW q4||kr4t jd(d5  y| jjtj	d6 W n  t
k
r   t jd+ Y nX | jj@  |}q4W d S )7Nr   r   
            (   2   <   F   P   z%s State: Abortedr   z%s State: Errorz%s State: Successz%s State: Busyz%s State: Acquire copy tokenz!Unable to acquire copy token (1).zSkipping token acquisition.z%d%m%Y%H:%M:%SzSetting token: %sz!Unable to acquire copy token (2).z!Unable to acquire copy token (3).z%s State: Setup statez%s State: Setup Paramsr	   c   znum_copies = %dzcontrast= %dzreduction = %dzquality = %dzfit_to_page = %dz%s State: Startz%s State: Activezstate = startzstate = activer
   zstate = abortingzstate = idlez%s State: Release copy token    zUnable to release copier token.z********************z********************z********************z********************z********************z********************z********************z********************z********************z********************z                )Ar2   r3   write_queueSTATUS_DONESTATUS_ERRORSTATUS_SETTING_UPr/   ZgetPMLr   ZOID_COPIER_TOKENErrorZERROR_MAX_OKtimeZstrftimeZgmtimeZsetPMLerrorr1   ZCOPY_TYPE_DEVICEZOID_COPIER_JOBZCOPIER_JOB_IDLEZCOPIER_JOB_SETUPZCOPY_TYPE_AIO_DEVICEZOID_SCAN_TO_PRINTERZSCAN_TO_PRINTER_IDLEr   ZOID_COPIER_JOB_NUM_COPIESZOID_COPIER_JOB_CONTRASTr   ZOID_COPIER_JOB_REDUCTIONr   ZOID_COPIER_JOB_QUALITYr   r    r+   ZOID_COPIER_JOB_FIT_TO_PAGEr   ZOID_COPIER_NUM_COPIES_AIOZOID_COPIER_CONTRAST_AIOr*   ZOID_COPIER_REDUCTION_AIOZOID_COPIER_QUALITY_AIOZOID_PIXEL_DATA_TYPEZPIXEL_DATA_TYPE_COLOR_24_BITZOID_COPIER_SPECIAL_FEATURESZCOPY_FEATURE_NONEZOID_COPIER_PHOTO_MODEZENHANCE_LIGHT_COLORSZENHANCE_TEXTZ OID_COPIER_JOB_INPUT_TRAY_SELECTZCOPIER_JOB_INPUT_TRAY_1ZOID_COPIER_MEDIA_TYPEZCOPIER_MEDIA_TYPE_AUTOMATICZOID_COPIER_JOB_MEDIA_SIZEZCOPIER_JOB_MEDIA_SIZE_US_LETTERZCOPIER_JOB_STARTZSCAN_TO_PRINTER_STARTcheck_for_cancelsleepZCOPIER_JOB_ACTIVESTATUS_ACTIVEZCOPIER_JOB_ABORTINGZSCAN_TO_PRINTER_ACTIVEZSCAN_TO_PRINTER_ABORTEDclose)r   Z
STATE_DONEZSTATE_ERRORZSTATE_ABORTEDZSTATE_SUCCESSZ
STATE_BUSYZSTATE_SET_TOKENZSTATE_SETUP_STATEZSTATE_SETUP_PARAMSZSTATE_STARTZSTATE_ACTIVEZSTATE_RESET_TOKENstateZresult_codetokenZcheck_tokenZ
copy_stater   r   r   runk   sH   













  




















zPMLCopyThread.runc             C   sX   d}xN| j j rRy&| j jd}|tkr4d}tjd W q tjk
rN   P Y qX qW |S )NFr   TzCancel pressed!)r"   ZqsizegetCOPY_CANCELEDr2   r3   r   ZEmpty)r   ZcanceledZeventr   r   r   rG   l  s    zPMLCopyThread.check_for_cancelc             C   s4   | j d k	r0|| jkr0| j j| tjd || _d S )Nr   )r!   r0   ZputrE   rH   )r   messager   r   r   r@   y  s    
zPMLCopyThread.write_queue)NN)r'   r(   r)   r   rM   rG   r@   r   r   r   r   r   X   s   
  r   )sysosos.pathrE   r-   Zbase.sixext.movesr   ior   Zbase.gZ
base.codesbaser   r   r   r   rO   ZSTATUS_IDLErC   ZSTATUS_WARMING_UPrI   rA   rB   r   r   r.   r   r   r   r   r   <module>   s$   %