martes, 3 de junio de 2008

LiPS, el Linux móvil

LiPS, el Linux móvil
LiPS (Linux Phone Standards Forum) es un consorcio creado por un grupo de operadores de telefonía móvil y fabricantes dae dispositivos hardware



Aunque es menos conocida por el gran público usuario de productos electrónicos, existe una fuerte competencia en el mercado de sistemas operativos diseñados para usarse con dispositivos móviles, como por ejemplo teléfonos u organizadores personales. De forma similar a lo que sucede en el campo de los sistemas operativos para ordenadores, en el terreno de los destinados a equipos móviles hay disponibles productos de Microsoft (con sus productos desarrollados en torno a Windows CE) y soluciones de otros fabricantes, siendo uno de los más conocidos Symbian. Lo que faltaba hasta el momento era un sistema operativo para productos de telefonía basado en Linux, si bien es cierto que hay en el mercado algunos equipos de telefonía móvil que usan el kernel de dicho sistema.

LiPS (Linux Phone Standards Forum) es un consorcio creado por un grupo de operadores de telefonía móvil y fabricantes de dispositivos hardware, participando también en esta iniciativa desarrolladores de componentes usados en el hardware y fabricantes de software. El objetivo de LiPS es crear un estándar que unifique las capas de más alto nivel de Linux, de manera que exista una base común sobre la que sea posible desarrollar aplicaciones y servicios que funcionen sobre terminales basados en este sistema operativo. Por lo tanto LiPS creará estándares para servicios basados en Linux, así como las API necesarias que directamente estén involucradas en el desarrollo e interoperabilidad de aplicaciones y servicios.

Modelo de referencia




Para poder crear un estándar que facilite el desarrollo de aplicaciones para terminales móviles basados en Linux, se ha creado un modelo de referencia, de forma que todos los equipos basados en LiPS deberán implementar dicho modelo de referencia. De esta forma, una plataforma LiPS es una implementación de las diversas especificaciones de servicios LiPS que se han definido. La plataforma, además, proporciona servicios a las aplicaciones compatibles con LiPS, las cuales deberán disponer los privilegios necesarios para poder acceder a los servicios que proporciona la plataforma.

En el caso más común, un dispositivo LiPS se entrega con la plataforma LiPS instalada y un conjunto inicial de aplicaciones preinstaladas. Posteriormente, si los servicios de gestión de aplicaciones del dispositivo soportan mecanismos de instalación dinámica de aplicaciones, sería posible instalar nuevas aplicaciones así como eliminar cualquiera de las que se encontraban preinstaladas.

Los servicios que proporciona LiPS están divididos en seis grupos o categorías: servicios de gestión de aplicaciones, servicios de interfaz de usuario, servicios habilitadores, servicios del sistema operativo, servicios de administración de la plataforma y servicios seguros. Una aplicación que se ejecuta sobre una plataforma LiPS puede, por lo tanto, acceder a los servicios y funciones que proporciona cada una de dichas categorías.

Los servicios de gestión de aplicaciones, por ejemplo, se encargan de gestionar y administrar la instalación de nuevas aplicaciones y proporcionar un marco de seguridad. Los correspondientes a la interfaz de usuario implementan primitivas gráficas mediante las que es posible realizar el render, o visualización, de los distintos elementos de la interfaz de usuario del dispositivo. Esta parte también incluiría servicios para permitir la localización de la interfaz en los distintos idiomas que vayan a soportarse, así como la gestión de eventos producidos a raíz de la interacción entre el usuario y la interfaz del dispositivo físico.

Los servicios habilitadores hacen posible el desarrollo de determinados tipo de aplicaciones. Por lo tanto, existen servicios de esta clase que ayudan a crear exploradores web, programas de mensajería instantánea, de descarga de archivos, de localización geográfica o multimedia a través de redes IP.

Los servicios del sistema operativo son aquellos más íntimamente relacionados con la plataforma hardware del dispositivo, ya que a menudo son los que realizan una interacción directa con dispositivos físicos tales como la pantalla del equipo, servicios de telefonía y acceso a redes, codecs multimedia o sistemas de archivos.

