throbber
PCT
`
`WORLD INTELLECTUAL PROPERTY ORGANIZATION
`International Bureau
`
`
`
`INTERNATIONAL APPLICATION PUBLISHED UNDER THE PATENT COOPERATION TREATY (PCT)
`(51) International Patent Classification 6 :
`(11) International Publication Number:
`WO 99/26130
`GO06F 3/14
`.
`(43) International Publication Date:
`
`27 May 1999 (27.05.99)
`
`
`
`(21) International Application Number: PCT/US98/24342|(81) Designated States: AU, CA, CN, IL, JP, KR, NO, NZ, SG,
`European patent (AT, BE, CH, CY, DE, DK,ES, FI, FR,
`GB, GR, IE, IT, LU, MC, NL, PT, SE).
`
`(22) International Filing Date:
`
`13 November 1998 (13.11.98)
`
`into the quickest screen refresh time for the remote control operation.
`
`Published
`(30) Priority Data:
`
`
`08/970,709 14 November 1997 (14.11.97)|US With international search report.
`Before the expiration of the time limit for amending the
`claims and to be republished in the event of the receipt of
`amendments.
`
`(71) Applicant: E-PARCEL, LLC [US/US]; Suite 300, 29 Crafts
`Street, Newton, MA 02158 (US).
`
`(72) Inventors: KOBATA, Hiroshi; Apartment 201, 50 Watertown
`Street, Watertown, MA 02172 (US). GAGNE, Robert, A.;
`995 Southern Artery, Quincy, MA 02169 (US). TONCHEV,
`Theodore, C.; 162 Sth Street, Cambridge, MA 02141 (US).
`
`(74) Agent: TURANO, Thomas, A.; Testa, Hurwitz & Thibeault,
`LLP, High Street Tower, 125 High Street, Boston, MA
`02110 (US).
`
`(54) Title) REMOTE CONTROL SYSTEM WHICH MINIMIZES SCREEN REFRESH TIME BY SELECTING COMPRESSION
`ALGORITHM
`
`GUARANTEES
`SUCCESSFUL
`TRANSFER
`
`DECOMPRESSION/
`COMPRESSION
`ALGORITHM
`
`(57) Abstract
`
`A system is provided for the remote control of one computer from another in which selectable compression speeds are utilized to
`minimize overall screen refresh time. In one embodiment, an algorithm selection module at one computer chooses the highest compression
`available corresponding to a worst case scenario, followed by measurementof the compression time and the transmission time, with the ratio
`of compression time to transmission time being used to select a decreased compression, thereby to lower compression time and consequently
`lowerthe overall screen refresh time. By adjusting both the send time and the compression time on the transmit side, the above ratio can be
`made to equal one, which correspondsto the most efficient utilization of the available bandwidth and CPU power, which in turn translates
`
`1 of 196
`
`GOOGLEEXHIBIT 1010
`
`

`

`FOR THE PURPOSES OF INFORMATION ONLY
`
`Codes used toidentify States party to the PCT on the front pages of pamphlets publishing international applications under the PCT.
`
`Zimbabwe
`
`Albania
`Armenia
`Austria
`Australia
`Azerbaijan
`Bosnia and Herzegovina
`Barbados
`Belgium
`Burkina Faso
`Bulgaria
`Benin
`Brazil
`Belarus
`Canada
`Central African Republic
`Congo
`Switzerland
`Céte d'Ivoire
`Cameroon
`China
`Cuba
`Czech Republic
`Germany
`Denmark
`Estonia
`
`SI
`SK
`SN
`SZ
`TD
`TG
`
`Slovenia
`Slovakia
`Senegal
`Swaziland
`Chad
`Togo
`Tajikistan
`Turkmenistan
`Turkey
`Trinidad and Tobago
`Ukraine
`Uganda
`United States of America
`Uzbekistan
`Viet Nam
`Yugoslavia
`
`Spain
`Finland
`France
`Gabon
`United Kingdom
`Georgia
`Ghana
`Guinea
`Greece
`Hungary
`Treland
`Israel
`Iceland
`Italy
`Japan
`Kenya
`Kyrgyzstan
`Democratic People’s
`Republic of Korea
`Republic of Korea
`Kazakstan
`Saint Lucia
`Liechtenstein
`Sri Lanka
`Liberia
`
`LS
`
`LU
`
`Lesotho
`Lithuania
`Luxembourg
`Latvia
`Monaco
`Republic of Moldova
`Madagascar
`The former Yugoslav
`Republic of Macedonia
`Mali
`Mongolia
`Mauritania
`Malawi
`Mexico
`Niger
`Netherlands
`Norway
`New Zealand
`Poland
`Portugal
`Romania
`Russian Federation
`Sudan
`Sweden
`Singapore
`
`2 of 196
`
`

