Universal protocol for enabling a device to discover and utilize the services of another device6675196Abstract A method and apparatus for enabling any of a variety of devices to communicate with each other over a common or universal protocol. In general, a client device and a server device communicate with each other over a communications link utilizes the common protocol. Initially, once a communications link is established, the server device identifies itself to the client device by sending a tag line message over the communications link. Upon receiving the tag line message, the client then determines that the server is capable of using the common protocol. The client device may then initiate several requests including a service request, a type request or a use request. If the client device initiates a service request, the client simple uses the common protocol to request the service. In response to receiving the service request, the server device performs the requested service and provides a confirmation to the client device. If the client device initiates a type request, the service device will respond by providing information regarding the services the server device provides and the device types supported by the server device. If the client device initiates a use request for a particular service, the server device will provide information to the client device that describes the necessary parameters for invoking the particular service. Claims What is claimed is: Description TECHNICAL FIELD
ID:DEVICEID[COMMON NAME][COMMENTS]<newline>
SD:[SERVICEID1][SD_COMMENTS1]<newline>
SD:[SERVICEID2][SD_COMMENTS2]<newline>
.vertline.
.vertline.
.vertline.
.<newline>
where: DEVICEID uniquely identifies a particular type of device, COMMON NAME uniquely identifies a particular device of the type DEVICEID, COMMENTS contains additional meaningful information about the device, SERVICEID1 and SERVICEID2 uniquely identify particular services, and SD_COMMENTS1 and SD_COMMENTS2 contain meaningful information about the services SERVICEID1 and SERVICEID2, respectively. In an exemplary embodiment, the COMMON NAME field is no more than 16 characters in length to minimize device memory requirements. Additionally, in an exemplary embodiment the COMMON NAME field is user customizable at the SDTP server level. This field is utilized by the user of a client device to recognize which particular device of the type "DEVICEID" is involved. Examples of suitable names of devices include "BobsPager," "JeffsPDA," and "CommonPrinter." The contents and the use of the various comments fields are completely optional. For example, COMMENTS may include information such as "Laser printer on 4th floor." Similarly, if the server device is a pager and the first service provided is the transmission to the client device of page information which has been stored in the pager, SD_COMMENTS1 might be "Page Information." To illustrate the use and meaning of the DEVICEID and SERVICEID data fields and their relationship with the operation of the protocol of the present invention, an exemplary server device will next be discussed. Referring again to FIG. 1, one device operable in accordance with the protocol of the present invention is a pager unit. The pager includes a processing unit, a memory, and a bus that couples the memory to the processing unit. The pager is capable of receiving pages via wireless signal transmission and storing page information in the memory. A user may enter commands and information into the pager through the use of a keypad. A LED or LCD display may be used to display page information when received or when retrieved from memory. A speaker is provided to indicate the reception of a page. In addition to being able to receive pages via traditional wireless signal transmission, a pager that includes an embodiment of the present invention is also able to communicate directly with other devices. The pager carries out this communication using one or more communications means selected from a wide variety of communications technologies. The communication means may be utilized by the pager to transmit to another device and to receive information from another device. Although current pagers may or may not be equipped with the appropriate communications means necessary for complete implementation of the protocol of the present invention, it should be understood that suitable communications technologies currently exist and that the selection and implementation of one or more of these technologies would be obvious to one of ordinary skill in the art. According to an exemplary method of operation of the protocol of the present invention, the pager carries a unique device identifier (DEVICEID) such as x.sub.1 x.sub.2 x.sub.3 -1WAYPGR, where x.sub.1 x.sub.2 x.sub.3 is selected according to the previously-described criteria for uniqueness. Services provided by the pager may include a status check, a transmission of the last page received by the pager, a transmission of a specified page previously received by the pager, a transmission of a list of identifiers for pages currently stored in the pager's storage means, a transmission of a current clock reading and/or an update of the clock. Each service carries a unique service identifier in the form x.sub.1 x.sub.2 x.sub.3 -NAME, as previously described. Thus, the pager may carry the services with service identifiers (SERVICEID's) x.sub.1 x.sub.2 x.sub.3 -STAT, x.sub.1 x.sub.2 x.sub.3 -PAGERX, x.sub.1 x.sub.2 x.sub.3 -PAGE, x.sub.1 x.sub.2 x.sub.3 -LIST, x.sub.1 x.sub.2 x.sub.3 -TIME and/or x.sub.1 x.sub.2 x.sub.3 -TIMESET, corresponding respectively with the above-identified services. A common one-way pager that supports page reception, time reporting, and time setting, might respond to a type-command with the following data packet: ID:X.sub.4A X.sub.4B X.sub.4C -1 WAYPGR<newline> SD:X.sub.5A X.sub.5B X.sub.5C -PAGERX<newline> SD:X.sub.6A X.sub.6B X.sub.6C -TIME<newline> SD:X.sub.7A X.sub.7B X.sub.7C -TIMESET<newline> .<newline> where "X.sub.4A X.sub.4B X.sub.4C " "X.sub.5A X.sub.5B X.sub.5C " "X.sub.6A X.sub.6B X.sub.6C " and "X.sub.7A X.sub.7B X.sub.7C " are examples of possible unique device and server identifiers (DEVICEID and SERVICEID's, respectively). As mentioned previously, other exemplary embodiments of server devices capable of using the protocol of the present invention include, without limitation, a two-way pager, a voice pager, a cellular telephone, a PDA, a personal computer, a wired telephone, a CID box, a printer, a fax machine, a clock, audio equipment, video equipment, a thermostat, an email device, a security system, and a generic information device. These devices and a non-exclusive list of services that might be offered by these devices are listed in Table 1, along with exemplary unique ids for the devices or services.
TABLE 1
Device Device ID Service Service ID
One-way x.sub.1 x.sub.2 x.sub.3 - Status of the pager x.sub.1 x.sub.2
x.sub.3 -STAT
pager 1 WAYPGR
Last page received x.sub.1 x.sub.2 x.sub.3
-PAGERX
Displays a page from a x.sub.1 x.sub.2 x.sub.3
-PAGE
LIST command
Register x.sub.1 x.sub.2 x.sub.3
-REGSTR
List pages x.sub.1 x.sub.2 x.sub.3 -LIST
Return the current x.sub.1 x.sub.2 x.sub.3 -TIME
time/date
Set the time x.sub.1 x.sub.2 x.sub.3
-TIMESET
Two-way x.sub.1 x.sub.2 x.sub.3 - Status of the pager x.sub.1 x.sub.2
x.sub.3 -STAT
pager 2WAYPGR
Last page received x.sub.1 x.sub.2 x.sub.3
-PAGERX
Displays a page from a x.sub.1 x.sub.2 x.sub.3
-PAGE
LIST command
Transmits a page x.sub.1 x.sub.2 x.sub.3
-PAGETX
Register x.sub.1 x.sub.2 x.sub.3
-REGSTR
List pages x.sub.1 x.sub.2 x.sub.3 -LIST
Return the current x.sub.1 x.sub.2 x.sub.3 -TIME
time/date
Set the time x.sub.1 x.sub.2 x.sub.3
-TIMESET
Voice pager x.sub.1 x.sub.2 x.sub.3 - Status of the pager x.sub.1 x.sub.2
x.sub.3 -STAT
VOCPGER
Last page received is x.sub.1 x.sub.2 x.sub.3
-PAGERX
played
Play a page from a x.sub.1 x.sub.2 x.sub.3 -
LIST command PLYPAGE
Register x.sub.1 x.sub.2 x.sub.3
-REGSTR
List pages x.sub.1 x.sub.2 x.sub.3 -LIST
Return the current x.sub.1 x.sub.2 x.sub.3 -TIME
time/date
Set the time x.sub.1 x.sub.2 x.sub.3
-TIMESET
Cellular x.sub.1 x.sub.2 x.sub.3 - Status of the phone x.sub.1 x.sub.2
x.sub.3 -STAT
phone CELLULR
Dials a phone number x.sub.1 x.sub.2 x.sub.3
-DIAL
(or instructs to dial)
Register x.sub.1 x.sub.2 x.sub.3
-REGSTR
List numbers in the x.sub.1 x.sub.2 x.sub.3 -
phone's number list LISTNUM
Add a phone number x.sub.1 x.sub.2 x.sub.3
-ADDLIST
to the list
Clears a list entry x.sub.1 x.sub.2 x.sub.3
-CLRLIST
Return the current x.sub.1 x.sub.2 x.sub.3 -TIME
time/date
Set the time x.sub.1 x.sub.2 x.sub.3
-TIMESET
Personal x.sub.1 x.sub.2 x.sub.3 -PDA PDA status x.sub.1 x.sub.2
x.sub.3 -STAT
Data
Assistant Specifies a new x.sub.1 x.sub.2 x.sub.3
-CALEVT
calendar event
Lists upcoming x.sub.1 x.sub.2 x.sub.3
-LISTCAL
calendar events
Lists contacts x.sub.1 x.sub.2 x.sub.3
-LISTCON
Adds a new contact x.sub.1 x.sub.2 x.sub.3
-NEWCON
Search for a contact x.sub.1 x.sub.2 x.sub.3
-SEARCH
Return the current x.sub.1 x.sub.2 x.sub.3 -TIME
time/date
Set the time x.sub.1 x.sub.2 x.sub.3
-TIMESET
Personal x.sub.1 x.sub.2 x.sub.3 -PC PC status x.sub.1 x.sub.2
x.sub.3 -STAT
Computer
Specifies a new x.sub.1 x.sub.2 x.sub.3
-CALEVT
calendar event
Lists upcoming x.sub.1 x.sub.2 x.sub.3
-LISTCAL
calendar events
Lists contacts x.sub.1 x.sub.2 x.sub.3
-LISTCON
Adds a new contact x.sub.1 x.sub.2 x.sub.3
-NEWCON
Search for a contact x.sub.1 x.sub.2 x.sub.3
-SEARCH
Transmits a file x.sub.1 x.sub.2 x.sub.3
-FILETX
Receives a file x.sub.1 x.sub.2 x.sub.3
-FILERX
Return the current x.sub.1 x.sub.2 x.sub.3 -TIME
time/date
Set the time x.sub.1 x.sub.2 x.sub.3
-TIMESET
Wired x.sub.1 x.sub.2 x.sub.3 - Phone status x.sub.1 x.sub.2
x.sub.3 -STAT
Telephone TELEPH
Dials a phone number x.sub.1 x.sub.2 x.sub.3
-DIAL
Register x.sub.1 x.sub.2 x.sub.3
-REGSTR
Lists the phones x.sub.1 x.sub.2 x.sub.3 -
number list LISTNUM
Adds to the phones x.sub.1 x.sub.2 x.sub.3
-ADDLIST
number list
Clears an entry in the x.sub.1 x.sub.2 x.sub.3
-CLRLIST
phones list
Return the current x.sub.1 x.sub.2 x.sub.3 -TIME
time/date
Set the time x.sub.1 x.sub.2 x.sub.3
-TIMESET
CID box x.sub.1 x.sub.2 x.sub.3 -CID Caller ID status x.sub.1 x.sub.2
x.sub.3 -STAT
Register x.sub.1 x.sub.2 x.sub.3
-REGSTR
List all caller ID's x.sub.1 x.sub.2 x.sub.3 -
LISTNUM
Last call received x.sub.1 x.sub.2 x.sub.3
-LATEST
Attempt to identify a x.sub.1 x.sub.2 x.sub.3
-CALLID
phone number
Return the current x.sub.1 x.sub.2 x.sub.3 -TIME
time/date
Set the time x.sub.1 x.sub.2 x.sub.3
-TIMESET
Printer x.sub.1 x.sub.2 x.sub.3 -PRINT Printer status x.sub.1
x.sub.2 x.sub.3 -STAT
Print a file x.sub.1 x.sub.2 x.sub.3 -PRINT
Return the current x.sub.1 x.sub.2 x.sub.3 -TIME
time/date
Set the time x.sub.1 x.sub.2 x.sub.3
-TIMESET
Fax machine x.sub.1 x.sub.2 x.sub.3 -FAX Fax status x.sub.1 x.sub.2
x.sub.3 -STAT
Dials a phone number x.sub.1 x.sub.2 x.sub.3
-DIAL
Send a fax x.sub.1 x.sub.2 x.sub.3 -FAX
Register x.sub.1 x.sub.2 x.sub.3
-REGSTR
List fax numbers x.sub.1 x.sub.2 x.sub.3 -
LISTNUM
Add to the fax x.sub.1 x.sub.2 x.sub.3
-ADDLIST
numbers list
Clear an entry to the x.sub.1 x.sub.2 x.sub.3
-CLRLIST
list
Return the current x.sub.1 x.sub.2 x.sub.3 -TIME
time/date
Set the time x.sub.1 x.sub.2 x.sub.3
-TIMESET
Clock x.sub.1 x.sub.2 x.sub.3 -CLOCK Clock status x.sub.1
x.sub.2 x.sub.3 -STAT
Return the current x.sub.1 x.sub.2 x.sub.3 -TIME
time/date
Set the time x.sub.1 x.sub.2 x.sub.3
-TIMESET
Last alarm x.sub.1 x.sub.2 x.sub.3 -ALARM
Set an alarm x.sub.1 x.sub.2 x.sub.3 -
ALARMSET
Clear an alarm x.sub.1 x.sub.2 x.sub.3 -
ALARMDEL
Lists alarm x.sub.1 x.sub.2 x.sub.3 -LIST
Stereo x.sub.1 x.sub.2 x.sub.3 - Stereo status x.sub.1 x.sub.2
x.sub.3 -STAT
Equipment STEREO
Current tuned x.sub.1 x.sub.2 x.sub.3 -FREQ
frequency
Set the frequency x.sub.1 x.sub.2 x.sub.3
-FREQSET
Tune up x.sub.1 x.sub.2 x.sub.3
-FREQUP
Tune down x.sub.1 x.sub.2 x.sub.3 -
FREQDWN
Volume up x.sub.1 x.sub.2 x.sub.3 -VOLUP
Volume down x.sub.1 x.sub.2 x.sub.3 -VOLDN
Volume set x.sub.1 x.sub.2 x.sub.3
-VOLSET
On x.sub.1 x.sub.2 x.sub.3 -ON
Off x.sub.1 x.sub.2 x.sub.3 -OFF
Play media x.sub.1 x.sub.2 x.sub.3 -PLAY
Change track up x.sub.1 x.sub.2 x.sub.3 -TRKUP
Change track down x.sub.1 x.sub.2 x.sub.3
-TRKDWN
Set the track x.sub.1 x.sub.2 x.sub.3
-TRKSET
Fast forward x.sub.1 x.sub.2 x.sub.3 -FF
Rewind x.sub.1 x.sub.2 x.sub.3 -REW
Mute x.sub.1 x.sub.2 x.sub.3 -MUTE
Stop x.sub.1 x.sub.2 x.sub.3 -STOP
Pause x.sub.1 x.sub.2 x.sub.3 -PAUSE
Record x.sub.1 x.sub.2 x.sub.3
-RECORD
Lists media x.sub.1 x.sub.2 x.sub.3 -LIST
Return the current x.sub.1 x.sub.2 x.sub.3 -TIME
time/date
Set the time x.sub.1 x.sub.2 x.sub.3
-TIMESET
Video x.sub.1 x.sub.2 x.sub.3 -VIDEO Status x.sub.1
x.sub.2 x.sub.3 -STAT
Equipment
Channel up x.sub.1 x.sub.2 x.sub.3 -CHUP
Channel down x.sub.1 x.sub.2 x.sub.3 -CHDWN
Current channel x.sub.1 x.sub.2 x.sub.3 -CHNL
Set channel x.sub.1 x.sub.2 x.sub.3 -
CHNLSET
Volume up x.sub.1 x.sub.2 x.sub.3 -VOLUP
Volume down x.sub.1 x.sub.2 x.sub.3 -VOLDN
Set volume x.sub.1 x.sub.2 x.sub.3
-VOLSET
On x.sub.1 x.sub.2 x.sub.3 -ON
Off x.sub.1 x.sub.2 x.sub.3 -OFF
Switch video media x.sub.1 x.sub.2 x.sub.3
-SWITCH
Play media x.sub.1 x.sub.2 x.sub.3 -PLAY
Track up x.sub.1 x.sub.2 x.sub.3 -TRKUP
Video Track down x.sub.1 x.sub.2 x.sub.3
-TRKDWN
Equipment
(cont.)
Set track x.sub.1 x.sub.2 x.sub.3
-TRKSET
Fast forward x.sub.1 x.sub.2 x.sub.3 -FF
Rewind x.sub.1 x.sub.2 x.sub.3 -REW
Mute x.sub.1 x.sub.2 x.sub.3 -MUTE
Stop x.sub.1 x.sub.2 x.sub.3 -STOP
Pause x.sub.1 x.sub.2 x.sub.3 -PAUSE
Record x.sub.1 x.sub.2 x.sub.3
-RECORD
Lists media x.sub.1 x.sub.2 x.sub.3 -LIST
Return the current x.sub.1 x.sub.2 x.sub.3 -TIME
time/date
Set the time x.sub.1 x.sub.2 x.sub.3
-TIMESET
Thermostat/ x.sub.1 x.sub.2 x.sub.3 - Thermostat status x.sub.1 x.sub.2
Referring again to FIG. 3, at any time after the server device issues the protocol tag line message 301, the client device may command the server device to carry out specific services using the unique service identifiers just described. For example, the client device may issue a service-command 307 X.sub.1C X.sub.2C X.sub.3C -TMPLOW 65. However, as shown in FIG. 3, service-commands are typically issued after the client device first determines what services are available by issuing the type-command 302. A service-command 307 may be issued by transmitting either the full device identifier (x.sub.1 x.sub.2 x.sub.3 -NAME) or just the unique three letter prefix (x.sub.1 x.sub.2x.sub.3). Any necessary parameters may be passed along as well. For example, the following command might be used to set a threshold temperature of 65 degrees Fahrenheit at which the thermostat turns on the heat: X.sub.1C X.sub.2C X.sub.3C -TMPLOW 65. Alternatively, the following simplified command might be used to accomplish the same task: X.sub.1C X.sub.2C X.sub.3C -65 Unless the communication between the client device and the server device using the protocol fails, the server device will provide some sort of status-response to a service-command 307 issued by the client device. As shown in FIG. 3, a successful-completion response 308 is sent to the server device to confirm the completion of the requested task. An exemplary successful-completion response 308 could be formatted as follows: x.sub.1 x.sub.2 x.sub.3 -OK where x.sub.1 x.sub.2 x.sub.3 is the identifier of the requested service. Alternatively, a server device might return other data in addition to or in lieu of the usual successful-completion response 308 described above. For example, upon successfully setting the clock of a server device to a specified time, the device might send a response echoing the time which was set. Other status responses are sent by the server device to indicate other conditions. For example in an exemplary embodiment, x.sub.1 x.sub.2 x.sub.3 -NOSERV could be sent when a requested service is unavailable. As another example, x.sub.1 x.sub.2 x.sub.3 -NOTDONE could be sent when a requested service is available, but the server device is unable to successfully complete the requested service. Likewise, x.sub.1 x.sub.2 x.sub.3 -SYNTAX could be sent when a service-command contains a syntax error. It should be obvious to one of ordinary skill in the art that other status-responses, in addition to, or in lieu of, the above-described ones, may be used as well and the present invention is not limited to any particular set. In an exemplary embodiment, the server device signals the end of its status-response by sending the "." and "<newline>" character. The client device ends further client-server communication by transmitting a quit-command 310 to the server device. In an exemplary embodiment, the quit-command may comprise the word "QUIT" or a similar indicator. In response to receiving a quit-command, the server closes the protocol connection using whatever method the server needs to disconnect the client, and the operation of the protocol is complete. FIG. 4 is an exemplary sequential diagram showing the operation of the "learning" capability of the protocol of the present invention. As with FIG. 3, it is important to note that the steps shown and described do not all have to take place in the sequence shown, and that the sequence represents only a typical use of the available protocol functions which may or may not be followed in actual use. The learning capability is invoked by a client device which wishes to know how to use a particular service. In an exemplary embodiment, a client device invokes this process by issuing a use-command. An exemplary format for a use-command is as follows: USE x.sub.1 x.sub.2 x.sub.3 -NAME. where x.sub.1 x.sub.2 x.sub.3 -NAME is the service identifier of a service the client device wishes to learn how to use. As shown in FIG. 4, the use-command 400 may be issued by the client device after it receives a response to a type-command 302; however, the use-command 400 may also be issued without first issuing and receiving a response to a type-command. In response to receiving a use-command 400, the server transmits a use-response 401 to the client device explaining how the identified service is used. In an exemplary embodiment, the server device's use-response 401 to the use-command 400 is in the following format: x.sub.1 x.sub.2 x.sub.3 -NAME P[PARAMTYPE] P[PARAMTYPE] . . . D[DESCRIPTION] where PARAMTYPE is the type of the parameters the service command requires. The description is a short description of the parameters. The parameters may include, but are not limited to, a generic string of characters, a set of pre-defined options ("choices") from which the client device may choose when invoking the service such as a time, a boolean "yes or no" option, an ID, or the like. Table 2 is a non-exhaustive list of parameters and their descriptions that might be included in the server device's use-response.
TABLE 2
PARAMTYPE DESCRIPTION
S String generic string input
C<CHOICE1.vertline. Choice - Where the client selects from a set of
CHOICE2.vertline.. . .> Choices described by
<CHOICE1.vertline.CHOICE2.vertline.etc>
T Time
B<FLAG1.vertline.FLAG2> Boolean - Client can select from either FLAG1
or
FLAG2
I ID - Used in SDTP list ID's when a service lists
ID's that are unique for this session only to
identify an item from a LIST.
FIG. 5 is an exemplary sequential diagram showing how communication between a client device and a server device may be switched from using the protocol of the present invention to a native, proprietary protocol. As with FIG. 3, it is important to note that the steps shown represent only a typical use of the available protocol functions which may or may not be followed in actual use. The "native" capability is generally controlled by the client device. When the client device using the SDTP protocol wishes to use the underlying communications link for another data protocol instead, the client device may send the native-command 500 to the server device. In an exemplary embodiment, the native-command comprises the word "NATIVE." As shown in FIG. 5, the native-command may be issued at any time after the server device issues the tag line message 301. Upon receiving the native-command, the server may respond by sending a native-response 501. In an exemplary embodiment, the native-response corresponding to the native-command 500 may be formatted as follows: NATIVE OK<newline>. In addition, the server will switch control over to the native protocol used for this link. Alternatively, the server may respond to the native-command by sending an error code response. In this case, further communication between the client and server continues to utilize the SDTP protocol rather than switching to the native protocol. Once communication switches to the native protocol, further SDTP communications are dependent on the native protocol reinstalling the SDTP server on the link after the transfer is completed. However, the SDTP client is disconnected and will have to reestablish an SDTP connection to use SDTP services. Typically this is done by disconnecting the link altogether and then reconnecting. If the devices are permanently connected, however, then an application-level "reset" could be executed to force the SDTP server to reinitialize and send the SDTP tag line message 301 once again. FIGS. 6-7 are state diagrams illustrating the operation of the client device and the server device, respectively, using an exemplary embodiment of the protocol of the present invention. Operation of the protocol in both the client device and the server device includes multiple static states and multiple transitional states. The static states are shown as solid circles and represent the status of a device at a given time. Transitions from one static state to the next occur in response to specific events. The events triggering such a transition vary from static state to static state, so an event triggering a transition when a device is in one state does not necessarily effect such a transition when the device is in another state. Once a device enters a particular static state, the device remains in that state until one of the triggering events associated with that state occur. The events which trigger a transition are outside the control of the protocol. In a preferred embodiment, operation of the protocol is controlled by a higher-level application. Thus, the application controls when a particular triggering event occurs. A transition between static states may result in passing through one or more transitional states. In a transitional state, a specific action is performed and the transitional state is automatically exited upon completing the action. The automatic transition from a transitional state is illustrated by a broken line. Thus, each event results in a transition from one static state to another static state with the possibility of passing through a transitional state. As shown in FIG. 6, the operation of a client device using the protocol of the present invention includes seven static states (IDLE 600, LINKING 602, READY 603, WAIT/TYPE 606, WAIT/USE 609, WAIT/SERVICE 612 and NATIVE 615) and eight transitional states (TRY HOOKUP 601, TYPE 605, USE 608, SERVICE 611, NATIVE 614, QUIT 617, EXIT 618 and RESTART 619). The static states are defined as follows: IDLE the client device is not currently in communication with the server device; LINKING the client device has attempted to initialize communication with the server device but has not yet received a SDTP tag line message from the server device; READY the client device has established communication with the server device and is ready to send a command to the server device; WAIT/TYPE the client device is waiting on a response to the type-command; WAIT/USE the client device is waiting on a response to the use-command; WAIT/SERVICE the client device is waiting on a response to a request for a particular service; and NATIVE communication with the server device using the SDTP protocol has been discontinued, but the underlying link is still in existence. The transitional states are shown as diamond boxes and represent a particular action taken by the client. The actions taken are defined as follows: TRY HOOKUP the client device sends a link request to the server device; TYPE the client device sends a type-command to the server device; USE the client device sends a use-command to the server device; SERVICE the client device sends a service-command to the server device; NATIVE the client device sends a native-command to the server device requesting that the server device switch communications to native; QUIT the client device sends a quit-command to the server device; EXIT the client device ends all communications with the server device; and RESTART in some circumstances, the client device requests SDTP to be reestablished directly. Initially, the IDLE state 600 is active. If communication with a target server device is desired, the IDLE state 600 is exited and at 601 the client transmits the appropriate signal or signals to the target server device before entering the LINKING state 602. Any communications between the client device and the target server device are being carried out using an underlying link protocol as described previously. While in the LINKING state 602, the client device may receive a tag line message 301 from the target server device indicating that the device is SDTP-enabled. When the tag line message is received 620, the READY state 603 is entered. The READY state 603 is the basic operational state of the SDTP protocol on a client device. A transition out of the READY state 603 occurs in response to one of several events. In response to a type-request event 604, a type-command 605 is sent to discover the type and services of the target server device, now referred to as the server device. After sending the type-command 605 the WAIT/TYPE state 606 is entered. If the client device receives a response to the type-command, the READY state 603 is re-entered. Another event that may occur in the READY state 603 is the occurrence of a use-request event 607. In response to a use-request event 607, a use-command 608 is sent to discover how to use a particular service. After sending a use-command 608 the WAIT/USE state 609 is entered. If the client device receives a response to the use-command, the READY state 603 is re-entered. Another event that may occur is the occurrence of a service-request event 610. In response to a service-request event 610, a service-command 611 is sent to request that a particular service be performed by the server device. After sending a service-command 611 the WAIT/SERVICE state 612 is entered. If the client device receives a response to the service-command, the READY state 603 is re-entered. Another event that may occur is the occurrence of a native-request event 613. In response to a native-REQUEST EVENT 613, a native-command is sent to halt communications using the SDTP protocol and initiate communications between the two devices using a native protocol. After sending the native-command 614 the NATIVE state 615 is entered. Another event that may occur is the occurrence of a quit-request event 616. In response to a quit-request event 616, a quit-command 617 is sent to halt communications between the two devices. After sending the quit-command 617 to the server device the IDLE state 600 is re-entered. In the NATIVE state 615, the client device may continue communicating with the server device using some other data protocol, such as Simple Mail Transfer Protocol ("SMTP") or HyperText Transfer Protocol ("HTTP"). Generally, when no further communication between the client device and the server device is desired, an exit procedure 618 is performed and the IDLE state 600 is re-entered. Communications using the SDTP protocol may then be reinitialized as described previously. As previously described, however, there are some cases in which a client device in the NATIVE state 615 can directly request SDTP communications to be renewed by issuing a restart signal 619 to the client device forcing a return to the LINKING state 602. After issuing a restart signal 619, the client device re-enters the LINKING state 602. As shown in FIG. 7, operation of a server device using the protocol of the present invention includes three static states (IDLE 700, READY 702 and NATIVE 711) and eight transitional states (TAG LINE 701, TYPE-RESPONSE 704, USE-RESPONSE 706, STATUS-RESPONSE 708, NATIVE-RESPONSE 710, DISCONNECT 713, EXIT 714 and RESTART 715). The static states are shown as solid circles and represent the status of the server at a given time. The static states are defined as follows: IDLE the server device is not currently in communication with a client device; READY the server device has established communication with the client device and is ready to receive commands from the client device; and NATIVE communication with the client device using the SDTP protocol has been discontinued, but the underlying link is still in existence. The transitional states are shown as diamond boxes and represent a particular action taken by the server. The actions that are included are defined as follows: TAG LINE the server device sends the SDTP tag line message to the client device; TYPE-RESPONSE the server device sends the client device a type-response comprising a list of device and service identifiers; USE-RESPONSE the server device sends the client device a use-response explaining the operation of a particular service identified by the client device; STATUS-RESPONSE the server device performs a requested service and sends a status response to the client device; NATIVE-RESPONSE the server device sends a native-response acknowledging that communications using SDTP will be discontinued; DISCONNECT the server device ends SDTP communications with the client device and disconnects from the client device; EXIT the server device ends all communications with the client device and disconnects from the client device; and RESTART the server device is restarted to directly reinitiate further SDTP communications. Initially, the IDLE state 700 is active. If another device attempts to communicate with the server device using the link protocol described previously, the IDLE state 700 is exited and a tag line message 701 is transmitted to the client device. After transmitting the tag line message 701, the READY state 702 is entered. The READY state 702 is the basic operational state of the SDTP protocol on the server device. A transition out of the READY state 702 occurs in response to one of several events. One event is the reception of a type-command 605 from the client device. In response to a type-command event 703, the server device sends the device id of the server device and its available services type-response 704 to the client device and returns to the READY state 702. Another event that may occur is the reception of a use-command 608 from the client device. In response to a use-command event 705, the server device sends a use-response 706 to the client device and then returns to the READY state 702. Another event that may occur is the reception of a service-command 611. In response to a service-command event 707, the identified service is performed and a service-response is sent 708, and operation returns to the READY state 702. Another event that may occur is the reception of a native-command 614 ordering SDTP protocol communications to be halted so that communications between the two devices may be carried out using a native protocol. In response to a native-command event 709, the server sends a native-response 710 and then enters the NATIVE state 711. Another event that may occur is the reception of a quit-command 617 from the client device. In response to a quit-command event 712, the server device disconnects the client 713 and reenters the IDLE state 700. Once the NATIVE state 707 is entered, the server device may continue communicating with the client device using some other data protocol as described previously. Generally, when no further communication between the client device and the server device is desired, an exit procedure 714 is performed and the server returns to the IDLE state 700. Communications using the SDTP protocol may then be reinitialized as described previously. However, there are some cases in which a server device in the NATIVE state 711 can respond to a request for the renewal of SDTP communications directly by issuing a restart signal at 715 and then resending the SDTP tag line message 701. From the foregoing description, it will be appreciated that the present invention provides a protocol and a method for facilitating communication between various electronic devices and enabling the devices to share features, functionality and information. Although the present invention has been described using various examples and command formats, it will be appreciated that the present invention is not limited by these examples. The present invention may be implemented and embodied in a variety of devices and may be implemented in software or hardware. In addition, the operation, steps and procedures of the present invention may be implemented in a variety of programming languages. The specification and the drawings provide an ample description of the operation, steps and procedures of the present invention to enable one of ordinary skill in the art to implement the various aspects of the present invention. The present invention has been described in detail with particular reference to exemplary embodiments. It is understood that variations and modifications can be effected within the spirit and scope of the invention, as described herein before, and as defined in the appended claims. The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or acts for performing the functions in combination with other claimed elements as specifically claimed.
|
Same subclass Same class Consider this |
||||||||||
