La principale différence entre la version V3.0.1 et les versions antérieures réside dans la possibilité de sélectionner les fichiers C des fonctionnalités spécifiques en fonction de vos besoins métier, puis de compiler le SDK de manière personnalisée. L'utilisation du compilateur intégré au SDK n'est plus obligatoire.
V3.0.1
La section suivante décrit les différences entre le SDK V2.3.0, publié en novembre 2018, et le SDK V3.0.1, publié en mars 2019.
Portage à l'aide du code source
Cette méthode de développement convient aux machines locales exécutant
Ubuntu16.04 64-bit,Windows XP,Windows 7etWindows 10.Sous Ubuntu, exécutez la commande
make menuconfigpour sélectionner les fonctionnalités. Sous Windows, cliquez sur le fichierconfig.bat.Après avoir sélectionné les fonctionnalités selon vos besoins métier, extrayez les fichiers sources requis. Sous Ubuntu, exécutez la commande
extract.sh. Sous Windows, cliquez sur le fichierextract.bat.Ajoutez les fichiers sources à votre projet sur une machine locale et compilez le code source avec la méthode de votre choix.
Toutes les interfaces de la couche d'abstraction matérielle (HAL) que vous devez implémenter sont automatiquement regroupées dans le fichier wrapper.c du répertoire output/eng/wrappers.
Auparavant, il était impossible de procéder au développement en cas d'échec de la compilation croisée du SDK. Le SDK V3.0.1 améliore la portabilité et la facilité d'utilisation.
Structure des répertoires
Le SDK V3.0.1 adopte une structure de répertoires plate, simple d'utilisation. Par exemple, tous les fichiers .h et .c relatifs aux fonctionnalités MQTT (Message Queuing Telemetry Transport) sur le cloud sont stockés dans le répertoire
src/mqtt.-
À l'exception du répertoire
src/infracontenant l'infrastructure, chaque répertoiresrc/xxxcorrespond à une fonctionnalité du SDK et contient tous ses fichiers sources. Le nombre de répertoiressrc/xxxest identique au nombre de fonctionnalités du SDK. Exemples :src/dynamic_register: contient tous les fichiers sources de la fonctionnalité de vérification par certificat unique par produit ou d'enregistrement dynamique.src/dev_sign: contient tous les fichiers sources de la fonctionnalité de signature de l'appareil.src/mqtt: contient tous les fichiers sources de la fonctionnalité de connexion MQTT.src/ota: contient tous les fichiers sources de la fonctionnalité de mise à jour du micrologiciel OTA (over-the-air).src/dev_model: contient tous les fichiers sources de la fonctionnalité de gestion du modèle TSL (Thing Specification Language) ou de gestion des sous-appareils.
Présentation des API et des interfaces HAL
Dans les versions précédentes du SDK, le fichier d'en-tête global iot_import.h contenait les interfaces externes HAL_XXX() dont dépendait le SDK, tandis que le fichier d'en-tête global iot_export.h regroupait les API IOT_XXX fournies par le SDK.
Certains clients estimaient devoir implémenter la totalité des plus de 100 interfaces HAL du fichier iot_import.h et se familiariser avec l'ensemble des plus de 200 API du fichier iot_import.h. Cette approche entraînait une charge de travail importante pour les clients.
Le SDK V3.0.1 intègre les améliorations suivantes :
Suppression des fichiers
iot_import.hetiot_export.h.Suppression du répertoire
includesitué à la racine.Classification et stockage des fichiers sources dans des répertoires dédiés, selon les fonctionnalités du SDK, afin d'éviter un affichage excessif d'informations.
Pour utiliser le SDK V3.0.1, procédez comme suit :
Assurez-vous de bien connaître les fonctionnalités du SDK, telles que la connexion MQTT à IoT Platform et les mises à jour OTA. Déterminez les fonctionnalités requises, puis configurez-les et sélectionnez-les via une interface graphique (GUI).
Exécutez ensuite le script
extract.shsous Ubuntu ou le scriptextract.batsous Windows pour obtenir les fichiers sources des fonctionnalités sélectionnées et les stocker dans le répertoireoutput.-
Implémentez les API et les interfaces HAL pour utiliser le SDK conformément aux règles suivantes :
Le répertoire
output/eng/xxxstocke les fichiers sources de la fonctionnalitéxxx. Ces fichiers proviennent du répertoiresrc/xxx.Le fichier
output/eng/xxx/xxx_api.hcontient les API de la fonctionnalitéxxx. Ces API proviennent du fichiersrc/xxx/xxx_api.h.Toutes les interfaces
HAL_XXX()que vous devez implémenter pour interagir avec un système embarqué spécifique sont automatiquement ajoutées au fichieroutput/eng/wrappers/wrapper.c.
-
Il vous suffit de consulter les fichiers sources des fonctionnalités requises dans
src/xxx/xxx_api.hpour le fichieroutput/eng/xxx/xxx_api.h. Les déclarations d'API non pertinentes pour vos besoins métier ne sont pas affichées.Toutes les interfaces HAL que vous devez implémenter sont ajoutées au fichier
output/eng/wrappers/wrapper.c. Les interfaces HAL non pertinentes pour vos besoins métier ne sont pas affichées.
Par exemple, la fonctionnalité de base du SDK consiste à calculer la signature pour établir une connexion MQTT à IoT Platform. Cette fonctionnalité est prise en charge par l'interface src/dev_sign ou output/eng/dev_sign.
Dans ce cas, une seule interface de la fonctionnalité de calcul de signature est visible dans le fichier
dev_sign_api.h.Aucune interface HAL ni aucun fichier
wrapper.cn'est affiché, car cette fonctionnalité n'a aucune dépendance et ne nécessite aucune fonction C.
Fichier make.settings
Outre les machines locales exécutant Linux, les développeurs peuvent exécuter
config.batsur des machinesWindows XP,Windows 7ouWindows 10pour configurer les fonctionnalités requises via une interface graphique.Le tableau suivant décrit les options
FEATURE_XXXdont le nom a changé.
**Ancien nom**
|
**Nouveau nom**
|
**Description**
| | --- | --- | --- | |
`FEATURE_AWSS_SUPPORT_PHONEASAP`
|
`FEATURE_AWSS_SUPPORT_AHA`
|
Mode de point d'accès téléphonique (phone-ap-config) pour la configuration Wi-Fi.
| |
`FEATURE_AWSS_SUPPORT_ROUTER`
|
`FEATURE_AWSS_SUPPORT_ADHA`
|
Mode de configuration du routeur (router-config) pour la configuration Wi-Fi.
|
-
Les options suivantes ont été ajoutées :
FEATURE_AWSS_SUPPORT_SMARTCONFIG_WPS: mode de configuration point à point pour la configuration Wi-Fi.FEATURE_AWSS_SUPPORT_DEV_AP: mode de point d'accès de l'appareil (dev-ap-config) pour la configuration Wi-Fi.
Interfaces MQTT
Appelez l'interface
IOT_MQTT_Construct()pour établir une connexion MQTT (Message Queuing Telemetry Transport). L'interfaceIOT_SetupConnInfo()n'est plus nécessaire.Lors de l'appel de l'interface
IOT_MQTT_Construct(), vous pouvez laisser la plupart des paramètres de connexion vides. Le SDK utilise automatiquement les valeurs par défaut et aucune erreur n'est renvoyée.
Nouvelles fonctionnalités et interfaces
-
Ajout de la fonctionnalité de signature de l'appareil, qui constitue la fonctionnalité de base d'un SDK.
Seule l'interface
IOT_Sign_MQTT()est liée à cette fonctionnalité.
-
Ajout de la fonctionnalité de vérification par certificat unique par produit. Cette fonctionnalité est utilisée lorsque vous gravez un certificat d'appareil incluant un ProductKey, un DeviceName et un DeviceSecret sur tous les appareils.
Seule l'interface
IOT_Dynamic_Register()est liée à cette fonctionnalité.
-
Ajout de la fonctionnalité de réinitialisation de l'appareil. Cette fonctionnalité permet de dissocier un sous-appareil de la passerelle correspondante après que le sous-appareil a envoyé une demande de dissociation à IoT Platform.
Seule l'interface
IOT_DevReset_Report()est liée à cette fonctionnalité.
-
Ajout de la fonctionnalité de téléchargement de fichiers HTTP/2. Cette fonctionnalité permet de télécharger de gros fichiers vers IoT Platform.
Les interfaces
IOT_HTTP2_UploadFile_Connect(),IOT_HTTP2_UploadFile_Request()etIOT_HTTP2_UploadFile_Disconnect()sont liées à cette fonctionnalité.
Fonctionnalité supprimée
CMakea été retiré des outils de compilation pris en charge, car GNU make et le portage basé sur le code source sont désormais pris en charge.
V2.3.0
La section suivante décrit les différences entre le SDK V2.2.1, publié le 31 août 2018, et le SDK V2.3.0, publié en novembre 2018.
Fichier make.settings
Les développeurs peuvent exécuter la commande
make menuconfigsur des machines localesUbuntu16.0464-bitpour configurer le fichiermake.settingsvia une interface graphique.Le tableau suivant décrit les options
FEATURE_XXXdont le nom a changé.
**Ancien nom**
|
**Nouveau nom**
|
**Description**
| | --- | --- | --- | |
`FEATURE_SDK_ENHANCE`
|
`FEATURE_DEVICE_MODEL_ENABLED`
|
Commutateur pour la fonctionnalité de gestion du modèle TSL (Thing Specification Language). Les modèles doivent être conformes au protocole JSON Alink.
| |
`FEATURE_ENHANCED_GATEWAY`
|
`FEATURE_DEVICE_MODEL_GATEWAY`
|
Commutateur pour la fonctionnalité de passerelle dans la gestion du modèle TSL.
| |
`FEATURE_WIFI_AWSS_ENABLED`
|
`FEATURE_WIFI_PROVISION_ENABLED`
|
Commutateur pour la fonctionnalité de configuration Wi-Fi.
|
-
Les options suivantes ont été ajoutées :
FEATURE_DEVICE_BIND_ENABLED: commutateur pour la fonctionnalité de liaison de l'appareil. Si vous utilisez la console Living Link, vous devez activer ce commutateur pour permettre à l'application Cloud Intelligence de contrôler les appareils.FEATURE_ALCS_CLIENT_ENABLED: commutateur pour certaines fonctionnalités client utilisées dans la communication locale. Vous devez activer ce commutateur pour les passerelles edge et autres appareils gérant des sous-appareils IoT.FEATURE_ALCS_SERVER_ENABLED: commutateur pour certaines fonctionnalités serveur utilisées dans la communication locale. Vous devez activer ce commutateur pour les appareils gérés par des applications mobiles ou des passerelles edge sur le réseau local (LAN).FEATURE_AWSS_SUPPORT_SMARTCONFIG: mode SmartConfig (smart-config) pour la configuration Wi-Fi.FEATURE_AWSS_SUPPORT_ZEROCONFIG: mode de configuration zéro (zero-config) pour la configuration Wi-Fi.FEATURE_AWSS_SUPPORT_ROUTER: mode de configuration du routeur (router-config) pour la configuration Wi-Fi.FEATURE_AWSS_SUPPORT_PHONEASAP: mode de point d'accès téléphonique (phone-ap-config) pour la configuration Wi-Fi.
-
L'option suivante a été supprimée :
FEATURE_COAP_DTLS_SUPPORT: commutateur déterminant si une connexion à IoT Platform via le protocole CoAP (Constrained Application Protocol) est chiffrée à l'aide du protocole DTLS (Datagram Transport Layer Security). Ce commutateur a été retiré des configurations personnalisées, car le chiffrement est toujours activé.
Interfaces globales
Suppression des interfaces
IOT_OpenLog()etIOT_CloseLog(). Appelez l'interfaceIOT_SetLogLevel()pour déterminer si le SDK imprime des journaux et quels journaux vous souhaitez qu'il imprime.Le niveau de journal
IOT_LOG_EMERGest remplacé par le niveau de journalIOT_LOG_NONE.IOT_SetLogLevel(IOT_LOG_NONE)indique que la fonctionnalité de journalisation est désactivée.Suppression de l'interface
IOT_Linkkit_Ioctl(). Appelez l'interfaceIOT_Ioctl()pour implémenter les fonctionnalités de l'interface IOT_Linkkit_Ioctl(). Pour plus d'informations sur les options de l'interface IOT_Ioctl(), consultez les valeurs énumérées du typeiotx_ioctl_option_t.Amélioration de l'interface
IOT_Ioctl(). Ajout des optionsIOTX_IOCTL_SET_MQTT_DOMAINetIOTX_IOCTL_SET_HTTP_DOMAINpour vous permettre de transmettre des endpoints MQTT ou HTTP personnalisés afin d'établir des connexions pour de nouveaux sites de déploiement de services hors de Chine.
Interfaces MQTT
-
Dans les interfaces suivantes, vous pouvez définir le paramètre
handlesurNULLpour créer une connexion en utilisant les valeurs de paramètre par défaut ou utiliser la connexion par défaut :IOT_MQTT_ConstructIOT_MQTT_DestroyIOT_MQTT_YieldIOT_MQTT_LogPostIOT_MQTT_CheckStateNormalIOT_MQTT_SubscribeIOT_MQTT_UnsubscribeIOT_MQTT_PublishIOT_MQTT_Subscribe_SyncIOT_MQTT_Publish_Simple
Suppression des paramètres
pwrite_bufetpread_bufde la structureiotx_mqtt_param_t.-
Ajout de l'interface
IOT_MQTT_Publish_Simple(). Vous pouvez transmettre des paramètres de type chaîne pour spécifier le topic et la payload.int IOT_MQTT_Publish_Simple(void *handle, const char *topic_name, int qos, void *data, int len); -
Ajout de l'interface
IOT_MQTT_Subscribe_Sync(). Vous pouvez effectuer l'abonnement synchrone de manière bloquante ; aucune donnée n'est renvoyée tant que l'abonnement n'a pas abouti.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); Optimisation de l'interface
IOT_MQTT_Subscribe(). Avant d'établir une connexion MQTT, vous pouvez vous abonner aux messages hors ligne. Le SDK pour C envoie un paquet d'abonnement immédiatement après l'établissement de la connexion.
Interface de mise à jour OTA
-
Si le paramètre
handledes interfaces MQTT est défini surNULL, le troisième paramètre de l'interfaceIOT_OTA_Initpeut également être défini surNULLpour utiliser la connexion par défaut. IOT_OTA_Init est l'interface de base pour les mises à jour OTA (over-the-air).void *IOT_OTA_Init(const char *product_key, const char *device_name, void *ch_signal);
Interface supprimée
Les interfaces linkkit_xxx() et linkkit_gateway_xxx() du SDK de la version précédente sont facultatives pour la compilation. Par défaut, ces interfaces ne sont pas affichées dans les configurations de compilation.
Remarque : 1. Vous pouvez exécuter la commande suivante dans le fichier make.settings pour afficher les interfaces linkkit_xxx() et linkkit_gateway_xxx(). Dans ce cas, les nouvelles interfaces disparaissent.
FEATURE_DEPRECATED_LINKKIT=y
2. Afin de réduire l'utilisation de la mémoire des appareils, le SDK ne vérifie plus la validité des formats de données lorsque vous appelez les opérations d'API du SDK pour soumettre des messages concernant les modifications de propriétés et les événements. Par conséquent, vous n'avez pas besoin d'exporter le fichier JSON des modèles TSL depuis IoT Platform, de convertir les données JSON en chaînes en C, ni d'ajouter ces chaînes à votre code C.
Interfaces HAL
Suppression de l'interface
HAL_Sys_reboot, car la fonctionnalité correspondante est identique à celle de l'interfaceHAL_Reboot.