throbber
PROVISIONAL APPLICATION COVER SHEET
`
`-CERTIFICATE OF EXPRESS MAILING
`I hereby certify that this paper and the documents and/or fees referred to
`as attached therein are being deposited with the United States Postal
`Service on October 19, 1999 in an envelope as "Express Mail Post
`Office to Addressee" service under 37 CFR § 1.1 0, Express Mail No.
`EE59118464SUS, addressed to the Assistant Commissioner for Patents,
`Washington, C 20231.
`
`Attorney Docket No.: IMM1P093+
`
`First Named Inventor: Adam C. Braun
`
`Assistant Commissioner for Patents
`Box Patent Application
`Washington, DC 20231
`
`D Duplicate for
`fee processing
`
`Sir:
`
`This is a request for filing a PROVISIONAL APPLICATION under 37 CFR 1.53( c).
`
`LAST NAME
`
`FIRST NAME
`
`MIDDLE INITIAL
`
`INVENTOR(S)/APPLICANT(S)
`
`RESIDENCE (CITY AND
`EITHER STATE OR FOREIGN
`COUNTRY)
`
`Braun
`Martin
`
`Adam
`Kenneth
`
`c.
`M.
`
`Sunnyvale, CA
`Palo Alto, CA
`
`~J 1I
`~~]
`,;.
`
`TITLE OF INVENTION (280 characters max)
`
`HYBRID CONTROL OF FORCE FEEDBACK FOR
`A HOST COMPUTER AND INTERFACE DEVICE
`
`CORRESPONDENCE ADDRESS
`
`HICKMAN STEPHENS & COLEMAN, LLP
`P.O. Box 52037
`Palo Alto, CA 94303-0746
`(650) 470-7430
`
`ENCLOSED APPLICATION PARTS (check all that apply)
`
`____X_ Specification, Number of Pages ---""24'-'-----
`
`X
`
`Drawings Number of Pages
`
`4
`
`__ Small Entity Statement
`__x___ Other (specify) _C=ov_,_,e=r__,S=h=ee=t'-------
`
`_X_ A check or money order is enclosed to cover the Provisional filing fees.
`_x_ The commissioner is hereby authorized to charge any additional fees which
`may be required or credit any overpayment to Deposit Account No. 50-0384
`(Order No. IMMIP093+).
`
`Provisional Filing Fee Amount ($) 150
`
`At least some of the inventions were made under a contract with an agency of the United States Government.
`
`__ _ No
`
`----"-'X"-- Yes, the name of the U.S. Government agency and the contract number are:
`
`Department of Defense, Contract No. M67004-97-C-0026
`
`Respectfully Submittt6ed,~
`-~~~~~-P~~/~~---------
`SIGNATURE
`TYPED NAME
`Sl..J=::es:::...=R::.. . .:::;R:::;ie::.z:g=-=e~l _ _____ _
`
`DATE 10/19/99
`REGISTRATION NO. =36::..l.,6=5;.;:;,1 ___ _
`
`PROVISIONAL APPLICATION FILING ONLY
`
`APPLE INC.
`EXHIBIT 1015 - PAGE 1
`
`

`
`HYBRID CONTROL OF FORCE FEEDBACK
`FORA HOST COMPUTER AND INTERFACE DEVICE
`
`BY INVENTORS
`Adam C. Braun
`Kenneth M. Martin
`
`BACKGROUND OF THE INVENTION
`
`"
`
`Force feedback interface devices are currently available to interface a person with a
`host computer device such as a personal computer, game console, portable computer, or other
`type of computer. Several different types of consumer level force feedback devices are
`available, including joysticks, mice, steering wheels, gamepads, etc. The computer displays a
`graphical environment such as a game, graphical user interface, or other program and the user
`controls a graphical object or other aspect of the environment by inputting data using the
`interface device, typically by moving a manipulandum or "user manipulatable object" such as
`a joystick handle or steering wheel. The computer also may output force feedback
`information to the interface device which controls the device to output force feedback to the
`user using motors or other actuators on the device. The force feedback is in the form of
`vibrations, spring forces, textures, or other sensations conveyed to the user who is physically
`grasping or otherwise contacting the device. The force feedback is correlated to events and
`interactions in the graphical environment to convey a more immersive, entertaining, and
`functional environment to the user.
`
`In most commercially available force feedback interface devices, the goal has been to
`reduce the processing loading on the host computer by offloading as much of the processing
`as possible to the device itself. Thus, while force feedback devices may have significant
`differences, most of the more sophisticated devices share a common feature: a local
`rnicrocontroller on the device that is able to compute and output forces as directed by high(cid:173)
`level commands from the host computer. This results in devices that produce very high
`quality force feedback output while presenting a minimal processing load on the host system.
`
`However, in order to achieve these capabilities on the device, there is a price to pay.
`The force computations that are required to generate the output can be computationally
`expensive operations. As a result, the rnicrocontroller that is embedded into the interface
`device needs to be sufficiently powerful in order to handle this processing. The end result is
`that the device rnicrocontroller is expensive and the completed interface products have a
`significant cost to consumers. While this extra cost is bearable when the market for these
`devices is new, the cost of these consumer devices is constantly being driven to lower levels
`as the market continues to mature.
`
`In order to reduce the processing power (and thereby the cost) of the device
`rnicrocontroller and maintain the product quality level, other alternate solutions should be
`explored.
`
`1
`
`APPLE INC.
`EXHIBIT 1015 - PAGE 2
`
`

`
`SUNIMARY OF INVENTIONS
`
`A method of the present invention for reducing the processing power of the device
`microcontroller and maintaining the quality of force feedback includes sharing the force
`processing loading between the device microcontroller and the processor of the host
`computer. This sharing of processing results in a "hybrid" device that functions much like
`existing devices but allows a more limited, inexpensive processor to be used in the device and
`allows the host computer to handle enough of the computations to maintain the overall
`quality of the force feedback system. Several inventive embodiments and aspects of a hybrid
`system are described herein.
`
`DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS
`
`FIGURE 1 is a block diagram illustrating a force feedback interface system 10
`suitable for use with the present invention controlled by a host computer system. Interface
`system 10 includes a host computer system 12 and an interface device ("device") 14.
`
`Host computer system 12 is preferably a personal computer, such as a PC or
`Macintosh personal computer, or a workstation, such as a SUN or Silicon Graphics
`workstation. Alternatively, host computer system 12 can be one of a variety of home video
`game systems, such as systems available from Nintendo, Sega, or Sony, a television "set top
`box" or a "network computer", a portable computer, game device, or personal digital
`assistant, etc. Host computer system 12 preferably implements a host application program
`with which a user 22 is interacting via peripherals and interface device 14. For example, the
`host application program can be a video game, medical simulation, scientific analysis
`program, operating system, graphical user interface, or other application program that utilizes
`force feedback. Typically, the host application provides images to be displayed on a display
`output device, as described below, and/or other feedback, such as auditory signals.
`
`Host computer system 12 preferably includes a host microprocessor 16, random
`access memory (RAM) 17, read-only memory (ROM) 19, input/output (I/0) electronics 21, a
`clock 18, a display screen 20, and an audio output device 21. Display screen 20 can be used
`to display images generated by host computer system 12 or other computer systems, and can
`be a standard display screen, CRT, flat-panel display, 3-D goggles, or any other visual
`interface. Audio output device 21, such as speakers, is preferably coupled to host
`microprocessor 16 via amplifiers, filters, and other circuitry well known to those skilled in
`the art (e.g. in a sound card) and provides sound output to user 22 from the host computer 18.
`Other types of peripherals can also be coupled to host processor 16, such as storage devices
`(hard disk drive, CD ROMIDVD-ROM drive, floppy disk drive, etc.), printers, and other
`input and output devices. Data for implementing the interfaces of the present invention can
`be stored on computer readable media such as memory (RAM or ROM), a hard disk, a CD(cid:173)
`ROM or DVD-ROM, etc.
`
`An interface device 14 is coupled to host computer system 12 by a bi-directional bus
`24. The bi-directional bus sends signals in either direction between host computer system 12
`and the interface device, and can be a serial bus, parallel bus, Universal Serial Bus (USB),
`Firewire (IEEE 1394) bus, wireless communication interface, etc. An interface port of host
`computer system 12, such as an RS232 or Universal Serial Bus (USB) serial interface port,
`parallel port, game port, etc., connects bus 24 to host computer system 12.
`
`2
`
`APPLE INC.
`EXHIBIT 1015 - PAGE 3
`
`