`

`WO 99/26130
`
`PCT/US98/24342
`
`REMOTE CONTROL SYSTEM WHICH MINIMIZES SCREEN REFRESH TIME BY SELECTING COMPRESSION
`ALGORITHM
`
`FIELD OF INVENTION
`
`This invention relates to the remote control of computers and moreparticularly to an
`
`emulation system in which screen refresh times associated with one computercontrolling another
`
`computer are minimized taking into account the demographics of the network and the sending
`
`machine.
`
`BACKGROUNDOF THE INVENTION
`
`Oneof the main problems for a consumeris oftentimes incompatibility of his equipment
`
`and the programs sought to be run. Forinstance, an individual may havea printer thatis
`
`incompatible with the driver loaded to operate it. Typically, the user calls an administrator who
`
`10
`
`telephonically instructs the individual as to how to program his computerin order to make the
`
`printer work. This may involve downloadingprinter drivers or other software in a time
`
`consuming process in which the administrator must ask the user questions. The user, on the other
`
`hand, may beinsufficiently knowledgeable to answer the administrator’s questions, resulting in
`
`frustration on both the user’s part and that of the administrator.
`
`In an effort to minimize such frustrations, systems, referred to herein as emulation
`
`systems, have been developed so that the administrator can “see” what is happening at the user’s
`
`terminal.
`
`In order to do this in the past remote control programs have been developed which
`
`capture the low level graphic calls and send them to the administrator’s computerfor display. At
`
`the administrator’s side these low level graphiccalls are utilized to provide the screen at the
`administrator’s side with an exact duplicate ofthe user’s screen. Such a system is commercially
`
`20
`
`available as model ppANYWHERE from Symantec of Cupertino, California.
`
`In this system the
`
`3 of 196
`
`SUBSTITUTE SHEET (RULE 26)
`
`

`

`WO 99/26130
`
`PCT/US98/24342
`
`administrator can understand what is happeningat the user’s side and verbally instruct the user
`
`-2-
`
`whatto do.
`
`Oneof the problems with prior emulation systemsis that the screen refresh at the
`
`administrator’s side is slow, or in general not optimized to the demographics of the network and
`
`the users machine. Forinstance, if the user hasa relatively slow modem connected to the
`
`network, butis utilizing a compression algorithm that emphasizes compression speed over
`
`efficiency, this would have a negative impact on the screen refresh rate. The result for the
`
`administratoris that the administrator would select or click on an icon and have to wait an
`
`inordinate amountof time for a response. The reason for such delays has to do with the
`
`10
`
`demographics of the network and the two machinesin that inappropriate compression algorithms
`
`are chosen.
`
`In an effort to speed up the response of such systems, various techniques have been
`
`utilized. One of these techniques involves the use of low level drivers to capture graphicscalls.
`
`However, these drivers can make the system unstable and require much disk and RAM memory
`
`15
`
`space. As a result, oftentimes the screen refresh is often corrupted when moving graphics are
`
`encountered and hasa stilted appearance.
`
`Theartifacts are in general caused by the order in which the graphiccalls are trapped, and
`
`the different levels of graphics calls which are available. These systemsare also inferior in
`
`displaying bitmapped graphics and moving images. The largest problem with the above systemsis
`
`20
`
`that they can take as much as 10 megabytesof disk space on both sides, and require a rebootafter
`
`installation before using.
`
`In the prior systems there is another problem in that by relying on the graphicscalls the
`
`images are takenin parts and are displayed on the administrator's side in unnatural fashion due to
`
`the arbitrary order in which the graphicscalls are trapped. These systems have to wait for other
`
`4 of 196
`
`

`

`WO 99/26130
`
`PCT/US98/24342
`
`-3-
`
`applications to make graphiccalls in order to know what to update and rely on the applications to
`
`make graphics calls known to the systems. If an application performs a graphics operation not
`
`knownto the system, that informationis not transferred over to the administrator.
`
`Asa result, the image the administrator sees is incorrect, since the entire system is
`
`dependent on other applications to perform knownoperations with the operating system. For
`
`applications that perform operations that are unknown, the system ignores what could potentially
`
`be the problematic area.
`
`Thus, for the newer peripherals coupled to the user's computer, in the past the problem
`
`could be ignored since the administrators system could notseeit.
`
`SUMMARYOF THE INVENTION
`
`In order to speed up the screen refresh potion of the system, low level drivers trapping
`
`graphicscalls are eliminated in favor of increasing speed throughthealteration of the compression
`
`and decompression algorithms used at the user and administrator sides to choose the appropriate
`
`ratio of transmission time and compression time which matches the demographics of the network
`
`and that of the user's computer.
`
`In one embodiment, the speed of the refresh at the
`
`administrator's side is increased to the maximum extent possible to eliminate delays in presenting
`
`the results of an operation on the user's computer.
`
`For instance, assuming that the user's computer has a CPU speed of 200 mhz and further
`
`assuming a local area network with a mean transmission rate of ~800 kilobytes per second, best
`
`20
`
`compression algorithm would providea full screen refresh in less than 0.7 seconds including
`
`compression and transmission. If an incorrect algorithm for modem speed were chosenat the
`
`user's side, such as 28 kilobytes per second, then the refresh time at the administrator's side would
`
`be 2.5 seconds, clearly 300% longer than that achievable if the appropriate compression rate were
`
`chosen.
`
`5 of 196
`
`

