Topik ini menjelaskan cara memanggil operasi API dari Link SDK untuk C guna mengimplementasikan fitur revert-RPC (RRPC) pada perangkat. Contoh ini menggunakan file kode bernama demos/mqtt_rrpc_demo.c.
Informasi latar belakang
Prosedur
Inisialisasi klien.
Untuk informasi lebih lanjut, lihat Langkah 1: Inisialisasi Klien.
Konfigurasikan fitur yang diperlukan.
Untuk informasi lebih lanjut, lihat Langkah 2: Konfigurasi Fitur.
Buat koneksi.
Untuk informasi lebih lanjut, lihat Langkah 3: Buat Koneksi.
Terima pesan RRPC.
Setelah perangkat terhubung ke IoT Platform, Anda dapat memanggil operasi RRpc dari IoT Platform untuk mengirimkan perintah RRPC ke perangkat. Topik berikut tersedia:
Perangkat memanggil fungsi aiot_mqtt_recv untuk menerima pesan RRPC. Kemudian, fungsi callback dipanggil untuk memproses pesan tersebut.
Dalam contoh ini, digunakan fungsi callback bernama demo_mqtt_default_recv_handler.
Tentukan fungsi callback untuk memproses pesan RRPC.
PentingSetelah perangkat menerima permintaan, Anda harus mengirimkan respons dalam waktu 8 detik. Jika tidak, IoT Platform akan menentukan bahwa panggilan gagal tanpa memperhatikan apakah perangkat menerima permintaan tersebut atau tidak.
Saat menentukan logika pemrosesan callback, perhatikan hal-hal berikut:
Periksa apakah pesan tersebut adalah pesan RRPC berdasarkan format topik.
Jika Anda menggunakan topik spesifik RRPC, perangkat tidak perlu berlangganan topik tersebut.
Format topik:
/sys/${YourProductKey}/${YourDeviceName}/rrpc/request/${messageId}. Untuk informasi lebih lanjut, lihat Gunakan topik spesifik RRPC.Jika Anda menggunakan topik kustom, perangkat harus berlangganan topik tersebut. Untuk informasi lebih lanjut tentang cara berlangganan topik, lihat Langkah 6: Berlangganan Topik.
Setelah Anda menggunakan topik kustom untuk mengirim pesan, pesan tersebut dikirim ke perangkat melalui topik permintaan RRPC yang sesuai. Format topik permintaan RRPC:
/ext/rrpc/${messageId}/${topic}. Untuk informasi lebih lanjut, lihat Gunakan topik kustom (disarankan).
Tentukan logika pemrosesan callback: Setelah perangkat menerima pesan RRPC, perangkat memproses perintah dan mengirimkan respons ke IoT Platform.
Dalam contoh ini, pesan RRPC dicetak, dan respons dengan parameter payload diatur ke
pongdikembalikan ke 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: Tentukan logika untuk memproses pesan bisnis yang dikirim oleh server. */ /* Kode contoh berikut menunjukkan contoh respons RRPC. */ { 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: { } } }
Tutup koneksi.
Untuk informasi lebih lanjut, lihat Langkah 8: Putuskan Koneksi Perangkat dari IoT Platform.
Keluar dari program.
Untuk informasi lebih lanjut, lihat Langkah 9: Keluar dari Program.
Apa yang harus dilakukan selanjutnya
Setelah mengonfigurasi file kode contoh, kompilasi file tersebut untuk menghasilkan file yang dapat dieksekusi. Dalam contoh ini, file yang dapat dieksekusi ./output/mqtt-rrpc-demo dihasilkan.
Untuk informasi lebih lanjut, lihat Siapkan Lingkungan.
Untuk informasi lebih lanjut tentang hasil eksekusi, lihat Lihat Log.