V3.0.1以前のバージョンとの主な違いは、ビジネス要件に基づいて特定の機能のCファイルを選択し、SDKをカスタム方法でコンパイルできることです。 SDKの組み込みコンパイラを使用する必要はなくなりました。
V3.0.1
2018年11月にリリースされたSDK V2.3.0と2019年3月にリリースされたSDK V3.0.1の違いについて説明します。
ソースコードを使用した移植
この開発方法は、
Ubuntu16.04 64ビット、Windows XP、Windows 7、およびWindows 10を実行するオンプレミスマシンに適しています。Ubuntuで
make menuconfigコマンドを実行するか、Windowsでconfig.batファイルをクリックして機能を選択できます。ビジネス要件に基づいて機能を選択したら、Ubuntuで
extract.shコマンドを実行するか、Windowsでextract.batファイルをクリックして必要なソースファイルを抽出します。オンプレミスマシン上のプロジェクトにソースファイルを追加し、優先メソッドを使用してソースコードをコンパイルできます。
実装する必要があるすべてのハードウェア抽象化レイヤー (HAL) インターフェイスは、output/eng/wrappersディレクトリのwrapper.cファイルに自動的に収集されます。
以前は、SDKのクロスコンパイルに失敗した場合、開発操作を実行できませんでした。 SDK V3.0.1により、移植性と使いやすさが向上します。
ディレクトリ構造
SDK V3.0.1は、使いやすいフラットディレクトリ構造を使用します。 たとえば、すべて。hと。クラウド上のMQTT (Message Queuing Telemetry Transport) 機能に関するcファイルは、
src/mqttディレクトリに格納されます。インフラストラクチャを含む
src/infraディレクトリを除き、src/xxxディレクトリはSDK機能にマップされ、その機能のすべてのソースファイルを含みます。src/xxxディレクトリの数は、SDK機能の数と同じです。 例:src/dynamic_register: 製品ごとの一意証明書検証または動的登録機能のすべてのソースファイルが含まれています。src/dev_sign: デバイスシグネチャ機能のすべてのソースファイルが含まれています。src/mqtt: MQTT接続機能のすべてのソースファイルが含まれています。src/ota: 無線 (OTA) ファームウェア更新機能のすべてのソースファイルが含まれています。src/dev_model: Thing Specification Language (TSL) モデル管理またはサブデバイス管理機能のすべてのソースファイルが含まれます。
APIとHALインターフェイスのプレゼンテーション
SDKの以前のバージョンでは、グローバルヘッダーファイルiot_import.hにはSDKが依存する外部HAL_XXX() インターフェイスが含まれ、グローバルヘッダーファイルiot_export.hにはSDKによって提供されるIOT_XXX APIが含まれています。
特定のお客様は、iot_import.hファイルに100を超えるすべてのHALインターフェイスを実装し、iot_import.hファイルに200を超えるすべてのAPIを理解する必要があると想定しています。 これにより、顧客のワークロードが重くなります。
SDK V3.0.1では、次の改善が行われます。
iot_import.hおよびiot_export.hファイルは削除されます。ルートディレクトリの
includeディレクトリが削除されました。ソースファイルは、過剰な情報表示を防ぐため、SDKの機能に基づいて専用のディレクトリに分類および保存されます。
SDK V3.0.1を使用するには、次の手順を実行する必要があります。
IoT PlatformへのMQTT接続やOTAアップデートなどのSDK機能に精通していることを確認し、必要な機能を決定してから、グラフィカルユーザーインターフェイス (GUI) で機能を設定および選択してください。
次に、Ubuntuで
extract.shスクリプト、Windowsでextract.batスクリプトを実行して、選択したフィーチャのソースファイルを取得し、ソースファイルをoutputディレクトリに保存します。次のルールに基づいて、SDKを使用するためのAPIとHALインターフェイスを実装します。
output/eng/xxxディレクトリには、xxx機能のソースファイルが格納されます。 ソースファイルはsrc/xxxディレクトリから取得します。output/eng/xxx/xxx_api.hファイルには、xxx機能のAPIが含まれています。 APIはsrc/xxx/xxx_api.hファイルから取得します。特定の組み込みシステムと対話するために実装する必要があるすべての
HAL_XXX()インターフェイスは、output/eng/wrappers/wrapper.cファイルに自動的に追加されます。
output/eng/xxx/xxx_api.hファイルのsrc/xxx/xxx_api.hに必要な機能のソースファイルのみを表示する必要があります。 ビジネス要件とは無関係なAPI宣言は表示されません。実装する必要があるすべてのHALインターフェイスは、
output/eng/wrappers/wrapper.cファイルに追加されます。 ビジネス要件に関係のないHALインターフェイスは表示されません。
たとえば、SDKの基本的な機能は、IoT PlatformへのMQTT接続を確立するための署名を計算することです。 この機能は、src/dev_signまたはoutput/eng/dev_signインターフェイスでサポートされています。
この場合、
dev_sign_api.hファイルには、署名計算機能のインターフェイスが1つだけ表示されます。この機能には依存関係がなく、c関数が必要ないため、HALインターフェイスや
wrapper. Cファイルは表示されません。
make.settingsファイル
Linuxを実行するオンプレミスマシンとは別に、開発者は
Windows XP、Windows 7、またはWindows 10マシンでconfig.batを実行して、GUIで必要な機能を構成できます。次の表に、名前が変更される
FEATURE_XXXオプションを示します。
以前の名前 | 新しい名前 | 説明 |
|
| Wi-Fiセットアップの電話アクセスポイントモード (phone-ap-config) 。 |
|
| Wi-Fiセットアップのルーター設定モード (router-config) 。 |
次のオプションが追加されます。
FEATURE_AWSS_SUPPORT_SMARTCONFIG_WPS: Wi-Fiセットアップのポイントツーポイント設定モード。FEATURE_AWSS_SUPPORT_DEV_AP: Wi-Fiセットアップのデバイスアクセスポイントモード (dev-ap-config) 。
MQTTインタフェース
IOT_MQTT_Construct()インターフェイスを呼び出して、MQTT (Message Queuing Telemetry Transport) 接続を確立できます。IOT_SetupConnInfo()インターフェイスは不要になりました。IOT_MQTT_Construct()インターフェイスを呼び出すと、ほとんどの接続パラメーターを空のままにすることができます。 SDKは自動的にデフォルト値を使用し、エラーは返されません。
新機能とインターフェース
SDKの基本機能であるデバイス署名機能が追加されました。
IOT_Sign_MQTT()インターフェイスのみが機能に関連しています。
製品ごとに固有の証明書検証機能が追加されました。 この機能は、ProductKey、DeviceName、およびDeviceSecretを含むデバイス証明書をすべてのデバイスに書き込むときに使用できます。
IOT_Dynamic_Register()インターフェイスのみが機能に関連しています。
デバイスリセット機能が追加されました。 この機能は、サブデバイスがIoT Platformに関連付け解除要求を送信した後、サブデバイスと対応するゲートウェイとの関連付けを解除するために使用できます。
機能に関連するのは、
IOT_DevReset_Report()インターフェイスだけです。
HTTP/2ファイルのアップロード機能が追加されました。 この機能を使用して、大きなファイルをIoT Platformにアップロードできます。
IOT_HTTP2_UploadFile_Connect()、IOT_HTTP2_UploadFile_Request()、およびIOT_HTTP2_UploadFile_Disconnect()インターフェイスは、この機能に関連しています。
削除された機能
CMakeは、ソースコードに基づくGNU makeと移植がサポートされているため、サポートされているコンパイルツールから削除されます。
V2.3.0
2018年8月31日にリリースされたSDK V2.2.1と2018年11月にリリースされたSDK V2.3.0の違いについて説明します。
make.settingsファイル
開発者は、
Ubuntu16.0464ビットのオンプレミスマシンでmake menuconfigコマンドを実行して、GUIでmake.settingsファイルを構成できます。次の表に、名前が変更される
FEATURE_XXXオプションを示します。
以前の名前 | 新しい名前 | 説明 |
|
| Thing Specification Language (TSL) モデル管理機能のスイッチ。 モデルはAlink JSONプロトコルに準拠している必要があります。 |
|
| TSLモデル管理のゲートウェイ機能のスイッチ。 |
|
| Wi-Fiセットアップ機能のスイッチ。 |
次のオプションが追加されます。
FEATURE_DEVICE_BIND_ENABLED: デバイスバインディング機能のスイッチ。 Living Linkコンソールを使用する場合は、このスイッチをオンにして、Cloud Intelligenceアプリがデバイスを制御できるようにする必要があります。FEATURE_ALCS_CLIENT_ENABLED: ローカル通信で使用される特定のクライアント機能のスイッチ。 エッジゲートウェイおよびIoTサブデバイスを管理するその他のデバイスでは、このスイッチをオンにする必要があります。FEATURE_ALCS_SERVER_ENABLED: ローカル通信で使用される特定のサーバー機能のスイッチ。 ローカルエリアネットワーク (LAN) 上のモバイルアプリまたはエッジゲートウェイによって管理されているデバイスの場合、このスイッチをオンにする必要があります。FEATURE_AWSS_SUPPORT_SMARTCONFIG: Wi-FiセットアップのSmartConfigモード (smart-config) 。FEATURE_AWSS_SUPPORT_ZEROCONFIG: Wi-Fiセットアップのゼロ設定モード (zero-config) 。FEATURE_AWSS_SUPPORT_ROUTER: Wi-Fiセットアップのルーター設定モード (router-config) 。FEATURE_AWSS_SUPPORT_PHONEASAP: Wi-Fiセットアップの電話アクセスポイントモード (phone-ap-config) 。
次のオプションが削除されました。
FEATURE_COAP_DTLS_SUPPORT: IoT Platform over Constrained Application Protocol (CoAP) への接続がDatagram Transport Layer Security (DTLS) プロトコルを使用して暗号化されているかどうかを判断するスイッチです。 暗号化は常に有効になっているため、スイッチはカスタム設定から削除されます。
グローバルインターフェイス
IOT_OpenLog()およびIOT_CloseLog()インターフェイスは削除されます。IOT_SetLogLevel()インターフェイスを呼び出して、SDKがログを印刷するかどうか、およびSDKで印刷するログを確認できます。IOT_LOG_EMERGログレベルは、IOT_LOG_NONEログレベルに置き換えられます。IOT_SetLogLevel(IOT_LOG_NONE)は、ロギング機能を無効にすることを指定します。IOT_Linkkit_Ioctl()インターフェイスが削除されました。IOT_Ioctl()インターフェイスを呼び出して、IOT_Linkkit_Ioctl() インターフェイスの機能を実装できます。 IOT_Ioctl() インターフェイスのオプションの詳細については、iotx_ioctl_option_t型の列挙値をご参照ください。IOT_Ioctl()インターフェイスが強化されました。IOTX_IOCTL_SET_MQTT_DOMAINおよびIOTX_IOCTL_SET_HTTP_DOMAINオプションが追加され、カスタムMQTTまたはHTTPエンドポイントを渡して、中国以外の新しいサービス展開サイトへの接続を確立できます。
MQTTインタフェース
次のインターフェイスでは、
handleパラメーターをNULLに設定して、既定のパラメーター値を使用して接続を作成したり、既定の接続を使用したりできます。IOT_MQTT_ConstructIOT_MQTT_DestroyIOT_MQTT_YieldIOT_MQTT_LogPostIOT_MQTT_CheckStateNormalIOT_MQTT_サブスクライブIOT_MQTT_サブスクライブ解除IOT_MQTT_パブリッシュIOT_MQTT_Subscribe_SyncIOT_MQTT_Publish_Simple
pdrit_bufパラメーターとpread_bufパラメーターは、iotx_mqtt_param_t構造体から削除されます。IOT_MQTT_Publish_Simple()インターフェイスが追加されました。 文字列型のパラメーターを渡して、トピックとペイロードを指定できます。int IOT_MQTT_Publish_Simple(void * handle、const char * topic_name、int qos、void * data、int len);IOT_MQTT_Subscribe_Sync()インターフェイスが追加されました。 同期サブスクリプションはブロッキング方式で実行でき、サブスクリプションが成功するまでデータは返されません。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);IOT_MQTT_Subscribe()インターフェイスが最適化されています。 MQTT接続が確立される前に、オフラインメッセージをサブスクライブできます。 SDK for Cは、接続が確立された直後にサブスクリプションパケットを送信します。
OTA更新インターフェース
MQTTインターフェイスの
handleパラメーターがNULLに設定されている場合、デフォルトの接続を使用するためにIOT_OTA_Initインターフェイスの3番目のパラメーターもNULLに設定できます。 IOT_OTA_Initは、無線 (OTA) 更新のための基本インタフェースである。void * IOT_OTA_Init(const char * product_key、const char * device_name、void * ch_signal);
削除されたインターフェース
以前のバージョンのSDKのlinkkit_xxx() およびlinkkit_gateway_xxx() インターフェイスは、コンパイルのオプションです。 デフォルトでは、インターフェイスはコンパイル設定に表示されません。
注意:1. make.settingsファイルで次のコマンドを実行して、linkkit_xxx() およびlinkkit_gateway_xxx() インターフェイスを表示できます。 この場合、新しいインターフェースは消えます。
FEATURE_DEPRECATED_LINKKIT=y
2. デバイスのメモリ使用量を減らすために、SDKのAPI操作を呼び出してプロパティの変更やイベントに関するメッセージを送信するときに、SDKはデータ形式の有効性をチェックしなくなりました。 したがって、IoT PlatformからTSLモデルのJSONファイルをエクスポートし、JSONデータをCの文字列に変換して、Cのコードに文字列を追加する必要はありません。
HALインターフェイス
HAL_Sys_rebootインターフェイスは、対応する機能がHAL_Rebootインターフェイスの機能と同じであるため、削除されます。