Una diferencia importante entre la V3.0.1 y las versiones anteriores es que ahora puede seleccionar los archivos C de funciones específicas según sus necesidades comerciales y compilar el SDK de forma personalizada. Ya no es obligatorio utilizar el compilador integrado del SDK.
V3.0.1
A continuación se describen las diferencias entre el SDK V2.3.0, publicado en noviembre de 2018, y el SDK V3.0.1, publicado en marzo de 2019.
Portabilidad mediante el código fuente
Este método de desarrollo es adecuado para máquinas locales que ejecutan
Ubuntu16.04 64-bit,Windows XP,Windows 7yWindows 10.Ejecute el comando
make menuconfigen Ubuntu o haga clic en el archivoconfig.baten Windows para seleccionar las funciones.Una vez seleccionadas las funciones según sus necesidades comerciales, ejecute el comando
extract.shen Ubuntu o haga clic en el archivoextract.baten Windows para extraer los archivos fuente necesarios.Agregue los archivos fuente a su proyecto en una máquina local y utilice el método de su preferencia para compilar el código fuente.
Todas las interfaces de la capa de abstracción de hardware (HAL) que debe implementar se recopilan automáticamente en el archivo wrapper.c dentro del directorio output/eng/wrappers.
Anteriormente, no era posible realizar operaciones de desarrollo si fallaba la compilación cruzada del SDK. El SDK V3.0.1 mejora la portabilidad y la facilidad de uso.
Estructura de directorios
El SDK V3.0.1 utiliza una estructura de directorios plana y fácil de usar. Por ejemplo, todos los archivos .h y .c relacionados con las funciones de Message Queuing Telemetry Transport (MQTT) en la nube se almacenan en el directorio
src/mqtt.-
Excepto por el directorio
src/infra, que contiene la infraestructura, cada directoriosrc/xxxcorresponde a una función del SDK y contiene todos sus archivos fuente. La cantidad de directoriossrc/xxxcoincide con el número de funciones del SDK. Ejemplos:src/dynamic_register: contiene todos los archivos fuente de la función de verificación de certificado único por producto o registro dinámico.src/dev_sign: contiene todos los archivos fuente de la función de firma de dispositivo.src/mqtt: contiene todos los archivos fuente de la función de conexión MQTT.src/ota: contiene todos los archivos fuente de la función de actualización de firmware por aire (OTA).src/dev_model: contiene todos los archivos fuente de la función de gestión de modelos Thing Specification Language (TSL) o gestión de subdispositivos.
Presentación de API e interfaces HAL
En versiones anteriores del SDK, el archivo de encabezado global iot_import.h contenía las interfaces externas HAL_XXX() de las que depende el SDK, mientras que el archivo de encabezado global iot_export.h incluía las API IOT_XXX proporcionadas por el SDK.
Algunos clientes asumían que debían implementar todas las más de 100 interfaces HAL del archivo iot_import.h y familiarizarse con las más de 200 API del archivo iot_import.h. Esto generaba una carga de trabajo excesiva.
El SDK V3.0.1 incluye las siguientes mejoras:
Se eliminaron los archivos
iot_import.hyiot_export.h.Se eliminó el directorio
includedel directorio raíz.Los archivos fuente se clasificaron y almacenaron en directorios específicos según las funciones del SDK para evitar mostrar información excesiva.
Para utilizar el SDK V3.0.1, siga estos pasos:
Familiarícese con las funciones del SDK, como la conexión MQTT a IoT Platform y las actualizaciones OTA; determine las funciones necesarias y luego configúrelas y selecciónelas mediante una interfaz gráfica de usuario (GUI).
A continuación, ejecute el script
extract.shen Ubuntu o el scriptextract.baten Windows para obtener los archivos fuente de las funciones seleccionadas y almacenarlos en el directoriooutput.-
Implemente las API y las interfaces HAL para usar el SDK siguiendo estas reglas:
El directorio
output/eng/xxxalmacena los archivos fuente de la funciónxxx. Estos archivos provienen del directoriosrc/xxx.El archivo
output/eng/xxx/xxx_api.hcontiene las API de la funciónxxx. Estas API provienen del archivosrc/xxx/xxx_api.h.Todas las interfaces
HAL_XXX()que debe implementar para interactuar con un sistema embebido específico se agregan automáticamente al archivooutput/eng/wrappers/wrapper.c.
-
Solo necesita consultar los archivos fuente de las funciones requeridas en
src/xxx/xxx_api.hpara el archivooutput/eng/xxx/xxx_api.h. Las declaraciones de API irrelevantes para sus necesidades comerciales no se muestran.Todas las interfaces HAL que debe implementar se agregan al archivo
output/eng/wrappers/wrapper.c. Las interfaces HAL irrelevantes para sus necesidades comerciales no se muestran.
Por ejemplo, la función básica del SDK consiste en calcular la firma para establecer una conexión MQTT con IoT Platform. Esta función es compatible con la interfaz src/dev_sign o output/eng/dev_sign.
En este caso, solo una interfaz de la función de cálculo de firma es visible para usted en el archivo
dev_sign_api.h.No se muestran interfaces HAL ni el archivo
wrapper.c, ya que esta función no tiene dependencias y no requiere funciones en C.
Archivo make.settings
Además de en máquinas locales con Linux, los desarrolladores pueden ejecutar
config.baten máquinas conWindows XP,Windows 7oWindows 10para configurar las funciones necesarias mediante una GUI.La siguiente tabla describe las opciones
FEATURE_XXXcuyos nombres han cambiado.
|
Nombre anterior |
Nuevo nombre |
Descripción |
|
|
|
Modo de punto de acceso telefónico (phone-ap-config) para la configuración de Wi-Fi. |
|
|
|
Modo de configuración de router (router-config) para la configuración de Wi-Fi. |
-
Se agregaron las siguientes opciones:
FEATURE_AWSS_SUPPORT_SMARTCONFIG_WPS: modo de configuración punto a punto para la configuración de Wi-Fi.FEATURE_AWSS_SUPPORT_DEV_AP: modo de punto de acceso del dispositivo (dev-ap-config) para la configuración de Wi-Fi.
Interfaces MQTT
Llame a la interfaz
IOT_MQTT_Construct()para establecer una conexión Message Queuing Telemetry Transport (MQTT). La interfazIOT_SetupConnInfo()ya no es necesaria.Al llamar a la interfaz
IOT_MQTT_Construct(), puede dejar vacíos la mayoría de los parámetros de conexión. El SDK utiliza automáticamente los valores predeterminados y no devuelve errores.
Nuevas funciones e interfaces
-
Se agregó la función de firma de dispositivo, que es una función básica del SDK.
Solo la interfaz
IOT_Sign_MQTT()está relacionada con esta función.
-
Se agregó la función de verificación de certificado único por producto. Esta función se puede utilizar cuando se graba un certificado de dispositivo que incluye ProductKey, DeviceName y DeviceSecret en todos los dispositivos.
Solo la interfaz
IOT_Dynamic_Register()está relacionada con esta función.
-
Se agregó la función de restablecimiento de dispositivo. Esta función permite desvincular un subdispositivo de su gateway correspondiente después de que el subdispositivo envíe una solicitud de desvinculación a IoT Platform.
Solo la interfaz
IOT_DevReset_Report()está relacionada con esta función.
-
Se agregó la función de carga de archivos HTTP/2. Esta función permite cargar archivos grandes en IoT Platform.
Las interfaces
IOT_HTTP2_UploadFile_Connect(),IOT_HTTP2_UploadFile_Request()yIOT_HTTP2_UploadFile_Disconnect()están relacionadas con esta función.
Función eliminada
Se eliminó
CMakede las herramientas de compilación compatibles, dado que se admite GNU make y la portabilidad basada en código fuente.
V2.3.0
A continuación se describen las diferencias entre el SDK V2.2.1, publicado el 31 de agosto de 2018, y el SDK V2.3.0, publicado en noviembre de 2018.
Archivo make.settings
Los desarrolladores pueden ejecutar el comando
make menuconfigen máquinas locales conUbuntu16.0464-bitpara configurar el archivomake.settingsmediante una GUI.La siguiente tabla describe las opciones
FEATURE_XXXcuyos nombres han cambiado.
|
Nombre anterior |
Nuevo nombre |
Descripción |
|
|
|
Interruptor para la función de gestión de modelos Thing Specification Language (TSL). Los modelos deben cumplir con el protocolo Alink JSON. |
|
|
|
Interruptor para la función de gateway en la gestión de modelos TSL. |
|
|
|
Interruptor para la función de configuración de Wi-Fi. |
-
Se agregaron las siguientes opciones:
FEATURE_DEVICE_BIND_ENABLED: interruptor para la función de vinculación de dispositivos. Si utiliza la consola Living Link, debe activar este interruptor para permitir que la aplicación Cloud Intelligence controle los dispositivos.FEATURE_ALCS_CLIENT_ENABLED: interruptor para funciones específicas de cliente utilizadas en comunicación local. Debe activar este interruptor para gateways perimetrales y otros dispositivos que gestionan subdispositivos IoT.FEATURE_ALCS_SERVER_ENABLED: interruptor para funciones específicas de servidor utilizadas en comunicación local. Debe activar este interruptor para dispositivos gestionados por aplicaciones móviles o gateways perimetrales en la red de área local (LAN).FEATURE_AWSS_SUPPORT_SMARTCONFIG: modo SmartConfig (smart-config) para la configuración de Wi-Fi.FEATURE_AWSS_SUPPORT_ZEROCONFIG: modo de configuración cero (zero-config) para la configuración de Wi-Fi.FEATURE_AWSS_SUPPORT_ROUTER: modo de configuración de router (router-config) para la configuración de Wi-Fi.FEATURE_AWSS_SUPPORT_PHONEASAP: modo de punto de acceso telefónico (phone-ap-config) para la configuración de Wi-Fi.
-
Se eliminó la siguiente opción:
FEATURE_COAP_DTLS_SUPPORT: interruptor que determina si una conexión a IoT Platform mediante Constrained Application Protocol (CoAP) se cifra con el protocolo Datagram Transport Layer Security (DTLS). Se eliminó de las configuraciones personalizadas porque el cifrado siempre está habilitado.
Interfaces globales
Se eliminaron las interfaces
IOT_OpenLog()yIOT_CloseLog(). Llame a la interfazIOT_SetLogLevel()para determinar si el SDK imprime registros y cuáles desea que imprima.El nivel de registro
IOT_LOG_EMERGfue reemplazado por el nivelIOT_LOG_NONE.IOT_SetLogLevel(IOT_LOG_NONE)especifica que la función de registro está deshabilitada.Se eliminó la interfaz
IOT_Linkkit_Ioctl(). Llame a la interfazIOT_Ioctl()para implementar las funcionalidades de IOT_Linkkit_Ioctl(). Para más información sobre las opciones de IOT_Ioctl(), consulte los valores enumerados del tipoiotx_ioctl_option_t.Se mejoró la interfaz
IOT_Ioctl(). Se agregaron las opcionesIOTX_IOCTL_SET_MQTT_DOMAINyIOTX_IOCTL_SET_HTTP_DOMAINpara permitirle pasar endpoints MQTT o HTTP personalizados y establecer conexiones en nuevos sitios de despliegue de servicios fuera de China.
Interfaces MQTT
-
En las siguientes interfaces, puede establecer el parámetro
handleenNULLpara crear una conexión con valores de parámetros predeterminados o utilizar la conexión predeterminada:IOT_MQTT_ConstructIOT_MQTT_DestroyIOT_MQTT_YieldIOT_MQTT_LogPostIOT_MQTT_CheckStateNormalIOT_MQTT_SubscribeIOT_MQTT_UnsubscribeIOT_MQTT_PublishIOT_MQTT_Subscribe_SyncIOT_MQTT_Publish_Simple
Se eliminaron los parámetros
pwrite_bufypread_bufde la estructuraiotx_mqtt_param_t.-
Se agregó la interfaz
IOT_MQTT_Publish_Simple(). Puede pasar parámetros de tipo cadena para especificar el tema y la carga útil.int IOT_MQTT_Publish_Simple(void *handle, const char *topic_name, int qos, void *data, int len); -
Se agregó la interfaz
IOT_MQTT_Subscribe_Sync(). Permite realizar una suscripción síncrona de forma bloqueante; no se devuelven datos hasta que la suscripción sea exitosa.int IOT_MQTT_Subscribe_Sync(void *handle, const char *topic_filter, iotx_mqtt_qos_t qos, iotx_mqtt_event_handle_func_fpt topic_handle_func, void *pcontext, int timeout_ms); Se optimizó la interfaz
IOT_MQTT_Subscribe(). Antes de establecer una conexión MQTT, puede suscribirse a mensajes sin conexión. El SDK para C envía un paquete de suscripción inmediatamente después de establecer la conexión.
Interfaz de actualización OTA
-
Si el parámetro
handlede las interfaces MQTT se establece enNULL, el tercer parámetro de la interfazIOT_OTA_Inittambién puede establecerse enNULLpara usar la conexión predeterminada. IOT_OTA_Init es la interfaz básica para actualizaciones por aire (OTA).void *IOT_OTA_Init(const char *product_key, const char *device_name, void *ch_signal);
Interfaz eliminada
Las interfaces linkkit_xxx() y linkkit_gateway_xxx() del SDK de la versión anterior son opcionales para la compilación. De forma predeterminada, estas interfaces no aparecen en las configuraciones de compilación.
Nota: 1. Ejecute el siguiente comando en el archivo make.settings para mostrar las interfaces linkkit_xxx() y linkkit_gateway_xxx(). En este caso, las nuevas interfaces desaparecerán.
FEATURE_DEPRECATED_LINKKIT=y
Para reducir el uso de memoria de los dispositivos, el SDK ya no valida los formatos de datos cuando llama a operaciones de API para enviar mensajes sobre cambios de propiedades y eventos. Por lo tanto, no necesita exportar el archivo JSON de modelos TSL desde IoT Platform, convertir los datos JSON en cadenas en C ni agregar dichas cadenas a su código en C.
Interfaces HAL
Se eliminó la interfaz
HAL_Sys_rebootporque su función es idéntica a la de la interfazHAL_Reboot.