US20090113460A1 - Systems and methods for providing a generic interface in a communications environment - Google Patents
Systems and methods for providing a generic interface in a communications environment Download PDFInfo
- Publication number
- US20090113460A1 US20090113460A1 US12/157,348 US15734808A US2009113460A1 US 20090113460 A1 US20090113460 A1 US 20090113460A1 US 15734808 A US15734808 A US 15734808A US 2009113460 A1 US2009113460 A1 US 2009113460A1
- Authority
- US
- United States
- Prior art keywords
- communications
- protocol
- over
- application
- function call
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 238000004891 communication Methods 0.000 title claims abstract description 671
- 238000000034 method Methods 0.000 title claims abstract description 84
- 230000006870 function Effects 0.000 claims description 99
- 230000001413 cellular effect Effects 0.000 claims description 11
- 230000003213 activating effect Effects 0.000 claims description 5
- 230000008878 coupling Effects 0.000 claims description 5
- 238000010168 coupling process Methods 0.000 claims description 5
- 238000005859 coupling reaction Methods 0.000 claims description 5
- 238000012544 monitoring process Methods 0.000 claims description 4
- 230000008685 targeting Effects 0.000 claims 2
- 230000000977 initiatory effect Effects 0.000 description 28
- 230000004044 response Effects 0.000 description 24
- 230000004913 activation Effects 0.000 description 18
- 230000011664 signaling Effects 0.000 description 15
- 230000008569 process Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 4
- 230000008713 feedback mechanism Effects 0.000 description 3
- 238000010295 mobile communication Methods 0.000 description 3
- 230000007781 signaling event Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/18—Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/03—Protocol definition or specification
Definitions
- the present invention relates generally to the field of digital communications interfaces and more specifically to systems and methods for providing a generic interface in a communications environment.
- Digital communications may be performed over a variety of communications media, including voice, email, text messaging, multimedia messaging, etc. These digital communications may utilize any of a variety of protocols.
- the communications media may not be compatible with one another. Therefore, a communications device may not be able to seamlessly communicate over two different communications media, such as voice and text.
- the variety of protocols may also be incompatible with one another. These protocol incompatibilities may prevent a communications device that utilizes one protocol from communicating with another communications device that utilizes a different protocol.
- a software application that is intended to communicate using more than one communication media and/or protocol may need to include separate code with separate function calls for each communications media and/or protocol. This can become unwieldy and cumbersome, making multiple communications media and/or protocols interoperating seamlessly in the application difficult or impractical.
- a method for providing a communications services interface includes receiving a first application function call.
- the first application function call specifies a first communications channel utilizing a first communications protocol to communicate over a network.
- the method further includes sending a first protocol command to control communications over the first communications channel.
- the first protocol command is responsive to the first application function call.
- the method additionally includes receiving a second application function call.
- the second application function call specifies a second communications channel utilizing a second communications protocol to communicate over the network.
- the second application function call has a same syntax as the first application function call.
- the second communications protocol is different than the first communications protocol.
- the method also includes sending a second protocol command to control communications over the second communications channel.
- the second protocol command is responsive to the second application function call.
- FIG. 1 illustrates an exemplary communications system.
- FIG. 2 illustrates an exemplary communications system including a communications device configured to communicate over a network.
- FIG. 3 illustrates an exemplary method of allocating and activating communications services.
- FIG. 4 illustrates an exemplary method of initiating a call.
- FIG. 5 illustrates an exemplary method of terminating a call.
- FIG. 6 illustrates an exemplary method of accepting an incoming call.
- FIG. 7 illustrates an exemplary method of providing an interface between a communications application and a plurality of communications protocols.
- FIG. 8 illustrates an exemplary method of providing communications between multiple entities.
- FIG. 9 illustrates an exemplary method of providing a communications services interface.
- FIG. 10 illustrates an exemplary communications device.
- Systems and methods for providing a generic interface in a communications environment are described. These systems and methods enable applications to seamlessly communicate over multiple communications media and/or use multiple communications protocols by using a shared application programming interface.
- the application programming interface may provide a common command function call configured to interface with multiple protocol stacks.
- the shared application programming interface may abstract the uniqueness of and differences between various communications media and protocols into a common set of function calls and data structures.
- an application may interface to multiple incompatible communications media and communications protocols using a common set of software code. Because the details of the communications protocols are abstracted by the application programming interface, the application software code may not need to address the details of each individual communications protocol. Because the application software code may be independent of the details of the individual communications protocols, the application software code may easily be expanded to support new communications protocols also supported by the application programming interface.
- FIG. 1 illustrates an exemplary communications system 100 .
- the communications system 100 includes a communications device 102 and a network 104 .
- the communications device 102 may be configured to communicate using a variety of communications protocols 106 over various communications media 108 .
- One or more communications services providers 110 may provide various communications services over the network 104 .
- the communications device 102 may include a mobile communications device such as a cellular telephone, cordless telephone handset, portable computer equipped with wireless internet access, personal digital assistant, etc.
- the communications device 102 may be configured to operate in multiple modes, such as both Wi-Fi and cellular, and thereby provide communications via multiple communications media 108 and/or networks 104 using one or more communications protocols 106 .
- the communications device 102 may also include a fixed-location communications device such as a desktop personal computer with internet access, desktop telephone, conference speakerphone, etc.
- Software configured to implement the communications protocols 106 may be associated with the communications device 102 .
- the communications device 102 may include a transceiver configured to communicate over the network 104 .
- the various communications media 108 may include media connections provided by various communications protocols including circuit-switched (CS) protocols, internet protocol (IP), and proprietary protocols.
- the communications media 108 may include voice communications such as plain old telephone service (POTS), cellular telephone service, voice over internet protocol (VoIP), voice mail, and/or text communications such as email, Short Message Service (SMS), instant messaging (IM), and text chat services.
- Multimedia communications including text, still images, video, and audio may also be provided as part of the communications media 108 .
- the various communications media 108 may also include internet access, web browsing, file transfer protocol (FTP), and the like.
- the media connections provided by the communications media 108 may include communications services associated with the one or more communications services providers 110 .
- the one or more communications services providers 110 may associate a communications services provider account with the communications device 102 .
- the communications services provider account may be associated with one or more communications protocols 106 , usernames, passwords, internet addresses, and other communications attributes.
- a communications channel may be provided by the communications device 102 utilizing the one or more communications services providers 110 over the network 104 .
- the communications channel may be established by the communications device 102 connecting and authenticating with the one or more communications services providers 110 using the communications protocols 106 .
- the communications device 102 may establish one or more communications channels simultaneously. Each of the communications channels may use a different protocol or be carried by a different communications services provider 110 . In some embodiments, more than one communications channel may use a single protocol or be provided by a single communications services provider 110 .
- Each communications channel may be associated with a unique service identification tag (ID), and be independent from other communications channels that may be established by the communications device 102 .
- ID unique service identification tag
- the communications protocols 106 may adhere to standards defined for communicating over the various communications media 108 .
- communications protocols 106 adhering to internet standards may include HTTP, AJAX, File Transfer Protocol (FTP), User Datagram Protocol (UDP), and Transmission Control Protocol/Internet Protocol (TCP/IP).
- communications protocols adhering to voice communications standards may include Global System for Mobile communications (GSM), Extensible Messaging and Presence Protocol (XMPP), and Session Initiation Protocol (SIP).
- GSM Global System for Mobile communications
- XMPP Extensible Messaging and Presence Protocol
- SIP Session Initiation Protocol
- GSM may be used to support cellular telephone communications over cellular networks provided by one or more communications services providers 110 .
- XMPP may be used to support instant messaging services provided by one or more communications services providers 110 .
- XMPP and SIP may be used to support voice over internet protocol (VoIP) communications provided by one or more communications services provider 110 .
- communications protocols adhering to presence and instant messaging standards may include Common Profile for Presence (CPP), Common Profile for Instant Messaging (CPIM), Common Presence and Instant Messaging (CPIM) Message Format, and XMPP.
- the communications protocols 106 may be implemented on a computing device (not shown) disposed external to the communications device 102 and communicatively coupled with the communications device 102 via the network 104 .
- commands configured to exercise the communications protocols 106 may be issued from the communications device 102 to the computing device.
- the network 104 may include a wired communications network such as an Ethernet local area network (LAN) or a landline POTS network.
- the network 104 may also include a wireless communications network such as a Wi-Fi network, a WiMax network, or a cellular telephone network.
- the network 104 may include an internet or World Wide Web (WWW) network.
- the network 104 may be configured to carry communications associated with the communications media 108 and the communications protocols 106 .
- FIG. 2 illustrates an exemplary communications system 200 including the communications device 102 configured to communicate over the network 104 .
- the communications device 102 includes a communications system software 202 as well as an operating system 204 .
- the communications system software 202 includes an application 206 configured to communicate with another entity over the network 104 .
- the other entity may include another communications device (not shown) configured to communicate over the network 104 .
- a communications services interface module 208 includes software for providing communications services to the application 206 to enable the application 206 to communicate over the network 104 .
- the communications system software 202 also includes protocol stacks 210 and a DSP engine 212 .
- the protocol stacks 210 may comprise modules including software and/or electronic circuitry configured to implement communications protocols for communicating over the network 104 via a network interface 214 .
- the protocol stacks 210 include a XMPP protocol stack 210 A, an SIP protocol stack 210 B, a proprietary protocols protocol stack 210 C, an IM services protocol stack 210 D, and a cellular services protocol stack 210 E, each of which may be hereinafter referred to as a member of the protocol stacks 210 .
- the DSP engine 212 may comprise a module including software and/or electronic circuitry configured to perform digital signal processing functions in conjunction with the communications services interface module 208 .
- Each member of the protocol stacks 210 may be configured to establish one or more communications channels over the network 104 by interfacing with the network 104 via the network interface 214 .
- the network interface 214 may also interface with, communicate with, and/or interoperate with the operating system 204 to implement the one or more communications channels.
- the operating system 204 may include Palm OS, Symbian, Windows CE, Windows Mobile, Windows XP, Windows Vista, MacOS, UNIX, Linux, Solaris, Nucleus OS, Vx Works, etc.
- the application 206 may comprise a software module including a user interface.
- the user interface may be configured to receive commands and instructions from a user associated with the communications device 102 and report a status relating to the one or more communications channels to the user.
- the application 206 may also be configured to receive communications input from the user and provide communications output to the user.
- the communications services interface module 208 provides generalized control of the protocol stacks 210 for establishing and manipulating the communications media 108 .
- Other protocol stacks (not shown) implementing other communications protocols, such as Simple Traversal of User Datagram Protocol Through Network Address Translators (STUN), may also be controlled by the communications services interface module 208 .
- the communications services interface module 208 may include data and algorithms taking into account the communications services which each member of the protocol stacks 210 is capable of supporting.
- the communications services interface module 208 may also include data and algorithms configured to couple communications services and functionality between one member of the protocol stacks 210 or the DSP engine 212 with another member of the protocol stacks 210 or the DSP engine 212 .
- the communications services interface module 208 may enable one or more communications services over one or more communications media 108 , using one or more communications protocols 106 , and carried by the one or more communications services providers 110 to seamlessly interface with one another.
- the communications services interface module 208 may utilize the DSP engine 212 to provide digital processing of voice, audio, and/or video in conjunction with the protocol stacks 210 .
- the communications services interface module 208 may create common audio tones used in communications services supported by the protocol stacks 210 , such as dial tones, call progress tones, DTMF tones, and telephone ringing tones.
- the communications services interface module 208 may control multimedia streaming over the network 104 .
- the communications services interface module 208 may control the streaming of voice over the network 104 .
- the communications services interface module 208 may also control the streaming of audio and/or video over the network 104 .
- the communications services interface module 208 includes an application programming interface 216 and a communications services protocol interface 218 .
- the application programming interface 216 is configured to provide a variety of function calls related to communications for use by the application 206 .
- the function calls may be configured to abstract the details of underlying protocols implemented in the protocol stacks 210 and the DSP engine 212 . By abstracting these details, the function calls enable a generalized common interface to the plurality of underlying protocols which may be independent of the details of each of the underlying protocols, according to exemplary embodiments.
- the function calls may abstract protocol-specific communications between the communications services interface module 208 and each member of the protocol stacks 210 into common function calls between the application 206 and the communications services interface module 208 .
- the application 206 may use the function calls to send one or more API calls 220 to the communications services interface module 208 .
- the application 206 may also use the function calls to configure the application 206 to process one or more API events 222 which may be received from the communications services interface module 208 .
- the application programming interface 216 may provide support for two types of the one or more API calls 220 .
- a first type of the one or more API calls 220 may be configured to enable the application 206 to control an action performed by at least one member of the protocol stacks 210 or the DSP engine 212 .
- a second type of the one or more API calls 220 may be configured to establish a feedback mechanism by which at least one member of the protocol stacks 210 or the DSP engine 212 may notify the application 206 of an event or status.
- the feedback mechanism may include the one or more API events 222 .
- Each API event of the one or more API events 222 may be associated with a particular function call, or instance of the one or more API calls 220 , which may have established the feedback path associated with the API event.
- the one or more API events 222 may be asynchronous. Examples illustrating the feedback mechanism are described herein with reference to FIGS. 3-6 .
- a single function call may be used by the application 206 to interface with a plurality of the members of the protocol stacks 210 by changing a parameter (or argument) of the single function call.
- source code associated with the application 206 may include a single function call that includes a parameter specifying that the XMPP protocol stack 210 A be utilized for performing a communications function.
- the single function call may then be used again by the application source code to perform the communications function using the SIP protocol stack 210 B in addition, simply by replacing the parameter specifying that the XMPP protocol stack 210 A be utilized with a parameter specifying that the SIP protocol stack 210 B be utilized.
- the communications services interface module 208 may control and communicate with the protocol stacks 210 as well as the DSP engine 212 to perform functions related to the one or more communications channels carried over the network 104 .
- the communications services interface module 208 may issue protocol commands 224 to the protocol stacks 210 .
- the communications services interface module 208 may also issue DSP commands 226 to the DSP engine 212 .
- the protocol commands 224 issued to one member of the protocol stacks 210 such as the XMPP protocol stack 210 A, may differ in form and/or syntax from the protocol commands 224 issued to another member of the protocol stacks 210 , such as the SIP protocol stack 210 B.
- a first protocol command, such as one of the protocol commands 224 , issued in response to a first API call, such as the one or more API calls 220 , having a given protocol-dependent parameter may be syntactically different from a second protocol command issued in response to a second API call having a same function name as the first API call but a different protocol-dependent parameter than the first API call.
- the syntactical difference may be embodied by a different function name, a different set of parameters, or both.
- the syntactical difference may be dependent upon, or responsive to, a syntax required by each protocol implemented within the set of the protocol stacks 210 and the DSP engine 212 .
- Each protocol command of the protocol commands 224 may conform to a syntax standard corresponding to the member of the protocol stacks 210 to which the protocol command is directed.
- Each member of the protocol stacks 210 may have a different syntax standard for protocol commands 224 than other members of the protocol stacks 210 .
- the communications services interface module 208 may receive protocol events 228 from the protocol stacks 210 .
- the communications services interface module 208 may also receive DSP events 230 from the DSP engine 212 .
- An instance of the protocol events 228 received from one member of the protocol stacks 210 may differ in syntax and/or form from another instance of the protocol events 228 received from a different member of the protocol stacks 210 .
- a specific protocol event among the instances of protocol events 228 may be in response to one or more communications 232 received through the network 104 by the communications device 102 .
- the specific protocol event may notify the communications services interface module 208 that a communications channel has been established in response to a network acknowledgement, which may include an instance of the one or more communications 232 received through the network 104 .
- the communications services interface module 208 may send the one or more API events 222 to the application 206 when triggered by the protocol events 228 to notify the application 206 of a particular occurrence or status.
- the one or more API events 222 may also be sent from the communications services interface module 208 when triggered by an instance of the DSP events 230 issued by the DSP engine 212 to notify the application 206 of a particular occurrence or status.
- the protocol events 228 and the DSP events 230 may be asynchronous.
- Each instance of the protocol events 228 issued in response to a first communication may include an instance of the one or more communications 232
- the syntactical difference between each instance of the protocol events 228 may be dependent upon a syntax standard required by each protocol supported by members of the protocol stacks 210 .
- the communications services interface module 208 may convert the syntactically different instances of the protocol events 228 and the DSP events 230 into the one or more API events 222 having a common syntax.
- a first API event such as an instance of the one or more API events 222
- sent from the communications services interface module 208 to the application 206 in response to the first communication may have a same function name as a second API event sent from the communications services interface module 208 to the application 206 in response to the second communication, although a first protocol event, such as an instance of the protocol events 228 , associated with the first communication and a second protocol event associated with the second communication may be syntactically different.
- the first API event may differ from the second API event in only a parameter value.
- the communications services protocol interface 218 may provide a conversion between the common function calls provided by the application programming interface 216 and the protocol-specific communications between the communications services interface module 208 and the protocol stacks 210 and the DSP engine 212 .
- the communications services protocol interface 218 may provide the conversion between a common API call, which may include an instance of the one or more API calls 220 , and each of the protocol commands 224 and the DSP commands 226 .
- the communications services protocol interface 218 may also provide the conversion between each instance of the protocol events 228 and the DSP events 230 and a common API event, which may include an instance of the one or more API events 222 .
- the protocol stacks 210 may communicate with the communications services interface module 208 via a command-event model.
- the communications services interface module 208 may send a protocol command, such as an instance of the protocol commands 224 , to a protocol stack which is a member of the protocol stacks 210 .
- the protocol command may contain a block of digital data representative of the command.
- the communications services interface module 208 may then receive a protocol event, such as an instance of the protocol events 228 , sent by the protocol stack.
- the protocol event may contain a block of digital data representative of the event.
- the event may include a status report in response to the protocol command, an IP event received from a communications channel over the network 104 , etc.
- the communications services interface module 208 may use one or more Inter-Process Communication (IPC) techniques to send the protocol command and to receive the protocol event.
- IPC Inter-Process Communication
- a different IPC technique may be used to send the protocol command than to receive the protocol event.
- IPC techniques include pipes, sockets, remote procedure calls (RPC), shared memory, and message passing.
- the communications services interface module 208 may support hot swapping or plug-and-play operation of the members of the protocol stacks 210 .
- a selected member of the protocol stacks 210 may be deactivated while the communications services interface module 208 continues operating and supporting other members of the protocol stacks 210 .
- the selected member of the protocol stacks 210 may be deactivated without interrupting or ceasing operation of any communications services or communications channels supported by the other members of the protocol stacks 210 .
- the selected member of the protocol stacks 210 may be deactivated because the communications services interface module 208 detects an error condition in the selected member of the protocol stacks 210 , because hardware or system resources of the communications device 102 are not sufficient to support continued operation of the selected member of the protocol stacks 210 , because the selected member of the protocol stacks 210 is being upgraded to a new version of the selected member of the protocol stacks 210 , because the user associated with the communications device 102 wishes to deactivate communications services supported by the selected member of the protocol stacks 210 , because resources associated with the network 104 and/or the communications services providers 110 are insufficient to support operation of communications services supported by the selected member of the protocol stacks 210 , or other various reasons.
- a new protocol stack may be added as a new member of the protocol stacks 210 and be registered with and supported by the communications services interface module 208 while the communications services interface module 208 continues to operate and support other members of the protocol stacks 210 as well as any one or more communications services or communications channels supported by the other members of the protocol stacks 210 .
- the new protocol stack may be dynamically added when one or more resources become available to support operation of the new protocol stack.
- the one or more resources that become available may include hardware or system resources of the communications device 102 such as a network interface, a required quantity of free memory, or processing capacity.
- the one or more resources that become available may also include resources associated with the network 104 and/or the communications services providers 110 such as communications services, communications bandwidth, or network servers.
- the new protocol stack may also be dynamically added when one or more communications services and/or protocols supported by the new protocol stack are desired.
- the selected member of the protocol stacks 210 may be deactivated because of an error condition. Examples of error conditions include bugs, crashes, unresponsiveness, incorrect behavior, etc. Then, the selected member of the protocol stacks 210 may be restarted to restore the selected member of the protocol stacks 210 to full operation. While any communications services and/or communications channels supported by the selected member of the protocol stacks 210 may be interrupted when the selected member of the protocol stacks 210 is deactivated, the interrupted communications services and/or communications channels may be restored or reactivated after the selected member of the protocol stacks 210 is restarted.
- error conditions include bugs, crashes, unresponsiveness, incorrect behavior, etc.
- the communications services interface module 208 may monitor usage of the members of the protocol stacks 210 as well as available hardware and system resources of the communications device 102 .
- the communications services interface module 208 may dynamically activate and/or deactivate various members of the protocol stacks 210 as the various members of the protocol stacks 210 are needed and/or as available resources allow.
- a set of active members of the protocol stacks 210 may dynamically change depending on dynamically changing system resources of the communications device 102 , resources associated with the network 104 , and/or resources associated with the communications services providers 110 .
- memory and/or processing resources of the communications device 102 may be conserved.
- the application 206 may be written as source code in a computer language such as C, C++, or Java.
- the application source code may include function calls provided by the application programming interface 216 to include communications functionality associated with each of the protocols in the protocol stacks 210 as well as the DSP engine 212 .
- a software compiler executing on a computing processor may compile the source code into object code.
- the object code may be targeted to a particular computing processor associated with the communications device 102 .
- the application programming interface 216 may include one or more libraries configured to provide object code for various target computing processors.
- a compiler switch may be set to control the compiler to generate executable object code for the target computing processor associated with the compiler switch setting. Therefore, the application programming interface 216 may enable a single source code to be targeted to more than one target computing processor and/or communications device 102 based upon a compiler switch setting.
- FIG. 3 illustrates an exemplary method of allocating and activating one or more communications services.
- the method illustrates how an application programming interface, such as the application programming interface 216 discussed herein, may be used by an application, such as the application 206 , to allocate and activate communications channels using different protocol stacks, such as the members of the protocol stacks 210 .
- the method also illustrates how a communications services interface module, such as the communications services interface module 208 , may support plug-and-play protocol stacks whereby new members of the protocol stacks 210 may be dynamically added and supported by the communications services interface module 208 without re-coding, recompiling, or interrupting operation of the communications services interface module 208 and/or application 206 .
- the new members of the protocol stacks 210 may be dynamically added and supported without interrupting operation of the one or more communications services already activated. After the one or more communications services are allocated and activated, the communications channels may be used by the application 206 .
- the application 206 may include a state machine configured to implement the method.
- a protocol stack such as a member of the protocol stacks 210 , sends a registration event, such as an instance of the protocol events 228 , to the communications services interface module 208 .
- the protocol stack may register with the communications services interface module 208 .
- the registration event may include data regarding the protocol stack such that the communications services interface module 208 may use the protocol stack to allocate and activate one or more communications services associated with the protocol stack.
- the communications services interface module 208 may be configured to utilize the protocol stack after receiving the registration event even though the communications services interface module 208 may have no data regarding the protocol stack prior to receiving the registration event. In this way, the communications services interface module 208 may support plug-and-play operation of a dynamically added protocol stack.
- the communications services interface module 208 may therefore support a communications interface protocol via the dynamically added protocol stack which the communications services interface module 208 did not previously support.
- the application 206 is notified of the availability of one or more protocols supported by the protocol stack registered in step 302 .
- the communications services interface module 208 may send a protocol availability event, which may include an instance of the one or more API events 222 , to the application 206 .
- the protocol availability event may include data regarding the one or more protocols supported by the protocol stack registered in step 302 .
- the application 206 may use the one or more protocols after receiving the protocol availability event even though the application 206 may have had no data regarding using the one or more protocols via the communications services interface module 208 prior to receiving the protocol availability event. In this way, the application 206 may utilize the one or more protocols supported by the protocol stack which is dynamically added and registered in step 302 .
- a new communications service is allocated.
- the application 206 may use an API function call to send an allocation command, which may include an instance of the one or more API calls 220 , to the communications services interface module 208 .
- the allocation command may specify which protocol, and consequently which member of the protocol stacks 210 , is to be associated with the new communications service.
- the new communications service is created via the protocol stack associated with the new communications service, which may include a member of the protocol stacks 210 .
- the communications services interface module 208 may send a communications service creation command, which may include an instance of the protocol commands 224 , to the protocol stack associated with the new communications service.
- the communications service creation command may be sent in response to receiving the allocation command sent by the application 206 in step 306 .
- the communications service creation command sent to the protocol stack associated with the new communications service may be syntactically different from another communications service creation command that may be sent to a different member of the protocol stacks 210 .
- the communications service creation command sent, and the protocol stack associated with the new communications service may be responsive to a parameter included in the allocation command sent by the application 206 to the communications services interface module 208 in step 306 .
- the protocol stack associated with the new communications service may perform functions related to creating the new communications service in response to receiving the communications service creation command.
- the functions performed by the protocol stack associated with the new communications service to create the new communications service may be specific to the protocol associated with the new communications service.
- the SIP protocol stack 210 B may initialize a user agent, while the XMPP protocol stack 210 A may initialize an endpoint.
- a creation status of the new communications service is reported to the communications services interface module 208 .
- the protocol stack associated with the new communications service may send a protocol service creation event, which may include an instance of the protocol events 228 , back to the communications services interface module 208 to notify the communications services interface module 208 that the protocol stack associated with the new communications service has successfully created the new communications service.
- the protocol service creation event may be sent to the communications services interface module 208 to report a communications service creation error.
- a communications service allocation status is reported to the application 206 .
- the communications services interface module 208 may send a corresponding interface service creation event, which may include an instance of the one or more API events 222 , to the application 206 .
- the corresponding interface service creation event may report the communications service allocation success or failure status in response to the creation status reported by the protocol stack associated with the new communications service in step 310 .
- communications service parameters are set.
- the application 206 may send one or more communications service parameter setting commands, each of which may correspond to an instance of the protocol commands 224 , to the communications services interface module 208 using an API function call which may include an instance of the one or more API calls 220 .
- the communications service parameters may include a uniform resource identifier (URI), server name and/or internet address, login userid and/or password, and so forth.
- URI uniform resource identifier
- the protocol stack associated with the new communications service is configured according to the communications service parameters set in step 314 .
- the communications services interface module 208 may send one or more protocol parameter setting commands, each of which may include an instance of the protocol commands 224 , to the protocol stack associated with the new communications service.
- the one or more protocol parameter setting commands may be sent in response to receiving the one or more communications service parameter setting commands sent by the application 206 in step 314 .
- the one or more protocol parameter setting commands sent to the protocol stack associated with the new communications service may be syntactically different from one or more protocol parameter setting commands that may be sent to a different member of the protocol stacks 210 .
- the new communications service is activated.
- the application 206 may send an activation command to the communications services interface module 208 using an API function call which may include an instance of the one or more API calls 220 .
- the activation command may specify the new communications service to be activated by identifying the previously allocated new communications service.
- the protocol stack associated with the new communications service is activated.
- the communications services interface module 208 may send a communications service activation command, which may include an instance of the protocol commands 224 , to the protocol stack associated with the new communications service.
- the communications service activation command may be sent in response to receiving the activation command sent by the application 206 in step 318 .
- the communications service activation command sent to the protocol stack associated with the new communications service may be syntactically different from a communications service activation command that may be sent to a different member of the protocol stacks 210 .
- the protocol stack associated with the new communications service may perform functions related to activating the new communications service in response to receiving the communications service activation command.
- the functions performed by the protocol stack associated with the new communications service to activate the new communications service may be specific to the protocol associated with the new communications service.
- the SIP protocol stack 210 B may register a user agent, while the XMPP protocol stack 210 A may connect and authenticate against an XMPP server.
- an activation status of the protocol stack associated with the new communications service is reported to the communications services interface module 208 .
- the protocol stack associated with the new communications service may send a protocol activation event, which may include an instance of the protocol events 228 , back to the communications services interface module 208 to notify the communications services interface module 208 that the protocol stack associated with the new communications service has successfully activated the new communications service.
- the protocol activation event may be sent to the communications services interface module 208 to report a communications service activation error.
- a communications service activation status is reported to the application 206 .
- the communications services interface module 208 may send a corresponding interface service activation event, such as an instance of the one or more API events 222 , to the application 206 .
- the corresponding interface service activation event may report the communications services activation success or failure status in response to the activation status reported by the protocol stack associated with the new communications service in step 322 .
- another communications service may be allocated and activated by repeating steps 302 - 324 .
- the other communications service may utilize a different protocol or member of the protocol stacks 210 than the prior new communications service.
- the other communications service may utilize the same protocol or member of the protocol stacks 210 as the prior new communication service, but may allocate and activate a separate communications channel than the prior new communications service.
- FIG. 4 illustrates an exemplary method of initiating a call.
- the call may be initiated over a communications service previously allocated and activated as described with reference to FIG. 3 .
- the call may be initiated by a calling party and directed to a called party.
- the calling party may include a first communications service endpoint at a first communications device, which may include an example of the communications device 102 .
- the first communications service endpoint may include a first application, which may include an example of the application 206 .
- the called party may include a second communications service endpoint at a second communications device, which may include another example of the communications device 102 .
- the second communications service endpoint may include a second application, which may include another example of the application 206 .
- Protocol signaling and data traffic may be communicated over a network, such as the network 104 , between the first communications service endpoint and the second communications service endpoint according to the communications protocol associated with the communications service.
- Protocol signaling between the calling party and the called party may include data packets sent and received over the network 104 in accordance with the protocol to perform communications functions such as initiating a call, acknowledging a call, accepting a call, rejecting a call, putting a call on hold, resuming a call previously put on hold, initiating a conference call, terminating a call, requesting contact information, sending contact information, requesting presence information or status, sending presence information or status, sending text messages, sending multimedia messages, and so forth.
- a call initiation is signaled.
- the first application may send a call initiation command to the communications services interface module 208 specifying a called party to call and a communications service to use to call the called party.
- the call initiation command may be sent using an API function call, which may include an instance of the one or more API calls 220 .
- the API function call may have a consistent syntax regardless of which communications service, communications channel, or communications protocol may be associated with the call.
- API function call parameters may be specified to correspond with the communications service, communications channel, or communications protocol associated with the call.
- a protocol stack associated with the call is commanded to initiate the call.
- the protocol stack associated with the call may be chosen among the members of the protocol stacks 210 based on the communications service and/or the communications channel specified by the first application or associated with the called party.
- the communications services interface module 208 may then send a protocol call initiation command to the protocol stack associated with the call.
- the protocol call initiation command may include-an instance of the protocol commands 224 . Syntax of the protocol call initiation command may depend upon, or be responsive to, the protocol stack associated with the call. For example, the protocol call initiation command may differ in syntax than if a different member of the protocol stacks 210 was associated with the call, the communications service, and/or the communications channel.
- the protocol stack associated with the call performs protocol signaling to call the called party.
- the protocol signaling may include sending a call initiation data packet corresponding to the protocol associated with the call over the network 104 to the called party.
- the protocol signaling may also include monitoring the network 104 for an acknowledgement data packet that may be sent from the called party to the calling party to acknowledge receipt of the call initiation data packet.
- step 408 the protocol signaling of the called party is reported.
- the protocol stack associated with the call may send a protocol signaling event, which may include an instance of the protocol events 228 , to the communications services interface module 208 .
- the protocol signaling event may report that the protocol stack associated with the call has begun signaling the called party to initiate the call.
- step 410 calling the called party is reported.
- the communications services interface module 208 may send a calling event, which may include an instance of the one or more API events 222 , to the first application to report that the protocol stack associated with the call has signaled the called party to initiate the call.
- the calling event may be sent to the first application in response to receiving the protocol signaling event from the protocol stack associated with the call indicating that the protocol stack associated with the call has begun protocol signaling to initiate the call.
- the protocol stack associated with the call's receipt of an acknowledgement from the called party is reported.
- the received acknowledgement may indicate that the called party is in receipt of the request to initiate the call and is performing protocol signaling in response to the request.
- the protocol signaling being performed by the called party may include sending an acknowledgement data packet to the calling party.
- the calling party's protocol stack associated with the call may process the acknowledgement data packet received from the called party and send a protocol acknowledgement event, which may include an instance of the protocol events 228 , to the communications services interface module 208 .
- the protocol acknowledgement event may report that the called party has acknowledged the initiation of the call.
- the called party's acknowledgement of the call is reported.
- the communications services interface module 208 may send an interface acknowledgement event, which may include an instance of the one or more API events 222 , to the first application to report that the called party has acknowledged receipt of the call initiation.
- the interface acknowledgement event may be sent to the first application in response to receiving the protocol acknowledgement event sent from the protocol stack associated with the call in step 412 .
- the reported acknowledgement may correspond to a called telephone ringing in the earpiece of a calling telephone after dialing a telephone number.
- the protocol stack associated with the call's receipt of an acceptance of the call from the called party is reported.
- the called party may send a call acceptance data packet to the calling party over the network 104 to tell the calling party that the call is being accepted.
- the calling party's protocol stack associated with the call may process the call acceptance data packet received from the called party and send a protocol call acceptance event, which may include an instance of the protocol events 228 , to the communications services interface module 208 .
- the protocol call acceptance event may report that the called party accepts the call from the calling party.
- the communications services interface module 208 reports that the called party accepts the call.
- the communications services interface module 208 may send an interface call acceptance event, which may include an instance of the one or more API events 222 , to the first application to report that the called party accepts the call from the calling party.
- the event may be sent to the first application in response to receiving the protocol call acceptance event sent from the protocol stack associated with the call in step 416 .
- FIG. 5 illustrates an exemplary method of terminating the call.
- the method illustrated in FIG. 5 assumes that the call between the calling party and the called party has already been initiated as described with reference to FIG. 4 .
- a method similar to that illustrated in FIG. 5 may also be used for another desired communications function, such as placing the call on hold and resuming the call previously placed on hold, by customizing the commands, events, and data-packets to correspond to the other desired communications function.
- the calling party terminates the call in progress.
- the method may also be applicable to the called party terminating the call in progress.
- step 502 termination of the call in progress is signaled.
- the first application may send a call termination command to the communications services interface module 208 specifying that the call with the called party be terminated.
- the call termination command may be sent using an API function call, such as an instance of the one or more API calls 220 .
- the API function call may have a consistent syntax regardless of which member of the protocol stacks 210 is associated with the call in progress.
- the protocol stack associated with the call in progress is commanded to terminate the call in progress.
- the communications services interface module 208 may determine which member of the protocol stacks 210 is associated with the call in progress.
- the communications services interface module 208 may then send a call termination command to the protocol stack associated with the call in progress.
- the call termination command may include an instance of the protocol commands 224 . Syntax of the call termination command may depend upon, or be responsive to, the protocol stack associated with the call in progress. For example, the termination command to be sent to the protocol stack associated with the call in progress may differ in syntax than if a different member of the protocol stacks 210 was associated with the call in progress.
- protocol signaling with the called party is performed.
- the protocol stack associated with the call in progress may perform protocol signaling including sending a call termination data packet corresponding to the protocol associated with the call in progress over the network 104 to the called party.
- the call termination data packet may notify the called party that the call in progress is being terminated.
- the protocol signaling may also include monitoring the network 104 for an acknowledgement data packet that may be sent from the called party to the calling party to acknowledge receipt of the call termination data packet terminating the call.
- step 508 termination of the call in progress by the protocol stack associated with the call in progress is reported.
- the protocol stack associated with the call in progress may send a protocol call termination event, which may include an instance of the protocol events 228 , to the communications services interface module 208 .
- the protocol call termination event may report that the protocol stack associated with the call in progress has begun or completed signaling the called party to terminate the call.
- the protocol call termination event may be sent to the communications services interface module 208 to report a termination error.
- step 510 termination of the call in progress is reported.
- the communications services interface module 208 may send an interface call termination event, which may include an instance of the one or more API events 222 , to the first application to report that the protocol stack associated with the call in progress has terminated the call with the called party.
- the interface call termination event may be sent to the first application in response to receiving the protocol call termination event from the protocol stack associated with the call in progress in step 508 .
- FIG. 6 illustrates an exemplary method of accepting an incoming call.
- the incoming call may be accepted by the called party in response to the call initiation from the calling party, as described with reference to FIG. 4 .
- the called party may include the second communications service endpoint and the second application at the second communications device.
- protocol signaling for the incoming call is received.
- a protocol stack associated with the incoming call which may include a member of the protocol stacks 210 , may monitor the network 104 for the call initiation data packet to arrive.
- the call initiation data packet may correspond to a call initiation protocol signal.
- the protocol stack associated with the incoming call recognizes the call initiation protocol signal received over the network 104 as the incoming call initiation data packet, the protocol stack associated with the incoming call may receive the call initiation data packet for processing.
- a protocol incoming call event which may include an instance of the protocol events 228 , corresponding to the incoming call is generated.
- the protocol stack associated with the incoming call that receives the incoming call initiation data packet in step 602 may process the incoming call initiation data packet. If the protocol stack associated with the incoming call determines that the incoming call initiation data packet represents the incoming call corresponding to the communications service or communications channel supported by the protocol stack associated with the incoming call, the protocol stack associated with the incoming call may send the protocol incoming call event to the communications services interface module 208 . Syntax of the protocol incoming call event may depend upon, or be responsive to, the protocol stack associated with the incoming call. For example, the protocol incoming call event may differ in syntax than if a different member of the protocol stacks 210 was associated with the incoming call, the communications service, and/or the communications channel.
- the communications services interface module 208 may receive the protocol incoming call event sent in step 604 .
- the communications services interface module 208 may process the protocol incoming call event, effectively converting the protocol incoming call event whose syntax may be unique to the originating protocol stack associated with the incoming call into a protocol-independent incoming call event to be sent to the second application.
- the communications services interface module 208 may then send the protocol-independent incoming call event, which may include an instance of the one or more API events 222 , to the second application to notify the second application of the incoming call.
- the protocol-independent incoming call event sent to the second application may be in a consistent syntax regardless of which member of the protocol stacks 210 is associated with the incoming call.
- the incoming call is acknowledged.
- the second application may send an acknowledgement command to the communications services interface module 208 specifying that an acknowledgement be sent to the calling party.
- the acknowledgement command may be sent using an API function call, such as an instance of the one or more API calls 220 .
- the acknowledgement command may have a consistent syntax regardless of which member of the protocol stacks 210 is associated with the incoming call.
- a protocol acknowledgement command to acknowledge the incoming call is generated.
- the communications services interface module 208 may send the protocol acknowledgement command to the protocol stack associated with the incoming call.
- the protocol acknowledgement command may include an instance of the protocol commands 224 . Syntax of the protocol acknowledgement command may depend upon, or be responsive to, the protocol stack associated with the incoming call. For example, the protocol acknowledgement command may differ in syntax than if a different member of the protocol stacks 210 was associated with the incoming call.
- the protocol stack associated with the incoming call may then signal the calling party to acknowledge the incoming call over the network 104 .
- the incoming call is accepted.
- the second application may send an accept call command to the communications services interface module 208 specifying that the incoming call be accepted.
- the accept call command may be sent using an API function call, which may include an instance of the one or more API calls 220 .
- the API function call may have a consistent syntax regardless of which member of the protocol stacks 210 is associated with the incoming call.
- a protocol accept call command to accept the incoming call is generated.
- the communications services interface module 208 may send the protocol accept call command to the protocol stack associated with the incoming call.
- the protocol accept call command may include an instance of the protocol commands 224 . Syntax of the protocol accept call command may depend upon, or be responsive to, the protocol stack associated with the incoming call. For example, the protocol accept call command may differ in syntax than if a different member of the protocol stacks 210 was associated with the incoming call.
- the protocol stack associated with the incoming call may then signal the calling party to accept the incoming call over the network 104 .
- FIG. 7 illustrates an exemplary method of providing an interface between a communications application and a plurality of communications protocols.
- the method includes providing a common function call as part of an API in source code for the communications application, which may include an example of the application 206 , configuring a compiler for a target communications device or processor, and compiling the communications application source code into communications application executable code including the interface.
- the common function call is included in the communications application source code.
- the common function call may be part of the application programming interface 216 , described with reference to FIG. 2 .
- the communications application source code may use a same common function call, which may correspond to an instance of the one or more API calls 220 , for a first protocol stack as a second protocol stack.
- the first protocol stack and the second protocol stack may each include a member of the protocol stacks 210 , and may each be different from one another.
- the first protocol stack or the second protocol stack may require that a protocol command, which may correspond to one of the protocol commands 224 , be in syntax specific to the first protocol stack or the second protocol stack, respectively.
- the protocol command syntax for the first protocol stack may be different and incompatible with the protocol command syntax for the second protocol stack.
- a first target communications device which may include an instance of the communications device 102 , is targeted by a software compiler.
- the software compiler and one or more associated function libraries may be configured to compile the communications application source code into executable object code targeted to the first target communications device.
- the associated function libraries may include libraries associated with the application programming interface 216 .
- the software compiler and/or the associated function libraries may include an option to target the executable object code to one or more different communications devices 102 .
- the option may include a specification of a computing processor and/or an operating system associated with the one or more different communications devices 102 .
- the communications application executable code is compiled.
- the software compiler may compile the communications application source code into the communications application executable code using the associated function libraries on a computing processor.
- the communications application executable code may include executable API calls, which may include instances of the one or more API calls 220 , to interface to the communications services interface module 208 .
- the communications services interface module 208 may be configured to issue an instance of the protocol commands 224 to a member of the protocol stacks 210 , in response to the executable API call to be received from the communications application executable code.
- a syntax of the instance of the protocol commands 224 may depend upon, or be responsive to, the member of the protocol stacks 210 to which the instance of the protocol commands 224 is issued.
- the instance of the protocol commands 224 to be issued to one member of the protocol stacks 210 may differ in syntax from another instance of the protocol commands 224 to be issued to a different member of the protocol stacks 210 . Therefore, the communications services interface module 208 converts a single common function call syntax as received from the application 206 into a plurality of protocol command syntaxes responsive to the member of the protocol stacks 210 to which the instance of the protocol commands 224 is to be issued. This conversion enables the communications application source code to be independent of the details of each individual protocol supported by the communications services interface module 208 .
- steps 704 and 706 may be repeated for one or more additional target communications devices.
- Step 708 facilitates the creation of a plurality of different communications application executable codes from a single communications application source code.
- a first of the plurality of communications application executable codes may execute on the first target communications device while a second and/or subsequent communications application executable code created for a different target communications device than the first communications application executable code may execute on a different target communications device.
- FIG. 8 illustrates an exemplary method of providing communications between multiple entities.
- the multiple entities may include a central entity, a first entity, and a second entity, where the central entity may be communicatively coupled with both the first entity and the second entity.
- the communications may include voice communications protocols such as XMPP, SIP, GSM, etc.
- the communications may also include other protocols such as text communications protocols and multimedia communications protocols.
- the entities may include communications devices such as the communications device 102 .
- the communications between the multiple entities may be carried over a network such as the network 104 .
- a first voice communications protocol is utilized with the first entity.
- the central entity and the first entity may establish a first communications channel therebetween utilizing the first voice communications protocol.
- the first voice communications protocol may be implemented using a protocol stack, such as a member of the protocol stacks 210 , on an example of the communications device 102 .
- a second voice communications protocol is utilized with the second entity.
- the central entity and the second entity may establish a second communications channel therebetween utilizing the second voice communications protocol.
- the second voice communications protocol may be different from the first communications protocol.
- the second voice communications protocol may be the same as the first communications protocol.
- the first voice communications channel and the second voice communications channel may be carried over different communications services providers, such as communications services providers 110 .
- the first voice communications channel may be carried over a cellular telephone service provider, while the second voice communications channel may be carried over a voice over internet protocol service provider or an internet service provider.
- the first entity and the second entity are communicatively coupled.
- a voice conference service may be provided between the central entity, the first entity, and the second entity, such that all three entities may communicate with each other via the voice conference service by communicatively coupling the first communications channel and the second communications channel.
- one or more additional entities may join the voice conference.
- a new communications channel between the central entity and the one or more additional entities may use a different communications protocol or communications services provider 110 than either the first communications channel or the second communications channel.
- a voice call may be transferred.
- the central entity may receive and accept a call from the first entity, and transfer the call to the second entity.
- the call from the first entity may be received over the first communications channel using the first communications protocol, while the call may be transferred to the second entity over the second communications channel using the second communications protocol.
- the first communications protocol and the second communications protocol are different.
- the first communications protocol and the second communications protocol may be the same.
- the first voice communications channel and the second voice communications channel may be carried over different communications services providers 110 .
- a voice call may be forwarded.
- the central entity may receive the call initiation protocol signal from the first entity, and forward the call to the second entity without answering the call.
- the call initiation protocol signal from the first entity may be received over the first communications channel using the first communications protocol, while the call may be forwarded to the second entity over the second communications channel using the second communications protocol.
- the first communications protocol and the second communications protocol may be different.
- the first communications protocol and the second communications protocol may be the same.
- the first voice communications channel and the second voice communications channel may be carried over different communications services providers 110 .
- FIG. 9 illustrates an exemplary method of providing a communications services interface.
- the method illustrates how the communications services interface, which may include an example of the communications services interface module 208 discussed herein, may be used by a communications application, which may include an example of the application 206 , to communicate over multiple communications channels.
- the multiple communications channels may communicate over a network, such as the network 104 .
- the communications services interface module 208 receives a first application function call, which may include an instance of the one or more API calls 220 , from the application 206 .
- the first application function call may specify a first communications channel to which the first application function call pertains.
- the first communications channel may be controlled by a first module, which may include a member of the protocol stacks 210 .
- the first module may utilize a first module communications protocol to communicate.
- the first module communications protocol may include any communications protocol supported by the first module.
- the communications services interface module 208 sends a first protocol command, which may include an instance of the protocol commands 224 , to the first module.
- the first protocol command may be configured to control communications over the first communications channel.
- the first protocol command may be responsive to, or configured according to, the first application function call received in step 902 .
- the communications services interface module 208 may monitor a status of the first communications channel.
- the communications services interface module 208 may send a first status event, which may include an instance of the one or more API events 222 , to the application 206 reporting the status of the first communications channel.
- the communications services interface module 208 receives a second application function call, which may include an instance of the one or more API calls 220 , from the application 206 .
- the second application function call may specify a second communications channel to which the second application function call pertains.
- the second communications channel may be controlled by a second module, which may include a member of the protocol stacks 210 .
- the second module may utilize a second module communications protocol to communicate.
- the second module communications protocol may be any communications protocol supported by the second module.
- the first application function call may have a different syntax from the second application function call. In other embodiments, the first application function call and the second application function call may have a same syntax. In some embodiments, the first module may be a different module from the second module. In other embodiments, the first module and the second module may be a same module. In some embodiments, the first module communications protocol may include a different communications protocol from the second module communications protocol. In other embodiments, the first module communications protocol and the second module communications protocol may include a same communications protocol.
- the communications services interface module 208 sends a second protocol command, which may include an instance of the protocol commands 224 , to the second module.
- the second protocol command may be configured to control communications over the second communications channel.
- the second protocol command may be responsive to, or configured according to, the second application function call received in step 906 .
- the communications services interface module 208 may monitor a status of the second communications channel.
- the communications services interface module 208 may send a second status event, which may include an instance of the one or more API events 222 , to the application 206 reporting the status of the second communications channel.
- the second protocol command may have a different syntax from the first protocol command. In other embodiments, the second protocol command and the first protocol command may have a same syntax. In some embodiments, the second communications channel may be carried by a different communications services provider, such as an instance of the one or more communications services providers 110 , than the first communications channel. In other embodiments, the second communications channel may be carried by a same communications services provider 110 as the first communications channel.
- FIG. 10 illustrates an exemplary communications device 1000 .
- the communications device 1000 may comprise the communications device 102 according to some embodiments.
- the communications device 1000 comprises at least a communications interface 1002 , a processor 1004 , a memory 1006 , and storage 1008 , which are all coupled to a bus 1010 .
- the bus 1010 provides communications between the communications interface 1002 , the processor 1004 , the memory 1006 , and the storage 1008 .
- the communications interface 1002 may communicate with other communications devices (not shown) via a communications medium 1012 .
- the processor 1004 executes instructions.
- the memory 1006 permanently or temporarily stores data. Some examples of the memory 1006 are RAM and ROM.
- the storage 1008 also permanently or temporarily stores data. Some examples of the storage 1008 are hard disks and disk drives.
- the above-described components and functions can be comprised of instructions that are stored on a computer-readable storage medium.
- the instructions can be retrieved and executed by a processor (e.g., processor 1004 ).
- Some examples of instructions are software, program code, and firmware.
- Some examples of storage medium are memory devices, tape, disks, integrated circuits, and servers.
- the instructions are operational when executed by the processor to direct the processor to operate in accord with the invention. Those skilled in the art are familiar with instructions, processor(s), and storage medium.
Abstract
Systems and methods for providing a generic interface in a communications environment are provided. A communications services interface may receive a first and second application function call specifying a first and second communications channel, respectively. The first and second communications channels may utilize a first and second communications protocol, respectively, to communicate over a network. The communications services interface may send a first protocol command and a second protocol command to control communications over the first and second communications channels, respectively. The first and the second protocol commands may be responsive to the first and second application function calls, respectively. The second application function call may have a same syntax as the first application function call, and the second communications protocol may be different than the first communications protocol.
Description
- This application claims the benefit and priority of U.S. Provisional Application No. 60/982,684 entitled “Systems and Methods for Providing Unified Mobile Communications,” and filed on Oct. 25, 2007, which is incorporated herein by reference.
- 1. Field of the Invention
- The present invention relates generally to the field of digital communications interfaces and more specifically to systems and methods for providing a generic interface in a communications environment.
- 2. Background Art
- Digital communications may be performed over a variety of communications media, including voice, email, text messaging, multimedia messaging, etc. These digital communications may utilize any of a variety of protocols. The communications media may not be compatible with one another. Therefore, a communications device may not be able to seamlessly communicate over two different communications media, such as voice and text. In addition, the variety of protocols may also be incompatible with one another. These protocol incompatibilities may prevent a communications device that utilizes one protocol from communicating with another communications device that utilizes a different protocol.
- Because of these incompatibilities, a software application that is intended to communicate using more than one communication media and/or protocol may need to include separate code with separate function calls for each communications media and/or protocol. This can become unwieldy and cumbersome, making multiple communications media and/or protocols interoperating seamlessly in the application difficult or impractical.
- A method for providing a communications services interface is disclosed. The method includes receiving a first application function call. The first application function call specifies a first communications channel utilizing a first communications protocol to communicate over a network. The method further includes sending a first protocol command to control communications over the first communications channel. The first protocol command is responsive to the first application function call. The method additionally includes receiving a second application function call. The second application function call specifies a second communications channel utilizing a second communications protocol to communicate over the network. The second application function call has a same syntax as the first application function call. The second communications protocol is different than the first communications protocol. The method also includes sending a second protocol command to control communications over the second communications channel. The second protocol command is responsive to the second application function call.
-
FIG. 1 illustrates an exemplary communications system. -
FIG. 2 illustrates an exemplary communications system including a communications device configured to communicate over a network. -
FIG. 3 illustrates an exemplary method of allocating and activating communications services. -
FIG. 4 illustrates an exemplary method of initiating a call. -
FIG. 5 illustrates an exemplary method of terminating a call. -
FIG. 6 illustrates an exemplary method of accepting an incoming call. -
FIG. 7 illustrates an exemplary method of providing an interface between a communications application and a plurality of communications protocols. -
FIG. 8 illustrates an exemplary method of providing communications between multiple entities. -
FIG. 9 illustrates an exemplary method of providing a communications services interface. -
FIG. 10 illustrates an exemplary communications device. - Systems and methods for providing a generic interface in a communications environment are described. These systems and methods enable applications to seamlessly communicate over multiple communications media and/or use multiple communications protocols by using a shared application programming interface. The application programming interface may provide a common command function call configured to interface with multiple protocol stacks. The shared application programming interface may abstract the uniqueness of and differences between various communications media and protocols into a common set of function calls and data structures.
- Using the application programming interface, an application may interface to multiple incompatible communications media and communications protocols using a common set of software code. Because the details of the communications protocols are abstracted by the application programming interface, the application software code may not need to address the details of each individual communications protocol. Because the application software code may be independent of the details of the individual communications protocols, the application software code may easily be expanded to support new communications protocols also supported by the application programming interface.
-
FIG. 1 illustrates anexemplary communications system 100. Thecommunications system 100 includes acommunications device 102 and anetwork 104. Thecommunications device 102 may be configured to communicate using a variety ofcommunications protocols 106 overvarious communications media 108. One or morecommunications services providers 110 may provide various communications services over thenetwork 104. - The
communications device 102 may include a mobile communications device such as a cellular telephone, cordless telephone handset, portable computer equipped with wireless internet access, personal digital assistant, etc. Thecommunications device 102 may be configured to operate in multiple modes, such as both Wi-Fi and cellular, and thereby provide communications viamultiple communications media 108 and/ornetworks 104 using one ormore communications protocols 106. Thecommunications device 102 may also include a fixed-location communications device such as a desktop personal computer with internet access, desktop telephone, conference speakerphone, etc. Software configured to implement thecommunications protocols 106 may be associated with thecommunications device 102. Thecommunications device 102 may include a transceiver configured to communicate over thenetwork 104. - The
various communications media 108 may include media connections provided by various communications protocols including circuit-switched (CS) protocols, internet protocol (IP), and proprietary protocols. Thecommunications media 108 may include voice communications such as plain old telephone service (POTS), cellular telephone service, voice over internet protocol (VoIP), voice mail, and/or text communications such as email, Short Message Service (SMS), instant messaging (IM), and text chat services. Multimedia communications including text, still images, video, and audio may also be provided as part of thecommunications media 108. Thevarious communications media 108 may also include internet access, web browsing, file transfer protocol (FTP), and the like. - The media connections provided by the
communications media 108 may include communications services associated with the one or morecommunications services providers 110. The one or morecommunications services providers 110 may associate a communications services provider account with thecommunications device 102. The communications services provider account may be associated with one ormore communications protocols 106, usernames, passwords, internet addresses, and other communications attributes. - A communications channel may be provided by the
communications device 102 utilizing the one or morecommunications services providers 110 over thenetwork 104. The communications channel may be established by thecommunications device 102 connecting and authenticating with the one or morecommunications services providers 110 using thecommunications protocols 106. Thecommunications device 102 may establish one or more communications channels simultaneously. Each of the communications channels may use a different protocol or be carried by a differentcommunications services provider 110. In some embodiments, more than one communications channel may use a single protocol or be provided by a singlecommunications services provider 110. Each communications channel may be associated with a unique service identification tag (ID), and be independent from other communications channels that may be established by thecommunications device 102. - The
communications protocols 106 may adhere to standards defined for communicating over thevarious communications media 108. For example,communications protocols 106 adhering to internet standards may include HTTP, AJAX, File Transfer Protocol (FTP), User Datagram Protocol (UDP), and Transmission Control Protocol/Internet Protocol (TCP/IP). In addition, communications protocols adhering to voice communications standards may include Global System for Mobile communications (GSM), Extensible Messaging and Presence Protocol (XMPP), and Session Initiation Protocol (SIP). GSM may be used to support cellular telephone communications over cellular networks provided by one or morecommunications services providers 110. XMPP may be used to support instant messaging services provided by one or morecommunications services providers 110. XMPP and SIP may be used to support voice over internet protocol (VoIP) communications provided by one or morecommunications services provider 110. Furthermore, communications protocols adhering to presence and instant messaging standards may include Common Profile for Presence (CPP), Common Profile for Instant Messaging (CPIM), Common Presence and Instant Messaging (CPIM) Message Format, and XMPP. - In one embodiment, the
communications protocols 106 may be implemented on a computing device (not shown) disposed external to thecommunications device 102 and communicatively coupled with thecommunications device 102 via thenetwork 104. In this embodiment, commands configured to exercise thecommunications protocols 106 may be issued from thecommunications device 102 to the computing device. - The
network 104 may include a wired communications network such as an Ethernet local area network (LAN) or a landline POTS network. Thenetwork 104 may also include a wireless communications network such as a Wi-Fi network, a WiMax network, or a cellular telephone network. Thenetwork 104 may include an internet or World Wide Web (WWW) network. Thenetwork 104 may be configured to carry communications associated with thecommunications media 108 and thecommunications protocols 106. -
FIG. 2 illustrates anexemplary communications system 200 including thecommunications device 102 configured to communicate over thenetwork 104. Thecommunications device 102 includes acommunications system software 202 as well as anoperating system 204. Thecommunications system software 202 includes anapplication 206 configured to communicate with another entity over thenetwork 104. The other entity may include another communications device (not shown) configured to communicate over thenetwork 104. A communicationsservices interface module 208 includes software for providing communications services to theapplication 206 to enable theapplication 206 to communicate over thenetwork 104. Thecommunications system software 202 also includes protocol stacks 210 and aDSP engine 212. The protocol stacks 210 may comprise modules including software and/or electronic circuitry configured to implement communications protocols for communicating over thenetwork 104 via anetwork interface 214. The protocol stacks 210 include aXMPP protocol stack 210A, anSIP protocol stack 210B, a proprietaryprotocols protocol stack 210C, an IMservices protocol stack 210D, and a cellularservices protocol stack 210E, each of which may be hereinafter referred to as a member of the protocol stacks 210. TheDSP engine 212 may comprise a module including software and/or electronic circuitry configured to perform digital signal processing functions in conjunction with the communicationsservices interface module 208. - Each member of the protocol stacks 210 may be configured to establish one or more communications channels over the
network 104 by interfacing with thenetwork 104 via thenetwork interface 214. Thenetwork interface 214 may also interface with, communicate with, and/or interoperate with theoperating system 204 to implement the one or more communications channels. Theoperating system 204 may include Palm OS, Symbian, Windows CE, Windows Mobile, Windows XP, Windows Vista, MacOS, UNIX, Linux, Solaris, Nucleus OS, Vx Works, etc. - The
application 206 may comprise a software module including a user interface. The user interface may be configured to receive commands and instructions from a user associated with thecommunications device 102 and report a status relating to the one or more communications channels to the user. Theapplication 206 may also be configured to receive communications input from the user and provide communications output to the user. - The communications
services interface module 208 provides generalized control of the protocol stacks 210 for establishing and manipulating thecommunications media 108. Other protocol stacks (not shown) implementing other communications protocols, such as Simple Traversal of User Datagram Protocol Through Network Address Translators (STUN), may also be controlled by the communicationsservices interface module 208. The communicationsservices interface module 208 may include data and algorithms taking into account the communications services which each member of the protocol stacks 210 is capable of supporting. The communicationsservices interface module 208 may also include data and algorithms configured to couple communications services and functionality between one member of the protocol stacks 210 or theDSP engine 212 with another member of the protocol stacks 210 or theDSP engine 212. The communicationsservices interface module 208 may enable one or more communications services over one ormore communications media 108, using one ormore communications protocols 106, and carried by the one or morecommunications services providers 110 to seamlessly interface with one another. - The communications
services interface module 208 may utilize theDSP engine 212 to provide digital processing of voice, audio, and/or video in conjunction with the protocol stacks 210. The communicationsservices interface module 208 may create common audio tones used in communications services supported by the protocol stacks 210, such as dial tones, call progress tones, DTMF tones, and telephone ringing tones. - The communications
services interface module 208 may control multimedia streaming over thenetwork 104. For example, the communicationsservices interface module 208 may control the streaming of voice over thenetwork 104. The communicationsservices interface module 208 may also control the streaming of audio and/or video over thenetwork 104. - The communications
services interface module 208 includes anapplication programming interface 216 and a communicationsservices protocol interface 218. Theapplication programming interface 216 is configured to provide a variety of function calls related to communications for use by theapplication 206. The function calls may be configured to abstract the details of underlying protocols implemented in the protocol stacks 210 and theDSP engine 212. By abstracting these details, the function calls enable a generalized common interface to the plurality of underlying protocols which may be independent of the details of each of the underlying protocols, according to exemplary embodiments. The function calls may abstract protocol-specific communications between the communicationsservices interface module 208 and each member of the protocol stacks 210 into common function calls between theapplication 206 and the communicationsservices interface module 208. Theapplication 206 may use the function calls to send one or more API calls 220 to the communicationsservices interface module 208. Theapplication 206 may also use the function calls to configure theapplication 206 to process one ormore API events 222 which may be received from the communicationsservices interface module 208. - The
application programming interface 216 may provide support for two types of the one or more API calls 220. A first type of the one or more API calls 220 may be configured to enable theapplication 206 to control an action performed by at least one member of the protocol stacks 210 or theDSP engine 212. A second type of the one or more API calls 220 may be configured to establish a feedback mechanism by which at least one member of the protocol stacks 210 or theDSP engine 212 may notify theapplication 206 of an event or status. - The feedback mechanism may include the one or
more API events 222. Each API event of the one ormore API events 222 may be associated with a particular function call, or instance of the one or more API calls 220, which may have established the feedback path associated with the API event. The one ormore API events 222 may be asynchronous. Examples illustrating the feedback mechanism are described herein with reference toFIGS. 3-6 . - A single function call may be used by the
application 206 to interface with a plurality of the members of the protocol stacks 210 by changing a parameter (or argument) of the single function call. For example, source code associated with theapplication 206 may include a single function call that includes a parameter specifying that theXMPP protocol stack 210A be utilized for performing a communications function. The single function call may then be used again by the application source code to perform the communications function using theSIP protocol stack 210B in addition, simply by replacing the parameter specifying that theXMPP protocol stack 210A be utilized with a parameter specifying that theSIP protocol stack 210B be utilized. - In response to the one or more API calls 220 received from the
application 206, the communicationsservices interface module 208 may control and communicate with the protocol stacks 210 as well as theDSP engine 212 to perform functions related to the one or more communications channels carried over thenetwork 104. The communicationsservices interface module 208 may issue protocol commands 224 to the protocol stacks 210. The communicationsservices interface module 208 may also issue DSP commands 226 to theDSP engine 212. The protocol commands 224 issued to one member of the protocol stacks 210, such as theXMPP protocol stack 210A, may differ in form and/or syntax from the protocol commands 224 issued to another member of the protocol stacks 210, such as theSIP protocol stack 210B. - A first protocol command, such as one of the protocol commands 224, issued in response to a first API call, such as the one or more API calls 220, having a given protocol-dependent parameter may be syntactically different from a second protocol command issued in response to a second API call having a same function name as the first API call but a different protocol-dependent parameter than the first API call. The syntactical difference may be embodied by a different function name, a different set of parameters, or both. The syntactical difference may be dependent upon, or responsive to, a syntax required by each protocol implemented within the set of the protocol stacks 210 and the
DSP engine 212. Each protocol command of the protocol commands 224 may conform to a syntax standard corresponding to the member of the protocol stacks 210 to which the protocol command is directed. Each member of the protocol stacks 210 may have a different syntax standard for protocol commands 224 than other members of the protocol stacks 210. - The communications
services interface module 208 may receiveprotocol events 228 from the protocol stacks 210. The communicationsservices interface module 208 may also receiveDSP events 230 from theDSP engine 212. An instance of theprotocol events 228 received from one member of the protocol stacks 210 may differ in syntax and/or form from another instance of theprotocol events 228 received from a different member of the protocol stacks 210. A specific protocol event among the instances ofprotocol events 228 may be in response to one or more communications 232 received through thenetwork 104 by thecommunications device 102. For example, the specific protocol event may notify the communicationsservices interface module 208 that a communications channel has been established in response to a network acknowledgement, which may include an instance of the one or more communications 232 received through thenetwork 104. - The communications
services interface module 208 may send the one ormore API events 222 to theapplication 206 when triggered by theprotocol events 228 to notify theapplication 206 of a particular occurrence or status. The one ormore API events 222 may also be sent from the communicationsservices interface module 208 when triggered by an instance of theDSP events 230 issued by theDSP engine 212 to notify theapplication 206 of a particular occurrence or status. Theprotocol events 228 and theDSP events 230 may be asynchronous. - Each instance of the
protocol events 228 issued in response to a first communication, which may include an instance of the one or more communications 232, may be syntactically different from the other instances of theprotocol events 228 issued in response to a second communication, which may include another instance of the one or more communications 232. The syntactical difference between each instance of theprotocol events 228 may be dependent upon a syntax standard required by each protocol supported by members of the protocol stacks 210. The communicationsservices interface module 208 may convert the syntactically different instances of theprotocol events 228 and theDSP events 230 into the one ormore API events 222 having a common syntax. For example, a first API event, such as an instance of the one ormore API events 222, sent from the communicationsservices interface module 208 to theapplication 206 in response to the first communication may have a same function name as a second API event sent from the communicationsservices interface module 208 to theapplication 206 in response to the second communication, although a first protocol event, such as an instance of theprotocol events 228, associated with the first communication and a second protocol event associated with the second communication may be syntactically different. The first API event may differ from the second API event in only a parameter value. - The communications
services protocol interface 218 may provide a conversion between the common function calls provided by theapplication programming interface 216 and the protocol-specific communications between the communicationsservices interface module 208 and the protocol stacks 210 and theDSP engine 212. The communicationsservices protocol interface 218 may provide the conversion between a common API call, which may include an instance of the one or more API calls 220, and each of the protocol commands 224 and the DSP commands 226. The communicationsservices protocol interface 218 may also provide the conversion between each instance of theprotocol events 228 and theDSP events 230 and a common API event, which may include an instance of the one ormore API events 222. - The protocol stacks 210 may communicate with the communications
services interface module 208 via a command-event model. For example, the communicationsservices interface module 208 may send a protocol command, such as an instance of the protocol commands 224, to a protocol stack which is a member of the protocol stacks 210. The protocol command may contain a block of digital data representative of the command. The communicationsservices interface module 208 may then receive a protocol event, such as an instance of theprotocol events 228, sent by the protocol stack. The protocol event may contain a block of digital data representative of the event. The event may include a status report in response to the protocol command, an IP event received from a communications channel over thenetwork 104, etc. The communicationsservices interface module 208 may use one or more Inter-Process Communication (IPC) techniques to send the protocol command and to receive the protocol event. A different IPC technique may be used to send the protocol command than to receive the protocol event. Examples of IPC techniques include pipes, sockets, remote procedure calls (RPC), shared memory, and message passing. - The communications
services interface module 208 may support hot swapping or plug-and-play operation of the members of the protocol stacks 210. For example, a selected member of the protocol stacks 210 may be deactivated while the communicationsservices interface module 208 continues operating and supporting other members of the protocol stacks 210. The selected member of the protocol stacks 210 may be deactivated without interrupting or ceasing operation of any communications services or communications channels supported by the other members of the protocol stacks 210. The selected member of the protocol stacks 210 may be deactivated because the communicationsservices interface module 208 detects an error condition in the selected member of the protocol stacks 210, because hardware or system resources of thecommunications device 102 are not sufficient to support continued operation of the selected member of the protocol stacks 210, because the selected member of the protocol stacks 210 is being upgraded to a new version of the selected member of the protocol stacks 210, because the user associated with thecommunications device 102 wishes to deactivate communications services supported by the selected member of the protocol stacks 210, because resources associated with thenetwork 104 and/or thecommunications services providers 110 are insufficient to support operation of communications services supported by the selected member of the protocol stacks 210, or other various reasons. - As another example, a new protocol stack may be added as a new member of the protocol stacks 210 and be registered with and supported by the communications
services interface module 208 while the communicationsservices interface module 208 continues to operate and support other members of the protocol stacks 210 as well as any one or more communications services or communications channels supported by the other members of the protocol stacks 210. The new protocol stack may be dynamically added when one or more resources become available to support operation of the new protocol stack. The one or more resources that become available may include hardware or system resources of thecommunications device 102 such as a network interface, a required quantity of free memory, or processing capacity. The one or more resources that become available may also include resources associated with thenetwork 104 and/or thecommunications services providers 110 such as communications services, communications bandwidth, or network servers. The new protocol stack may also be dynamically added when one or more communications services and/or protocols supported by the new protocol stack are desired. - As a further example, the selected member of the protocol stacks 210 may be deactivated because of an error condition. Examples of error conditions include bugs, crashes, unresponsiveness, incorrect behavior, etc. Then, the selected member of the protocol stacks 210 may be restarted to restore the selected member of the protocol stacks 210 to full operation. While any communications services and/or communications channels supported by the selected member of the protocol stacks 210 may be interrupted when the selected member of the protocol stacks 210 is deactivated, the interrupted communications services and/or communications channels may be restored or reactivated after the selected member of the protocol stacks 210 is restarted.
- In an embodiment, the communications
services interface module 208 may monitor usage of the members of the protocol stacks 210 as well as available hardware and system resources of thecommunications device 102. The communicationsservices interface module 208 may dynamically activate and/or deactivate various members of the protocol stacks 210 as the various members of the protocol stacks 210 are needed and/or as available resources allow. In this way, a set of active members of the protocol stacks 210 may dynamically change depending on dynamically changing system resources of thecommunications device 102, resources associated with thenetwork 104, and/or resources associated with thecommunications services providers 110. By dynamically changing the set of active members of the protocol stacks 210, memory and/or processing resources of thecommunications device 102 may be conserved. - The
application 206 may be written as source code in a computer language such as C, C++, or Java. The application source code may include function calls provided by theapplication programming interface 216 to include communications functionality associated with each of the protocols in the protocol stacks 210 as well as theDSP engine 212. A software compiler executing on a computing processor (not shown) may compile the source code into object code. The object code may be targeted to a particular computing processor associated with thecommunications device 102. Theapplication programming interface 216 may include one or more libraries configured to provide object code for various target computing processors. A compiler switch may be set to control the compiler to generate executable object code for the target computing processor associated with the compiler switch setting. Therefore, theapplication programming interface 216 may enable a single source code to be targeted to more than one target computing processor and/orcommunications device 102 based upon a compiler switch setting. -
FIG. 3 illustrates an exemplary method of allocating and activating one or more communications services. The method illustrates how an application programming interface, such as theapplication programming interface 216 discussed herein, may be used by an application, such as theapplication 206, to allocate and activate communications channels using different protocol stacks, such as the members of the protocol stacks 210. The method also illustrates how a communications services interface module, such as the communicationsservices interface module 208, may support plug-and-play protocol stacks whereby new members of the protocol stacks 210 may be dynamically added and supported by the communicationsservices interface module 208 without re-coding, recompiling, or interrupting operation of the communicationsservices interface module 208 and/orapplication 206. The new members of the protocol stacks 210 may be dynamically added and supported without interrupting operation of the one or more communications services already activated. After the one or more communications services are allocated and activated, the communications channels may be used by theapplication 206. Theapplication 206 may include a state machine configured to implement the method. - In
step 302, a protocol stack, such as a member of the protocol stacks 210, sends a registration event, such as an instance of theprotocol events 228, to the communicationsservices interface module 208. By sending the registration event, the protocol stack may register with the communicationsservices interface module 208. The registration event may include data regarding the protocol stack such that the communicationsservices interface module 208 may use the protocol stack to allocate and activate one or more communications services associated with the protocol stack. The communicationsservices interface module 208 may be configured to utilize the protocol stack after receiving the registration event even though the communicationsservices interface module 208 may have no data regarding the protocol stack prior to receiving the registration event. In this way, the communicationsservices interface module 208 may support plug-and-play operation of a dynamically added protocol stack. The communicationsservices interface module 208 may therefore support a communications interface protocol via the dynamically added protocol stack which the communicationsservices interface module 208 did not previously support. - In
step 304, theapplication 206 is notified of the availability of one or more protocols supported by the protocol stack registered instep 302. The communicationsservices interface module 208 may send a protocol availability event, which may include an instance of the one ormore API events 222, to theapplication 206. The protocol availability event may include data regarding the one or more protocols supported by the protocol stack registered instep 302. In conjunction with the data regarding the one or more protocols, theapplication 206 may use the one or more protocols after receiving the protocol availability event even though theapplication 206 may have had no data regarding using the one or more protocols via the communicationsservices interface module 208 prior to receiving the protocol availability event. In this way, theapplication 206 may utilize the one or more protocols supported by the protocol stack which is dynamically added and registered instep 302. - In
step 306, a new communications service is allocated. Theapplication 206 may use an API function call to send an allocation command, which may include an instance of the one or more API calls 220, to the communicationsservices interface module 208. The allocation command may specify which protocol, and consequently which member of the protocol stacks 210, is to be associated with the new communications service. - In
step 308, the new communications service is created via the protocol stack associated with the new communications service, which may include a member of the protocol stacks 210. The communicationsservices interface module 208 may send a communications service creation command, which may include an instance of the protocol commands 224, to the protocol stack associated with the new communications service. The communications service creation command may be sent in response to receiving the allocation command sent by theapplication 206 instep 306. The communications service creation command sent to the protocol stack associated with the new communications service may be syntactically different from another communications service creation command that may be sent to a different member of the protocol stacks 210. The communications service creation command sent, and the protocol stack associated with the new communications service, may be responsive to a parameter included in the allocation command sent by theapplication 206 to the communicationsservices interface module 208 instep 306. - The protocol stack associated with the new communications service may perform functions related to creating the new communications service in response to receiving the communications service creation command. The functions performed by the protocol stack associated with the new communications service to create the new communications service may be specific to the protocol associated with the new communications service. For example, the
SIP protocol stack 210B may initialize a user agent, while theXMPP protocol stack 210A may initialize an endpoint. - In step 310, a creation status of the new communications service is reported to the communications
services interface module 208. After the protocol stack associated with the new communications service creates the new communications service, the protocol stack associated with the new communications service may send a protocol service creation event, which may include an instance of theprotocol events 228, back to the communicationsservices interface module 208 to notify the communicationsservices interface module 208 that the protocol stack associated with the new communications service has successfully created the new communications service. In some embodiments, the protocol service creation event may be sent to the communicationsservices interface module 208 to report a communications service creation error. - In step 312, a communications service allocation status is reported to the
application 206. After the communicationsservices interface module 208 receives the protocol service creation event in step 310, the communicationsservices interface module 208 may send a corresponding interface service creation event, which may include an instance of the one ormore API events 222, to theapplication 206. The corresponding interface service creation event may report the communications service allocation success or failure status in response to the creation status reported by the protocol stack associated with the new communications service in step 310. - In
step 314, communications service parameters are set. Theapplication 206 may send one or more communications service parameter setting commands, each of which may correspond to an instance of the protocol commands 224, to the communicationsservices interface module 208 using an API function call which may include an instance of the one or more API calls 220. The communications service parameters may include a uniform resource identifier (URI), server name and/or internet address, login userid and/or password, and so forth. - In step 316, the protocol stack associated with the new communications service is configured according to the communications service parameters set in
step 314. The communicationsservices interface module 208 may send one or more protocol parameter setting commands, each of which may include an instance of the protocol commands 224, to the protocol stack associated with the new communications service. The one or more protocol parameter setting commands may be sent in response to receiving the one or more communications service parameter setting commands sent by theapplication 206 instep 314. The one or more protocol parameter setting commands sent to the protocol stack associated with the new communications service may be syntactically different from one or more protocol parameter setting commands that may be sent to a different member of the protocol stacks 210. - In
step 318, the new communications service is activated. Theapplication 206 may send an activation command to the communicationsservices interface module 208 using an API function call which may include an instance of the one or more API calls 220. The activation command may specify the new communications service to be activated by identifying the previously allocated new communications service. - In
step 320, the protocol stack associated with the new communications service is activated. The communicationsservices interface module 208 may send a communications service activation command, which may include an instance of the protocol commands 224, to the protocol stack associated with the new communications service. The communications service activation command may be sent in response to receiving the activation command sent by theapplication 206 instep 318. The communications service activation command sent to the protocol stack associated with the new communications service may be syntactically different from a communications service activation command that may be sent to a different member of the protocol stacks 210. - The protocol stack associated with the new communications service may perform functions related to activating the new communications service in response to receiving the communications service activation command. The functions performed by the protocol stack associated with the new communications service to activate the new communications service may be specific to the protocol associated with the new communications service. For example, the
SIP protocol stack 210B may register a user agent, while theXMPP protocol stack 210A may connect and authenticate against an XMPP server. - In step 322, an activation status of the protocol stack associated with the new communications service is reported to the communications
services interface module 208. After the protocol stack associated with the new communications service activates the new communications service, the protocol stack associated with the new communications service may send a protocol activation event, which may include an instance of theprotocol events 228, back to the communicationsservices interface module 208 to notify the communicationsservices interface module 208 that the protocol stack associated with the new communications service has successfully activated the new communications service. In some embodiments, the protocol activation event may be sent to the communicationsservices interface module 208 to report a communications service activation error. - In step 324, a communications service activation status is reported to the
application 206. After the communicationsservices interface module 208 receives the protocol activation event in step 322, the communicationsservices interface module 208 may send a corresponding interface service activation event, such as an instance of the one ormore API events 222, to theapplication 206. The corresponding interface service activation event may report the communications services activation success or failure status in response to the activation status reported by the protocol stack associated with the new communications service in step 322. - In
optional step 326, another communications service may be allocated and activated by repeating steps 302-324. The other communications service may utilize a different protocol or member of the protocol stacks 210 than the prior new communications service. In other embodiments, the other communications service may utilize the same protocol or member of the protocol stacks 210 as the prior new communication service, but may allocate and activate a separate communications channel than the prior new communications service. -
FIG. 4 illustrates an exemplary method of initiating a call. The call may be initiated over a communications service previously allocated and activated as described with reference toFIG. 3 . The call may be initiated by a calling party and directed to a called party. The calling party may include a first communications service endpoint at a first communications device, which may include an example of thecommunications device 102. The first communications service endpoint may include a first application, which may include an example of theapplication 206. The called party may include a second communications service endpoint at a second communications device, which may include another example of thecommunications device 102. The second communications service endpoint may include a second application, which may include another example of theapplication 206. Protocol signaling and data traffic may be communicated over a network, such as thenetwork 104, between the first communications service endpoint and the second communications service endpoint according to the communications protocol associated with the communications service. - Protocol signaling between the calling party and the called party may include data packets sent and received over the
network 104 in accordance with the protocol to perform communications functions such as initiating a call, acknowledging a call, accepting a call, rejecting a call, putting a call on hold, resuming a call previously put on hold, initiating a conference call, terminating a call, requesting contact information, sending contact information, requesting presence information or status, sending presence information or status, sending text messages, sending multimedia messages, and so forth. - In
step 402, a call initiation is signaled. The first application may send a call initiation command to the communicationsservices interface module 208 specifying a called party to call and a communications service to use to call the called party. The call initiation command may be sent using an API function call, which may include an instance of the one or more API calls 220. The API function call may have a consistent syntax regardless of which communications service, communications channel, or communications protocol may be associated with the call. API function call parameters may be specified to correspond with the communications service, communications channel, or communications protocol associated with the call. - In
step 404, a protocol stack associated with the call is commanded to initiate the call. The protocol stack associated with the call may be chosen among the members of the protocol stacks 210 based on the communications service and/or the communications channel specified by the first application or associated with the called party. The communicationsservices interface module 208 may then send a protocol call initiation command to the protocol stack associated with the call. The protocol call initiation command may include-an instance of the protocol commands 224. Syntax of the protocol call initiation command may depend upon, or be responsive to, the protocol stack associated with the call. For example, the protocol call initiation command may differ in syntax than if a different member of the protocol stacks 210 was associated with the call, the communications service, and/or the communications channel. - In
step 406, the protocol stack associated with the call performs protocol signaling to call the called party. The protocol signaling may include sending a call initiation data packet corresponding to the protocol associated with the call over thenetwork 104 to the called party. The protocol signaling may also include monitoring thenetwork 104 for an acknowledgement data packet that may be sent from the called party to the calling party to acknowledge receipt of the call initiation data packet. - In
step 408, the protocol signaling of the called party is reported. After the protocol stack associated with the call has sent the data packet to the called party instep 406, the protocol stack associated with the call may send a protocol signaling event, which may include an instance of theprotocol events 228, to the communicationsservices interface module 208. The protocol signaling event may report that the protocol stack associated with the call has begun signaling the called party to initiate the call. - In
step 410, calling the called party is reported. The communicationsservices interface module 208 may send a calling event, which may include an instance of the one ormore API events 222, to the first application to report that the protocol stack associated with the call has signaled the called party to initiate the call. The calling event may be sent to the first application in response to receiving the protocol signaling event from the protocol stack associated with the call indicating that the protocol stack associated with the call has begun protocol signaling to initiate the call. - In
step 412, the protocol stack associated with the call's receipt of an acknowledgement from the called party is reported. The received acknowledgement may indicate that the called party is in receipt of the request to initiate the call and is performing protocol signaling in response to the request. The protocol signaling being performed by the called party may include sending an acknowledgement data packet to the calling party. The calling party's protocol stack associated with the call may process the acknowledgement data packet received from the called party and send a protocol acknowledgement event, which may include an instance of theprotocol events 228, to the communicationsservices interface module 208. The protocol acknowledgement event may report that the called party has acknowledged the initiation of the call. - In
step 414, the called party's acknowledgement of the call is reported. The communicationsservices interface module 208 may send an interface acknowledgement event, which may include an instance of the one ormore API events 222, to the first application to report that the called party has acknowledged receipt of the call initiation. The interface acknowledgement event may be sent to the first application in response to receiving the protocol acknowledgement event sent from the protocol stack associated with the call instep 412. As an illustration, the reported acknowledgement may correspond to a called telephone ringing in the earpiece of a calling telephone after dialing a telephone number. - In
step 416, the protocol stack associated with the call's receipt of an acceptance of the call from the called party is reported. The called party may send a call acceptance data packet to the calling party over thenetwork 104 to tell the calling party that the call is being accepted. The calling party's protocol stack associated with the call may process the call acceptance data packet received from the called party and send a protocol call acceptance event, which may include an instance of theprotocol events 228, to the communicationsservices interface module 208. The protocol call acceptance event may report that the called party accepts the call from the calling party. - In
step 418, the communicationsservices interface module 208 reports that the called party accepts the call. The communicationsservices interface module 208 may send an interface call acceptance event, which may include an instance of the one ormore API events 222, to the first application to report that the called party accepts the call from the calling party. The event may be sent to the first application in response to receiving the protocol call acceptance event sent from the protocol stack associated with the call instep 416. -
FIG. 5 illustrates an exemplary method of terminating the call. The method illustrated inFIG. 5 assumes that the call between the calling party and the called party has already been initiated as described with reference toFIG. 4 . A method similar to that illustrated inFIG. 5 may also be used for another desired communications function, such as placing the call on hold and resuming the call previously placed on hold, by customizing the commands, events, and data-packets to correspond to the other desired communications function. In this exemplary method, the calling party terminates the call in progress. The method may also be applicable to the called party terminating the call in progress. - In
step 502, termination of the call in progress is signaled. The first application may send a call termination command to the communicationsservices interface module 208 specifying that the call with the called party be terminated. The call termination command may be sent using an API function call, such as an instance of the one or more API calls 220. The API function call may have a consistent syntax regardless of which member of the protocol stacks 210 is associated with the call in progress. - In
step 504, the protocol stack associated with the call in progress is commanded to terminate the call in progress. The communicationsservices interface module 208 may determine which member of the protocol stacks 210 is associated with the call in progress. The communicationsservices interface module 208 may then send a call termination command to the protocol stack associated with the call in progress. The call termination command may include an instance of the protocol commands 224. Syntax of the call termination command may depend upon, or be responsive to, the protocol stack associated with the call in progress. For example, the termination command to be sent to the protocol stack associated with the call in progress may differ in syntax than if a different member of the protocol stacks 210 was associated with the call in progress. - In
step 506, protocol signaling with the called party is performed. The protocol stack associated with the call in progress may perform protocol signaling including sending a call termination data packet corresponding to the protocol associated with the call in progress over thenetwork 104 to the called party. The call termination data packet may notify the called party that the call in progress is being terminated. The protocol signaling may also include monitoring thenetwork 104 for an acknowledgement data packet that may be sent from the called party to the calling party to acknowledge receipt of the call termination data packet terminating the call. - In
step 508, termination of the call in progress by the protocol stack associated with the call in progress is reported. After the protocol stack associated with the call in progress has sent the call termination data packet to the called party instep 506, the protocol stack associated with the call in progress may send a protocol call termination event, which may include an instance of theprotocol events 228, to the communicationsservices interface module 208. The protocol call termination event may report that the protocol stack associated with the call in progress has begun or completed signaling the called party to terminate the call. In some embodiments, the protocol call termination event may be sent to the communicationsservices interface module 208 to report a termination error. - In
step 510, termination of the call in progress is reported. The communicationsservices interface module 208 may send an interface call termination event, which may include an instance of the one ormore API events 222, to the first application to report that the protocol stack associated with the call in progress has terminated the call with the called party. The interface call termination event may be sent to the first application in response to receiving the protocol call termination event from the protocol stack associated with the call in progress instep 508. -
FIG. 6 illustrates an exemplary method of accepting an incoming call. The incoming call may be accepted by the called party in response to the call initiation from the calling party, as described with reference toFIG. 4 . In this exemplary method, the called party may include the second communications service endpoint and the second application at the second communications device. - In
step 602, protocol signaling for the incoming call is received. A protocol stack associated with the incoming call, which may include a member of the protocol stacks 210, may monitor thenetwork 104 for the call initiation data packet to arrive. The call initiation data packet may correspond to a call initiation protocol signal. When the protocol stack associated with the incoming call recognizes the call initiation protocol signal received over thenetwork 104 as the incoming call initiation data packet, the protocol stack associated with the incoming call may receive the call initiation data packet for processing. - In
step 604, a protocol incoming call event, which may include an instance of theprotocol events 228, corresponding to the incoming call is generated. The protocol stack associated with the incoming call that receives the incoming call initiation data packet instep 602 may process the incoming call initiation data packet. If the protocol stack associated with the incoming call determines that the incoming call initiation data packet represents the incoming call corresponding to the communications service or communications channel supported by the protocol stack associated with the incoming call, the protocol stack associated with the incoming call may send the protocol incoming call event to the communicationsservices interface module 208. Syntax of the protocol incoming call event may depend upon, or be responsive to, the protocol stack associated with the incoming call. For example, the protocol incoming call event may differ in syntax than if a different member of the protocol stacks 210 was associated with the incoming call, the communications service, and/or the communications channel. - In
step 606, the second application is notified of the incoming call. The communicationsservices interface module 208 may receive the protocol incoming call event sent instep 604. The communicationsservices interface module 208 may process the protocol incoming call event, effectively converting the protocol incoming call event whose syntax may be unique to the originating protocol stack associated with the incoming call into a protocol-independent incoming call event to be sent to the second application. The communicationsservices interface module 208 may then send the protocol-independent incoming call event, which may include an instance of the one ormore API events 222, to the second application to notify the second application of the incoming call. The protocol-independent incoming call event sent to the second application may be in a consistent syntax regardless of which member of the protocol stacks 210 is associated with the incoming call. - In
step 608, the incoming call is acknowledged. The second application may send an acknowledgement command to the communicationsservices interface module 208 specifying that an acknowledgement be sent to the calling party. The acknowledgement command may be sent using an API function call, such as an instance of the one or more API calls 220. The acknowledgement command may have a consistent syntax regardless of which member of the protocol stacks 210 is associated with the incoming call. - In
step 610, a protocol acknowledgement command to acknowledge the incoming call is generated. The communicationsservices interface module 208 may send the protocol acknowledgement command to the protocol stack associated with the incoming call. The protocol acknowledgement command may include an instance of the protocol commands 224. Syntax of the protocol acknowledgement command may depend upon, or be responsive to, the protocol stack associated with the incoming call. For example, the protocol acknowledgement command may differ in syntax than if a different member of the protocol stacks 210 was associated with the incoming call. The protocol stack associated with the incoming call may then signal the calling party to acknowledge the incoming call over thenetwork 104. - In
step 612, the incoming call is accepted. The second application may send an accept call command to the communicationsservices interface module 208 specifying that the incoming call be accepted. The accept call command may be sent using an API function call, which may include an instance of the one or more API calls 220. The API function call may have a consistent syntax regardless of which member of the protocol stacks 210 is associated with the incoming call. - In
step 614, a protocol accept call command to accept the incoming call is generated. The communicationsservices interface module 208 may send the protocol accept call command to the protocol stack associated with the incoming call. The protocol accept call command may include an instance of the protocol commands 224. Syntax of the protocol accept call command may depend upon, or be responsive to, the protocol stack associated with the incoming call. For example, the protocol accept call command may differ in syntax than if a different member of the protocol stacks 210 was associated with the incoming call. The protocol stack associated with the incoming call may then signal the calling party to accept the incoming call over thenetwork 104. -
FIG. 7 illustrates an exemplary method of providing an interface between a communications application and a plurality of communications protocols. The method includes providing a common function call as part of an API in source code for the communications application, which may include an example of theapplication 206, configuring a compiler for a target communications device or processor, and compiling the communications application source code into communications application executable code including the interface. - In
step 702, the common function call is included in the communications application source code. The common function call may be part of theapplication programming interface 216, described with reference toFIG. 2 . The communications application source code may use a same common function call, which may correspond to an instance of the one or more API calls 220, for a first protocol stack as a second protocol stack. The first protocol stack and the second protocol stack may each include a member of the protocol stacks 210, and may each be different from one another. The first protocol stack or the second protocol stack may require that a protocol command, which may correspond to one of the protocol commands 224, be in syntax specific to the first protocol stack or the second protocol stack, respectively. The protocol command syntax for the first protocol stack may be different and incompatible with the protocol command syntax for the second protocol stack. - In
step 704, a first target communications device, which may include an instance of thecommunications device 102, is targeted by a software compiler. The software compiler and one or more associated function libraries may be configured to compile the communications application source code into executable object code targeted to the first target communications device. The associated function libraries may include libraries associated with theapplication programming interface 216. The software compiler and/or the associated function libraries may include an option to target the executable object code to one or moredifferent communications devices 102. The option may include a specification of a computing processor and/or an operating system associated with the one or moredifferent communications devices 102. - In
step 706, the communications application executable code is compiled. The software compiler may compile the communications application source code into the communications application executable code using the associated function libraries on a computing processor. The communications application executable code may include executable API calls, which may include instances of the one or more API calls 220, to interface to the communicationsservices interface module 208. The communicationsservices interface module 208 may be configured to issue an instance of the protocol commands 224 to a member of the protocol stacks 210, in response to the executable API call to be received from the communications application executable code. - A syntax of the instance of the protocol commands 224 may depend upon, or be responsive to, the member of the protocol stacks 210 to which the instance of the protocol commands 224 is issued. For example, the instance of the protocol commands 224 to be issued to one member of the protocol stacks 210 may differ in syntax from another instance of the protocol commands 224 to be issued to a different member of the protocol stacks 210. Therefore, the communications
services interface module 208 converts a single common function call syntax as received from theapplication 206 into a plurality of protocol command syntaxes responsive to the member of the protocol stacks 210 to which the instance of the protocol commands 224 is to be issued. This conversion enables the communications application source code to be independent of the details of each individual protocol supported by the communicationsservices interface module 208. - In
optional step 708,steps -
FIG. 8 illustrates an exemplary method of providing communications between multiple entities. The multiple entities may include a central entity, a first entity, and a second entity, where the central entity may be communicatively coupled with both the first entity and the second entity. The communications may include voice communications protocols such as XMPP, SIP, GSM, etc. The communications may also include other protocols such as text communications protocols and multimedia communications protocols. The entities may include communications devices such as thecommunications device 102. The communications between the multiple entities may be carried over a network such as thenetwork 104. - In
step 802, a first voice communications protocol is utilized with the first entity. The central entity and the first entity may establish a first communications channel therebetween utilizing the first voice communications protocol. The first voice communications protocol may be implemented using a protocol stack, such as a member of the protocol stacks 210, on an example of thecommunications device 102. - In
step 804, a second voice communications protocol is utilized with the second entity. The central entity and the second entity may establish a second communications channel therebetween utilizing the second voice communications protocol. The second voice communications protocol may be different from the first communications protocol. In other embodiments, the second voice communications protocol may be the same as the first communications protocol. The first voice communications channel and the second voice communications channel may be carried over different communications services providers, such ascommunications services providers 110. For example, the first voice communications channel may be carried over a cellular telephone service provider, while the second voice communications channel may be carried over a voice over internet protocol service provider or an internet service provider. - In
step 806, the first entity and the second entity are communicatively coupled. In one embodiment, a voice conference service may be provided between the central entity, the first entity, and the second entity, such that all three entities may communicate with each other via the voice conference service by communicatively coupling the first communications channel and the second communications channel. In some embodiments, one or more additional entities may join the voice conference. A new communications channel between the central entity and the one or more additional entities may use a different communications protocol orcommunications services provider 110 than either the first communications channel or the second communications channel. - In another embodiment, a voice call may be transferred. The central entity may receive and accept a call from the first entity, and transfer the call to the second entity. The call from the first entity may be received over the first communications channel using the first communications protocol, while the call may be transferred to the second entity over the second communications channel using the second communications protocol. In some embodiments, the first communications protocol and the second communications protocol are different. In other embodiments, the first communications protocol and the second communications protocol may be the same. The first voice communications channel and the second voice communications channel may be carried over different
communications services providers 110. - In a further embodiment, a voice call may be forwarded. The central entity may receive the call initiation protocol signal from the first entity, and forward the call to the second entity without answering the call. The call initiation protocol signal from the first entity may be received over the first communications channel using the first communications protocol, while the call may be forwarded to the second entity over the second communications channel using the second communications protocol. In some embodiments, the first communications protocol and the second communications protocol may be different. In other embodiments, the first communications protocol and the second communications protocol may be the same. The first voice communications channel and the second voice communications channel may be carried over different
communications services providers 110. -
FIG. 9 illustrates an exemplary method of providing a communications services interface. The method illustrates how the communications services interface, which may include an example of the communicationsservices interface module 208 discussed herein, may be used by a communications application, which may include an example of theapplication 206, to communicate over multiple communications channels. The multiple communications channels may communicate over a network, such as thenetwork 104. - In
step 902, the communicationsservices interface module 208 receives a first application function call, which may include an instance of the one or more API calls 220, from theapplication 206. The first application function call may specify a first communications channel to which the first application function call pertains. The first communications channel may be controlled by a first module, which may include a member of the protocol stacks 210. The first module may utilize a first module communications protocol to communicate. The first module communications protocol may include any communications protocol supported by the first module. - In
step 904, the communicationsservices interface module 208 sends a first protocol command, which may include an instance of the protocol commands 224, to the first module. The first protocol command may be configured to control communications over the first communications channel. The first protocol command may be responsive to, or configured according to, the first application function call received instep 902. The communicationsservices interface module 208 may monitor a status of the first communications channel. The communicationsservices interface module 208 may send a first status event, which may include an instance of the one ormore API events 222, to theapplication 206 reporting the status of the first communications channel. - In
step 906, the communicationsservices interface module 208 receives a second application function call, which may include an instance of the one or more API calls 220, from theapplication 206. The second application function call may specify a second communications channel to which the second application function call pertains. The second communications channel may be controlled by a second module, which may include a member of the protocol stacks 210. The second module may utilize a second module communications protocol to communicate. The second module communications protocol may be any communications protocol supported by the second module. - In some embodiments, the first application function call may have a different syntax from the second application function call. In other embodiments, the first application function call and the second application function call may have a same syntax. In some embodiments, the first module may be a different module from the second module. In other embodiments, the first module and the second module may be a same module. In some embodiments, the first module communications protocol may include a different communications protocol from the second module communications protocol. In other embodiments, the first module communications protocol and the second module communications protocol may include a same communications protocol.
- In
step 908, the communicationsservices interface module 208 sends a second protocol command, which may include an instance of the protocol commands 224, to the second module. The second protocol command may be configured to control communications over the second communications channel. The second protocol command may be responsive to, or configured according to, the second application function call received instep 906. The communicationsservices interface module 208 may monitor a status of the second communications channel. The communicationsservices interface module 208 may send a second status event, which may include an instance of the one ormore API events 222, to theapplication 206 reporting the status of the second communications channel. - In some embodiments, the second protocol command may have a different syntax from the first protocol command. In other embodiments, the second protocol command and the first protocol command may have a same syntax. In some embodiments, the second communications channel may be carried by a different communications services provider, such as an instance of the one or more
communications services providers 110, than the first communications channel. In other embodiments, the second communications channel may be carried by a samecommunications services provider 110 as the first communications channel. -
FIG. 10 illustrates an exemplary communications device 1000. The communications device 1000 may comprise thecommunications device 102 according to some embodiments. The communications device 1000 comprises at least acommunications interface 1002, aprocessor 1004, amemory 1006, andstorage 1008, which are all coupled to abus 1010. Thebus 1010 provides communications between thecommunications interface 1002, theprocessor 1004, thememory 1006, and thestorage 1008. - The
communications interface 1002 may communicate with other communications devices (not shown) via acommunications medium 1012. Theprocessor 1004 executes instructions. Thememory 1006 permanently or temporarily stores data. Some examples of thememory 1006 are RAM and ROM. Thestorage 1008 also permanently or temporarily stores data. Some examples of thestorage 1008 are hard disks and disk drives. - The embodiments discussed herein are illustrative. As these embodiments are described with reference to illustrations, various modifications or adaptations of the methods and/or specific structures described may become apparent to those skilled in the art.
- The above-described components and functions can be comprised of instructions that are stored on a computer-readable storage medium. The instructions can be retrieved and executed by a processor (e.g., processor 1004). Some examples of instructions are software, program code, and firmware. Some examples of storage medium are memory devices, tape, disks, integrated circuits, and servers. The instructions are operational when executed by the processor to direct the processor to operate in accord with the invention. Those skilled in the art are familiar with instructions, processor(s), and storage medium.
- While various embodiments have been described above, it should be understood that they have been presented by way of example only, and not limitation. For example, any of the elements associated with the application programming interface may employ any of the desired functionality set forth hereinabove. Thus, the breadth and scope of a preferred embodiment should not be limited by any of the above-described exemplary embodiments.
Claims (40)
1. A method for providing a communications services interface, the method comprising:
receiving a first application function call specifying a first communications channel utilizing a first communications protocol to communicate over a network;
sending a first protocol command to control communications over the first communications channel, the first protocol command being responsive to the first application function call;
receiving a second application function call specifying a second communications channel utilizing a second communications protocol to communicate over the network, the second application function call having a same syntax as the first application function call, the second communications protocol being different than the first communications protocol; and
sending a second protocol command to control communications over the second communications channel, the second protocol command being responsive to the second application function call.
2. The method of claim 1 , further comprising monitoring a status of the first and second communications channels and reporting an event corresponding to the first or second communications channel.
3. The method of claim 2 , wherein the status of the first and the second communications channels includes a presence status.
4. The method of claim 1 , wherein the first communications protocol includes a cellular telephone voice communications protocol and the second communications protocol includes a voice over internet communications protocol.
5. The method of claim 1 , wherein the first communications channel utilizes a different communications service provider than the second communications channel.
6. The method of claim 1 , wherein the first communications protocol includes a text communications protocol.
7. The method of claim 6 , wherein the second communications protocol includes a voice communications protocol.
8. The method of claim 1 , further comprising controlling streaming video over the network.
9. The method of claim 1 , further comprising controlling streaming audio over the network.
10. The method of claim 1 , further comprising providing a text chat room service providing text communications over the first communications channel and over the second communications channel, wherein the text communications sent over the first communications channel are also sent over the second communications channel.
11. The method of claim 10 , wherein the first communications protocol is different than the second communications protocol.
12. The method of claim 1 , wherein the first communications protocol includes an SIP protocol and the second communications protocol includes an XMPP protocol.
13. A method comprising:
utilizing a first voice communications protocol to provide voice communications between a central entity and a first entity;
utilizing a second voice communications protocol to provide voice communications between the central entity and a second entity, the second voice communications protocol being different from the first voice communications protocol; and
communicatively coupling the first entity and the second entity.
14. The method of claim 13 , wherein the first communications channel and the second communications channel are carried over different communications service providers.
15. The method of claim 13 , wherein the first voice communications protocol includes a cellular service protocol and the second voice communications protocol includes a voice over internet protocol.
16. The method of claim 13 , wherein the first voice communications protocol includes an SIP protocol and the second voice communications protocol includes an XMPP protocol.
17. The method of claim 13 , wherein communicatively coupling the first entity and the second entity includes providing a voice conference service between the central entity, the first entity, and the second entity.
18. The method of claim 13 , wherein communicatively coupling the first entity and the second entity includes transferring a voice call from the first entity to the second entity.
19. The method of claim 13 , wherein communicatively coupling the first entity and the second entity includes forwarding a voice call from the first entity to the second entity.
20. A method comprising:
including an application programming interface function call in an application source code, the application programming interface function call configured to selectively utilize either a first communications protocol or a second communications protocol, the selection of communications protocol to utilize being responsive to a parameter setting of the application programming interface function call, the first protocol and the second protocol being different;
targeting a compiler to compile the application source code into an executable application configured to execute on a first processor;
compiling the application source code into an executable application targeted to execute on the first processor, the compilation being performed using the compiler;
targeting the compiler to compile the application source code into an executable application configured to execute on a second processor; and
compiling the application source code into an executable application targeted to execute on the second processor, the compilation being performed using the compiler.
21. A system for providing communications services comprising:
a communications device including
a transceiver configured to transmit and receive communication signals,
a memory configured to store computer-readable instructions,
a processor configured to
read the computer-readable instructions from the memory,
execute the computer-readable instructions, and
communicate with other communications devices using the transceiver; and
a program including computer-readable instructions stored on the memory, the program being executable by the processor for performing a method for providing a communications services interface, the method comprising:
receiving a first application function call specifying a first communications channel utilizing a first communications protocol to communicate over a network;
sending a first protocol command to control communications over the first communications channel, the first protocol command being responsive to the first application function call;
receiving a second application function call specifying a second communications channel utilizing a second communications protocol to communicate over the network, the second application function call having a same syntax as the first application function call, the second communications protocol being different than the first communications protocol; and
sending a second protocol command to control communications over the second communications channel, the second protocol command being responsive to the second application function call.
22. A computer readable storage medium having stored thereon a program, the program being executable by a processor for performing a method for providing a communications services interface, the method comprising:
receiving a first application function call specifying a first communications channel utilizing a first communications protocol to communicate over a network;
sending a first protocol command to control communications over the first communications channel, the first protocol command being responsive to the first application function call;
receiving a second application function call specifying a second communications channel utilizing a second communications protocol to communicate over the network, the second application function call having a same syntax as the first application function call, the second communications protocol being different than the first communications protocol; and
sending a second protocol command to control communications over the second communications channel, the second protocol command being responsive to the second application function call.
23. The computer readable storage medium of claim 22 , the method further comprising monitoring a status of the first and second communications channels and reporting an event corresponding to the first or second communications channel.
24. The computer readable storage medium of claim 23 , wherein the status of the first and second communications channels includes a presence status.
25. The computer readable storage medium of claim 22 , wherein the first communications protocol includes a cellular telephone voice communications protocol and the second communications protocol includes a voice over internet communications protocol.
26. The computer readable storage medium of claim 22 , wherein the first communications channel utilizes a different communications service provider than the second communications channel.
27. The computer readable storage medium of claim 22 , wherein the first communications protocol includes a text communications protocol.
28. The computer readable storage medium of claim 27 , wherein the second communications protocol includes a voice communications protocol.
29. The computer readable storage medium of claim 22 , the method further comprising controlling streaming video over the network.
30. The computer readable storage medium of claim 22 , the method further comprising controlling streaming audio over the network.
31. The computer readable storage medium of claim 22 , the method further comprising providing a text chat room service providing text communications over the first communications channel and over the second communications channel, wherein the text communications sent over the first communications channel are also sent over the second communications channel.
32. The computer readable storage medium of claim 31 , wherein the first communications protocol is different than the second communications protocol.
33. The computer readable storage medium of claim 22 , wherein the first communications protocol includes an SIP protocol and the second communications protocol includes an XMPP protocol.
34. A method for providing a communications services interface, the method comprising:
receiving a first application function call specifying a first communications channel to communicate over a network;
sending a first protocol command to control communications over the first communications channel, the first protocol command being responsive to the first application function call;
receiving a second application function call specifying a second communications channel to communicate over the network, the second application function call having a same syntax as the first application function call, the second communications channel being carried by a different communications services provider than the first communications channel; and
sending a second protocol command to control communications over the second communications channel, the second protocol command being responsive to the second application function call.
35. A method for providing a communications services interface, the method comprising:
registering a first protocol stack with a communications services interface module;
activating a first communications service using the first protocol stack; and
registering a second protocol stack with the communications services interface module without interrupting operation of the first communications service.
36. The method of claim 35 , wherein the second protocol stack is configured to support a second communications protocol which the communications services interface module did not previously support.
37. The method of claim 35 , further comprising activating a second communications service using the second protocol stack without interrupting operation of the first communications service.
38. The method of claim 35 , further comprising deactivating the second protocol stack without interrupting operation of the first communications service.
39. The method of claim 38 , wherein deactivating the second protocol stack is responsive to availability of communications resources.
40. The method of claim 35 , wherein registering the second protocol stack is responsive to availability of communications resources.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/157,348 US20090113460A1 (en) | 2007-10-25 | 2008-06-09 | Systems and methods for providing a generic interface in a communications environment |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US98268407P | 2007-10-25 | 2007-10-25 | |
US12/157,348 US20090113460A1 (en) | 2007-10-25 | 2008-06-09 | Systems and methods for providing a generic interface in a communications environment |
Publications (1)
Publication Number | Publication Date |
---|---|
US20090113460A1 true US20090113460A1 (en) | 2009-04-30 |
Family
ID=40583510
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/157,348 Abandoned US20090113460A1 (en) | 2007-10-25 | 2008-06-09 | Systems and methods for providing a generic interface in a communications environment |
US12/214,359 Active 2030-05-06 US8611947B2 (en) | 2007-10-25 | 2008-06-17 | Systems and methods for augmenting communications protocols |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/214,359 Active 2030-05-06 US8611947B2 (en) | 2007-10-25 | 2008-06-17 | Systems and methods for augmenting communications protocols |
Country Status (1)
Country | Link |
---|---|
US (2) | US20090113460A1 (en) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110022978A1 (en) * | 2009-07-23 | 2011-01-27 | Rockwell Automation Technologies, Inc. | Intelligent device framework |
US20120082165A1 (en) * | 2010-09-30 | 2012-04-05 | Yigang Cai | Centralized telecom server for different technology networks |
US8509186B2 (en) | 2010-04-26 | 2013-08-13 | Research In Motion Limited | Conversion of mobile device to LAN-only telephony functions |
US20140020102A1 (en) * | 2012-07-16 | 2014-01-16 | Infosys Limited | Integrated network architecture |
US20150058469A1 (en) * | 2013-08-20 | 2015-02-26 | Futurewei Technologies, Inc. | Monitoring NAT Behaviors Through URI Dereferences in Web Browsers |
US9107049B2 (en) | 2012-05-11 | 2015-08-11 | D2 Technologies, Inc. | Advanced real-time IP communication in a mobile terminal |
US20150319112A1 (en) * | 2013-12-13 | 2015-11-05 | Metaswitch Networks Limited | Subscription management |
EP2870524A4 (en) * | 2012-07-05 | 2016-03-02 | Tucson Embedded Systems | Interfacing with multiple objects |
US20160226925A1 (en) * | 2015-01-30 | 2016-08-04 | Samsung Electronics Co., Ltd. | Method and apparatus for controlling power output from an electronic device to an external electronic device |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8180386B1 (en) * | 2009-06-29 | 2012-05-15 | Sprint Communications Company L.P. | Promoting push-to-talk communication |
US8385962B1 (en) | 2009-10-05 | 2013-02-26 | Sprint Communications Company L.P. | Push-to-talk voice messages |
US8914463B2 (en) * | 2009-12-17 | 2014-12-16 | Sony Corporation | Network-based service access for wireless communication devices |
US9729649B1 (en) * | 2012-08-15 | 2017-08-08 | Amazon Technologies, Inc. | Systems and methods for controlling the availability of communication applications |
CN104144156B (en) * | 2013-05-10 | 2018-09-21 | 华为技术有限公司 | Message processing method and device |
US8892679B1 (en) | 2013-09-13 | 2014-11-18 | Box, Inc. | Mobile device, methods and user interfaces thereof in a mobile device platform featuring multifunctional access and engagement in a collaborative environment provided by a cloud-based platform |
US9704137B2 (en) | 2013-09-13 | 2017-07-11 | Box, Inc. | Simultaneous editing/accessing of content by collaborator invitation through a web-based or mobile application to a cloud-based collaboration platform |
US10866931B2 (en) | 2013-10-22 | 2020-12-15 | Box, Inc. | Desktop application for accessing a cloud collaboration platform |
US11481228B2 (en) * | 2019-03-13 | 2022-10-25 | Oracle International Corporation | Self-service orchestration platform |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020039149A1 (en) * | 2000-10-02 | 2002-04-04 | Eduardo Perez | System and method for streaming video over a network |
US6549937B1 (en) * | 1999-07-21 | 2003-04-15 | Microsoft Corporation | System and method for multi-protocol communication in a computer network |
US20040015547A1 (en) * | 2002-07-17 | 2004-01-22 | Griffin Chris Michael | Voice and text group chat techniques for wireless mobile terminals |
US20040054735A1 (en) * | 2002-09-17 | 2004-03-18 | Daniell W. Todd | Multi-system instant messaging (IM) |
US20060003745A1 (en) * | 2004-05-26 | 2006-01-05 | Qualcomm Incorporated | Apparatus, system, and method for providing voicemail service using presence status in packet data messaging system |
US20060045124A1 (en) * | 2004-08-31 | 2006-03-02 | Kidsnet, Inc. | Method and apparatus for providing access controls to communication services |
US20060156251A1 (en) * | 2004-12-20 | 2006-07-13 | Atiya Suhail | System and method for providing feature customization for a communications device based on an active communications session |
US20060227950A1 (en) * | 2005-02-28 | 2006-10-12 | Eicon Networks Corporation | Apparatus and method for distributing and abstracting communication protocols |
US20070192325A1 (en) * | 2006-02-01 | 2007-08-16 | Morris Robert P | HTTP publish/subscribe communication protocol |
US20070223462A1 (en) * | 2006-03-27 | 2007-09-27 | Steven Hite | Enhanced service delivery platform that provides a common framework for use by IMS and Web applications in delivering services |
US20080092149A1 (en) * | 2006-10-05 | 2008-04-17 | Rowbotham Graham D | Modular architecture for a device interface component |
US7433455B1 (en) * | 2003-05-05 | 2008-10-07 | Cisco Technology, Inc. | Processing a communication session using a rules engine |
US20080261569A1 (en) * | 2007-04-23 | 2008-10-23 | Helio, Llc | Integrated messaging, contacts, and mail interface, systems and methods |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7315613B2 (en) * | 2002-03-11 | 2008-01-01 | International Business Machines Corporation | Multi-modal messaging |
US6976092B1 (en) * | 2002-09-17 | 2005-12-13 | Bellsouth Intellectual Property Corp. | System that using transport protocol objects located at agent location to generate session ID and to provide translation between different instant messaging protocols |
-
2008
- 2008-06-09 US US12/157,348 patent/US20090113460A1/en not_active Abandoned
- 2008-06-17 US US12/214,359 patent/US8611947B2/en active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6549937B1 (en) * | 1999-07-21 | 2003-04-15 | Microsoft Corporation | System and method for multi-protocol communication in a computer network |
US20020039149A1 (en) * | 2000-10-02 | 2002-04-04 | Eduardo Perez | System and method for streaming video over a network |
US20040015547A1 (en) * | 2002-07-17 | 2004-01-22 | Griffin Chris Michael | Voice and text group chat techniques for wireless mobile terminals |
US20040054735A1 (en) * | 2002-09-17 | 2004-03-18 | Daniell W. Todd | Multi-system instant messaging (IM) |
US7433455B1 (en) * | 2003-05-05 | 2008-10-07 | Cisco Technology, Inc. | Processing a communication session using a rules engine |
US20060003745A1 (en) * | 2004-05-26 | 2006-01-05 | Qualcomm Incorporated | Apparatus, system, and method for providing voicemail service using presence status in packet data messaging system |
US20060045124A1 (en) * | 2004-08-31 | 2006-03-02 | Kidsnet, Inc. | Method and apparatus for providing access controls to communication services |
US20060156251A1 (en) * | 2004-12-20 | 2006-07-13 | Atiya Suhail | System and method for providing feature customization for a communications device based on an active communications session |
US20060227950A1 (en) * | 2005-02-28 | 2006-10-12 | Eicon Networks Corporation | Apparatus and method for distributing and abstracting communication protocols |
US20070192325A1 (en) * | 2006-02-01 | 2007-08-16 | Morris Robert P | HTTP publish/subscribe communication protocol |
US20070223462A1 (en) * | 2006-03-27 | 2007-09-27 | Steven Hite | Enhanced service delivery platform that provides a common framework for use by IMS and Web applications in delivering services |
US20080092149A1 (en) * | 2006-10-05 | 2008-04-17 | Rowbotham Graham D | Modular architecture for a device interface component |
US20080261569A1 (en) * | 2007-04-23 | 2008-10-23 | Helio, Llc | Integrated messaging, contacts, and mail interface, systems and methods |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110022978A1 (en) * | 2009-07-23 | 2011-01-27 | Rockwell Automation Technologies, Inc. | Intelligent device framework |
US20130055135A1 (en) * | 2009-07-23 | 2013-02-28 | Rockwell Automation Technologies, Inc. | Intelligent device framework |
US9348564B2 (en) * | 2009-07-23 | 2016-05-24 | Rockwell Automation Technologies, Inc. | Intelligent device framework |
US8509186B2 (en) | 2010-04-26 | 2013-08-13 | Research In Motion Limited | Conversion of mobile device to LAN-only telephony functions |
US9386628B2 (en) | 2010-04-26 | 2016-07-05 | Blackberry Limited | Conversion of mobile device to LAN-only telephony functions |
US20120082165A1 (en) * | 2010-09-30 | 2012-04-05 | Yigang Cai | Centralized telecom server for different technology networks |
US8542692B2 (en) * | 2010-09-30 | 2013-09-24 | Alcatel Lucent | Centralized telecom server for different technology networks |
US9107049B2 (en) | 2012-05-11 | 2015-08-11 | D2 Technologies, Inc. | Advanced real-time IP communication in a mobile terminal |
EP2870524A4 (en) * | 2012-07-05 | 2016-03-02 | Tucson Embedded Systems | Interfacing with multiple objects |
US20140020102A1 (en) * | 2012-07-16 | 2014-01-16 | Infosys Limited | Integrated network architecture |
US20150058469A1 (en) * | 2013-08-20 | 2015-02-26 | Futurewei Technologies, Inc. | Monitoring NAT Behaviors Through URI Dereferences in Web Browsers |
US9379952B2 (en) * | 2013-08-20 | 2016-06-28 | Futurewei Technologies, Inc. | Monitoring NAT behaviors through URI dereferences in web browsers |
US20150319112A1 (en) * | 2013-12-13 | 2015-11-05 | Metaswitch Networks Limited | Subscription management |
US20160226925A1 (en) * | 2015-01-30 | 2016-08-04 | Samsung Electronics Co., Ltd. | Method and apparatus for controlling power output from an electronic device to an external electronic device |
US9930074B2 (en) * | 2015-01-30 | 2018-03-27 | Samsung Electronics Co., Ltd | Method and apparatus for controlling power output from an electronic device to an external electronic device |
Also Published As
Publication number | Publication date |
---|---|
US20090111509A1 (en) | 2009-04-30 |
US8611947B2 (en) | 2013-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20090113460A1 (en) | Systems and methods for providing a generic interface in a communications environment | |
EP1941701B1 (en) | Telephony and web services coordination | |
EP1790149B1 (en) | Method and session initiation protocol (sip) server for the exchange of end-point capabilities | |
KR100889977B1 (en) | Media session framework using protocol independent control module to direct and manage application and service servers | |
JP4709217B2 (en) | Method and apparatus for session control in a hybrid telecommunications network | |
KR100686705B1 (en) | Method and apparatus for providing multi-client support in a SIP-enabled terminal | |
JP2016028509A (en) | Method and system of advanced real-time ip communication in mobile terminal | |
JP4934148B2 (en) | SIP multi-user media client with user agent shared by multiple user applications | |
US20140164543A1 (en) | Communication System, Application Server and Communication Method for Server Cooperation | |
US20050201359A1 (en) | Dynamically establishing media channels between resources of an emergency services network and conforming emergency systems | |
JP2007181079A (en) | Communication route control system | |
JP6305786B2 (en) | Incoming call control apparatus, incoming call control method, and program | |
JP2008219723A (en) | Sip service system, apparatus, method and program used therefor | |
US10135985B1 (en) | Immediate reconnection of a call to an agent in a contact center | |
JP2008113381A (en) | Communication system | |
US9367367B2 (en) | Application router | |
US20090296693A1 (en) | Session Initiation Protocol Telephone System, Data Transmission Method, Server Unit, and Telephone Terminal | |
US20160191573A1 (en) | Systems and methods for modifying a state of a software client | |
US20060085678A1 (en) | Distributed computing | |
JP6076018B2 (en) | Call control apparatus, registration processing method, and program | |
JP6898568B2 (en) | Communication controller, media transmission method, and media transmission program | |
JP2011254303A (en) | Network communication system and network communication method | |
KR100881425B1 (en) | Network conecting management system in mobile communication network, method thereof, mobile terminal for network conecting management system, and operating method thereof | |
WO2013152691A1 (en) | Service logic execution device and method | |
KR100636279B1 (en) | Call admission contorl system and method using resource in voice over internet protocal system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: D2 TECHNOLOGIES, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:PARRISH, STEPHEN J.;KHAN, ZUBAIR A.;RANDMAA, MATTHEW J.;REEL/FRAME:021123/0754;SIGNING DATES FROM 20080606 TO 20080609 |
|
AS | Assignment |
Owner name: D2 TECHNOLOGIES, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MEDNIEKS, ZIGURD;REEL/FRAME:022424/0237 Effective date: 20090304 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |