
    =	faE                     >   d dl Z d dlZddl 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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 ZBd ZCddZDd dZEy)!    N   )*                @                  	   
                     J   $   3   c                 X    d}t        j                  || d d       \  }}}}|dz  }||||fS )Nz<IHBBr      )structunpack)bufferfmt	block_len
header_len	data_type
page_flagss         /usr/share/hplip/base/mfpdtf.pyparseFixedHeaderr&   p   s?    
C39==fRaj3Q0Iz9jd"Jj)Z77    c                 ~    |t         k(  r*d}t        j                  || d d       \  }}}}}}||||||fS |t        k(  ry y )Nz<BBHHHHr   )DT_SCANNED_IMAGESr   r   DT_FAX_IMAGES)	r   r#   r    	major_ver	minor_ver	src_pagescopies_per_pagezoomjpeg_q_factors	            r%   parseImageVariantHeaderr1   v   s]    %%PVP]P]^acijmkmcnPoM	9i$)Y}TT	m	# 
$r'   c                    t        j                  d| d         d   }|t        k(  rDd}t        j                  || d t               \  }}}}}}}	}
}}}}}||k(  sJ |||||||	|
|||||ffS |t        k(  r0d}t        j                  || d t
               \  }}}||k(  sJ |||ffS |t        k(  r6d}t        j                  || d t               \  }}}}}}||k(  sJ ||||||ffS t        j                  d|z         t        t              )N<Br   z<BBHHHIIIHHIIIz<BBHz<BBBBIIzError: Invalid record type: %d)r   r   RT_START_PAGESOP_RECORD_SIZE	RT_RASTERRASTER_RECORD_SIZERT_END_PAGEEOP_RECORD_SIZElogerrorErrorERROR_INTERNAL)r   record_typer    idencodingpage_num	black_ppr	black_bpp	black_rppblack_hort_dpiblack_vert_dpicmy_pprcmy_bppcmy_rppcmy_hort_dpicmy_vert_dpiunused	data_sizeunused1unused2unused3
black_rowscmy_rowss                          r%   parseRecordrS   ~   sy   --fQi03Km#MM#v&678 	WHh	9iQ_ahjqsz  }I  KW[   Hh	9iYgipry  |C  EQ  S_  `  `  	`			! &c6:M;M3N OFI[   FI&&&		#>DmmCQWXhYhQi>j;GWgz8[   GWgz8DDDII.<=

r'   c                 	   t        t        d            \  }}}}d\  }	}
}}}d}|	|k7  rt        j                  d|	z         |	|k(  r|r|}	ne|dk(  r(| j	                  |      \  }}t        |      }| |       }t              \  }}}}|t        z
  |t        z
  }}t        j                  dt        |      t        |      ||||||fz         |t        z  }|t        d  }|}	t        j                  d|||fz         |t        z  r|}	n|dkD  r|}	n|	|k(  rt        k(  rVt        |      \  }}}}}}t        j                  d||||||fz         |t        d  }|t        z  }|t        z  }|t        z  }n4|t        k(  rt        j                  d	       nt        j                  d	       t        j                  d|||fz         |dkD  rt        j                  d
       |}	|}	|dk(  r|}	|	|k(  rt              \  }}|t        k(  r|\  }}}} }!}"}#}$}%}&}'}(t        j                  d||fz         |t         d  }|t         z  }|t         z  }|dk7  rt        j                  d       |}	K|r|}	n|}	t        j                  d|||fz         o|t"        k(  rz|\  })}*t        j                  d|*|*fz         |t$        d  }|t$        z  }|t$        z  }t        j                  d|||fz         |dkD  r{|dkD  rvt        j                  d       t        |      }+t        j                  d|+|+fz         |j'                  |d |        ||+z  }||+z  }|dk7  rt        j                  d       |}	N|dkD  r~|rn{t        j                  d       | j	                  |      \  }}| |       }t        |      }+t        j                  d|+|+fz         |j'                  |d |        |
