22. nqFOTA
nqFOTAオブジェクトは、NEQTO Machine Driverを使用してユーザーデバイスのファームウェアを更新する機能を提供する組み込みオブジェクトです。
機能概要:
- ユーザーデバイスのファームウェアイメージファイルのダウンロードとダウンロードデータの読み出し機能を提供します。
- ユーザーデバイスのファームウェア更新結果をNEQTO Consoleへ通知する機能を提供します。
制限事項:
- Machine Driver用スクリプトでのみ使用可能です。
- ファームウェアイメージファイルの最大サイズは1ファイルあたり
2040KB
までとなります。
Abstracts
Methods()/Properties | Summary | Version | Note |
---|---|---|---|
new nqFOTA() | nqFOTAインスタンスを生成します。 | 01.00.00+ |
{nqFOTA} Instance
Methods()/Properties | Summary | Version | Note |
---|---|---|---|
.fileDownload() | 指定されたファイルをダウンロードします。 | 01.00.00+ | |
.binRead() | ダウンロードしたデータを読み出します。 | 01.00.00+ | |
.reportResult() | NEQTO Consoleへファームウェア更新結果を通知します。 | 01.00.00+ | |
.setFailsafeTimer() | スクリプトの実行時間監視タイマ値を変更します。 | 01.00.00+ |
Details
new nqFOTA(fileName[,readChunk[,dlTimeout[,dlRetry]]])
nqFOTAインスタンスを生成します。
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
fileName | string | mandatory | ダウンロードするファイル名を指定します。 | |
readChunk | number | optional | ダウンロードデータの読み出し単位[byte]を指定します。 設定範囲: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 デフォルト値は1024となります。 | 規定外の設定値が指定された場合、デフォルト値となります。 |
dlTimeout | number | optional | ダウンロード通信のタイムアウト値[ms]を指定します。 デフォルト値は30000となります。 | |
dlRetry | number | optional | ダウンロード通信のリトライ回数を指定します。 デフォルト値は2となります。 | |
return | {nqFOTA} | - | {nqFOTA} : 生成された{nqFOTA} |
.fileDownload()
指定されたファイルをダウンロードします。
このメソッドはブロッキングで処理されます。
一つのnqFOTAインスタンスでダウンロードできるファイルは一つです。
複数のファイルをダウンロードする場合は、新しくnqFOTAインスタンスを作成して、再度ダウンロードを実行してください。その際、前回ダウンロードしたファイルは破棄されます。
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
return | number | - | ダウンロードしたファイルのサイズ[byte] | ダウンロードが失敗した場合、0となります。 |
.binRead()
ダウンロードしたデータを読み出します。
一度に読み出すデータサイズは、nqFOTAインスタンスの作成時にreadChunk
で指定します。
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
return | ArrayBuffer, null | - | ArrayBuffer : 読み出されたデータ null : 読み出すデータなし |
.reportResult(message,version[,eventType])
NEQTO Consoleへファームウェア更新結果を通知します。
このメソッドはブロッキングで処理されます。
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
message | string | mandatory | 結果を示す任意メッセージを指定します。 | 例: 'Success' ,'failure' , ... |
version | string | mandatory | バージョンを示す任意メッセージを指定します。 | 例: 'v1.0.0' ,'001' ,'APP-1.0' ,'APP_1_0_0' , ... |
eventType | string | optional | イベントメッセージタイプを指定します。 'info','warn','error','fatal' デフォルト値は'info'となります。 | Version 02.00.00+ |
return | number | - | HTTPレスポンスのステータスコード 200: 成功 以外: 失敗 | 異常が発生したときは、例外となります。 |
.setFailsafeTimer(timeout)
スクリプトの実行時間監視タイマ値を変更します。
NEQTO Machine Driverには、スクリプトが想定通り終了しない場合に備えて実行時間を監視するタイマが存在します。
このタイマは常にスクリプトの開始時に起動され、タイムアウトすると例外を発生させスクリプトを強制終了します。
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
timeout | number | mandatory | タイムアウト値[s]を指定します。 設定範囲: 0~86400 デフォルト値は10800となります。 | 規定外の設定値が指定された場合、デフォルト値となります。0が設定された場合はタイマーが無効となります。 |
return | number | - | 設定された値 | 異常が発生したときは、例外となります。 |
オブジェクトの使用例
Sample 1
ユーザーデバイスのファームウェア更新処理のサンプルです。
ファームウェア更新部分はダミーです。
実行時間監視タイマ値を5分に変更しています。
var FW_FILE = 'sammple.bin';
var TARGET_VER = '0.0.1';
//Download parameter
var READ_CHUNK = 1024; //same as default
var DL_TIMEOUT = 30000; //same as default
var DL_RETRY = 2; //same as default
var fota = new nqFOTA(FW_FILE, READ_CHUNK, DL_TIMEOUT, DL_RETRY);
var fs_timeout = fota.setFailsafeTimer(300); //5minutes
print('fs_timeout:' + fs_timeout);
var dl_data_len = fota.fileDownload();
var updateReading = function(totalLen ,cbToRead)
{
var ab2Hex_00 = function(ab) {
ret_str = '';
uint8_a = new Uint8Array(ab);
for(i=0; i<uint8_a.length; i++) {
ret_str += ('00' + uint8_a[i].toString(16).toUpperCase()).substr(-2);
}
return ret_str;
}
while(1) {
var buff = cbToRead();
if(buff != null) {
print('updating...currently only print: ' + ab2Hex_00(buff));
} else {
break;
}
}
print('done');
return 1;
}
if(dl_data_len > 0) {
var result = updateReading(dl_data_len, function(){ return fota.binRead(); });
if(result != 1) {
fota.reportResult('update fail ', TARGET_VER);
} else { //success
fota.reportResult('update done ', TARGET_VER);
}
}
関連リソース
Updated: 2022-09-09