`

`WO 99/26130
`
`PCT/US98/24342
`
`-4-
`
`In the above case it would be desirable to choose the lowest compression rate, eq. one
`
`that emphasizes compression speed overresulting size. In this case, e.g., for a local area network,
`
`a compression rate of 13% would yield the above 0.7 second refresh time, given a transmission
`
`speed of ~800kb.
`
`In the subject invention there are four different compression algorithms from which to
`
`choose. Thefirst is the lowest compression rate algorithm comprising a run length encoding
`
`algorithm. This algorithm converts a run of the same byte with a count of that byte. A second
`
`algorithm selectable by the subject system for the next higher compressionrate is a Huffman
`
`compression algorithm preceded by run length encoding, or RLE. A third algorithm selectable by
`
`the subject system for the next higher compressionrate is a modified adaptive Huffman
`
`compression algorithm using a 9 bit tree entry size, again preceded by RLE. Finally, a fourth
`
`compression algorithm is identical to the above but with 13 bit tree entry sixes, for the highest
`
`compressionrate.
`
`Thefirst algorithm is characterized byit's speed. Typically, this algorithm will compress a
`
`15
`
`megabyte in less than 0.2 seconds. This algorithm is to be selected when network bandwidthis
`
`not a problem.
`
`The second algorithm is also characterized by it's speed, but with moreresulting data size
`
`efficiency, and is to be used in high speed networks with heavy traffic.
`
`The third algorithm is characterized by its data size efficiency, in which a megabyteis
`
`20
`
`compressed down to 4 kilobytes. This algorithm is useful for internet applications because of the
`
`internet's heavy traffic and latency.
`
`The fourth algorithm is characterized by its extreme datasize efficiency in that it can
`
`compress a megabyte of screen data down to approximately 2 kilobytes or less. However,the last
`
`twoalgorithmsare relatively slow, eg. 3 secondsvs. 0.2 seconds.
`
`6 of 196
`
`

`

`WO 99/26130
`
`PCT/US98/24342
`
`While the above describes four different compression algorithms, other
`
`-5-
`
`compression/decompression algorithms are within the scope ofthis invention. Regardless, the
`
`compression algorithm selected is based on the rate of send time to compression time, with the
`
`selection seeking to causethis ratio to equal one. In order to select the decompression algorithm
`
`at the user's side, the transmission from the user to the administrator is monitored and the
`
`transmission time is measured for every single refresh.
`
`In one embodiment, this involves
`
`measuring the start of the send and end of the send for a TCP network transmission. Likewise,
`
`the actual compression is measured for every single refresh in which the CPUtick countis taken
`
`at the start of the compression and at the end of the compression; and the end of the compression;
`
`10
`
`and the difference is used to calculate the compression speed in milliseconds.
`
`In one embodiment, the screen is divided into grids and a checksum recorded for each
`
`grid. This check sum is compared to the previous check sum, and whenit differs, the grid is
`
`marked as "dirty". Once the entire screen has been checked,all the dirty grids are collected and
`
`compressed. This is one refresh. This processis done ona grid bygrid basis until the whole
`
`screen has been checked.
`
`The selection process operates as follows. After an initial measurement has been made of
`
`compression time and transmission time, the ratio is calculated, and if less than one, the algorithm
`
`having a lower compressionrate is selected, thereby decreasing compression time.
`
`In one embodiment,the first algorithm selectedis the one having the highest compression
`
`20
`
`rate, assuming the worst case scenario. Thereafter, through an iterative processthe selection
`
`settles on the optimal algorithm given the demographicsof the network and the user's computer.
`
`The compression time and the transmission time is averaged out from refresh to refresh so
`
`that the ratio reflects the overall demographics. The algorithm chosenis that for which the-ratio
`
`is as Close to one as possible.
`
`7 of 196
`
`

`

`WO 99/26130
`
`PCT/US98/24342
`
`-6-
`
`A system is provided for the remote control of one computer from another in which
`
`selectable compression speedsare utilized to minimize overall screen refresh time.
`
`In one
`
`embodiment, an algorithm selection module at one computer chooses the highest compression
`
`available, corresponding to a worst case scenario followed by measurement of the compression
`
`time and the transmission time, with the ratio of compression time to transmission time being used
`
`to decrease compression, thereby to lower compression time and consequently lowerthe overall
`
`screen refresh time. By adjusting both the send time and the compression time on the transmit
`
`side, the above ratio can be made to be equal to one, which correspondsto the most efficient
`
`utilization of the available bandwidth and CPU power, whichin turn translates into the quickest
`
`10
`
`screen refresh time for the remote control operation.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`These and other features of the Subject Invention will be better understood with reference
`
`to the Detailed Description taken in conjunction with the Drawings, of which:
`
`Figure 1| is block diagram of two networked computers, with one computer
`
`15
`
`correspondingto that of the user, and the other computer correspondingto that of the
`
`administrator;
`
`Figure 2 is a block diagram of the computersof Figure | illustrating the
`
`transmission of the information on the screen of the user’s computer to the screen of the
`
`administrator’s computer,
`
`20
`
`Figure 3 is a block diagram of the transmission of modifications specified at the
`
`administrator’s screen to that of the user’s screen indicating the control of the user’s computer by
`
`the administrator’s computer;
`
`Figure 4 is a block diagram of the subject system in which the compression ~-
`
`algorithm to be used by the user’s computeris automatically selected based on the demographics
`
`8 of 196
`
`

`