`
`,•
`
`Interface device 14 includes a local microprocessor 26, sensors 28, actuators 30, a
`user object 34, optional sensor interface 36, an optional actuator interface 38, and other
`optional input devices 39. Local microprocessor 26 is coupled to bus 24 and is considered
`local to interface device 14 and is dedicated to force feedback and sensor I/0 of interface
`device 14. Microprocessor 26 can be provided with software instructions to wait for
`commands or requests from computer host 16, decode the commands or requests, and
`handle/control input and output signals according to the commands or requests. In addition,
`processor 26 preferably operates independently of host computer 16 by reading sensor signals
`and calculating appropriate forces from those sensor signals, time signals, and stored or
`relayed instructions selected in accordance with a host command. Suitable microprocessors
`for use as local microprocessor 26 include the I-Force Processor from Immersion Corp., the
`MC68HC711E9 by Motorola, the PIC16C74 by Microchip, and the 82930AX by Intel Corp.,
`for example, or more lower-end microprocessors in some embodiments (e.g. if the host is
`sharing significant force processing according the present invention). Microprocessor 26 can
`include one microprocessor chip, or multiple processors and/or co-processor chips, and/or
`digital signal processor (DSP) capability. In some embodiments, the microprocessor 26 can
`be more simple logic circuitry, state machines, or the like.
`
`Microprocessor 26 can receive signals from sensors 28 and provide signals to
`actuators 30 of the interface device 14 in accordance with instructions provided by host
`computer 12 over bus 24. For example, in a preferred local control embodiment, host
`computer system 12 provides high level supervisory commands to microprocessor 26 over
`bus 24, and microprocessor 26 manages low level force control loops to sensors and actuators
`in accordance with the high level commands and independently of the host computer 18. The
`force feedback system thus provides a host control loop of information and a local control
`loop of information in a distributed control system. This operation is described in greater
`detail in U.S. Patent No. 5,739,811 and patent application serial nos. 08/877,114 and
`08/050,665 (which is a continuation of U.S. Patent No. 5,734,373), all incorporated by
`reference herein. The microprocessor 26 is preferably operative to implement local closed
`loop effects dependent on position (and/or velocity, acceleration) of the user manipulatable
`object, as well as operative to receive commands for open loop effects which are calculated
`and directly output when conditions are appropriate, although the host can share in this
`processing according to the present invention, as described in detail below. Microprocessor
`26 can also receive commands from any other input devices 39 included on interface
`apparatus 14, such as buttons, and provides appropriate signals to host computer 12 to
`indicate that the input information has been received and any information included in the
`input information. Local memory 27, such as RAM and/or ROM, is preferably coupled to
`microprocessor 26 in interface device 14 to store instructions for microprocessor 26 and store
`temporary and other data. In addition, a local clock 29 can be coupled to the microprocessor
`26 to provide timing data.
`
`Sensors 28 sense the position, motion, and/or other characteristics of a user object
`34 of the interface device 14 along one or more degrees of freedom and provide signals to
`microprocessor 26 including information representative of those characteristics. Rotary or
`linear optical encoders, potentiometers, optical sensors, velocity sensors, acceleration sensors,
`strain gauge, or other types of sensors can be used. Sensors 28 provide an electrical signal to
`an optional sensor interface 36, which can be used to convert sensor signals to signals that
`can be interpreted by the microprocessor 26 and/or host computer system 12.
`
`3
`
`APPLE INC.
`EXHIBIT 1015 - PAGE 4
`
`

`
`Actuators 30 transmit forces to user object 34 of the interface device 14 in one or
`more directions along one or more degrees of freedom in response to signals received from
`microprocessor 26. In some embodiments, the actuators 30 transmit forces to the housing of
`the device 14 (instead of or addition to object 34) which are felt by the user. Actuators 30
`can include two types: active actuators and passive actuators. Active actuators include linear
`current control motors, stepper motors, pneumatic/hydraulic active actuators, a torquer
`(motor with limited angular range), voice coil actuators, and other types of actuators that
`transmit a force to move an object. Passive actuators can also be used for actuators 30, such
`as magnetic particle brakes, friction brakes, or pneumatic/hydraulic passive actuators.
`Actuator interface 38 can be optionally connected between actuators 30 and microprocessor
`26 to convert signals from microprocessor 26 into signals appropriate to drive actuators 30.
`Optionally, some or all of the functionality of the sensor interface 36 and/or actuator interface
`38 can be incorporated into the microprocessor 26, such as pulse width modulation (PWM)
`controllers for actuators, encoder processing circuitry, etc.
`
`Other input devices 39 can optionally be included in interface device 14 and send
`input signals to microprocessor 26 or to host processor 16. Such input devices can include
`buttons, dials, switches, levers, or other mechanisms. For example, in embodiments where
`user object 34 is a joystick, other input devices can include one or more buttons provided, for
`example, on the joystick handle or base. Power supply 40 can optionally be coupled to
`actuator interface 38 and/or actuators 30 to provide electrical power. A safety switch 41 is
`optionally included in interface device 14 to provide a mechanism to deactivate actuators 30
`for safety reasons.
`
`User manipulable object 34 ("user object" or "manipulandum") is a physical object,
`device or article that may be grasped or otherwise contacted or controlled by a user and
`which is coupled to interface device 14. By "grasp", it is meant that users may releasably
`engage a grip portion of the object in some fashion, such as by hand, with their fingertips, or
`even orally in the case of handicapped persons. The user 22 can manipulate and move the
`object along provided degrees of freedom to interface with the host application program the
`user is viewing on display screen 20. Object 34 can be a joystick, mouse, trackball, stylus
`(e.g. at the end of a linkage), steering wheel, sphere, medical instrument (laparoscope,
`catheter, etc.), pool cue (e.g. moving the cue through actuated rollers), hand grip, knob,
`button, gamepad, gamepad control, or other article. Many types of mechanisms and linkages
`can also be employed to provide the degrees of freedom to the user manipulatable object, as
`well as amplification transmissions such as gears, capstan drives, and belt drives, to amplify
`movement for increased sensor resolution and amplify forces for output.
`
`Hybrid Architecture
`
`The "hybrid" architecture of the present invention allows sharing of the force
`processing between the force feedback interface device and the host computer. In a hybrid
`architecture, the host computer computes at least some of the force values that are sent to the
`actuators of the device, thus reducing the processing requirements of the local microprocessor
`26 on the device. A "force value" is a value that indicates a magnitude and direction of a
`force and which can be directly translated into that force by the actuator and/or by an actuator
`interface, such as a PWM circuit. For example, a force value can be provided for each axis or
`degree of freedom for a device (including direction on that axis), or a force value can include
`In
`a magnitude portion and a direction portion for a force in a multi-dimensional space.
`
`4
`
`APPLE INC.
`EXHIBIT 1015 - PAGE 5
`
`

