Search Images Maps Play YouTube News Gmail Drive More »
Advanced Patent Search | Web History | Sign in

Patents

A Radio Interface Layer (RIL) is disclosed. The RIL comprises an API set which provides a level of abstraction between the radio on a cell phone and the software of the cell phone. The API set of RIL is roughly based on the GSM AT interface as defined in GSM specifications 07.05 and 07.07. The API set provides access to functionality contained within a cellular telephone, such as a GSM or CDMA compatible telephone. These APIs allow applications running on an operating system in the cellular telephone to issue commands without knowledge of the underlying radio structure of the cellular telephone and specific knowledge of the GSM-type commands. For example, these APIs allow the applications to access to phonebook entries, restrict access to data and functionality using passwords, access file and message storage, and perform many other functions. The RIL is divided into a hardware-independent proxy layer, called by various software components, and a driver layer that is hardware-specific.

InventorsScott R. Shell, Roman Sherman, Alan W. Shen
Original AssigneeMicrosoft Corporation
Primary Examiner: Nabil El-Hady
Attorney: Merchant & Gould
Current U.S. Classification719/328; 719/311; 719/313; 719/321; 719/322; 719/327; 719/329
International Classification: G06F/112

View patent at USPTO
Search USPTO Assignment Database

Citations

Cited PatentFiling dateIssue dateOriginal AssigneeTitle
US6018571Sep 30, 1997Jan 25, 2000Mitel CorporationSystem for interactive control of a computer and telephone
US6141564Sep 30, 1999Oct 31, 2000Motorola, Inc.Method of sharing a SIM card between two masters
US6269254Sep 28, 1998Jul 31, 2001Motorola, Inc.Radio communications device and method with API between user application program and telephony program and method
US6584185Jan 31, 2000Jun 24, 2003Microsoft CorporationTelephone abstraction layer and system in a computer telephony system
US20020052968Dec 20, 2000Messaging method and apparatus for routing messages in a client server environment over multiple wireless and wireline networks

Referenced by

Citing PatentFiling dateIssue dateOriginal AssigneeTitle
US7133669Aug 4, 2003Nov 7, 2006PCTEL, Inc.Systems and methods for seamless roaming between wireless networks
US7251248Jul 30, 2002Jul 31, 2007Bridgeworks Ltd.Connection device
US7519364Sep 8, 2006Apr 14, 2009PCTEL, Inc.System and method for seamless roaming between wireless networks
US7821974Mar 29, 2005Oct 26, 2010Microsoft CorporationUMTS RIL extension
US7872574Feb 1, 2006Jan 18, 2011Innovation Specialists, LLCSensory enhancement systems and methods in personal electronic devices
US7886311Mar 29, 2005Feb 8, 2011Microsoft CorporationSynchronous RIL proxy
US8134978Oct 28, 2008Mar 13, 2012InterDigital Technology Corporation
SK Telecom Company, Ltd.
Integration of 802.21 media independent handover functionality to radio interface layer and telephony server
US8204494Sep 28, 2009Jun 19, 2012Enfora, L.P.Controlling the use of a wireless mobile communication device

Claims

1. An abstraction layer for interfacing a computer to a telephony radio, comprising:

a set of application programming interfaces (APIs) for abstracting out multiple radio technologies without knowledge of the telephony radio or cellular network, wherein the set of APIs correspond to call control functions, wherein the abstraction layer comprises a proxy layer and a driver layer, wherein when the proxy layer receives a call at a first interface to one of the set of APIs, the proxy layer transforms the API call to a command understood by the driver layer and sends the command to the driver layer at a second interface, and wherein the driver layer receives the command at the second interface and determines at least one standard telephony radio command corresponding to the called API and sends the telephony radio command to the telephony radio at a third interface, and wherein the proxy layer is hardware independent and the driver is hardware specific.

2. The abstraction layer of claim 1 wherein the telephony radio is one of a plurality of telephony radios which operates based on the standard telephony radio commands.

3. The abstraction layer of claim 1 wherein the set of APIs further correspond to short messaging system functions.

4. The abstraction layer of claim 3 wherein the set of APIs further correspond to network service functions.

5. The abstraction layer of claim 4 wherein the set of APIs further correspond to data connection functions.

6. The abstraction layer of claim 5 wherein the set of APIs further correspond to interface functions.

7. A radio interface layer of a telephone for facilitating communications between an application program module and a radio, comprising:

a proxy layer for communicating with the application program module at a first interface and a driver layer at a second interface, wherein the proxy layer provides an API on the first interface for receiving application program calls to perform a particular function and wherein the proxy layer transforms the API calls to an input/output control (IOCTL) code and sends the IOCTL code to the driver layer at the second interface;
wherein the driver layer communicates with the proxy layer at the second interface and the radio at a third interface, the driver layer receiving an IOCTL code at the second interface and transforming the IOCTL code into a command understood by the radio to perform the particular function and sending the radio command at the third interfaces; and
wherein the proxy layer is hardware independent and the driver layer is hardware specific.

8. The radio interface layer of claim 7 wherein the driver layer further receives communications from the radio indicating that the particular function has been performed and wherein the driver layer sends a success code to the proxy layer indicating that the particular function has been performed.

9. A method for processing commands in a telephone comprising a proxy layer, a driver layer, an application and a radio, the method comprising the steps of:

causing the application to call a radio interface layer (RIL) API in the proxy layer at a first interface, wherein the RIL API is associated with an action to be performed by the radio;
causing the proxy layer to translate the RIL API into IOCTL codes;
sending the IOCTL codes to the driver layer at a second interface;
translating the IOCTL codes to a command corresponding to the action, wherein the command will be understood by the radio;
sending the command to the radio at a third interface; and
wherein the proxy layer is hardware independent and the driver layer is hardware specific.

10. The method of claim 9 wherein the command is an AT command.

11. The method of claim 9 wherein the command is one of a private API set defined by the radio manufacturer.

12. The method of claim 9 further comprising the step of generating in the RIL driver layer a unique ID associated with the RIL API.

13. The method of claim 12 further comprising the step of waiting for a response from the radio, and when received, calling back the calling application with the response and the unique ID returned from the call.

14. The method of claim 13 wherein the RIL driver matches the response from the radio with the unique ID and the RIL driver sends the response to the calling process via a callback function.

15. A method of communicating between a module and a radio comprising:

(a) generating a radio interface layer (RIL) API call at one of a plurality of modules to perform a specific action;
(b) sending the RIL API call to a proxy at a first interface;
(c) at the proxy, converting the RIL API call to a command understood by a radio driver;
(d) transmitting the radio driver command from the proxy to the radio driver at a second interface;
(e) transmitting a radio command from the radio driver to the radio at a third interface;
(f) performing the specific action at the radio; and
wherein the proxy is hardware indepentent and the driver is hardware specific.

16. The method of claim further 15 comprising:

(g) in response to successfully performing the specific action, sending a success code from the driver to the proxy and from the proxy to the one of the plurality of modules that generated the RIL API.

17. The method of claim 16 wherein the RIL API, command and success code are associated with an identifier linking them together and linking them to the one of the plurality of modules that generated the RIL API call and wherein the radio driver receives the success code, and, using the identifier, matches the success code with the one of the plurality of modules that generated the RIL API call and sends the success code to the one of the plurality of modules that generated the RIL API call.

18. The method of claim 17 further comprising the step of:

(h) generating a notification at the radio in response to detecting data that needs to be reported to one of the plurality of modules;
(i) sending the notification to the radio driver.

19. The method of claim 18 further comprising the step of:

(j) sending the notification from the radio driver to the proxy.

20. The method of claim 19 further comprising the step of:

(k) sending the notification from the proxy to at least one of the plurality of modules.

21. The method of claim 18 wherein the data that needs to be reported comprises an incoming phone call to the radio.

22. The method of claim 18 wherein the data that needs to be reported comprises a signal strength change in the radio.

23. The method of claim 18 wherein the one of a plurality of modules is a TSP.

24. The method of claim 18 wherein the one of a plurality of modules is a SIM manager.

25. The method of claim 18 wherein the one of a plurality of modules is an emergency application for generating emergency calls.

26. The method of claim 18 wherein the one of a plurality of modules is a WAP layer.

27. The method of claim 18 wherein the one of a plurality of modules is a TAPI interface.

28. The method of claim 18 wherein the one of a plurality of modules is an ExTAPI interface.

29. The method of claim 18 wherein the one of a plurality of modules is connected to an application program module and receives instructions from the application program module to generate the RIL API call.

30. The method of claim 29 wherein the instructions provided by the application program module comprise instructions defined by the one of a plurality of modules and wherein the instructions are converted to the Rib API calls by the one of a plurality of modules.