`WO 99/26130
`
`PCT/US98/24342
`
`-7-
`
`of the network and the user’s computer, whichselection is transmitted to the administrator’s
`
`computerfor use in the corresponding compression algorithmstherein;
`
`Figure 5 is a tableillustrating the header portion for the data transmitted for a
`
`single screen cycle indicating identification of the compression algorithm used;
`
`Figure 6 is a flowchart illustrating the derivation of a ratio of send time to
`
`compression time usedin the algorithm selection module offigure 4; and,
`
`Figure 7 is a graphillustrating a comparison of compression algorithmsin terms of
`
`transfer speed vs. compression speed.
`
`DETAILED DESCRIPTION
`
`10
`
`Referring now to Figure 1 in a typical networked situation a network 10 is used to
`
`connect a terminal A, herein referred to as terminal 12, to terminal B, herein referred to as
`
`terminal 14.
`
`Each of these terminals has a CPU coupled, thereto referred to as 16 and 18, with
`
`keyboards 20 and 22 coupled to respective CPUs. Mice 24 and 26 are coupled to respective
`
`CPUs 16 and 18 asillustrated.
`
`Referring now to Figure 2, in an emulation system, termina! 14 transmits its screen
`
`30 over network 10 to terminal 12, such that its screen is duplicated as 30’ at terminal 12.
`
`It is
`
`the purposeofthis transfer to alert the administrator to exactly whatis displayed at the user’s
`
`terminal so that corrective action can be taken by the user either through verbal instructions given
`
`20
`
`to the user by the administratoror, as illustrated in Figure 3, by the transmission of modifications
`
`34 from terminal 12 to terminal 14 over network 10.
`
`As mentioned hereinbefore,it is important that there be minimal delay between
`
`actions taken by the administrator via keyboard 20 or mouse 24 anda resulting operation on-
`
`terminal 14 which changeis immediately displayed on terminal 12. The ability to quickly display
`
`9 of 196
`
`

`

`WO 99/26130
`
`PCT/US98/24342
`
`-8-
`
`operations and results on the administrator’s terminal significantly reduces administrator
`
`frustration and fatigue, while at the same time providing more efficient transfer of information to
`
`the user or moreparticularly to the user’s terminal. Regardless of whether or not information is
`
`verbally communicatedto the user or is automatically downloaded to the users terminalit is
`
`5
`
`important that the administrator’s screen be refreshed in the shortest possible time.
`
`Factors which affect the screen refresh are the characteristics of the network, herein
`
`referred to as demographics, which includes bandwidth, transmission speed, traffic and other
`
`factors. Likewise, the screen refresh rate at the administrator’s side is intimately connected with
`
`the demographics of the user’s computer, namely CPU speed, modem speed, available memory,
`
`10
`
`and otherfactors.
`
`Referring to Figure 4, as can be seen, each of the CPUs 16 and 18 is provided with a
`
`selectable number of compression and decompression algorithms, with the compression
`
`algorithmsat the user’s side bearing reference characters 40, 42, 44 and 46. These algorithms,in
`
`one embodiment, are ordered from the highest to the lowest compression, the purpose of which
`
`15__will be hereinafter. The algorithm selected at the user’s side is accomplished through the
`
`utilization of an algorithm selection module, 50, which is coupled not only to CPU 18, but also to
`
`each of the algorithms 40-46.
`
`Likewise, at the administrator’s side corresponding decompression algorithms 52, 54, 56
`
`and 58, are coupled with CPU 16 in accordance with algorithm selection module 60, upon
`
`20
`
`detection at 62 of the compression algorithm carried by the transmitted data over network 10.
`
`In operation, each screen refresh cycle is provided with a header containing the type of
`
`compression algorithm selected at the users side by module 50. The data format of the
`
`transmitted datais illustrated in Figure 5 to indicate that as part of the header information the
`
`10 of 196
`
`

`

