package Ġcom . kh airo . esc po spr inter . connection . usb Ċ Ċ import Ġandroid . hardware . usb .* Ċ import Ġjava . io . IOException Ċ import Ġjava . io . OutputStream Ċ import Ġjava . nio . ByteBuffer Ċ Ċ class ĠU sb OutputStream ( usb Manager : ĠU sb Manager , Ġusb Device : ĠU sb Device ?) Ġ: ĠOutputStream () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġusb Connection : ĠU sb Device Connection ? ĊĠĠĠ Ġprivate Ġvar Ġusb Interface : ĠU sb Interface ? ĊĠĠĠ Ġprivate Ġvar Ġusb Endpoint : ĠU sb Endpoint ? ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġwrite ( i : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . write ( byte ArrayOf ( i . to Byte ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġwrite ( bytes : ĠByteArray ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . write ( bytes , Ġ 0 , Ġbytes . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġwrite ( bytes : ĠByteArray , Ġoffset : ĠInt , Ġlength : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( usb Interface Ġ== Ġnull Ġ|| Ġusb Endpoint Ġ== Ġnull Ġ|| Ġusb Connection Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIOException (" Unable Ġto Ġconnect Ġto ĠUSB Ġdevice .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! usb Connection !!. claim Interface ( usb Interface , Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIOException (" Error Ġduring Ġclaim ĠUSB Ġinterface .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠByteBuffer . wrap ( bytes ) ĊĠĠĠĠĠĠĠ Ġval Ġusb Request Ġ= ĠU sb Request () ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusb Request . initialize ( usb Connection , Ġusb Endpoint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! usb Request . queue ( buffer , Ġbytes . size )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIOException (" Error Ġqueue ing ĠUSB Ġrequest .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusb Connection !!. request Wait () ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusb Request . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġflush () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( usb Connection Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusb Connection !!. close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusb Interface Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusb Endpoint Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusb Connection Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġusb Interface Ġ= ĠU sb Device Helper . find Printer Interface ( usb Device ) ĊĠĠĠĠĠĠĠ Ġif Ġ( usb Interface Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIOException (" Unable Ġto Ġfind ĠUSB Ġinterface .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġusb Endpoint Ġ= ĠU sb Device Helper . find Endpoint In ( usb Interface ) ĊĠĠĠĠĠĠĠ Ġif Ġ( usb Endpoint Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIOException (" Unable Ġto Ġfind ĠUSB Ġendpoint .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġusb Connection Ġ= Ġusb Manager . open Device ( usb Device ) ĊĠĠĠĠĠĠĠ Ġif Ġ( usb Connection Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIOException (" Unable Ġto Ġopen ĠUSB Ġconnection .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }