Files
ProtoPirate/protocols/plugins/protopirate_fm_f4_plugin.c
Leeroy 6afd984180 Remote Analyzer and Welcome Plugins, Refactors
REFACTORS and OPTIMIZATIONS, PLUGIN and HOST API changes
* Re-ordered strucct variables for less padding and smaller compiled code.

HOST API: All plugins now use the same host api, and the host api has been extended to support.
* Changed Tool Scene Host to Shared Plugin Host (and renamed sources)
* Got rid of ProtoPirateToolScenePluginKind, and fixed the header hell that came with it!
* ToolScenes are now SharedPlugins, we can refactor HOST API etc now.
* Header Cleanup in Main App header file
* Moved host api header file into helpers

REFACTORS: Removed all API Host #defines from all plugins.
* The code was ugly, I never liked it but followed convention
* The AI found bug in unload caused by them was enough reason to kill them
* Move Sub Decode and Timing Tuner plugin code logic from scenes source to plugins/XXX_plugin.c
* Standarizes the 2 Tool Scenes with the other plugins.
* Remove shared plugin pointers for each type, replaced with ONE void *
* Remove all the Entry Point Checks in Plugins.
* Remove plugin path from all plugins, use it once.

PLUGIN CHANGES: Use Same SharedPlugin Struct for all Plugins that dont need to expose functions.
* API of ALL Plugins is now the Size of the Host API, or PluginStruct if no API.
* This only leaves Config and Bruteforce having own structs, as they have own API.
* Remove emulate_plugin pointer from main app, we dont need it.
* Remove plugin_ensure_loaded for Sub Decode and Timing Tuner, make it consistent and save 0.5Kb on FAP size.
* PSA BF is now BRUTEFORCE, we have Renault as well now.
* Made plugin names shorter, and removed plugin_names from the descriptor as we dont use them. (Save FAP Size)

* SUB DECODE: Pack Context Struct for RAM, replace FuriStrings with char *
* IF we can't determine BF, Pop an (Error) widget button.
* Added INLINING in Plugin Host API (Compiler seems to already inline!)
* Added Error button if can't load BF plugin. (Added to Saved Info too)
* BRUTEFORCE speed improvement. (Don't update UI as often)

Added REMOTE ANALYZER to ProtoPirate.
* Is in its own plugin
* Has ENABLE_REMOTE_ANALYZER
* Looks at Modulation Type, automatically selects AM and FM for you.
* Has new UI, with instructions and history shows preset.
* Put Menu under Saved Remotes

Added WELCOME SCREEN to ProtoPirate
2026-10-04 22:22:12 +11:00

39 lines
1.3 KiB
C

#include "../protopirate_protocol_plugins.h"
#include "../protocols_common.h"
#include "../ford_v1.h"
#include "../ford_v2.h"
#include "../ford_v3.h"
#include "../honda_v2.h"
#include <lib/flipper_application/flipper_application.h>
static const SubGhzProtocol* const protopirate_protocol_registry_fm_f4_items[] = {
&ford_protocol_v1,
&ford_protocol_v2,
&ford_protocol_v3,
&honda_v2_protocol,
};
static const SubGhzProtocolRegistry protopirate_protocol_registry_fm_f4 = {
.items = protopirate_protocol_registry_fm_f4_items,
.size = sizeof(protopirate_protocol_registry_fm_f4_items) /
sizeof(protopirate_protocol_registry_fm_f4_items[0]),
};
static const ProtoPirateProtocolPlugin protopirate_fm_f4_plugin = {
.plugin_name = "",
.kind = ProtoPirateProtocolPluginKindRx,
.route = ProtoPirateProtocolRegistryRouteFMF4,
.registry = &protopirate_protocol_registry_fm_f4,
.release = NULL,
};
static const FlipperAppPluginDescriptor protopirate_fm_f4_plugin_descriptor = {
.appid = PROTOPIRATE_PROTOCOL_PLUGIN_APP_ID,
.ep_api_version = PROTOPIRATE_PROTOCOL_PLUGIN_API_VERSION,
.entry_point = &protopirate_fm_f4_plugin,
};
const FlipperAppPluginDescriptor* protopirate_fm_f4_plugin_ep(void) {
return &protopirate_fm_f4_plugin_descriptor;
}