`WO 99/26130
`
`PCT/US98/24342
`
`algorithm selectedis identified, with the remainder of the data being that associated with a screen
`
`-9.
`
`refresh cycle.
`
`This header is detected at 62 and the appropriate algorithm is introduced to CPU 16 for
`
`appropriate decompression.
`
`5
`
`Referring to Figure 6, in one embodiment, algorithm selection module 50 initially chooses
`
`for transmission that algorithm which possesses the highest compression. The reasonthis is done
`
`is to be able to accommodate the worst case scenario in which the transmission speed is limited to
`
`that of the slowest modem reasonably calculated to be included at the receiver's CPU. Algorithm
`
`select module 50 then computes how longit takes to compress a refresh cycle and how longit
`
`10
`
`takes to send this refresh cycle. It does this each and every refresh cycle to permit a ratio of send
`
`time to compression time to be calculated for each refresh cycle.
`
`If the ration is equal to 1, then this highest compression algorithm is permitted to
`
`continue. Ifthe ratio R of send time to compression timeis less than 1 then the algorithm having
`
`the next lower compressionis selected, which lowers the compression time while at the same time
`
`15
`
`increasing the send time. Measurementsare again taken for the next cycle and theratio
`
`recomputed. This iterative process finally settles upon an algorithm which optimally minimizes
`
`screen refresh time at the administrator’s side.
`
`It will be noted that, as mentioned above, the compression algorithms are ordered
`
`according to compressionso that the iterative process can settle upon the optimal algorithm.
`
`20
`
`Referring now to Figure 7, what is shown is a comparison oftradeoffs in compression
`
`speed and transfer speed for four different compression algorithms having a descending value of
`
`compression from the highest to the lowest. As can be seen the highest transfer speed is for a
`
`local area network at about 800 kilobytes per second, followed by a wide area network at about
`
`11 of 196
`
`

`

`WO 99/26130
`
`PCT/US98/24342
`
`-10-
`
`500 kilobytes per second, followed by the internet at about 80 kilobytes per second, and finally
`
`followed by modemswhich operate at about 10 kilobytes per second.
`
`As can be seen, given the lowest compression algorithm, the transfer time is off the chart
`
`for a modem and barely usable for the internet, while being satisfactory both for wide area
`
`5
`
`networks and for local area networks, since the transfer time is under 1.0 seconds. On the other
`
`hand, for the highest compression algorithm, it can be seen that the overall transfer time varies
`
`little such that few improvements can be made in terms of the type of network over which the
`
`data is transmitted. For algorithms having intermediate compression rates, while the chart
`
`indicates modest improvementin certain instances, significant improvement in refresh times can
`
`10
`
`nonetheless be effectuated in certain circumstances,
`
`It will be appreciated that the graph shows
`
`averages, and that certain screen data compressesbetter with one or the other middle algorithms.
`
`The dynamic algorithm switching ensures that the most appropriate algorithm is always chosen.
`
`Whatis presented below is a program listing in C++ which describes the operation not
`
`only of the automatic selection module but also of the operation of the entire system in the
`
`15
`
`selection of optimal compression and decompression algorithms based on system demographics.
`
`12 of 196
`
`

`

`WO 99/26130
`
`PCT/US98/24342
`
`11
`
`APPENDIX
`
`// Handshake information
`#define REJECT
`0x0000
`#define VERSION
`0x0106
`
`#define WAIT_TIME 15000
`
`// Input codes
`#define INPUT_MOUSE
`#define INPUTKEYBOARD
`#define INPUTDOUBLECLICKMOUSE
`#define INPUTREFRESH
`#define INPUT_CLOSE_CONNECTION
`#define INPUT_HOTKEY
`#define INPUTPAINTINGPAUSE
`#define INPUTPAINTINGRESUME
`
`0x01
`0x02
`
`0x04
`0x05
`0x06
`
`0x03
`
`0x07
`0x08
`
`// hot keys
`#define HOTKEY_ALTTAB
`#define HOTKEY_CTRLESC
`#define HOTKEYCTRLALTDEL
`
`// video codes
`#define VIDEO_PAINT
`#define VIDEONOPAINT
`#define VIDEOCLOSE_CONNECTION
`#define VIDEOPAUSE
`
`#define CONNECTIONTRANSFER
`#define CONNECTIONPAUSE
`
`0x01
`
`0x0010
`0x0011
`0x0012
`
`0x01
`0x02
`0x03
`0x04
`
`0x00
`
`0
`
`#define MONITOR_EXIT_SUCCESS
`#define VIDEOEXITSUCCESS
`#define INPUTEXITSUCCESS
`#define VIDEOEXITHANDSHAKEERROR
`#define VIDEO_EXIT_HARDWARE_ERROR
`#define VIDEOEXITDIRECTDRAWERROR
`6
`#define INPUT_EXIT_HANDSHAKE_ERROR
`#define VIDEOEXITCLIENTDOESNTSUPPORT 7
`#define VIDEOEXITHANG
`
`3
`4
`5
`
`1
`2
`
`8
`
`// Max mouse movement for mouse_event
`#define MOUSE_X Oxffff
`#define MOUSE_Y Oxffff
`
`13 of 196
`
`

