throbber
United States Patent
`US 6,799,318 B1
`(10) Patent No.:
`(12)
`Davison et al.
`(45) Date of Patent:
`Sep. 28, 2004
`
`
`US006799318B1
`
`(75)
`
`(54) METHOD HAVING MULTIPLE INTERFACES
`WITH DISTINGUISHED FUNCTIONS AND
`COMMANDSFOR PROVIDING SERVICES
`TO A DEVICE THROUGH A TRANSPORT
`.
`.
`Inventors: Eric Davison, Seattle, WA (US); ;
`Stanley W. Adermann, Sammamish,
`WA (US)
`.
`.
`;
`.
`(73) Assignee: Microson Corporation, Redmond, WA
`(US)
`:
`Subject t
`patentWgextended oradjustedunder 35
`US.C. 154(b) by 669 days.
`
`*)
`
`(")
`
`.
`Notice:
`
`Notice
`
`sas
`discl
`
`the
`
`t
`
`f th
`
`.
`
`(21) Appl. No.: 09/587,753
`(22)
`Filed:
`Jun. 5, 2000
`
`Related U.S. Application Data
`
`(63) Continuation-in-part of application No. 09/552,320,filed on
`Apr. 24, 2000, now abandoned.
`Int. C07 oo crete csseseesesnees G06F 3/00
`(51)
`(52) U.S. Cl
`719/328
`OS.
`CD. cc eecsecseeeecseetenseneeeeecneseneeesenaes
`(58) Field of Search oo... cece 709/228, 230,
`709/250, 302; 719/328; 717/108
`.
`References Cited
`U.S. PATENT DOCUMENTS
`
`(56)
`
`
`
`8/1992 Harvey etal... 709/228
`5,136,716 A *
`1/1995 Wold etal. w.ccce 717/162
`5,386,568 A *
`6/1995 Britton et al. 370/389
`5,425,028 A *
`8/1996 Pettus wee 709/228
`5,548,723 A *
`5,572,724 A * 11/1996 Watanabeet al.
`........... 707/200
`5,612,898 A
`3/1997 Huckins
`............ 709/203
`5,706,437 A
`1/1998 Kirchneret al.
`5,710,908 A *
`1/1998 Mam ou... eeeeeeee 709/230
`5,758,186 A
`5/1998 Hamiltonet al.
`5,987,517 A * 11/1999 Firth etal. 709/230
`
`2/2000 Lavey etal. 0... 707/10
`6,023,698 A *
`2/2000 Fujii et al. oe 719/328
`6,032,198 A *
`
`6/2001 Minard...........
`« 707/104.1
`6,247,020 B1 *
`
`......00... 709/245
`6,351,776 Bl *
`2/2002 O’Brien et al.
`6/2002 Mooreet al. oe. 709/330
`6,408,342 Bl *
`8/2002 Clough et al. 0... 709/227
`6,434,617 B1 *
`
`6,591,295 BL *
`7/2003 Diamondetal. ........... 709/217
`OTHER PUBLICATIONS
`Artisoft, “Using NodeRunner/SI with NDIS,” 1993, 8 pages.
`Moore,“Windows, Wireless Architecture”, 71 pages.
`Ray et al., “Bluetooth Stack in Windows”, 30 pages.
`Specification of the Bluetooth System, v1.0B, Dec. 1, 1999.
`Riku Mettala et al., Bluetooth ProtocolArchitecture (White
`Paper), v1.0, Nokia Mobile Phones, Sep. 29, 1999.
`Brent Miller et al., Mapping SalutationArchitectureAPIs to
`Bluetooth Service Discovery Layer (White Paper), v1.0,
`IBM Corporation, Jul.
`1, 1999.
`?
`,
`IEEE Standard, 802.11, Part 11: Wireless LAN Medium
`Specifi-
`(MAC) and Physical Layer(P:
`Access Control
`y
`y
`P
`cations, 1° Ed. 1999, and Supplements 802.11a-1999 and
`802.11b-1999.
`Bob O'Hara and Al Petrick, IEEE 802.11 Handbook A
`Designer’s Companion, Dec. 1999.
`Pat Megowanetal., IrDA Object Exchange Protocol, v1.2,
`Counterpoint Systems Foundry, Inc. Microsoft Corporation,
`Mar. 18, 1999.
`.
`.
`* cited by examiner
`Primary Examiner—Krisa Lim
`T4) A
`A
`Firm—Leydig,
`ttorney,
`Agent, or Firm—Leydig,
`©?)
`ABSTRACT
`A protocol independent implementation of the OBEX speci-
`fication that allows OBEX applications to communicate
`without having to know transport specific details is pre-
`sented. OBEXservices reside on top of an OBEX layer and
`the layer communicates with the transports with a interface
`that
`is independent of the transport protocol and other
`interfaces are provided when connections are created.
`OBEXapplications use the protocol independentinterface to
`communicate with OBEX services and other applications
`and to transfer data via the transports. A primary interface is
`provided that has commands to enumerate transports and to
`enumerate devices. Other interfaces include a transport
`interface for communicating with a transport, a service
`interface for determining when an incoming connection
`arrives, and a device interface for communicating with the
`at least one device.
`
`Voit & M
`Voit
`
`ayer,
`
`Ltd
`Ltd.
`
`15 Claims, 7 Drawing Sheets
`
`Exhibit 1028
`Apple, et al. v. Uniloc
`IPR2019-00251
`
`
`
`
`
`
` Con)
`
`
`
`Laem]
`
`
`“TransponSocket eiface
`Functions.
`
`
`Ghose aSocket
`IneriaveFunctions.
`connection ‘Service Connections Interface
`
`
`Listenfornsaming connections
`nner
`Enumerate properties abouta
`
`socket
`‘on acennecion
`Kkcon,
`Connectto 2devine
`
`
`
`|seraataonacemnecion_|connector
`Receive dataon aconnection
`
`
`Enumeratepropertiesabout&
`ServiInterface Functions
`Functions
`‘Shutdownanstance of@
`{slenforan Incoming
`Connestion
`an
`Senice TT
`‘Setapassword required10
`Eo
`55 aSerica
`
`‘TranspodInterfaceFunctions
`Initializeavanspor,
`Createasocket
`a
`Enumeratealistofdevicesof
`pe
`‘Specified tyari
`Enumerateproperies requiredta
`createaltering Eocket
`8
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`‘Stream Interface Functions
`
`Writedatatoastream
`specified
`Instructsteamtowite datatoa
`specifiedfle
`Devies Interface Functions
`Connecttaadevior:
`
`‘Send dalatoadevice
`
`
`
`
`
`
`
`
`
`
`
`Primary Interface Functions
`
`Listenfor an incoming command
`
`Exhibit 1028
`Apple, et al. v. Uniloc
`IPR2019-00251
`
`1
`
`

`

`U.S. Patent
`
`Sep. 28, 2004
`
`Sheet 1 of 7
`
`US 6,799,318 B1
`
`38
`
`37
`
`36
`
`35
`
`25
`
`26
`
`24
`
`22
`
`DATA
`
`PROGRAM
`
`MODULES
`
`PROGRAM
`
`OTHER
`
`PROGRAM
`
`APPLICATION
`
`SYSTEM
`
`OPERATING
`
`(RAM)
`
`(ROM)
`
`BIOS
`
`35
`
`SYSTEM
`PROGRAMS
`PROGRAM
`MODULES
`PROGRAM
`DATA
`
`SYSTEMMEMORY
`
`
`OPERATING|APPLICATION
`
`
`INTERFACE|INTERFACE}INTERFACE
`363738
`HARDDISK;MAGDISK;OPTICAL
`323334
`
`DRIVEDRIVEDISKDRIVE
`
`PERSONALCOMPUTER
`PROCESSINGVIDEO
`
`218
`UNITADAPTER
`
`
`
`
`
`23
`
`4
`
`INTERFACE
`
`
`
`SERIALPORT
`
`
`
`INTERFACE
`
`NETWORK
`
`53;
`
`47
`
`36
`
`PROGRAMS
`
`APPLICATION
`
`COMPUTER
`
`REMOTE
`
`2
`
`
`
`
`
`
`
`
`
`
`

`

`US 6,799,318 B1
`
`106
`
`return
`error
`
`U.S. Patent
`
`Sep. 28, 2004
`
`Sheet 2 of 7
`
`Application reads transport
`specific data
`
`Application passes data to
`OBEXlayer API
`
`s transpo
`installed?
`
`100
`
`102
`
`108
`
`interface to appliction
`
`load transport and pass
`
`application data
`
`return transport independent
`
`110
`
`FIG. 2
`
`3
`
`

`

`U.S. Patent
`
`Sep. 28, 2004
`
`Sheet 3 of 7
`
`US 6,799,318 B1
`
`
`
`JaAe7XAGO
`
`SIDINIBS
`
`syodsuel)
`
`OL
`
`cel
`
`O€L
`
`
`
`S8TINIBSXAGO
`
`col
`
`NpWodsuel|X3gO
`
`xdgO x3gO
`¢cLyodsues|yodsuel|yodsued]
`X30x3g0
`
`€Ola
`
`4
`
`
`
`

`

`U.S. Patent
`
`Sep. 28, 2004
`
`Sheet 4 of 7
`
`US 6,799,318 B1
`
`9S1
`
`x3g0
`
`NyodsuesL
`
`boOls
`
`cel
`
` _/|weeennnneeeeeeeneeneeeedamenennnereeneeeBeretareneameneccenedareraseussesensserenenenwfAannnnnacsesanaesenanonsssesesceprsssesoesrtTay
`
`
`
`
`
`
`Jasmoigxoqu|xOqu|xoqu|xoqu|
`
`
`
`JaplorYNEJSqNEjeqyNejoqNEjsEq
`YOOSUIAA
`Xxago0s949}X4|°XAEGO|XAEgO
`PSLZl|Ost
`—_;[vo
`
`5
`
`
`
`

`

`U.S. Patent
`
`Sep. 28, 2004
`
`Sheet 5 of 7
`
`US 6,799,318 B1
`
`170
`
`
`
`
`
`
`
`Create primary
`interface
`
`Read and Pass
`transport data blob
`
`174
`
`
`Listen for
`
`
`incoming
`connections
`
`
`176
`
` Incoming
`
`connection
`
`
`
`FIG. 5
`
`
`
`172
`
`received?
`
`
`
`YES
`
`Wait for incoming
`command
`
` 178
`
`
`
`
`Incoming
`command
`received?
`
`180
`
`Perform read or write
`operation
`
`182 Has
`
`
` 184
`
`connection
`dropped?
`
`
`
`6
`
`

`

`U.S. Patent
`
`Sep. 28, 2004
`
`Sheet 6 of 7
`
`US 6,799,318 B1
`
`FIG. 6a
`
`
`
`
`7
`
`

`

`U.S. Patent
`
`Sep. 28, 2004
`
`Sheet 7 of 7
`
`US 6,799,318 B1
`
`Instruct steam to use data from a
`specified file
`Enumerate properties required to
`instruct steam to write data to a
`
`createalistening socket
`specified file
`
`
`
`Stream Interface Functions
`
`Read data from a stream
`
`Write data to a stream
`
`FIG. 6b
`
`Primary Interface Functions
`
`Enumerate transports
`
`Enumerate devices
`
`Register a service
`
`
`
`
`
`
`
`
`
`
`
`
`Device Interface Functions
`
`Service Interface Functions
`
`Listen for an Incoming
`Connection
`
`Shut downan Instance of a
`Service
`
`Set a password required to
`access a Service
`
`
`
`
`
`
`
`
`
`
`Transport Socket Interface
`Functions
`
`Close a Socket
`
`Listen for incoming connections
`
`Enumerate properties about a
`socket
`
`Connectto a device
`
`Service Connections Interface
`Functions
`
`Accept a connection
`
`Close a connection
`
`Listen for an incoming command
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Transport Interface Functions
`
`Initialize a transport
`
`Create a socket
`
`
`
`
`Enumeratea list of devices of a
`specified type
`
`Close a transport
`
`Transport Connection
`Interface Functions
`
`Send data on a connection
`
`Receive data on a connection
`
`Enumerate properties about a
`connection
`
`
`
`
`
`
`
`
`
`8
`
`

`