|+z  }
||+z  }|dkD  r~|dk7  rt        j                  d       |}	|}	|t(        k(  r|\  },}-}.}/}0t        j                  d|/|0fz         |t*        d  }|t*        z  }|t*        z  }|dk7  rt        j                  d       t        j                  d|||fz         t,        z  s	|t        z  r|}	n|}	|	|k7  rt        j                  d|
z         |S )Nr   )r   r   r   r   r   Fz**** State %d ****r   zbFixed header: (datalen=%d(0x%x),blocklen=%d(0x%x),headerlen=%d(0x%x),datatype=0x%x,pageflags=0x%x)z Data: data=%d,block=%d,header=%dz[Variant header: (major/minor=%d/%d,src_pages=%d,copies_per_page=%d,zoom=%d,jpeg_q_factor=%dzUnsupported data typezHeader size error.z+Start page record: (encoding=0x%x, page=%d)zBlock size error.z#Raster record: (data size=%d(0x%x))zWriting remainder of data...zData len=%d(0x%x)zData size errorz Reading more data from device...z,End page record: (black_rows=%d,cmy_rows=%d)zRead %d bytes)listranger:   debugreadChannellenr&   FIXED_HEADER_SIZEPAGE_FLAG_END_STREAMr)   r1   IMAGE_VARIANT_HEADER_SIZEr*   r;   rS   r4   r5   r6   r7   writer8   r9   PAGE_FLAG_END_DOC)1device
channel_idstreamsingle_readcallback	STATE_ENDSTATE_FIXED_HEADERSTATE_VARIANT_HEADERSTATE_RECORDstatetotal_bytesblock_remainingheader_remainingdata_remainingendScanfieldsdatar!   r"   r#   r$   r+   r,   r-   r.   r/   r0   r>   recordr@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   data_lenrN   rO   rP   rQ   rR   s1                                                    r%   readChannelToStreamrr      sb   HLUSTXEI!#7LYIE;)9>G
9
		&./&&!"%11*=!$T'&jG;KD;Q8Iz9j09:K0KZXiMi-OIIzTCIy)ZU^`jkl m//N)*+D EII8NO]m;nno00!!#, **--Xoptv  YAU	9i$		w	9ot][\ ]567#<< $== ";;m+		12 		12II8NO]m;nno!#		./! E!#*l""-d"3Km+LRJ(Iy)^UcWg|\		G8U]J^^_O,-?2/1"a'II12%E%E.EII@NTceuCvvw	)$*!			?9iBXXY./0#55"44		<P_aq?rrs"Q&>A+=II<="4yHII1Xh4GGHLL&6!78#x/O"h.N%*		"34 ) %)II@A#)#5#5j#ALFD+"**"4yHII1Xh4GGHLL&6!788+K#x/O &)" #a'II12%E*+BH?':x		HJX`KaabO,-?2/1"a'II12		<P_aq?rrs 11 44%E.E] 9
` IIo+,Nr'   c                    t        j                         }|j                  t        j                  dd             t
        }|r%| t        k(  r
|t        z  }n| t        k(  r	|t        z  }|j                  t        j                  d|             |j                  t        j                  d|              |j                  t        j                  d|             |r| t        k(  rz|j                  t        j                  dt        t                     |j                  t        j                  dd             |j                  t        j                  dd             n| t        k(  r|j                  t        j                  dt        t                     |j                  t        j                  dt                     |j                  t        j                  dd             |j                  t        j                  dt                     |j                  t        j                  dd             |j                  d       |j                  d	       |j                  d	       |j                  dd       | t        k(  r:|7|d
   }|j                  |       |j                  ddt        |      z
  z         y y | t        k(  ry y )Nz<Ir   z<Hr3   z<BBr   r   z                    z                    zdial-string )ioStringIOr]   r   packrZ   DT_DIAL_STRINGS DIAL_STRINGS_VARIANT_HEADER_SIZEr*   FAX_IMAGE_VARIANT_HEADER_SIZE	MAJOR_VER	MINOR_VERSRC_HOSTTTI_NONErY   )r#   r$   send_variantro   blockr"   dial_strings          r%   buildMFPDTFBlockr   2  s   
 KKME	KKD!$%"J'::J-'77J	KKD*-.	KKD),-	KKD*-.'KKE9i@AKKD!,-KKD"-.-'KKE9i@AKKD(34KKD!,-KKD(34KKD!,-KK	"KK	"KK	"KKa O#}-KKK$KK3{#3 345 
 
m	# 
$r'   )TN)r   FN)Fr   ru   gcodesNEW_PAGEEND_PAGENEW_DOCUMENTEND_DOCUMENT
END_STREAMRESERVED_20RESERVED_40RESERVED_80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*   r)   rx   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_TABLEr4   r6   r8   rZ   r\   ry   rz   r5   r7   r9   DIAL_STRING_RECORD_SIZEPAGE_FLAG_NEW_PAGEPAGE_FLAG_END_PAGEPAGE_FLAG_NEW_DOCr^   r[   SRC_UNKNOWNr}   SRC_SCANNERSRC_HOST_THEN_SCANNERSRC_SCANNER_THEN_HOSTr~   TTI_PREPENDED_TO_IMAGETTI_OVERLAYED_ON_IMAGEr{   r|   r&   r1   rS   rr   r    r'   r%   <module>r      s  .  	   
           
   	    #$   "                		8 6Ur,r'   