`

`WO 99/26130
`
`PCT/US98/24342
`
`12
`
`#define PADDINGDIVISOR 401
`
`// Misc Defines
`#define DIBHEADERMARKER
`#define BITSBYTE
`8
`
`((WORD)
`
`('M' << 8)
`
`|
`
`'B')
`
`// these are for changing the cursors to
`// windows defaults
`// these are not
`in any headers
`#define OCR_NORMAL
`32512
`#define OCR_IBEAM
`32513
`#define OCR_WAIT
`32514
`#define OCR_CROSS
`32515
`#define OCR_UP
`32516
`#define OCR_SIZENWSE
`32642
`#define OCR_SIZENESW
`32643
`#define OCR_SIZEWE
`32644
`#define OCR_SIZENS
`32645
`#define OCR_SIZEALL
`32646
`#define OCR_NO
`32648
`#define OCR_APPSTARTING
`32650
`
`#define AGENTUI WAITING
`to connect.")
`#define AGENTUI CONNECTING
`reugesting connect...")
`#define AGENT_UI_CONNECTED
`connected.")
`
`_T("Waiting for Administrator
`
`_T ("Administrator
`
`_T("Administrator
`
`VLLLLTLLTAELL ATTA ETALAAA
`// Custom windows messages
`
`#define USER_EXITLOOP
`#define USERPAUSE
`#define USER_RESUME
`
`WM_USER+1
`WM_USER+2
`WM_USER+3
`
`LILTILTSTLELET STILTS TELAT AAA
`// Grid defines
`
`12 //12 //6
`#define GRIDHEIGHT
`16 //16 //8
`#define GRIDWIDTH
`#define GRIDCOUNT (GRIDWIDTH*GRIDHEIGHT)
`#define OFFSCREENWIDTH 8 //8 //1
`
`14 of 196
`
`