`US 6,799,318 B1
`
`1
`METHOD HAVING MULTIPLE INTERFACES
`WITH DISTINGUISHED FUNCTIONS AND
`COMMANDSFOR PROVIDING SERVICES
`TO A DEVICE THROUGH A TRANSPORT
`
`RELATED APPLICATIONS
`
`This application is a continuation in part of U.S. patent
`application No. 09/552,320 filed Apr. 24, 2000, now aban-
`doned.
`
`TECHNICAL FIELD
`
`This invention relates generally to communication
`between electronic devices and, more particularly, relates to
`methods to transfer data and objects between electronic
`devices.
`
`BACKGROUND OF THE INVENTION
`
`OBEX (Object Exchange) is a protocol that is similar to
`the Hypertext Transfer Protocol (HTTP). It provides the
`same basic functionality in a lighter fashion using a client-
`server model. OBEX consists of a protocol and an applica-
`tion framework. The application frameworkis built on top of
`the protocol and is used to ensure interoperability between
`devices and applications using OBEX. The protocol consists
`of a format for communication between devices and appli-
`cations and a set of functions. The functions include initi-
`
`ating a connection, disconnecting a connection, sending an
`object from a client
`to a server (push operation), and
`requesting that a server return an object to a client (pull
`operation).
`IrDA, and
`there are 3 transports—IP,
`Presently,
`Bluetooth—that OBEX can operate over. Applications and
`devices need to know transport specific information before
`using a particular transport. OBEX applications typically
`have to be re-written each time a transport using a different
`protocol becomes available. More transports are becoming
`available that use OBEX. Re-writing OBEX applicationsfor
`each newtransport is time consuming and destabilizing and
`adds to both the developmentandtesting effort. A method is
`needed whereby applications can be run on newtransports
`that become available without having to be re-written.
`
`SUMMARYOF THE INVENTION
`
`In view of the aforementioned problems, OBEXis imple-
`mented in such a way as to expose a protocol independent
`interface. This allows OBEX applications to communicate
`without having to know transport specific information. The
`main advantage to this approach is that OBEX applications
`will not need to be re-written when a new protocol for
`OBEX becomes available. Only a small piece of transport
`specific data needs to be updated in orderfor the application
`to work over the new transport.
`The OBEXservicesreside on top of an OBEXlayer. The
`OBEXlayer communicates with the transports with a inter-
`face that is independent of the transport protocol and other
`interfaces are provided when connections are created. The
`OBEXlayerallocates packets and post them downto the
`transports for incoming data from an application or module.
`Whenan incoming data packet is received from a transport,
`the layer determines which of the OBEX services should
`receive notification, abstracts the OBEX data and provides
`it
`to the appropriate OBEX services. The OBEX layer
`generates outbound packets for data passed into the OBEX
`layer by an OBEXservice. The layer generates the correct
`headers for the protocol being used and sends the outbound
`
`2
`packets downto the appropriate transport for sending to an
`application or module.
`Additional features and advantages of the invention will
`be made apparent from the following detailed description of
`illustrative embodiments which proceeds with reference to
`the accompanying figures.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`10
`
`15
`
`20
`
`25
`
`30
`
`While the appended claims set forth the features of the
`present invention with particularity, the invention, together
`with its objects and advantages, may be best understood
`from the following detailed description taken in conjunction
`with the accompanying drawings of which:
`FIG. 1 is a block diagram generally illustrating an exem-
`plary computer system on which the present
`invention
`resides;
`illustrating the steps taken to
`FIG. 2 is a flowchart
`determine which transport to use in accordance with the
`teachings of the invention;
`FIG. 3 is a block diagram illustrating an embodiment of
`an operating system for directing data through a plurality of
`transport providers;
`FIG. 4 is a block diagram illustrating OBEX services and
`OBEXtransports in the operating system of FIG. 3;
`FIG. 5 is a block diagram illustrating the steps of sending
`an object between devices;
`FIG. 6a is a block diagram illustrating the steps of
`providing a service to a device through a transport provider;
`and
`
`FIG. 6b is a block diagram illustrating the functions of the
`interfaces of FIG. 6a.
`
`DETAILED DESCRIPTION OF THE
`INVENTION
`
`Turning to the drawings, wherein like reference numerals
`refer to like elements, the invention is illustrated as being
`implemented in a suitable computing environment.
`Although not required, the invention will be described in the
`general context of computer-executable instructions, such as
`program modules, being executed by a personal computer.
`Generally, program modules include routines, programs,
`objects, components, data structures, etc. that perform par-
`ticular tasks or implement particular abstract data types.
`Moreover, those skilled in the art will appreciate that the
`invention may be practiced with other computer system
`configurations,
`including hand-held devices, multi-
`processor systems, microprocessor based or programmable
`consumerelectronics, network PCs, minicomputers, main-
`frame computers, and the like. The invention may also be
`practiced in distributed computing environments where
`tasks are performed by remote processing devices that are
`linked through a communications network.In a distributed
`computing environment, program modules maybe located
`in both local and remote memorystorage devices.
`With reference to FIG. 1, an exemplary system for imple-
`menting the invention includes a general purpose computing
`device in the form of a conventional personal computer 20,
`including a processing unit 21, a system memory 22, and a
`system bus 23 that couples various system components
`including the system memoryto the processing unit 21. The
`system bus 23 may be any of several types of bus structures
`including a memory bus or memory controller, a peripheral
`bus, and a local bus using any of a variety of bus architec-
`tures. The system memory includes read only memory
`(ROM) 24 and random access memory (RAM) 25. A basic
`
`45
`
`50
`
`55
`
`60
`
`65
`
`9
`
`9
`
`

`

