Utilisez l'API C du Link SDK pour implémenter la fonctionnalité RRPC (Revert-RPC) sur un appareil. Cet exemple s'appuie sur le fichier de code demos/mqtt_rrpc_demo.c.
Contexte
Pour en savoir plus sur la fonctionnalité RRPC, consultez la rubrique Présentation.
La fonctionnalité RRPC est réservée aux appareils connectés à IoT Platform via MQTT. Pour plus d'informations sur le code de connexion MQTT, consultez la rubrique Présentation.
Procédure
-
Initialisez un client.
Pour plus d'informations, consultez la section Étape 1 : Initialisation.
-
Configurez les fonctionnalités requises.
Pour plus d'informations, consultez la section Étape 2 : Configuration des fonctionnalités.
-
Établissez une connexion.
Pour plus d'informations, consultez la section Étape 3 : Demande de connexion.
-
Recevez un message RRPC.
-
Une fois l'appareil connecté à IoT Platform, appelez l'opération RRpc pour envoyer une commande RRPC à l'appareil. Vous pouvez utiliser les rubriques suivantes :
-
L'appareil appelle la fonction aiot_mqtt_recv pour recevoir le message RRPC. Une fonction de rappel traite ensuite le message.
Cet exemple utilise une fonction de rappel nommée demo_mqtt_default_recv_handler.
-
Définissez une fonction de rappel pour traiter le message RRPC.
ImportantL'appareil doit envoyer une réponse dans un délai de 8 secondes après réception de la demande. Sinon, IoT Platform considère l'appel comme échoué, même si l'appareil a bien reçu la demande.
Lors de la définition de la logique de rappel, tenez compte des points suivants :
-
Vérifiez si le message est un message RRPC selon le format du topic.
-
Si vous utilisez un topic spécifique à RRPC, l'appareil n'a pas besoin de s'y abonner.
Format du topic :
/sys/${YourProductKey}/${YourDeviceName}/rrpc/request/${messageId}. Pour plus d'informations, consultez la rubrique Utiliser des topics spécifiques à RRPC. -
Si vous utilisez un topic personnalisé, l'appareil doit s'y abonner. Pour plus d'informations, consultez la section Étape 6 : Abonnement à un topic.
Lorsque vous utilisez un topic personnalisé pour envoyer un message, celui-ci est transmis à l'appareil via le topic de demande RRPC correspondant. Format du topic de demande RRPC :
/ext/rrpc/${messageId}/${topic}. Pour plus d'informations, consultez la rubrique Appeler un topic personnalisé (recommandé).
-
Définissez la logique de traitement du rappel : après réception du message RRPC, l'appareil traite la commande et envoie une réponse à IoT Platform.
Dans cet exemple, le message RRPC est imprimé et une réponse avec le paramètre payload défini sur
pongest renvoyée à IoT Platform.
void demo_mqtt_default_recv_handler(void *handle, const aiot_mqtt_recv_t *packet, void *userdata) { switch (packet->type) { …… …… case AIOT_MQTTRECV_PUB: { printf("pub, qos: %d, topic: %.*s\n", packet->data.pub.qos, packet->data.pub.topic_len, packet->data.pub.topic); printf("pub, payload: %.*s\n", packet->data.pub.payload_len, packet->data.pub.payload); /* TODO: Define the logic for processing business messages that are sent by the server. */ */ /* The following sample code shows a sample RRPC response. */ { char *payload = "pong"; char resp_topic[256]; if(packet->data.pub.topic_len > 256) { break; } memset(resp_topic, 0, sizeof(resp_topic)); memcpy(resp_topic, packet->data.pub.topic, packet->data.pub.topic_len); aiot_mqtt_pub(handle, resp_topic, (uint8_t *)payload, (uint32_t)strlen(payload), 0); } } break; …… …… default: { } } } -
-
-
Fermez la connexion.
Pour plus d'informations, consultez la section Étape 8 : Déconnexion.
-
Quittez le programme.
Pour plus d'informations, consultez la section Étape 9 : Quitter le programme.
Étapes suivantes
-
Après avoir configuré le fichier de code d'exemple, compilez-le pour générer un fichier exécutable. Dans cet exemple, le fichier exécutable ./output/mqtt-rrpc-demo est généré.
Pour plus d'informations, consultez la section Compilation et exécution.
Pour plus d'informations sur le résultat de l'exécution, consultez la rubrique Afficher les journaux.