`

`WO 99/26130
`
`PCT/US98/24342
`
`#define PADDING 8
`
`//8 //4
`
`13
`
`LILTLSTLITTTTTTATA ATTA LAT TATTLE
`// Error codes
`
`#define CONNECTSUCCESS
`#define CONNECTINCORRECT_VERSION
`#define CONNECT_NOT_AVAILABLE
`#define CONNECTAGENTREJECT
`#define CONNECT_HARDWARE_INCOMPATIBLE
`#define CONNECTCLIENT INCOMPATIBLE
`fdefine CONNECT VIDEOHANG
`
`0x02
`0x03
`0x04
`0x05
`
`0x01
`
`0x06
`0x07
`
`cenet
`
`int STATIC BUFFER = 256;
`
`// structures for sending a keyboard or mouse event over
`the connection
`// implementation notes:
`needed for
`inplementation
`// a minimal
`// they are the parameters from keydbevent and mouseevent
`
`these contain for information then
`
`// Description of the protocol
`// Video Loos
`// Input Loop
`
`Struct KeyboardEvent
`{
`
`BYTE Vk;
`// ** fields that are part of the func **//
`BYTE Scan;
`DWORD dwFlags;
`DWORD dwExtraInfo;
`DWORD dwRepeat;
`
`be
`
`Struct OtherEvent
`
`{
`
`be
`
`int HotKeyld;
`
`Struct MouseEvent
`
`--
`
`SUBSTITUTE SHEET (RULE 26)
`
`15 of 196
`
`

`

`WO 99/26130
`
`PCT/US98/24342
`
`14
`
`part of the func
`
`ae ff
`
`dwFlags;
`dx;
`dy;
`fields that are
`dwData;
`dwExtraiInfo;
`dwRepeat;
`
`struct InfoBlock
`
`{
`
`cbCompressedSize;
`long
`long cbFullSize;
`long nDirtyCount;
`DWORD fCompression;
`DWORD fStatus;
`DWORD f£fCommands;
`
`// utilities
`InfoBlock (
`{
`
`)
`
`Clear
`
`void Clear
`
`(
`
`{
`
`);
`
`)
`
`cbCompressedSize
`cbFullSize
`=
`
`nDirtyCount
`fStatus
`
`=
`=
`
`0;
`0;
`0;
`
`0;
`
`fCommands = 0;
`
`} e
`
`)e
`
`num {
`
`PALETTEAVAIL =
`
`Ox0l };
`
`Struct Status
`
`|
`
`Status (
`
`)
`
`fStatus = 0;
`
`bois SetPause (
`|
`fStatus |=
`
`)
`
`PAUSE;
`
`SUBSTITUTE SHEET (RULE 26)
`
`16 of 196
`
`

`

`WO 99/26130
`
`PCT/US98/24342
`
`15
`
`void SetRefresh (
`
`)
`
`fStatus |= REFRESH;
`
`bool Refresh (
`
`)
`
`if ( fStatus & REFRESH )
`return true;
`
`else return false;
`
`boo] Pause ({
`
`)
`
`if (
`
`f£Status & PAUSE )
`return true;
`else return false;
`
`} v
`
`oid Clear
`
`{
`
`}
`
`};
`
`{ ) D
`
`WORD fStatus;
`enum { PAUSE = 0x02, REFRESH = Ox04
`
`}e
`
`Struct DirtyBlock
`{
`
`short xPos;
`shert yPos;
`
`// utilities
`void Mark (
`{
`
`int x,
`
`int y )
`
`xPos =
`yPos =
`
`(short) x;
`(short) y;
`
`};
`
`Struct HardwarelInfo
`{
`
`long ScreenWidth;
`long ScreenHeight;
`long MaxGridCount;
`long ByteCount;
`bool bFail;
`
`HardwareiInfo (
`
`)
`
`SUBSTITUTE SHEET (RULE 26)
`
`17 of 196
`
`

`

`WO 99/26130
`
`PCT/US98/24342
`
`16
`
`{
`
`} v
`
`{
`
`bFail = false;
`
`oid SetFail
`
`(
`
`)
`
`bFail = true;
`
`} b
`
`)e
`
`ool GetFail
`
`(
`
`)
`
`{ return bFail;
`
`}
`
`// Global Utilities
`
`//void ResourceMessageBox (UINT, UINT=IDS_CAPTION,
`DWORD=MB_OK) ;
`
`// clientvideo.h
`
`// July 30, 1997
`// Rob Gagne
`
`// Purpose: Does the job of working with the display in the
`form of
`// a Video object, calcs the checksum, builds the dirty
`buffer and
`// compresses it.
`
`class ClientVideo
`
`{ p
`
`ublic:
`ClientVideo (
`~ClientVideo (
`
`);
`);
`
`bool OpenSession ( HWND });
`void CloseSession ( );
`bool ProcessFrame (
`InfoBlock&, DirtyBlock*, const
`LPBYTE, DWORD );
`
`long TotalBufferSize (
`
`)
`
`{ return m_cbTotalBufferSize;
`
`void QueryHardware ( HardwareInfoé );
`long GridCount
`(
`)
`{ return GRIDWIDTH * GRIDHEIGHT;
`
`int MaxPalSize (
`
`)
`
`{ return m_display.MaxPalSize (
`
`);
`
`bool GetPalette (
`
`InfoBlock&, LPPALETTEENTRY };
`
`// Process iteration commands
`
`_
`
`SUBSTITUTE SHEET (RULE 26)
`
`18 of 196
`
`

`

`WO 99/26130
`
`PCT/US98/24342
`
`17
`
`enum { FORCEPAINT = 0x01 };
`private:
`bool ProcessIiteration (
`
`InfoBlock&, DirtyBlock*, DWORD
`
`i
`
`InfoBlock&, DirtyBlock*,
`
`bool ProcessIterationNoLock (
`DWORD );
`(
`bool CompressBuffer
`bool CollectiInfo ( );
`
`InfoBlock&é, const LPBYTE );
`
`// hardware information
`bool m_bSupportLocking;
`
`// screen & buffer dimensions
`long m_ScreenHeight;
`long m_ScreenWidth;
`long m_OffscreenHeight;
`long m_OffscreenWidth;
`Rect m_rctScreen;
`Rect m_rctOffscreen;
`long m_padding;
`long m_ByteCount;
`
`// hardware interface
`Video mdisplay;
`
`// buffer size info
`DWORD m_cbTotalBufferSize;
`WORD m_cbRowBufferSize;
`int m_BitsPerPel;
`HWND m_hWnd;
`
`// checksum class
`CheckSum m_checksum;
`
`// compression
`CompressionEngine m_compressionEngine;
`
`adminvideo.h
`
`August 4, 1997
`Rob Gagne
`
`manages the admin side of the video transaction
`
`\;
`//
`
`//
`//
`
`//
`
`~.
`
`class AdminVideo
`
`{ p
`
`ublic:
`
`SUBSTITUTE SHEET (RULE 26)
`
`19 of 196
`
`

`

`WO 99/26130
`
`PCT/US98/24342
`
`18
`
`);
`AdminVideo (
`~AdminVideo ( );
`
`bool OpenSession (
`LPPALETTEENTRY );
`void CloseSession ( );
`bool ProcessFrame (
`InfoBlock&, DirtyBlock*, LPBYTE,
`DWORD );
`
`const HardwareInfo&, HWND,
`
`long TotalBufferSize (
`
`)
`
`{ return m_cbTotalBufferSize;
`
`long GridCount
`
`(
`
`)
`
`{ return GRIDWIDTH * GRID_HEIGHT;
`
`int MaxPalSize (
`
`)
`
`{ return m_display.MaxPalSize ( );
`
`bool SetPalette ( LPPALETTEENTRY );
`bool RestoreLostSurface ( );
`
`bool Pause ()
`bool Refresh (
`
`{
`)3
`
`return m_blLost;
`
`}
`
`private:
`bool ProcessIiteration (
`
`)3
`
`InfoBlock&, DirtyBlock*, DWORD
`
`InfoBlock&, LPBYTE );
`(
`bool ExpandBuffer
`void ProcessInfo ( const HardwareInfo& );
`
`// screen & buffer dimensions
`long m_ScreenHeight;
`long m_ScreenWidth;
`long m_OffscreenHeight;
`long m_OffscreenWidth;
`Rect m_rctScreen;
`Rect m_rctOffscreen;
`long m_padding;
`int m_ByteCount;
`
`// hardware interface
`Video m_display;
`HWND m_hWnd;
`
`// buffer size info
`DWORD m_cbTotalBufferSize;
`DWORD m_cbRowBufferSize;
`int m_BitsPerPel;
`
`// surface lost
`
`—
`
`20 of 196
`
`

`

`WO 99/26130
`
`PCT/US98/24342
`
`19
`
`bool m_bLost;
`bool m_bRefresh;
`
`// compression
`CompressionEngine m_compressionEngine;
`
`};
`
`inline bool AdminVideo::Refresh (
`{
`
`)
`
`if (m_bRefresh)
`{
`
`m_bRefresh = false;
`return true;
`
`} r
`
`eturn false;
`
`// ahuff.h
`// header for adaptive huffman class
`
`#define ENDOFSTREAM
`#define ESCAPE
`#define SYMBOL_COUNT
`#define NODE_TABLE_COUNT
`#define ROOTNODE
`#define MAXWEIGHT
`#define TRUE
`#define FALSE
`
`256
`257
`258
`{
`( SYMBOLCOUNT * 2)-+1)
`0
`0x8000
`1
`0
`
`class AdaptHuffComp
`
`{ p
`
`ublic:
`AdaptHuffComp ( );
`~AdaptHuffComp ( );
`
`(LPBYTE, LPBYTE,
`
`long,
`
`long CompressBuffer
`bool=false);
`bool ExpandBuffer
`bool=false);
`
`(LPBYTE, LPBYTE,
`
`long,
`
`long,
`
`private:
`// internal structures
`struct Tree
`
`{
`
`int leaf{ SYMBOLCOUNT ]j;
`
`-_
`
`21 of 196
`
`

`

`WO 99/26130
`
`PCT/US98/24342
`
`20
`
`int next_free_node;
`struct Node
`
`{
`
`unsigned int weight;
`int parent;
`int child_is_leaf;
`int child;
`} nodes[ NODETABLECOUNT J;
`
`};
`Tree m_tree;
`
`);
`void InitializeTree(
`void EncodeSymbol( unsigned int c, BIT_MANIP *output
`
`int DecodeSymbol( BIT_MANIP *input );
`void UpdateModel(
`int c );
`void RebuildTree(
`);
`int j
`void swap_nodes( int i,
`void add_new_node(
`int c );
`
`);
`
`de
`
`//** winsock2 defines **//
`
`#define SDRECEIVE
`#define SDSEND
`#define SDBOTH
`
`0x00
`0x01
`0x02
`
`class Except
`
`{ p
`
`ublic:
`( LPCTSTR );
`Except
`void Trace ( );
`private:
`m_LastError;
`DWORD
`LPCTSTR m_pError;
`
`be
`
`class BaseSocket
`
`{ p
`
`ublic:
`// interface
`BaseSocket
`( );
`~BaseSocket
`(
`);
`
`22 of 196
`
`

`

`WO 99/26130
`
`:
`
`PCT/US98/24342
`
`21
`
`int ) const;
`( LPBYTE,
`int Send
`int ) const;
`( LPBYTE,
`int Recv
`int SendFully
`( LPBYTE,
`int
`) const;
`int RecvFully
`{ LPBYTE,
`int
`) const;
`void EmptyRecvBuffer
`(
`) const;
`bool CanRead
`(
`int = 30 ) const;
`bool CanWrite ( int
`30 ) const;
`
`void Shutdown (
`void Close (
`);
`protected:
`// data
`SOCKET
`sockaddr_in
`int
`bool
`bool
`
`int=SD_SEND );
`
`m_socket;
`m_addr;
`m_nPort;
`m_bCreated;
`m_bConnected;
`
`// protected methods
`void InitClass ( };
`void ResolveName ( int, LPCTSTR );
`void Bind ( int, LPCTSTR=NULL );
`void Create (
`);
`int&);
`( sockaddr_in*, LPTSTR,
`bool
`IPFromAddr
`bool NameFromAddr
`( sockaddr_in*, LPTSTR,
`inté&);
`bool IsIpAddr
`( LPCTSTR, unsigned char*);
`
`};
`
`class ServerSocket
`
`: public BaseSocket
`
`{ p
`
`ublic:
`// methods
`);
`(
`ServerSocket
`void Create ( int nPort );
`void Accept
`( ServerSocketé );
`void Listen ( );
`inté& );
`bool ClientName ( LPTSTR,
`bool ClientIP ( LPTSTR,
`inté );
`bool ServerName ( LPTSTR,
`int& );
`bool ServerIP ( LPTSTR,
`inté );
`private:
`// data
`sockaddr_in
`sockaddr_in
`
`m_client_addr;
`m_resolved_name;
`
`bool ResolveLocalName ( sockaddr_in* );
`
`23 of 196
`
`

`

`WO 9

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket