#pragma once #include #include #include #include typedef enum { CAMEFileProtocol, NICEFileProtocol, ChamberlainFileProtocol, LinearFileProtocol, PrincetonFileProtocol, RAWFileProtocol, BETTFileProtocol, ClemsaFileProtocol, DoitrandFileProtocol, GateTXFileProtocol, MagellanFileProtocol, IntertechnoV3FileProtocol, UnknownFileProtocol, TotalFileProtocol, } SubBruteFileProtocol; typedef enum { SubBruteAttackCAME12bit303, SubBruteAttackCAME12bit307, SubBruteAttackCAME12bit433, SubBruteAttackCAME12bit868, SubBruteAttackNICE12bit433, SubBruteAttackNICE12bit868, SubBruteAttackChamberlain9bit300, SubBruteAttackChamberlain9bit315, SubBruteAttackChamberlain9bit390, SubBruteAttackChamberlain9bit433, SubBruteAttackChamberlain8bit300, SubBruteAttackChamberlain8bit315, SubBruteAttackChamberlain8bit390, SubBruteAttackChamberlain7bit300, SubBruteAttackChamberlain7bit315, SubBruteAttackChamberlain7bit390, SubBruteAttackLinear10bit300, SubBruteAttackLinear10bit310, SubBruteAttackLoadFile, SubBruteAttackTotalCount, } SubBruteAttacks; typedef struct { uint32_t frequency; uint8_t bits; uint8_t te; uint8_t repeat; FuriHalSubGhzPreset preset; SubBruteFileProtocol file; } SubBruteProtocol; const SubBruteProtocol* subbrute_protocol(SubBruteAttacks index); const char* subbrute_protocol_preset(FuriHalSubGhzPreset preset); const char* subbrute_protocol_file(SubBruteFileProtocol protocol); FuriHalSubGhzPreset subbrute_protocol_convert_preset(FuriString* preset_name); SubBruteFileProtocol subbrute_protocol_file_protocol_name(FuriString* name); uint8_t subbrute_protocol_repeats_count(SubBruteAttacks index); const char* subbrute_protocol_name(SubBruteAttacks index); void subbrute_protocol_default_payload( Stream* stream, uint64_t step, uint8_t bits, uint8_t te, uint8_t repeat); void subbrute_protocol_file_payload( Stream* stream, uint64_t step, uint8_t bits, uint8_t te, uint8_t repeat, uint8_t load_index, const char* file_key); void subbrute_protocol_default_generate_file( Stream* stream, uint32_t frequency, FuriHalSubGhzPreset preset, SubBruteFileProtocol file, uint64_t step, uint8_t bits, uint8_t te, uint8_t repeat); void subbrute_protocol_file_generate_file( Stream* stream, uint32_t frequency, FuriHalSubGhzPreset preset, SubBruteFileProtocol file, uint64_t step, uint8_t bits, uint8_t te, uint8_t repeat, uint8_t bit_index, uint64_t file_key, bool two_bytes); uint64_t subbrute_protocol_calc_max_value(SubBruteAttacks attack_type, uint8_t bits);