El desarrollo de aplicaciones que se ejecuten en una plataforma LiPS se realiza utilizando herramientas que se ejecutan sobre un PC convencional y un SDK, el cual incluye compiladores cruzados, depuradores y simuladores. Hay que tener en cuenta que los dispositivos móviles emplean arquitecturas distintas de la archiconocida x86 que se emplea tan ampliamente en el mundo de los ordenadores personales, por lo que es preciso disponer de compiladores que produzcan código nativo para la arquitectura del procesador que se emplee en el dispositivo para el que se esté desarrollando el software.

Modelo de programación



Ya que en algunos casos no existen dentro del mundo Linux algunas API o especificaciones que son necesarias para el desarrollo del tipo de aplicaciones que corren sobre dispositivos de telefonía móvil, LiPS realizará la especificación de las interfaces de programación de aplicaciones necesarias para acceder a los servicios para los que no exista una API que haya sido definida por organismos internaciones o por proyectos que se estén desarrollando dentro del ámbito del software de código abierto. Para que estas API formen un todo coherente desde el punto de vista de los desarrolladores de aplicaciones, LiPS ha definido una serie de directivas que seguirán todas las especificaciones de las API desarrolladas por este consorcio. Estas directivas cubren aspectos como el modelo de eventos, mecanismos de sincronización, configuración dinámica, extensibilidad, políticas de gestión de memoria o directivas sintácticas que debe cumplir el código fuente.

La extensibilidad de la plataforma es fundamental, ya que permitirá a los distintos fabricantes de dispositivos incluir características diferenciadoras respecto a sus competidores, las cuales podrían necesitar un soporte específico mediante API propietarias de cada fabricante. Esta extensibilidad podría implementarse mediante la extensión de los servicios que define LiPS o bien mediante el diseño de una API que haga uso de códigos IOCTL para llamar a las extensiones.

Ya que las API que está definiendo LiPS manipulan estructuras de datos de forma intensiva, se ha definido una política estándar para la obtención y liberación de bloques de memoria. Esta política incentiva que no se empleen datos de longitud variable, ya que puede ser una fuente de posibles errores de programación. Por otro lado, se propone no compartir la responsabilidad de obtener y liberar bloques de memoria entre la parte cliente y servidor de un producto, de forma que se propone que en caso de funciones síncronas debe ser el cliente quien adquiera y libere la memoria. En el caso de peticiones asíncronas, la gestión de la memoria se realizará dependiendo del modelo de eventos que se use.

API para telefonía


Una de las API cuya especificación ya está disponible es la de telefonía. Esta API está diseñada de forma que sea independiente del tipo de teléfono de que se trate, por lo que puede implementarse sobre equipos de telefonía móvil de tipo 2G, 2,5G, 3G o, incluso, sobre teléfonos inalámbricos para telefonía fija de tipo DECT. Esta API se basa en asignar identificadores de sesión a cada componente que requiere el uso de los servicios de telefonía. Una vez que un componente abre una sesión, dicho componente puede llamar a cualquier función de la API de manera síncrona o asíncrona.

Sin embargo, dada la naturaleza del dispositivo sobre el que se ejecutan las aplicaciones, es posible que se produzcan eventos no solicitados directamente por el software que corre en el equipo. Esta situación puede darse, por ejemplo, en un cambio en la intensidad de la señal de radio que recibe el teléfono o la recepción de un mensaje SMS. Para que un componente de software pueda procesar eventos de este tipo, es necesario que primero realice un proceso de registro. Gracias a este proceso, el componente podrá responder a un grupo de eventos (por ejemplo, responder a cualquier evento relacionado con el procesamiento de mensajes SMS) o a un único evento.

Esta API de telefonía está formada por más de cien funciones, por lo que se han agrupado en bloques de funciones relacionadas debido a su funcionalidad. Tenemos un primer grupo de funciones básicas, entre las que se encuentran las necesarias para abrir o cerrar una sesión, o comprobar si está disponible una determinada función de la API de telefonía. Hay que tener en cuenta que si un componente de software no puede abrir una sesión, no podrá acceder al resto de funciones de la API, ya que la mayoría requieren que se pase como parámetro un identificador de sesión.

Un segundo grupo de funciones es el relacionado con la gestión de llamadas telefónicas, haciendo posible operaciones tan básicas como iniciar una llamada o responder a una llamada entrante. Este grupo de funciones incluye, además, la funcionalidad necesaria para obtener el estado de una llamada, llamar a un número de un servicio de emergencia, gestionar una vídeollamada o fijar la duración de los tonos mediante los que se realiza la marcación de los números de teléfono. Un tercer grupo contiene funciones que permiten retener llamadas, gestionarlas (por ejemplo, transferir la llamada a otro teléfono) o gestionar la realización de una multiconferencia (una llamada en la que participan simultáneamente varios terminales).

El cuarto grupo de funciones de la API de telefonía se encarga de gestionar los accesos a tarjetas de memoria, como, por ejemplo, las lecturas o escrituras en la tarjeta SIM del teléfono. Al igual que otros grupos de la API, éste también soporta el procesamiento de determinados eventos no solicitados directamente por el software del equipo. Entre estos se encuentra, por ejemplo, el que se produce al insertar en el equipo una tarjeta de memoria. El quinto grupo de funciones está relacionado con la gestión del equipo de telefonía y, de momento, sólo incluye dos funciones. Mediante una de ellas se puede obtener o fijar el nivel de funcionalidad del equipo, mientras que mediante la segunda es posible obtener el código IMEI del teléfono móvil.

El sexto grupo de funciones gestiona todas las operaciones de red, así como la configuración de la misma. Incluye funciones que se encargan de obtener las bandas de radio que están disponibles, obtener la lista de operadores de telefonía que están disponibles y configurar cuál va a usarse, obtener el nombre del operador de la red o medir la potencia de la señal de radio que recibe el equipo. En este grupo de funciones están definidos dos eventos no solicitados: mediante el primero de ellos se informa al software de un cambio en la intensidad de la señal de radio, mientras que mediante el segundo se informa del estado del proceso de registro del equipo en la red de telefonía.

Los dos siguientes grupos de funciones se encargan de gestionar conexiones CSD (Circuit Switched Data) y DPS (Data Packet Switched). El noveno grupo de funciones gestiona la agenda de números de teléfono almacenada en el equipo, proporcionando funciones que leen o escriben números de teléfono, los eliminan de la agenda. El décimo grupo de funciones configura el identificador de la línea telefónica, obtiene una tabla de información de la tarjeta SIM y soporta varias funcionalidades más relacionadas con la configuración del terminal.

El último grupo de funciones se encarga de gestionar los servicios de mensajes SMS. Dispone de funciones básicas para enviar mensajes, recibirlos, enviar un mensaje que previamente estaba almacenado en la memoria del equipo, guardar un SMS o borrar un SMS.

Miembros de LiPS



Entre los participantes en esta iniciativa encontramos empresas de todos los ámbitos relacionados con la telefonía móvil, estando presentes desde grandes multinacionales de telefonía, como, por ejemplo, France Telecom o British Telecommunications (BT). Como es lógico, también están presentes fabricantes de chips y de equipos de telefonía, como Texas Instruments, Freescale, NXP Semiconductors, Huawei Technology, etc. También forman parte de LiPS diversos desarrolladores de software, como ARM (esta empresa también es la diseñadora de la arquitectura de procesadores de su mismo nombre, la cual la implementan diversos fabricantes de semiconductores)o Montavista Software.

Como puede verse, los participantes en esta iniciativa son importantes empresas de telefonía, hardware y software, por lo que es de esperar que en relativamente poco tiempo aparezcan los primeros terminales basados en las especificaciones que desarrolle el consorcio LiPS. El uso de una plataforma software de código abierto podría abaratar el desarrollo de terminales, por lo que el usuario final podría beneficiarse pudiendo adquirir terminales más sofisticados a precios más asequibles.

No hay comentarios.: