Kick Out the World

技術的なメモとかポエムを書きます。

memo: moddableでSDカードが使えるようになった

前々からModdableにSDカード機能が使えたらと思い続けていたが、突如としてDiscussionsに投稿されたスレッドが発端となる。

※本記事執筆時にはちゃんとソースコードとして登録されているが、上記ツイート時にはzip一式しか格納されてなかった。

確かに動きそうな実装ではあったので、実際に使ってみた。

現状READMEではリポジトリディレクトリをmoddableSDK本体側にコピーしているが、昨年にgitリポジトリのmanifestファイルを直接インクルードできるようになったので以下のように指定する

"include": [
        { 
            "git":"https://github.com/salarizadi/moddable-sdk.git", 
            "include":"Modules/SD/sd-module/manifest_spi.json"
        }
    ],

サンプルコードに沿ってM5stack core2では以下のようにSDの設定をしてみたところ、確かに動いた!!

// Setup SD card
trace("SD initialize : " + $SD.mount({
    miso: 38, // Default 19
    mosi: 23, // Default 23
    clk: 18, // Default 18
    cs: 4, // Default 5
    ff: true, // Format if mount failed
    transfer_sz: 4000,
    max_files: 5,
    aus: 16 * 1024 // Allocation unit size
}));

レポジトリから直接インクルードできるものの、deviceの設定の方に設定を書いていきたいので、moddableSDK本体にマージされないかな。 と思いつつ、これから追加で画像や音声リソースを入れてみて実用的なパフォーマンスで利用できるか確認してみようかと思います。

---追記( 2023/4/8 21:00)----

もう少しデバイスごとのピアアサインを手軽に使うために以下のようなマニフェストを用意すると便利そう(本当はdeviceの方に設定を書きた...

import SD from "sd"
import {File, Iterator, System} from "file";
import config from 'mc/config';

const $SD  = new SD();
const root = "/sdcard/";

let file;

// Setup SD card
trace("SD initialize : " + $SD.mount({
    ff: true,
    transfer_sz: 4000,
    max_files: 5,
    aus: 16 * 1024,
    ...config.sd
}));