API Sofia2 para Rephone Kit

post1

En esta entrada se presentará una guía de pasos a seguir para realizar un POST en Sofia2 desde el módulo Xadow BLE+GSM de Seeed, que es la pieza central del conjunto RePhone Kit.

Xadow BLE+GSM es una diminuta placa de desarrollo de aplicaciones de movilidad. Basado en uno de los chips de menor tamaño del mercado, presenta una interesante combinación de capacidades de comunicación, aportando capacidades de Bluetooth Smart o BLE, un modem 2G (GSM/GPRS) cuatribanda (850/900/1800/1900MHz) que cubre cualquier red GSM a nivel mundial.

 

El SoC central utilizado es el MT2502 de Mediatek, con estas características principales:

  • Micro-controlador: Procesador RISC de 32-bit ARM7EJ-STM
  • Memoria RAM: 4 MB
  • Memoria FLASH: 16 MB
  • Alimentación: 3.3 ~ 4.2V(no SIM)/3.5 ~ 4.2V(con SIM)
  • Consumos estimados: 20mW (@standby sin radio), 30 mW (@standby GSM), 45mW (@standby Bluetooth).
  • Cuatribanda: 850/900/1800/1900MHz
  • GPRS: Modem de clase 12
  • Velocidad de reloj: 260 MHz
  • Conectores: Conectores de 35 pines y PIN Connector para concatenar modulo extra de Xadow (GPS, extensión de GPIO, LCD, etc); Conector JST 1.0 para la batería.ç
  • Interfaces: LCD, Audio, I2C, SPI, UART, y GPIOs.

Es destacable la amplia gama de opciones de programación para el kit, ofreciendo SDKs para C/C++ (sobre Eclipse), LUA, Arduino y Javascript. Sin embargo, es recomendable usar la plataforma Eclipse en C/C++ para poder acceder a toda la potencia del kit, ya que para el resto de opciones, ciertas librerías no han sido aún portadas por el fabricante.

El primer paso es configurar el entorno de desarrollo. Para ello Seeed dispone de varias guías paso a paso en como instalar los drivers y programas requeridos. En el caso del entorno de Eclipse, este enlace http://wiki.seeedstudio.com/wiki/Eclipse_IDE_for_RePhone_Kit contiene una guía detallada para empezar a programar la placa.

El siguiente paso es partir de uno de los ejemplos incluidos en el LinkIt Assist 2502 SDK 2.0. Para ello bastará con seleccionar Nuevo->Proyecto->LinkIt Assist 2502 SDK 2.0 Example->Example Application.

post1

En la siguiente pantalla bastará con dar nombre al proyecto y seleccionar la plataforma adecuada, en este caso LinkIt Assist 2502, y aceptar, para pasar a la selección del ejemplo de Network_HTTPS.

Tras esto el proyecto ya estará disponible en el workspace seleccionado. El sistema sobre el que funcionan las aplicaciones desarrolladas se basa en un sistema de llamadas al mismo, que lanzará callbacks en respuesta a estas llamadas.

El punto de entrada del programa se encuentra en el método vm_main de la fuente HTTPS.c. Como se observa en el código, se suscribe el programa a los eventos del sistema.

post1.png

En este ejemplo en concreto, se vincula el inicio del programa al evento del sistema VM_EVENT_CREATE, que se dispara al inicio de la operación del sistema.

La llamada a vm_timer_create_non_precise, crea un temporizador en el sistema, que ejecutará la función que se le pase por parámetro cuando expire el tiempo indicado (en ms). En este caso en concreto se puede observar que cada minuto se hace una llamada al método http_send_request. En este método vemos como se indican los métodos de callback que han de ser llamados desde el sistema, dependiendo de los eventos que reciba. Además en este método se llama a set_custom_apn que carga en el modem los datos de la tarjeta microSIM utilizada para comunicar. Los campos de la misma se pueden definir en las macros de la parte superior, estos son los campos a modificar:

post1

El APN de la red ha de introducirse en CUST_APN, mientras que el resto parámetros han de ser activados en el caso de que la tarjeta utilizase proxys para sus conexiones. Es importante destacar que hay que eliminar el requerimiento de código PIN para la tarjeta SIM a utilizar. Esto se puede hacer simplemente con un smartphone Android, accediendo a la tarjeta SIM y desactivando el bloqueo de la SIM, que pedirá una vez el código SIM, y tras esta operativa no lo pedirá nunca más.

Con la llamada a vm_https_channel, comenzará el proceso de conexión. Si todo ha ido bien, el sistema invocará el método https_send_request_set_channel_rsp_cb como callback, y es en este método donde realizaremos pequeñas modificaciones para realizar el POST a Sofia2. Estos cambios se realizarán en los parámetros que se pasan a la llamada al sistema vm_https_send_request, los cambios son los siguientes:

  • VM_HTTPS_METHOD_POST en lugar de VM_HTTPS_METHOD_GET
  • Configurar tanto VMHTTPS_TEST_URL como HTTP_HEADER con los valores adecuados de Sofia2
  • Introducir tanto HTTP_HEADER, como insert_sofia como mensajes a enviar y sus longitudes.

post1

Con estos cambios, la llamada quedaría como la siguiente:

post1

Para el primer mensaje que sería un JOIN, se podría formar el siguiente array, y asignarlo en la llamada anterior como parámetro.

post1

El siguiente paso tras realizar esta llamada al sistema, sería un callback por parte del mismo en el método https_send_read_request_rsp_cb, donde el valor de result = 0 nos indicaría que todo ha funcionado correctamente. Para añadir algunas líneas de depuración, podemos mostrar en el monitor las respuestas del servidor:

post1

Con todos estos pasos, el ejemplo estaría listo para realizar un JOIN en Sofia2. El siguiente paso sería el programa en la placa, pulsando sobre el botón de Build Application.

post1

A continuación habría que abrir el monitor, para poder comprobar que efectivamente hemos realizado un JOIN a Sofia2 gracias a los mensajes de depuración añadidos.

post1

En el menú de monitor, habrá que seleccionar el puerto de Debug, y conectarse al mismo para poder acceder al log que está lanzando el equipo. Cuando pase el tiempo definido en el temporizador que lanzaba https_send_request, se realizará la llamada y se podrá ver el log satisfactorio como el siguiente:

post1.png

Con esta base bastaría con construir una cadena con el esquema JSON de la ontología que se desease actualizar y seguir este mismo proceso para insertar una nueva instancia usando el SessionKey contenido en el JOIN previo satisfactorio.

API Sofia2 para Rephone Kit

Un comentario en “API Sofia2 para Rephone Kit

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s