`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