`US 6,799,318 B1
`
`3
`input/output system (BIOS) 26,containing the basic routines
`that help to transfer information between elements within
`the personal computer 20, such as during start-up, is stored
`in ROM 24. The personal computer 20 further includes a
`hard disk drive 27 for reading from and writing to a hard
`disk, not shown, a magnetic disk drive 28 for reading from
`or writing to a removable magnetic disk 29, and an optical
`disk drive 30 for reading from or writing to a removable
`optical disk 31 such as a CD ROM orother optical media.
`The hard disk drive 27, magnetic disk drive 28, and
`optical disk drive 30 are connected to the system bus 23 by
`a hard disk drive interface 32, a magnetic disk drive inter-
`face 33, and an optical disk drive interface 34, respectively.
`The drives and their associated computer-readable media
`provide nonvolatile storage of computer
`readable
`instructions, data structures, program modules and other
`data for the personal computer 20. Although the exemplary
`environmentdescribed herein employs a hard disk, a remov-
`able magnetic disk 29, and a removable optical disk 31, it
`will be appreciated by those skilled in the art that other types
`of computer readable media which can store data that is
`accessible by a computer, such as magnetic cassettes, flash
`memory cards, digital video disks, Bernoulli cartridges,
`random access memories, read only memories, and the like
`may also be used in the exemplary operating environment.
`Anumberof program modules may be stored on the hard
`disk, magnetic disk 29, optical disk 31, ROM 24 or RAM 25,
`including an operating system 35, one or more applications
`programs 36, other program modules 37, and program data
`38. A user may enter commands and information into the
`personal computer 20 through input devices such as a
`keyboard 40 and a pointing device 42. Other input devices
`(not shown) may include a microphone, joystick, game pad,
`satellite dish, scanner, or the like. These and other input
`devices are often connected to the processing unit 21
`through a serial port interface 46 that is coupled to the
`system bus, but may be connected by other interfaces, such
`as a parallel port, game port or a universal serial bus (USB).
`A monitor 47 or other type of display device is also
`connected to the system bus 23 via an interface, such as a
`video adapter 48.
`In addition to the monitor, personal
`computers typically include other peripheral output devices,
`not shown, such as speakers and printers.
`The personal computer 20 may operate in a networked
`environment using logical connections to one or more
`remote computers, such as a remote computer 49. The
`remote computer 49 may be another personal computer, a
`server, a router, a network PC, a peer device or other
`common network node, and typically includes manyorall of
`the elements described aboverelative to the personal com-
`puter 20, although only a memory storage device 50 has
`been illustrated in FIG. 1. The logical connections depicted
`in FIG. 1 include a local area network (LAN) 51 and a wide
`area network (WAN) 52. Such networking environments are
`commonplace in offices, enterprise-wide computer
`networks, intranets and the Internet.
`When used in a LAN networking environment, the per-
`sonal computer 20 is connected to the local network 51
`through a network interface or adapter 53. When used in a
`WAN networking environment,
`the person computer 20
`typically includes a modem 54 or other meansfor establish-
`ing communications over the WAN 52. The modem 54,
`which maybe internal or external, is connected to the system
`bus 23 via the serial port
`interface 46. In a networked
`environment, program modules depicted relative to the
`personal computer 20, or portions thereof, may be stored in
`the remote memory storage device. It will be appreciated
`
`4
`that the network connections shownare exemplary and other
`means of establishing a communications link between the
`computers may be used.
`the invention will be
`In the description that follows,
`described with reference to acts and symbolic representa-
`tions of operations that are performed by one or more
`computer, unless indicated otherwise. As such, it will be
`understood that such acts and operations, which are at times
`referred to as being computer-executed, include the manipu-
`lation by the processing unit of the computer of electrical
`signals representing data in a structured form. This manipu-
`lation transforms the data or maintainsit at locations in the
`
`memory system of the computer, which reconfigures or
`otherwise alters the operation of the computer in a manner
`well understood by those skilled in the art. The data struc-
`tures where data is maintained are physical locations of the
`memory that have particular properties defined by the format
`of the data. However, while the invention is being described
`in the foregoing context, it is not meant to be limiting as
`those of skill in the art will appreciate that variousof the acts
`and operation described hereinafter may also be imple-
`mented in hardware.
`The invention will be described in the context of the
`
`Windowsoperating system. It should be understoodthat the
`instant invention is applicable to other operating systems
`such as the Macintosh operating system from Apple
`Computer, Inc. and the OS/2 operating system from IBM.
`Turning now to FIGS. 2 and3, in order to expose multiple
`transports through OBEX without applications needing to be
`re-written, a dynamic link library, OBEX.dll, is used to
`implement
`the OBEX specification, and the Windows
`registry, or some other data store, stores transport specific
`data that can be read atstart-up.
`FIG. 2 illustrates the steps taken to allow an application
`to communicate on a network. An Application Programming
`Interface (APD allows OBEX applications to pass transport
`specific data to the OBEX layerto initialize the networking
`subsystem (steps 100, 102). The data has a pre-defined
`format such that
`the OBEX layer can determine which
`transport the data is for and check to see if the transport is
`installed (step 104). If the transport which the data is for is
`notinstalled, an error message is returned (step 106). If the
`transport
`is installed,
`the OBEX layer then creates the
`appropriate transport module and passes the transport spe-
`cific data down to that module (step 108). The OBEX layer
`then returns a transport independentinterface to the appli-
`cation to use whenever it communicates on the network
`(step 110).
`In one embodiment, this data can be generated at setup
`time by reading a device information file (e.g., an INF).
`OBEXservices 120 reside on top of the OBEX layer 122.
`The OBEX layer 122 allocates packets and post them down
`to the transports 124, 126, 128, 130 for incoming data. When
`an incoming data packet
`is received, OBEX layer 122
`determines which OBEXservice should receive notification
`
`and abstracts OBEX data and provides the OBEX datato the
`OBEXservices 120. Outgoing data passed into the OBEX
`layer 122 from OBEXservices 120 may not bein the correct
`protocol format for the transport being used. OBEX layer
`122 generates outbound packets with correct wheaders for
`the protocol being used and sends the outbound packets
`down to the appropriate transport.
`Each transport defines the INF file layout and provides a
`small application to convert the information into something
`the application can pass through the OBEX layer 122. In this
`embodiment, application transport specific data is stored in
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`10
`
`10
`
`

`

`US 6,799,318 B1
`
`5
`the registry and can be read in at startup time. When a new
`transport is brought on-line it is registered so that the OBEX
`layer knows about it as well. For an application to support
`a new transport, all that needs to be done is to have the
`application written in such a waythatit reads data from the
`registry and passes it
`through the OBEX APIs.
`In this
`manner the code has no knowledge of what transportit is
`using.
`Enumeration of OBEX devicesis done at the OBEX layer
`122 and information about other OBEXclients is passed to
`the application in a generic fashion. The application can then
`display the choices to the user to select. The information
`about the transport 124, 126, 128, 130 the OBEX device is
`using is obtained in a standard fashion as known by those
`skilled in the art such that
`it can be enumerated and
`
`presented to the user without knowing the details of the
`information. For an OBEX client to connect to a remote
`
`device it would just need to pass the information generated
`by the OBEX layer to connect.
`OBEX server applications initialize their transport infor-
`mation by reading data from the registry. At install time the
`registry is configured with all the necessary information to
`initialize the transports 124, 126, 128, 130. The transports
`124, 126, 128, 130 communicate with other applications
`through the Windows Sockets provider (Winsock) 132. The
`transports 124, 126, 128, 130 know how to discover devices
`and send and receive data across a network medium and do
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`6
`tifier (i.e., GUID) associated with it and a list of properties
`for that transport. An OBEXservice that wishes to register
`can use this list of services to determine what needs be
`configured for that particular transport. The transport prop-
`erty bag interface can then be passed to the register service
`call once all of the properties are set. RegisterServiceBlob
`takes a blob (i.e., an information package) that describes the
`service information. The format of this blob is transport
`specific and is typically created at setup time of the service.
`At run time, the service reads in the blob and passes in the
`data to RegisterService. The only part of the information
`package the OBEX layer will interpret is the transport with
`which the information package is destined. The RegisterSer-
`vice function takes transport property bag that containsall of
`the properties that have been set by the user and uses these
`values to configure the service. An IObexService interface is
`returned if either of the two functions are successful. The
`EnumDevices function returns an [DeviceEnum interface
`
`that can be used to walk the list of devices within range.
`Notifications will be returned using the connection point
`model defined by the Windows COM.
`The IOBEXService interface is used to listen for incom-
`
`ing connections and close the instance of an OBEX service.
`This interface contains a set of functions preferably includ-
`ing GetConnection, Close, and SetPassword. The GetCon-
`nection function listens for incoming connections for a
`service. The function can be used to poll for incoming
`connections or to wait until one arrives. When a connection
`comesin, the function returns an IObexServiceConnection
`interface. The Close function shuts down the particular
`instance of an OBEXservice. The SetPassword function sets
`the password required to access the service upon connecting.
`The IOBEXServiceConnection interface is used after a
`connection is made. This interface containsa set of functions
`
`The EnumProperties function is used by the interface user to
`get the properties of the connection. This method will return
`a set of properties that specifies the client information. The
`caller should use this information along with the header
`information to determine if the connection should be
`
`accepted.
`The commandstructure has several fields and properties
`that describe the command. The properties are the opcode
`and any flags. The structure has a pointer to an [HeaderCol-
`lection interface which can be used to enumerate the head-
`
`not need to have any knowledge of the OBEX protocol.
`Winsock 132 consists of a kernel driver and a set of
`user-mode dynamic link libraries (DLLs) and it allows
`programs to communicate with other programs and
`machines via protocols such as TCP/IP, Bluetooth,etc.
`Turning now to FIG. 4, OBEX services 120 has several
`default services. Two of these services are the default inbox
`preferably including Accept, Close, GetCommand, and
`140, 142, 144, 146 and folder browser 148. The default
`EnumProperties. The Accept function accepts an incoming
`connection andit should be called before GetCommand. The
`inbox allows a sending device(i.e., a client) to sendafile or
`Close function closes the current connection and sends a
`an object to a receiving device (i.e., a server) without having
`to know the folder hierarchy of the receiving device. The
`disconnect requestto the client. If the connection has not yet
`client sends the file/object to the server and the server is
`been accepted, an error response will be sent to the client.
`responsible for placingthe file/object in the correct location.
`The GetCommand function listens for incoming command
`The functionality provided the default inbox 140, 142, 144,
`requests from the client. This function can be usedforeither
`146 may be the same, but each instance of a default inbox
`polling for an incoming commandorto block and wait for
`a command. The function will return a commandstructure.
`will be listening on a different transport/port combination.
`Default inbox 140 listens on IrDA transport 150 on the
`OBEXport. Default inbox 142 listens on IrDAtransport 150
`on the OBEX:IrXfer port. Default inbox 144 listens on IP
`transport 152 on port 650. Default inbox 146 listens on
`Bluetooth transport 150 on the Bluetooth OBEX port. The
`folder browser 148 allows a client to browse folders on a
`
`device and put objects into and get objects out of the folders.
`The folder browser 148 listens on the same ports as the
`default inboxes 140, 142, 144, 146.
`The application programming interfaces used to imple-
`ment the instant invention shall now be described. These
`interfaces
`are
`IOBEX,
`IOBEXService,
`IOBEXServiceConnection,
`IOBEXDevice,
`IOBEXTransport,
`IOBEXTransportSocket,
`IOBEXTransportConnection, and IOBEXSink.
`The IOBEX interface is the main interface to the OBEX
`services. The IJOBEX interface contains a set of functions
`
`preferably including EnumTransports, Register Service,
`RegisterServiceBlob, and EnumDevices. EnumTransports
`returns an ITransportEnum pointer that is used to enumerate
`the known transports. The ITransportEnum interface will
`enumerate a list of transport property bag interfaces. Each
`transport property bag interface has a globally unique iden-
`
`ers. All headers can be displayed here except any body
`headers, which can be accessed throughthe stream interface.
`The stream interface is also returned in the structure. The
`SendResponse function is used for those commandsthat do
`not have any data associated with them and only require a
`response from the server. This function can be called to
`generate a response code to the client.
`The IOBEXDevice interface is obtained by the EnumDe-
`vices call of IObex. The IObexDevice interface exposes a
`property bag that describes the device. The property bag
`includes standard properties such as Name, Address and
`Transport which define the device. The address is transport
`specific, but is presented to the useras a string. This interface
`
`55
`
`60
`
`65
`
`11
`
`11
`
`

`

`US 6,799,318 B1
`
`7
`contains a set of functions preferably including Connect,
`Put, Get, Abort, SetPath, and Disconnect. The Connect
`function connects to the device specified and it operates in
`blocking mode. A password for the device can be specified
`at this point. If a password is not specified and the server
`requires a password,a callback will be madeto the interface
`registered on the main OBEX object. If no interface has been
`registered for callbacks then the function will fail
`if a
`password is required. The Put function issues a put com-
`mandto the server for the object that is passed in. The user
`builds a collection of headers that describes the object using
`the [HeaderCollection interface. The Put function returns an
`
`IStream interface, which the user can use to write any data
`that needs to be sent. The Get function does a get request of
`an object on an OBEXserver. An IHeaderCollection inter-
`face will be passed in to describe the object. The Get
`function also returns an JStream interface with which the
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`8
`Close, Write, Read, and EnumProperties. The Close function
`closes the connection. The Write function sends data on the
`connection. The Read function receives data on the connec-
`tion. The EnumProperties function returns information
`about the connection.
`The IOBEXSinkinterface is the callback interface that
`will be queried on the Advise calls of the Iobex interface.
`This interface contains a set of functions preferably includ-
`ing Notify. The notify function is called wheneverthere is an
`event. Events are used to notify the user of incoming
`requests. An example of incoming requests are disconnector
`an abort. Events through this interface can also query the
`user for a password on a connection. The definition of the
`parameters passed to the function depends on the message.
`Client events are disconnect, abort, new device list
`available, query password. Server events are disconnect,
`abort, query password, incoming connection, and incoming
`command. Transport events are new device. Turning now to
`user can read the incoming data. The Abort function sends
`FIG. 5, an inbox service 140, 142, 144, 146 is created using
`an abort request to the server. The SetPath function issues a
`the interfaces described above. The primary interface IObex
`SetPath command to the server. The Disconnect function
`is created (step 170) and the transport data blob is read from
`disconnects the specified connection.
`the registry. The transport data blob is passed to the Regis-
`terServiceBlob function of the Iobex interface, which
`The IOBEXTransport interface is used by the OBEX layer
`returns an IObexService interface (step 172). The IObex-
`122 to communicate with the transports 124, 126, 128, 130.
`Service GetConnection functionis called to listen to wait for
`All notifications that arise from objects created from this
`incoming connections (step 174). When an incoming con-
`interface will use the callback interface specified on the
`nection is received, the IObexServiceConnection interface is
`object. This interface contains a set of functions preferably
`returned and the Accept function of the IobexServiceCon-
`including Init, CreateSocket, EnumDevices,
`nection interface is called to accept the incoming connection
`EnumProperties, and Shutdown. The Init function initializes
`(step 176). The properties and headers of the connec

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