`
`.-
`
`.·
`
`preferred hybrid embodiments, force values sent from the host system to the device can be
`summed with any force values computed on the device. In some embodiments, the device
`can then perform post-processing on the total force value to implement such features as
`kinematics, linearization, and safety ramping, if such features are present, and the processed
`force value is sent to an actuator as an appropriate signal to be output as a force.
`
`Implementing a hybrid device presents several technical challenges that need to be
`overcome to make this invention feasible. The first significant issue to deal with is the
`architecture of the hybrid system. The basic goal of the hybrid architecture is to employ
`some of the host processing power in order to compute force values over time. One solution
`is to allow the host to precompute the force output values for each time step of a force effect
`that is to be output and transfer this data to the device before the force effect is to be output,
`where the device can output the effect when it is required. This approach allows some
`variance in the time of delivery of the force values to the device as long as the host sends
`values before they are needed to be output. However, since high quality force output requires
`updating the output on the order of hundreds of times a second, this would require the device
`to have sufficiently large memory to store the force samples for a large portion of the effect,
`such as an entire period. The cost of this additional memory, which would likely be
`comparable to the savings obtained by scaling the device microcontroller back, makes this
`option potentially less desirable.
`
`Another solution is to have the host system compute the force outputs in "real time"
`and send this data to the device at a fixed periodic rate. This method would not require the
`extra device memory, as the data is delivered to the device from the host as it is required and
`is directly output by the device. However, the host system would be required to compute the
`output at relatively high output rates.
`
`Another issue that exists, regardless of the system architecture, is the processing
`loading that would be added to the host system. Because the computation of the force output
`values is a relatively complex process, moving this computation loading to the host system
`could have a significant impact on the host system performance. This may be especially true
`in processor-intensive host applications such as a gaming environment, where the host
`processor is already significantly loaded performing the computations to handle the graphics
`and audio output.
`
`Despite these issues, there are two industry trends that will make the shared
`processing architecture become more feasible over time. First, the processing power of
`computer systems is growing rapidly. If we assume that the computations required to handle
`force feedback output remain relatively consistent, then the percentage of the processing
`power required from the host system will only decrease over time. This will continue to
`reduce the impact of any force processing on the host system.
`
`The second trend that aids the shared processing architecture is the introduction of
`newer peripheral communication busses that are designed to support the concept of an
`isochronous or streaming data channel. If the host system were to attempt to generate a fixed
`period output stream using traditional peripheral busses, it would greatly complicate the host
`software. This is especially true for a desktop operating system, such as Microsoft
`WindowsTM, as it is not a goal of these systems to allow true real time operation. Busses that
`have built in support for isochronous data transfers greatly aid the host system and
`significantly reduce the processing burden required to ensure the data transfers occur at a
`
`5
`
`APPLE INC.
`EXHIBIT 1015 - PAGE 6
`
`

`
`.·
`
`,'
`
`fixed frequency. Examples of peripheral busses that provide support for isochronous data
`transfers include Firewire (IEEE 1394) and the Universal Serial Bus (USB).
`
`Embodiments
`
`The following description details investigative work concerning the issues and
`implementations of a consumer force feedback device that uses a shared processing, or
`hybrid, architecture. A basic architecture of host computer and device processor, such as
`shown in Fig. 1, are also described in greater detail in Patent No. 5,734,373 and in Patent No.
`5,959,613 (and copending application no. 09/322,245), which are all incorporated herein by
`reference.
`
`Basic Architecture
`
`The fundamental goal of this invention is to increase the capabilities of a simple, low(cid:173)
`cost force feedback device connected to a host computer by using some of the host system's
`processing to emulate a device with increased processing power. An "emulation layer"
`("emulator") can be implemented on the host to handle this emulation of a highly capable
`device. Many different implementations of the emulator can be provided. However, in some
`systems (such as Microsoft Windows), significant advantages are gained if a very low level
`driver on the host implements the emulation layer on the host system, e.g. a driver situated
`below most other programs running on the host computer in the hierarchy of programs
`running. There are several reasons for this.
`
`;1~
`
`One reason is that, since the host operating system cannot determine whether the
`capabilities being enumerated are being emulated or not, it will treat a fully capable device
`and an emulated device identically. This means that any software that can use the fully
`capable device will be able to use the emulated device without any changes. Another reasons
`is that, by performing the emulation processing at a very low level in the system, there is
`reduced overhead to perform the transfers from the host to device. Since these transfers are
`occurring very frequently, this processing reduction will result in an increase in system
`performance.
`
`FIGURE 2 shows a hierarchy of levels implemented in host software at a general
`leveL An application program is running at the top level, and other application programs
`may also be running in a multi-tasking environment. An application program interface (API)
`communicates with the application to implement function calls and other tasks. For example,
`in the Windows operating system, the Directlnput API can be used with force feedback
`interface devices. Below the API, a force feedback driver is running, which typically is
`specific to a particular device or a class of devices. The force feedback driver can implement
`particular calls and commands to a force feedback device based on API and/or application
`commands and interface with the device at a lower level. The Device Class Driver can be
`situated below the force feedback driver, and is used to determine a class of input device
`based on information provided from the device. For example, in a Windows™ system, the
`Hid.dll and the HidClass.sys files can perform this function. Below the device class driver is
`the preferred position for the emulation layer of the present invention. Below the emulation
`layer is the communication driver which uses the communication hardware to communicate
`directly with the force feedback device over a bus. For example, in a Windows USB system,
`
`6
`
`APPLE INC.
`EXHIBIT 1015 - PAGE 7
`
`

`
`the USBD interface can be used as the communication driver to communicate with the device
`using communication hardware such as the OHCI or UHCI host controllers.
`
`Even though the emulation may function better if it is lower in the system driver
`stack, it is possible to handle the emulation at a different, e.g. higher, level and still function.
`For example, the application program itself could handle the host effects, or a driver just
`below the application program. Herein, the term "driver" is intended to mean any program
`running on the host computer below the application program level.
`
`The methods and embodiments described below, such as the emulator functionality,
`may be implemented with program instructions or code stored on or transferred through a
`computer readable medium. Such a computer readable medium may be digital memory chips
`or other memory devices; magnetic media such as hard disk, floppy disk, or tape; or other
`media such as CD-ROM, DVD, PCMCIA cards, etc. The program instructions may also be
`transmitted through a channel to the host computer (or device, where appropriate) from a
`different source.
`
`Streaming Processing
`
`In order for the host system to effectively perform emulation for the device, it will
`need to execute computational processing to generate the force output in a timely manner.
`Since many other processes are operating on the host system in addition to this force
`processing, generating this timely execution presents several issues.
`
`Determining the frequency of execution for the emulation processing is a bit of a
`tradeoff. It needs to be fast enough that the device appears to be responsive to the requests of
`the host software. However, each execution of the emulation processing will generally have
`some overhead processing time involved. This can take many forms on the host system
`including an interrupt context switch or a thread context switch.
`In determining the final
`frequency of execution, these 2 factors must be balanced against one another in a
`compromise.
`
`There are several ways to implement the timing of the execution of the emulation
`processing. In one embodiment, a timer on the system (derived from the host system clock or
`some other source) can be used to trigger the processing. In another embodiment, the force
`feedback device can generate messages at a specific time interval which are sent to the host
`system to trigger the emulation and to trigger the emulator to send a force value to the device.
`
`However, when communications interfaces that have built in support for fixed period
`streaming channels are used, it is far more efficient to control the timing of the emulation
`based on the communication channel. The way this is done is that the emulator will work to
`try to keep the streaming channel filled with data to be sent to the device. In some operating
`system implementations (e.g., Windows), it is also a requirement that streaming channels are
`continuously filled with data after they are initiated. As each streaming request is completed,
`the emulator is triggered to generate new data to be sent to the device.
`
`the OS
`the emulator and
`illustrates communication between
`FIGURE 3
`communication driver of the host system in one embodiment. If the operating system or
`device driver for the host controller can handle it, it may be possible to submit several
`
`7
`
`APPLE INC.
`EXHIBIT 1015 - PAGE 8
`
`

`
`.·
`
`transfer requests to the lower level driver that are queued to be transmitted to the device
`sequentially. This is important when operating under an operating system, such as Windows
`98, where the emulator layer may be delayed too long in submitting a streaming transfer
`request due to the emulation layer processing to refill the translation layer. The processing
`delay can be caused by other processes running on the host system which use host processing
`time, such as disk drive drivers, audio drivers, communication (e.g. network) drivers, etc. If
`such other processes are running at an equal or higher priority to the emulation layer, then the
`refill processing can be delayed. Thus, by having multiple requests pending in the
`communication driver, the emulation processor will have the time that it takes to completely
`transmit one transfer request in order to refill the other transfer request for transmission.
`
`As shown in Figure 3, the emulation process can provide two transfer requests, A and
`B. Transfer Request A is provided to and begun to be processed immediately by the
`communication driver (e.g., to output data to the device), while Request B is provided to the
`communication driver during the processing of Request A. When Request A is complete, the
`communication driver indicates this completion to the emulator with a trigger, and the
`emulator begins runtime processing (refilling) of Transfer Request A. Meanwhile, after it has
`sent the trigger to the emulator, the communication driver processes Transfer Request B.
`During the processing of Request B by the communication driver, the emulator finishes
`refilling Request A and provides the Request A to the driver. When the communication
`driver finishes Request B and triggers the emulator, the driver can then process the refilled
`Request A and the emulator can begin refilling Request B. This process repeats to allow
`delays to have minimal effect in streaming data to the device.
`
`The implementation of the trigger to cause the emulator to perform subsequent
`computations (such as refilling a request) can be accomplished in many ways. One way is to
`include an interrupt response routine that is executed when the transfer to the device is
`completed. However, in most operating systems, the host controller driver (communication
`hardware) handles interrupts, not the communication driver, so the interrupts are not exposed
`high enough to be acted upon and thus the interrupt option is often unavailable. In a different
`embodiment, a callback routine can be executed when the communication driver has
`completed the transfer. However, callback routines execute with very high priority. If the
`callback routine takes an excessive time to complete, some other processes could be starved
`of processing time. Furthermore, since the callback routine is at an elevated priority, it may
`not be able to access all the memory it needs (paged out) or use all the system services, e.g. it
`may be too high a priority to be able to access paged memory which is intended for lower(cid:173)
`level priority processes.
`
`A preferred implementation provides an execution thread (on a multi-threaded
`system) that is awakened from a suspended state by a synchronization object indicating that a
`pending transfer is completed. This implementation does not have the restrictions of a
`callback routine, as is well known to those skilled in the art.
`
`Processing Sharing
`
`When an emulation driver is being used for a device, it enables a wide spectrum of
`"loading sharing" possibilities. These possibilities can range from the emulation driver
`performing essentially no processing (for a highly capable device) to the emulation driver
`
`8
`
`APPLE INC.
`EXHIBIT 1015 - PAGE 9
`
`

`
`.·
`
`handling all the force effect computations and sending only a raw force output to the device.
`As more of the processing is handled in the emulation driver, the processing power of the
`microprocessor used in the device can be increasingly reduced. For example, if the emulation
`driver handles substantially all force computation, the microcontroller on the force feedback
`device can be as simple as a state machine or simple logic circuitry. However, for a variety
`of reasons, the most effective and preferred solution is one that divides the force effect
`computation/processing between the host system and the device based on the type of the
`effects being generated. This sharing of the processing presents a few issues that must be
`dealt with.
`
`Effect Types
`
`When controlling force feedback devices, the force commands that are sent to the
`device are commonly executed as "effects" or "force effects", which herein is used to indicate
`any type of force sensation, i.e., each effect is a description of a force sensation to be output
`on the device that is represented by the effect's parameters. Some parameters are common to
`all effects. These include values such as the effect type, the duration of the

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