秘匿領域について

本チュートリアルでは、FlashAirの秘匿領域にスクリプトを配置し、CONFIGから動作させる方法を解説します。


スクリプトを秘匿領域に保存する

fa.control(“hid_set_pass”)でパスワードを設定した後、fa.control(“hid_store”)で秘匿領域に保存します。

-- パスワード
password="qwerty"

-- 入力ファイル
filename_org = {
	"test.lua"
}

-- 入力フォルダ
foldername = "p:"

---(中略)---

fa.control("hid_clear")
fa.control("hid_set_pass", password)

-- 秘匿領域へファイルを送る
for i,v in ipairs(filename_org) do
  send_name = foldername..v
  fa.control("hid_store", send_name, password)
end

秘匿領域のスクリプトを実行する

SD_WLAN/CONFIGに下記のように記述することで秘匿領域のスクリプトを実行することが可能です。

LUA_RUN_SCRIPT=H:filename
LUA_SD_EVNET=H:filename

サンプルコードの使い方

サンプルコードを使うことで秘匿領域にスクリプトを配置し、CONFIGをセットアップすることが可能です。パスワードと入力ファイル、入力フォルダを設定したsetting.lua、秘匿領域に設置したスクリプトを実行するサンプルとしてtest.luaをFlashAirのルートディレクトリに配置します。

SD_WLAN/CONFIGをコピーし、SD_WLAN/_CONFIGという名前のファイルを作成します。

SD_WLAN/CONFIGに下記を追記し、起動時にスクリプトを実行するように設定します。

LUA_RUN_SCRIPT=setting.lua

秘匿領域に保存されたtest.luaを実行するために、SD_WLAN/_CONFIGを下記のように設定します。

LUA_RUN_SCRIPT=H:test.lua

FlashAirを抜き差しすることでスクリプトが秘匿領域に保存されます。test.luasetting.luaSD_WLAN/_CONFIGが削除されていれば問題ありません。10秒程度経過した後、再度FlashAirを抜き差しすることで秘匿領域に保存されたスクリプトが実行されます。

ウェブブラウザからFlashAirに接続するとtest.luaが実行され、ルートフォルダにHello.txtが作成されていることが確認できます。

setting.luaでは、スクリプトを秘匿領域に保存した後、秘匿領域から読み出し、コンペアを行っています。コンペアに失敗した場合はそこでスクリプトが停止します。該当部分のソースコードを示します。

-- 秘匿領域のファイルを読み出してコンペアする
for i,v in ipairs(filename_org) do
	hid_name = hid_drv..v
	comp_name = foldername..add_name..v
	org_name = foldername..v
	-- 秘匿から読み出してコンペアする
	fa.control("hid_get", hid_name, comp_name, password)
	ret = compfile(org_name, comp_name)
	-- 内容が間違ってたらそこで止める
	-- 正しければ、書き込みファイルとコンペアファイルを消す
	if ret ~= true then
		print(v.." is hidden write fail...")
		break
	else
		print(v.." is OK")
		-- コンペアファイル削除
		fa.remove(comp_name)
		-- 元ファイル削除
		fa.remove(org_name)
	end
end

-- CONFIGファイルを削除
fa.remove("p:SD_WLAN/CONFIG")

-- CONFIGファイルをリネームする
fa.rename("p:SD_WLAN/_CONFIG", "p:SD_WLAN/CONFIG")

サンプルコード

advanced_tutorial_09.zip (4KB)

このサイトのサンプルコードは二条項BSDライセンスで提供されています。