Repository navigation
Plugin Management
無線方式ごとの機能は、SRdeckPlugin.*.dllとしてホストに追加します。プラグインには、復調処理に加えて設定画面、右ペイン、履歴、エクスポート、音声、周波数オーバーレイを実装できます。
with-pluginsパッケージには、リリース時点の公開対象プラグインが含まれます。次の2か所を確認してください。
- 公式プラグイン一覧: 用途と概要
- ZIP内の
PACKAGE-MANIFEST.json: そのリリースに実際に含まれるDLLとバージョン
ソースツリーに存在するすべてのプラグインがバイナリ配布されるとは限りません。Meshtasticとワンセグはソース公開対象ですが、公式実行ZIPには含まれません。
ホストは起動時にAppContext.BaseDirectory、通常はSRdeck.exeと同じフォルダーだけを非再帰で検索します。対象名は次です。
SRdeckPlugin.*.dll
正しい例:
SRdeck\
├── SRdeck.exe
├── SRdeckPlugin.Contracts.dll
├── SRdeckPlugin.Sdk.dll
├── SRdeckPlugin.Wpf.dll
├── SRdeckPlugin.Analog.dll
├── SRdeckPlugin.Ais.dll
└── SRdeckPlugin.MyDecoder.dll
pluginsサブフォルダーはDLL検索先ではありません。次のフォルダーは設定、履歴、キャプチャなどのデータ用です。
%LOCALAPPDATA%\SRdeck\plugins\<plugin-id>
「DLLの配置場所」と「プラグインデータの保存場所」を混同しないでください。
- SRdeckを停止して終了します。
- プラグインの対応ホスト版、Host API範囲、Windows x64対応を確認します。
- 配布物をウイルス対策で検査し、ライセンスと配布元を確認します。
-
SRdeckPlugin.<Name>.dllと、そのプラグインだけが必要とする依存DLLをSRdeck.exeと同じフォルダーへ置きます。 - SRdeckを起動します。
-
MODE一覧に表示名が追加されたことを確認します。 - 低いRATEで受信開始・停止・MODE切り替えを試します。
ホットリロードはありません。DLLをコピーしただけでは、起動中のホストには読み込まれません。
プラグイン更新はホストとバージョンを合わせて行います。
- SRdeckを終了します。
- アプリケーションフォルダーをバックアップするか、新しい空フォルダーを用意します。
- 新しいホスト一式を展開します。
- 対応を確認したプラグイン一式を追加します。
- 同名DLLの旧版が残っていないことを確認します。
- 起動、検出、受信、停止、エクスポートを確認します。
SRdeckPlugin.Contracts、SRdeckPlugin.Sdk、SRdeckPlugin.Wpf、SRdeckCore.SignalProcessingはホストと共有されます。プラグインごとに異なる版を同じフォルダーへ置くと、型の不一致やロード失敗が起きます。
- SRdeckを終了します。
- 対象の
SRdeckPlugin.<Name>.dllと、そのプラグイン専用と確認できる依存DLLをアプリケーションフォルダーから退避します。 - SRdeckを起動し、
MODEから消えたことを確認します。
%LOCALAPPDATA%\SRdeck\plugins\<plugin-id>は自動削除されません。再導入時に設定と履歴を使うなら残し、完全削除する場合は内容を確認してから別途退避/削除します。共有DLLを他のプラグイン専用と誤認して削除しないでください。
メイン画面ではMODEでプラグインを1つ選び、右ペインに表示します。ホストAPIには複数プラグインを同時に有効化する機能もありますが、通常のMODE操作では使いません。
プラグインを切り替えると、前のプラグインはストリーム停止/非アクティブ化され、新しいプラグインが必要な周波数とチャネルを要求します。切り替え後は中心周波数、オーバーレイ、状態欄を確認してください。
| 項目 | 確認内容 |
|---|---|
| ファイル名 |
SRdeckPlugin.*.dllに一致 |
| プラットフォーム | Windows x64、現行.NETターゲット |
| Host API | Descriptorの最小/最大範囲に現行ホストを含む |
| プラットフォームDLL | ホストと同じリリース版 |
| ネイティブ依存 | x64 DLLとそのランタイムが揃っている |
| ID | 他プラグインと重複しない安定ID |
| エントリ | public、非abstract、非generic、引数なしpublicコンストラクター |
| 能力 | Descriptorのフラグと実装インターフェースが一致 |
プラグインはSRdeckと同じプロセス、同じユーザー権限で動きます。サンドボックスで隔離されず、ホストによる署名検証もありません。導入したプラグインは、利用者がアクセスできるファイル、デバイス、ネットワークへアクセスできます。
- 信頼できる配布元だけを使う
- README、ライセンス、第三者通知、既知の制限を読む
- 可能ならハッシュや署名を配布元の情報と照合する
- 出所不明の依存DLLを既存フォルダーへ上書きしない
- 問題の切り分けでは、クリーンな
host-onlyフォルダーへ対象プラグインだけを追加する
- DLL名と配置階層を確認します。
- ホストを完全に再起動します。
- 32-bit/64-bitの混在を確認します。
- ホストとプラットフォームDLLのリリース版を揃えます。
- ネイティブを含む依存DLL不足を確認します。
- クリーンなアプリケーションフォルダーで1プラグインだけ試します。
- 開発者はDescriptor、能力フラグ、エントリクラス条件を確認します。
開発者向けの詳細は開発概要とプラグインAPI仕様を参照してください。