Abstract:
A system that provides for Bluetooth communications from a first Bluetooth enabled device to a second Bluetooth enabled device is provided. The system comprising a Bluetooth manager that provides a graphical user interface, an Outgoing Port Driver that shares configurational information with and is started by the Bluetooth manager, a first serial port that receives data from an application operating on the first device, the first serial port acting as a virtual serial port where the first serial port is not connected to communications hardware, a second serial port that is connected to communications hardware, the second serial port acting as an outgoing port, and a Bluetooth stack that receives data to be communicated from the second serial port, wherein the Outgoing Port Driver directs the data from the first serial port to the second serial port via the Outgoing Port Driver.

Description:
FIELD OF INVENTION 
       [0001]    The invention relates generally to devices enabled with Bluetooth capabilities, and more particularly for enhancing usability of Serial Port Profile (SPP) of the Bluetooth Protocol. 
       BACKGROUND OF THE INVENTION 
       [0002]    The Bluetooth communications protocol is a system for short-range wireless communication between devices. 
         [0003]    In a typical scenario a Bluetooth enabled device A wishes to communicate with similarly enabled device B using a Bluetooth connection. In a traditional configuration communication cannot take place at the first instance where the devices are in range to do so. Namely device A does not a priori know of the presence of device B and therefore can not communicate with it. A flow chart of the process for establishing communications is shown in  FIG. 1 . At step  102  device A executes a scan-associate process at the time communications are requested. This scan-associate process is often a time consuming process with times of up to a couple of minutes being common. The presence of device B is established at step  104 . With the presence of device B established a virtual serial port is created in device A at step  106  and at step  108  communications are initiated between device A and B. 
         [0004]      FIG. 2  is a schematic diagram of a Bluetooth enabled Device A  202  that may have been used in the above method. Along with some hardware the diagram presents functional components involved in the Bluetooth communications, where the functional components are elements of software or states created by software that interact with the hardware of the device  202 . 
         [0005]    An application  204  operating within Device A  202  requests Bluetooth communications with Device B  203 . A Bluetooth stack  210  may be provided either within or in addition to the operating system of the device  202 . The stack  210  implements various layers of Bluetooth functionality, it provides RFComm protocol implementation to simulate serial port functionality of a Bluetooth radio  212  and it provides SDP implementation to do discovery and searching of Bluetooth devices and services. 
         [0006]    A user uses the Bluetooth manager  208  to activate a connection to a remote device such as the Device B  203 . The Bluetooth manager  208  then interacts with the Bluetooth stack  210 , which creates a virtual serial port. A Bluetooth Manager  208  is in communications with the stack  210  and executes independently of it. The Bluetooth manager  208  is appropriate for providing an interface between a user and the stack  210 . In this example the virtual serial port BSP2:  206  is opened. The Bluetooth stack  210  receives the data from the application  204 , via the virtual serial port  206 , and provides it to the Bluetooth radio  212 . 
         [0007]    In another system of the art an automatic scan-associate process is performed periodically to determine Bluetooth devices that are available for communications. Once it is determined that communications would be possible for a particular device it is added to a list of devices available for communications. In the above system the list of possible devices is not configurable by the user. 
         [0008]    There are also systems in the art for which the availability of Bluetooth communications is advantageous yet it is not desirable to have the system “discoverable” during a scan-associate process. Such a situation may arise for systems located in public spaces. In this scenario one does not want the Bluetooth functionality visible to any member of the public, which has access to the system and has the ability to scan for a Bluetooth enabled device contained therein. 
         [0009]    Thus there is a need for a system that does not require a scan-associate process at the time of communications, provides a user configurable list of devices with which communications may be established and does not require the system to identify itself as “discoverable” to other Bluetooth enabled devices. 
       SUMMARY OF THE INVENTION 
       [0010]    The present invention relates to a system and method for SPP in Bluetooth protocol. 
         [0011]    It is an object of the invention to provide an improved system and method for Bluetooth communications. It is a further object of the invention to obviate or mitigate at least one of the drawbacks of the prior art. 
         [0012]    In accordance with one aspect of the invention a system that provides for Bluetooth communications from a first Bluetooth enabled device to a second Bluetooth enabled device is provided. The system comprising a Bluetooth manager that provides a graphical user interface, an Outgoing Port Driver that shares configurational information with and is started by the Bluetooth manager, a first serial port that receives data from an application operating on the first device, the first serial port acting as a virtual serial port where the first serial port is not connected to communications hardware, a second serial port that is connected to communications hardware, the second serial port acting as an outgoing port, and a Bluetooth stack that receives data to be communicated from the second serial port, wherein the Outgoing Port Driver directs the data from the first serial port to the second serial port via the Outgoing Port Driver. 
         [0013]    This summary of the invention does not necessarily describe all features of the invention. Other aspects and advantages of the invention, as well as the structure and operation of various embodiments of the invention, will become apparent to those ordinarily skilled in the art upon review of the following description of the invention in conjunction with the accompanying drawings. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0014]    These and other features of the invention will become more apparent from the following description in which reference is made to the appended drawings wherein: 
           [0015]      FIG. 1  is a flow chart of a method for connecting to a Bluetooth device of the Prior Art; 
           [0016]      FIG. 2  is a schematic block diagram of components of a Bluetooth device of the Prior Art; 
           [0017]      FIG. 3  is a schematic block diagram of a Bluetooth device according to an embodiment of the invention; 
           [0018]      FIG. 4  is a schematic diagram of components of a Bluetooth device according to an embodiment of the invention; 
           [0019]      FIG. 5   a  is a flow chart of a method of configuring a Bluetooth device according to an embodiment of the invention; 
           [0020]      FIG. 5   b  is a flow chart of a method for establishing communications to a Bluetooth device according to an embodiment of the invention; 
           [0021]      FIG. 6   a  is a schematic block diagram illustrating a connection to a Bluetooth device according to an embodiment of the invention; and 
           [0022]      FIG. 6   b  is a schematic block diagram illustrating the connection to a Bluetooth device according to an embodiment of the invention. 
       
    
    
     DETAILED DESCRIPTION 
       [0023]    The present invention provides a system and method of enabling Bluetooth communications between two Bluetooth enabled devices. The method allows for user configuration, limits the number of open serial ports and does not require the user perform a scan-associate process at the time of communications. 
         [0024]      FIG. 3  schematically depicts a device on which the present invention may operate. In the current embodiment this device is a hand held terminal appropriate for the collection of data. The device  301  contains within it a CPU  302 , random access memory  304 , non-volatile memory  306  and Bluetooth radio  308 . The device of the current embodiment further contains RF radio  310 . The term radio as is used to describe the RF radio  310  and Bluetooth radio  308  generally includes those elements that are required for these types of communications as will be apparent to a person of skill in the art. The system of the current invention will generally be stored as electronic signals within non-volatile memory  306 . The system will be operative within CPU  302  and may be fully or partially loaded in RAM  304  during operation. It will be apparent to a person of skill in the art that the invention may be used on any device appropriate for storing and operating programs and is enabled for Bluetooth communications. It will also be apparent to one skilled in the art that  FIG. 3  does not necessarily present all components within Bluetooth enabled device  301 . 
         [0025]      FIG. 4  is a schematic block diagram of a Bluetooth enabled Device  402  according to the current embodiment.  FIG. 4  depicts features of this device at the time where the device  402  is communicating with the device B  203 . As in  FIG. 2  the elements presented in  FIG. 4  may be elements of hardware, software or states constructed by the software, with the latter two elements generally interacting with and/or operating on elements of hardware including those illustrated in  FIG. 3 .  FIG. 4  also depicts the nature of interaction between the various elements. The solid block arrows indicate a flow of data and or function calls between the elements while a dashed arrow indicates the exchange of configurational information. 
         [0026]    In the current embodiment the device A  402 , in particular CPU  302 , is running the Windows™ CE operating system thereon. It will be apparent to those of skill in the art that other operating systems including, but not limited to, Linux, Apple OS X and Palm OS are within the scope of the present invention. Bluetooth manager  407  is a Graphical User Interface (GUI) that is used by the user of the device A  402  to configure a Bluetooth subsystem of the device  402  for communications. The Bluetooth manager  407  communicates with a Bluetooth stack  412  and provides configurational information to an Outgoing Port Driver  408 . In the current embodiment the stack  412  is a Microsoft™ Bluetooth stack, which is provided with the Windows CE operating system. Other implementations of the Bluetooth stack, which are appropriate for the implemented operating system, including Windows CE, are also within the scope of the present invention. 
         [0027]    The Outgoing Port Driver  408  is a central entity of the current embodiment. The Outgoing Port Driver  408  is a virtual device driver that is in the form of a .DLL file. The Outgoing Port Driver  408  creates the virtual serial port  406  and the Outgoing Serial Port  410  (BSP9:), which becomes the outgoing port. The virtual serial port  406  is used by the application  404 . It is a virtual port in the sense that the application  404  considered it to be the outgoing port while it does not have any physical serial communication hardware associated therewith The Outgoing Port Driver  408  further provides the Bluetooth manager  407  to the user and ensures that the Bluetooth stack  412  connects to the desired device. 
         [0028]    The virtual serial port  406 , Outgoing Port Driver  408 , Outgoing Serial Port  410 , Bluetooth stack  412  are all elements of the data path that is formed between the application  404  and the Bluetooth radio  414 . 
         [0029]    The system of the present invention allows communication between Bluetooth enabled devices without performing a scan-associate process at the time of communications. Further, the method allows for communication to a device that is among a fixed list of devices. These aspects will now be considered with regard to the system presented in  FIG. 4 . 
         [0030]    The method of communication according to an embodiment of the invention is performed in two steps. In the first step the device is configured for communications. This step occurs prior to the time at which communications are desired. It may be performed by the user or a system administrator and may be considered as a set-up procedure. The second step occurs at the time of communications. It is during this step that the Device is configured as outlined in  FIG. 4 . 
         [0031]    The set-up procedure according to an embodiment of the invention is shown in  FIG. 5   a . At step  502  a scan-associate process is performed. A device that has responded to this process is added to a menu of available devices at step  504 . At step  506  the process asks whether there are any more devices to be added to list of available devices. If there are additional devices the process returns to step  502  and another scan-associate process is performed. If there are no further devices to be registered the process moves to step  508  where a menu listing the available devices is provided. With regard to the discussion of  FIG. 4  the device B  203  would be a device that is listed in the above menu. 
         [0032]      FIG. 5   b  presents a flow chart of a method of establishing communications at the time that communications are desired. At step  520  the Bluetooth manager  407  receives instructions to load the Outgoing Port Driver  408 . At step  522  the Outgoing Port Driver  408  is loaded. The Outgoing Port Driver  408  begins executing at step  524 . At step  526  it creates the virtual serial port  406 , which is named BSP2: and listens on the port  406 . The application  404  opens the virtual serial port  406  and the user chooses the Bluetooth device to which remote connections are to be made, say device B  203 , from the selection menu. The Outgoing Port Driver  408  receives this choice at step  528 . At step  530  the Outgoing Port Driver  408  communicates with the Bluetooth stack  412  to create the Outgoing Serial Port  410  (BSP9:). At step  532  the Outgoing Port Driver  408  creates the Outgoing Serial Port  410 . The Outgoing Port Driver  408  redirects all the data flow from the application  404 , via the Virtual Serial Port  406 , to the Outgoing Serial Port  410 . Thus data traffic is run to and from that port at step  534 . 
         [0033]    The procedure for connecting to a new device is schematically shown in  FIGS. 6   a  and  6   b . In  FIG. 6   a  an application  602  is in communication with a Device X  604 , where the application  602  is operating in a device  605 . In particular, data from the application  602  flows through the virtual serial port  606  (BSP2:) to the Outgoing Port Driver  608  and through the serial port  610  to the device X  604 . The Device X  604  being selected from a selection menu accessed by and contained within the device A  402 . 
         [0034]    When the user of the Device A  605  wishes to establish communications with another device, say device Y  614  they bring up the Selection Menu and select the device from it. The Outgoing Port Driver  608  maintains the port BSP2:  606  that it created but deactivates the connection with Device X  604  by deleting the port BSP9:  610 . The driver  608  activates a new connection with the Device Y  614  by creating the port BSP9:  610  again. This provides seamless switching over to the new device  614  without performing a scan-associate process. 
         [0035]    The following example illustrates the operation and use of the system and method of the current embodiment. In a warehouse situation there is a selection of network access points, printers and scanners to which the operator of a hand held data capture terminal may have to communicate. At a predetermined interval an administrator performs a scan-associate process for the Bluetooth enabled devices to which the user may wish to communicate. Once this process is performed a list of available devices is compiled. During the use of the hand-held terminal the user can select the device to which communications are to be established from the selection menu. 
         [0036]    The Outgoing Port Prompt Mode is a configuration that a user can set via the Bluetooth manager that governs the behaviour of the Outgoing Port Selection Menu. It has two choices “every time” and “once”. Setting the value to “every time” means that the Outgoing Ort Selection Menu will come up automatically every time an application ‘opens’ the Outgoing Port. Setting the value to “once” means the Outgoing Port Selection Menu will come up automatically only when an application “opens” the Outgoing Port and there is no current selection of remote device. the hotkey invocation of the Outgoing Port Selection Menu is available regardless of the value of the Outgoing Port Prompt Mode. 
         [0037]    While the invention has been described according to what is presently considered to be the most practical and preferred embodiments, it must be understood that the invention is not limited to the disclosed embodiments. Those ordinarily skilled in the art will understand that various modifications and equivalent structures and functions may be made without departing from the spirit and scope of the invention as defined in the claims. Therefore, the invention as defined in the claims must be accorded the broadest possible interpretation so as to encompass all such modifications and equivalent structures and functions.