SubGhz: refactoring add descriptions (#1012)
* SubGhz: add descriptions * SubGhz: fix syntax Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
parent
28888b0a22
commit
94ba7d104c
@ -177,7 +177,7 @@ SubGhz* subghz_alloc() {
|
|||||||
subghz->txrx->environment, "/ext/subghz/assets/came_atomo");
|
subghz->txrx->environment, "/ext/subghz/assets/came_atomo");
|
||||||
subghz_environment_set_nice_flor_s_rainbow_table_file_name(
|
subghz_environment_set_nice_flor_s_rainbow_table_file_name(
|
||||||
subghz->txrx->environment, "/ext/subghz/assets/nice_flor_s");
|
subghz->txrx->environment, "/ext/subghz/assets/nice_flor_s");
|
||||||
subghz->txrx->receiver = subghz_receiver_alloc(subghz->txrx->environment);
|
subghz->txrx->receiver = subghz_receiver_alloc_init(subghz->txrx->environment);
|
||||||
subghz_receiver_set_filter(subghz->txrx->receiver, SubGhzProtocolFlag_Decodable);
|
subghz_receiver_set_filter(subghz->txrx->receiver, SubGhzProtocolFlag_Decodable);
|
||||||
|
|
||||||
subghz_worker_set_overrun_callback(
|
subghz_worker_set_overrun_callback(
|
||||||
|
@ -246,7 +246,7 @@ void subghz_cli_command_rx(Cli* cli, string_t args, void* context) {
|
|||||||
subghz_environment_set_nice_flor_s_rainbow_table_file_name(
|
subghz_environment_set_nice_flor_s_rainbow_table_file_name(
|
||||||
environment, "/ext/subghz/assets/nice_flor_s");
|
environment, "/ext/subghz/assets/nice_flor_s");
|
||||||
|
|
||||||
SubGhzReceiver* receiver = subghz_receiver_alloc(environment);
|
SubGhzReceiver* receiver = subghz_receiver_alloc_init(environment);
|
||||||
subghz_receiver_set_filter(receiver, SubGhzProtocolFlag_Decodable);
|
subghz_receiver_set_filter(receiver, SubGhzProtocolFlag_Decodable);
|
||||||
subghz_receiver_set_rx_callback(receiver, subghz_cli_command_rx_callback, instance);
|
subghz_receiver_set_rx_callback(receiver, subghz_cli_command_rx_callback, instance);
|
||||||
|
|
||||||
|
@ -13,5 +13,16 @@ struct SubGhzBlockDecoder {
|
|||||||
uint8_t decode_count_bit;
|
uint8_t decode_count_bit;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add data bit when decoding.
|
||||||
|
* @param decoder Pointer to a SubGhzBlockDecoder instance
|
||||||
|
* @param bit data, 1bit
|
||||||
|
*/
|
||||||
void subghz_protocol_blocks_add_bit(SubGhzBlockDecoder* decoder, uint8_t bit);
|
void subghz_protocol_blocks_add_bit(SubGhzBlockDecoder* decoder, uint8_t bit);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the hash sum of the last randomly received parcel.
|
||||||
|
* @param decoder Pointer to a SubGhzBlockDecoder instance
|
||||||
|
* @return hash Hash sum
|
||||||
|
*/
|
||||||
uint8_t subghz_protocol_blocks_get_hash_data(SubGhzBlockDecoder* decoder, size_t len);
|
uint8_t subghz_protocol_blocks_get_hash_data(SubGhzBlockDecoder* decoder, size_t len);
|
||||||
|
@ -19,12 +19,32 @@ struct SubGhzBlockGeneric {
|
|||||||
uint16_t cnt;
|
uint16_t cnt;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get modulation name.
|
||||||
|
* @param preset modulation,FuriHalSubGhzPreset
|
||||||
|
* @param preset_str Output modulation name
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_block_generic_get_preset_name(FuriHalSubGhzPreset preset, string_t preset_str);
|
bool subghz_block_generic_get_preset_name(FuriHalSubGhzPreset preset, string_t preset_str);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serialize data SubGhzBlockGeneric.
|
||||||
|
* @param instance Pointer to a SubGhzBlockGeneric instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @param frequency The frequency at which the signal was received, Hz
|
||||||
|
* @param preset The modulation on which the signal was received, FuriHalSubGhzPreset
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_block_generic_serialize(
|
bool subghz_block_generic_serialize(
|
||||||
SubGhzBlockGeneric* instance,
|
SubGhzBlockGeneric* instance,
|
||||||
FlipperFormat* flipper_format,
|
FlipperFormat* flipper_format,
|
||||||
uint32_t frequency,
|
uint32_t frequency,
|
||||||
FuriHalSubGhzPreset preset);
|
FuriHalSubGhzPreset preset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize data SubGhzBlockGeneric.
|
||||||
|
* @param instance Pointer to a SubGhzBlockGeneric instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_block_generic_deserialize(SubGhzBlockGeneric* instance, FlipperFormat* flipper_format);
|
bool subghz_block_generic_deserialize(SubGhzBlockGeneric* instance, FlipperFormat* flipper_format);
|
||||||
|
@ -10,4 +10,10 @@
|
|||||||
#define bit_write(value, bit, bitvalue) (bitvalue ? bit_set(value, bit) : bit_clear(value, bit))
|
#define bit_write(value, bit, bitvalue) (bitvalue ? bit_set(value, bit) : bit_clear(value, bit))
|
||||||
#define DURATION_DIFF(x, y) ((x < y) ? (y - x) : (x - y))
|
#define DURATION_DIFF(x, y) ((x < y) ? (y - x) : (x - y))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Flip the data bitwise.
|
||||||
|
* @param key In data
|
||||||
|
* @param count_bit number of data bits
|
||||||
|
* @return Reverse data
|
||||||
|
*/
|
||||||
uint64_t subghz_protocol_blocks_reverse_key(uint64_t key, uint8_t count_bit);
|
uint64_t subghz_protocol_blocks_reverse_key(uint64_t key, uint8_t count_bit);
|
||||||
|
@ -6,23 +6,61 @@
|
|||||||
|
|
||||||
typedef struct SubGhzEnvironment SubGhzEnvironment;
|
typedef struct SubGhzEnvironment SubGhzEnvironment;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzEnvironment.
|
||||||
|
* @return SubGhzEnvironment* pointer to a SubGhzEnvironment instance
|
||||||
|
*/
|
||||||
SubGhzEnvironment* subghz_environment_alloc();
|
SubGhzEnvironment* subghz_environment_alloc();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzEnvironment.
|
||||||
|
* @param instance Pointer to a SubGhzEnvironment instance
|
||||||
|
*/
|
||||||
void subghz_environment_free(SubGhzEnvironment* instance);
|
void subghz_environment_free(SubGhzEnvironment* instance);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Downloading the manufacture key file.
|
||||||
|
* @param instance Pointer to a SubGhzEnvironment instance
|
||||||
|
* @param filename Full path to the file
|
||||||
|
* @return true On succes
|
||||||
|
*/
|
||||||
bool subghz_environment_load_keystore(SubGhzEnvironment* instance, const char* filename);
|
bool subghz_environment_load_keystore(SubGhzEnvironment* instance, const char* filename);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get pointer to a SubGhzKeystore* instance.
|
||||||
|
* @return SubGhzEnvironment* pointer to a SubGhzEnvironment instance
|
||||||
|
*/
|
||||||
SubGhzKeystore* subghz_environment_get_keystore(SubGhzEnvironment* instance);
|
SubGhzKeystore* subghz_environment_get_keystore(SubGhzEnvironment* instance);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set filename to work with Came Atomo.
|
||||||
|
* @param instance Pointer to a SubGhzEnvironment instance
|
||||||
|
* @param filename Full path to the file
|
||||||
|
*/
|
||||||
void subghz_environment_set_came_atomo_rainbow_table_file_name(
|
void subghz_environment_set_came_atomo_rainbow_table_file_name(
|
||||||
SubGhzEnvironment* instance,
|
SubGhzEnvironment* instance,
|
||||||
const char* filename);
|
const char* filename);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get filename to work with Came Atomo.
|
||||||
|
* @param instance Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return Full path to the file
|
||||||
|
*/
|
||||||
const char* subghz_environment_get_came_atomo_rainbow_table_file_name(SubGhzEnvironment* instance);
|
const char* subghz_environment_get_came_atomo_rainbow_table_file_name(SubGhzEnvironment* instance);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set filename to work with Nice Flor-S.
|
||||||
|
* @param instance Pointer to a SubGhzEnvironment instance
|
||||||
|
* @param filename Full path to the file
|
||||||
|
*/
|
||||||
void subghz_environment_set_nice_flor_s_rainbow_table_file_name(
|
void subghz_environment_set_nice_flor_s_rainbow_table_file_name(
|
||||||
SubGhzEnvironment* instance,
|
SubGhzEnvironment* instance,
|
||||||
const char* filename);
|
const char* filename);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get filename to work with Nice Flor-S.
|
||||||
|
* @param instance Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return Full path to the file
|
||||||
|
*/
|
||||||
const char*
|
const char*
|
||||||
subghz_environment_get_nice_flor_s_rainbow_table_file_name(SubGhzEnvironment* instance);
|
subghz_environment_get_nice_flor_s_rainbow_table_file_name(SubGhzEnvironment* instance);
|
||||||
|
@ -19,25 +19,55 @@ struct SubGhzProtocolDecoderBase {
|
|||||||
void* context;
|
void* context;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set a callback upon completion of successful decoding of one of the protocols.
|
||||||
|
* @param decoder_base Pointer to a SubGhzProtocolDecoderBase instance
|
||||||
|
* @param callback Callback, SubGhzProtocolDecoderBaseRxCallback
|
||||||
|
* @param context Context
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_base_set_decoder_callback(
|
void subghz_protocol_decoder_base_set_decoder_callback(
|
||||||
SubGhzProtocolDecoderBase* decoder_base,
|
SubGhzProtocolDecoderBase* decoder_base,
|
||||||
SubGhzProtocolDecoderBaseRxCallback callback,
|
SubGhzProtocolDecoderBaseRxCallback callback,
|
||||||
void* context);
|
void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting a textual representation of the received data.
|
||||||
|
* @param decoder_base Pointer to a SubGhzProtocolDecoderBase instance
|
||||||
|
* @param output Resulting text
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_base_get_string(
|
bool subghz_protocol_decoder_base_get_string(
|
||||||
SubGhzProtocolDecoderBase* decoder_base,
|
SubGhzProtocolDecoderBase* decoder_base,
|
||||||
string_t output);
|
string_t output);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serialize data SubGhzProtocolDecoderBase.
|
||||||
|
* @param decoder_base Pointer to a SubGhzProtocolDecoderBase instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @param frequency The frequency at which the signal was received, Hz
|
||||||
|
* @param preset The modulation on which the signal was received, FuriHalSubGhzPreset
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_base_serialize(
|
bool subghz_protocol_decoder_base_serialize(
|
||||||
SubGhzProtocolDecoderBase* decoder_base,
|
SubGhzProtocolDecoderBase* decoder_base,
|
||||||
FlipperFormat* flipper_format,
|
FlipperFormat* flipper_format,
|
||||||
uint32_t frequency,
|
uint32_t frequency,
|
||||||
FuriHalSubGhzPreset preset);
|
FuriHalSubGhzPreset preset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize data SubGhzProtocolDecoderBase.
|
||||||
|
* @param decoder_base Pointer to a SubGhzProtocolDecoderBase instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_base_deserialize(
|
bool subghz_protocol_decoder_base_deserialize(
|
||||||
SubGhzProtocolDecoderBase* decoder_base,
|
SubGhzProtocolDecoderBase* decoder_base,
|
||||||
FlipperFormat* flipper_format);
|
FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the hash sum of the last randomly received parcel.
|
||||||
|
* @param decoder_base Pointer to a SubGhzProtocolDecoderBase instance
|
||||||
|
* @return hash Hash sum
|
||||||
|
*/
|
||||||
uint8_t subghz_protocol_decoder_base_get_hash_data(SubGhzProtocolDecoderBase* decoder_base);
|
uint8_t subghz_protocol_decoder_base_get_hash_data(SubGhzProtocolDecoderBase* decoder_base);
|
||||||
|
|
||||||
// Encoder Base
|
// Encoder Base
|
||||||
|
@ -95,6 +95,11 @@ void subghz_protocol_encoder_came_free(void* context) {
|
|||||||
free(instance);
|
free(instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generating an upload from data.
|
||||||
|
* @param instance Pointer to a SubGhzProtocolEncoderCame instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
static bool subghz_protocol_encoder_came_get_upload(SubGhzProtocolEncoderCame* instance) {
|
static bool subghz_protocol_encoder_came_get_upload(SubGhzProtocolEncoderCame* instance) {
|
||||||
furi_assert(instance);
|
furi_assert(instance);
|
||||||
size_t index = 0;
|
size_t index = 0;
|
||||||
|
@ -11,46 +11,81 @@ extern const SubGhzProtocolDecoder subghz_protocol_came_decoder;
|
|||||||
extern const SubGhzProtocolEncoder subghz_protocol_came_encoder;
|
extern const SubGhzProtocolEncoder subghz_protocol_came_encoder;
|
||||||
extern const SubGhzProtocol subghz_protocol_came;
|
extern const SubGhzProtocol subghz_protocol_came;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolEncoderCame.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolEncoderCame* pointer to a SubGhzProtocolEncoderCame instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_encoder_came_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_encoder_came_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolEncoderCame.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderCame instance
|
||||||
|
*/
|
||||||
void subghz_protocol_encoder_came_free(void* context);
|
void subghz_protocol_encoder_came_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize and generating an upload to send.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderCame instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_encoder_came_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_encoder_came_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forced transmission stop.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderCame instance
|
||||||
|
*/
|
||||||
void subghz_protocol_encoder_came_stop(void* context);
|
void subghz_protocol_encoder_came_stop(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the level and duration of the upload to be loaded into DMA.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderCame instance
|
||||||
|
* @return LevelDuration
|
||||||
|
*/
|
||||||
LevelDuration subghz_protocol_encoder_came_yield(void* context);
|
LevelDuration subghz_protocol_encoder_came_yield(void* context);
|
||||||
|
|
||||||
/** Allocate SubGhzProtocolCame
|
/**
|
||||||
*
|
* Allocate SubGhzProtocolDecoderCame.
|
||||||
* @return SubGhzProtocolCame*
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolDecoderCame* pointer to a SubGhzProtocolDecoderCame instance
|
||||||
*/
|
*/
|
||||||
void* subghz_protocol_decoder_came_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_decoder_came_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
/** Free SubGhzProtocolCame
|
/**
|
||||||
*
|
* Free SubGhzProtocolDecoderCame.
|
||||||
* @param instance
|
* @param context Pointer to a SubGhzProtocolDecoderCame instance
|
||||||
*/
|
*/
|
||||||
void subghz_protocol_decoder_came_free(void* context);
|
void subghz_protocol_decoder_came_free(void* context);
|
||||||
|
|
||||||
/** Reset internal state
|
/**
|
||||||
* @param instance - SubGhzProtocolCame instance
|
* Reset decoder SubGhzProtocolDecoderCame.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderCame instance
|
||||||
*/
|
*/
|
||||||
void subghz_protocol_decoder_came_reset(void* context);
|
void subghz_protocol_decoder_came_reset(void* context);
|
||||||
|
|
||||||
/** Parse accepted duration
|
/**
|
||||||
*
|
* Parse a raw sequence of levels and durations received from the air.
|
||||||
* @param instance - SubGhzProtocolCame instance
|
* @param context Pointer to a SubGhzProtocolDecoderCame instance
|
||||||
* @param data - LevelDuration level_duration
|
* @param level Signal level true-high false-low
|
||||||
|
* @param duration Duration of this level in, us
|
||||||
*/
|
*/
|
||||||
void subghz_protocol_decoder_came_feed(void* context, bool level, uint32_t duration);
|
void subghz_protocol_decoder_came_feed(void* context, bool level, uint32_t duration);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the hash sum of the last randomly received parcel.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderCame instance
|
||||||
|
* @return hash Hash sum
|
||||||
|
*/
|
||||||
uint8_t subghz_protocol_decoder_came_get_hash_data(void* context);
|
uint8_t subghz_protocol_decoder_came_get_hash_data(void* context);
|
||||||
|
|
||||||
/** Outputting information from the parser
|
/**
|
||||||
*
|
* Serialize data SubGhzProtocolDecoderCame.
|
||||||
* @param instance - SubGhzProtocolCame* instance
|
* @param context Pointer to a SubGhzProtocolDecoderCame instance
|
||||||
* @param output - output string
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @param frequency The frequency at which the signal was received, Hz
|
||||||
|
* @param preset The modulation on which the signal was received, FuriHalSubGhzPreset
|
||||||
|
* @return true On success
|
||||||
*/
|
*/
|
||||||
bool subghz_protocol_decoder_came_serialize(
|
bool subghz_protocol_decoder_came_serialize(
|
||||||
void* context,
|
void* context,
|
||||||
@ -58,6 +93,17 @@ bool subghz_protocol_decoder_came_serialize(
|
|||||||
uint32_t frequency,
|
uint32_t frequency,
|
||||||
FuriHalSubGhzPreset preset);
|
FuriHalSubGhzPreset preset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize data SubGhzProtocolDecoderCame.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderCame instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_came_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_decoder_came_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting a textual representation of the received data.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderCame instance
|
||||||
|
* @param output Resulting text
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_came_get_string(void* context, string_t output);
|
void subghz_protocol_decoder_came_get_string(void* context, string_t output);
|
||||||
|
@ -186,10 +186,10 @@ void subghz_protocol_decoder_came_atomo_feed(void* context, bool level, uint32_t
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Read bytes from rainbow table
|
/**
|
||||||
*
|
* Read bytes from rainbow table
|
||||||
* @param file_name - file name rainbow table
|
* @param file_name Full path to rainbow table the file
|
||||||
* @param number_atomo_magic_xor
|
* @param number_atomo_magic_xor Сell number in the array
|
||||||
* @return atomo_magic_xor
|
* @return atomo_magic_xor
|
||||||
*/
|
*/
|
||||||
static uint64_t subghz_protocol_came_atomo_get_magic_xor_in_file(
|
static uint64_t subghz_protocol_came_atomo_get_magic_xor_in_file(
|
||||||
@ -211,9 +211,10 @@ static uint64_t subghz_protocol_came_atomo_get_magic_xor_in_file(
|
|||||||
return atomo_magic_xor;
|
return atomo_magic_xor;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Analysis of received data
|
/**
|
||||||
*
|
* Analysis of received data
|
||||||
* @param instance SubGhzBlockGeneric instance
|
* @param instance Pointer to a SubGhzBlockGeneric* instance
|
||||||
|
* @param file_name Full path to rainbow table the file
|
||||||
*/
|
*/
|
||||||
static void subghz_protocol_came_atomo_remote_controller(
|
static void subghz_protocol_came_atomo_remote_controller(
|
||||||
SubGhzBlockGeneric* instance,
|
SubGhzBlockGeneric* instance,
|
||||||
|
@ -10,15 +10,65 @@ extern const SubGhzProtocolDecoder subghz_protocol_came_atomo_decoder;
|
|||||||
extern const SubGhzProtocolEncoder subghz_protocol_came_atomo_encoder;
|
extern const SubGhzProtocolEncoder subghz_protocol_came_atomo_encoder;
|
||||||
extern const SubGhzProtocol subghz_protocol_came_atomo;
|
extern const SubGhzProtocol subghz_protocol_came_atomo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolDecoderCameAtomo.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolDecoderCameAtomo* pointer to a SubGhzProtocolDecoderCameAtomo instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_decoder_came_atomo_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_decoder_came_atomo_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolDecoderCameAtomo.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderCameAtomo instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_came_atomo_free(void* context);
|
void subghz_protocol_decoder_came_atomo_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset decoder SubGhzProtocolDecoderCameAtomo.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderCameAtomo instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_came_atomo_reset(void* context);
|
void subghz_protocol_decoder_came_atomo_reset(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a raw sequence of levels and durations received from the air.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderCameAtomo instance
|
||||||
|
* @param level Signal level true-high false-low
|
||||||
|
* @param duration Duration of this level in, us
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_came_atomo_feed(void* context, bool level, uint32_t duration);
|
void subghz_protocol_decoder_came_atomo_feed(void* context, bool level, uint32_t duration);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the hash sum of the last randomly received parcel.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderCameAtomo instance
|
||||||
|
* @return hash Hash sum
|
||||||
|
*/
|
||||||
uint8_t subghz_protocol_decoder_came_atomo_get_hash_data(void* context);
|
uint8_t subghz_protocol_decoder_came_atomo_get_hash_data(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serialize data SubGhzProtocolDecoderCameAtomo.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderCameAtomo instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @param frequency The frequency at which the signal was received, Hz
|
||||||
|
* @param preset The modulation on which the signal was received, FuriHalSubGhzPreset
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_came_atomo_serialize(
|
bool subghz_protocol_decoder_came_atomo_serialize(
|
||||||
void* context,
|
void* context,
|
||||||
FlipperFormat* flipper_format,
|
FlipperFormat* flipper_format,
|
||||||
uint32_t frequency,
|
uint32_t frequency,
|
||||||
FuriHalSubGhzPreset preset);
|
FuriHalSubGhzPreset preset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize data SubGhzProtocolDecoderCameAtomo.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderCameAtomo instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_came_atomo_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_decoder_came_atomo_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting a textual representation of the received data.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderCameAtomo instance
|
||||||
|
* @param output Resulting text
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_came_atomo_get_string(void* context, string_t output);
|
void subghz_protocol_decoder_came_atomo_get_string(void* context, string_t output);
|
||||||
|
@ -22,6 +22,9 @@
|
|||||||
(dip & 0x0008 ? '1' : '0'), (dip & 0x0004 ? '1' : '0'), (dip & 0x0002 ? '1' : '0'), \
|
(dip & 0x0008 ? '1' : '0'), (dip & 0x0004 ? '1' : '0'), (dip & 0x0002 ? '1' : '0'), \
|
||||||
(dip & 0x0001 ? '1' : '0')
|
(dip & 0x0001 ? '1' : '0')
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rainbow table Came Twee.
|
||||||
|
*/
|
||||||
static const uint32_t came_twee_magic_numbers_xor[15] = {
|
static const uint32_t came_twee_magic_numbers_xor[15] = {
|
||||||
0x0E0E0E00,
|
0x0E0E0E00,
|
||||||
0x1D1D1D11,
|
0x1D1D1D11,
|
||||||
@ -148,6 +151,10 @@ static LevelDuration
|
|||||||
return level_duration_make(data.level, data.duration);
|
return level_duration_make(data.level, data.duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generating an upload from data.
|
||||||
|
* @param instance Pointer to a SubGhzProtocolEncoderCameTwee instance
|
||||||
|
*/
|
||||||
static void subghz_protocol_encoder_came_twee_get_upload(SubGhzProtocolEncoderCameTwee* instance) {
|
static void subghz_protocol_encoder_came_twee_get_upload(SubGhzProtocolEncoderCameTwee* instance) {
|
||||||
furi_assert(instance);
|
furi_assert(instance);
|
||||||
size_t index = 0;
|
size_t index = 0;
|
||||||
@ -182,9 +189,9 @@ static void subghz_protocol_encoder_came_twee_get_upload(SubGhzProtocolEncoderCa
|
|||||||
instance->encoder.size_upload = index;
|
instance->encoder.size_upload = index;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Analysis of received data
|
/**
|
||||||
*
|
* Analysis of received data
|
||||||
* @param instance SubGhzProtocolCameTwee instance
|
* @param instance Pointer to a SubGhzBlockGeneric* instance
|
||||||
*/
|
*/
|
||||||
static void subghz_protocol_came_twee_remote_controller(SubGhzBlockGeneric* instance) {
|
static void subghz_protocol_came_twee_remote_controller(SubGhzBlockGeneric* instance) {
|
||||||
/* Came Twee 54 bit, rolling code 15 parcels with
|
/* Came Twee 54 bit, rolling code 15 parcels with
|
||||||
|
@ -11,20 +11,99 @@ extern const SubGhzProtocolDecoder subghz_protocol_came_twee_decoder;
|
|||||||
extern const SubGhzProtocolEncoder subghz_protocol_came_twee_encoder;
|
extern const SubGhzProtocolEncoder subghz_protocol_came_twee_encoder;
|
||||||
extern const SubGhzProtocol subghz_protocol_came_twee;
|
extern const SubGhzProtocol subghz_protocol_came_twee;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolEncoderCameTwee.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolEncoderCameTwee* pointer to a SubGhzProtocolEncoderCameTwee instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_encoder_came_twee_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_encoder_came_twee_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolEncoderCameTwee.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderCameTwee instance
|
||||||
|
*/
|
||||||
void subghz_protocol_encoder_came_twee_free(void* context);
|
void subghz_protocol_encoder_came_twee_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize and generating an upload to send.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderCameTwee instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_encoder_came_twee_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_encoder_came_twee_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forced transmission stop.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderCameTwee instance
|
||||||
|
*/
|
||||||
void subghz_protocol_encoder_came_twee_stop(void* context);
|
void subghz_protocol_encoder_came_twee_stop(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the level and duration of the upload to be loaded into DMA.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderCameTwee instance
|
||||||
|
* @return LevelDuration
|
||||||
|
*/
|
||||||
LevelDuration subghz_protocol_encoder_came_twee_yield(void* context);
|
LevelDuration subghz_protocol_encoder_came_twee_yield(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolDecoderCameTwee.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolDecoderCameTwee* pointer to a SubGhzProtocolDecoderCameTwee instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_decoder_came_twee_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_decoder_came_twee_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolDecoderCameTwee.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderCameTwee instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_came_twee_free(void* context);
|
void subghz_protocol_decoder_came_twee_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset decoder SubGhzProtocolDecoderCameTwee.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderCameTwee instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_came_twee_reset(void* context);
|
void subghz_protocol_decoder_came_twee_reset(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a raw sequence of levels and durations received from the air.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderCameTwee instance
|
||||||
|
* @param level Signal level true-high false-low
|
||||||
|
* @param duration Duration of this level in, us
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_came_twee_feed(void* context, bool level, uint32_t duration);
|
void subghz_protocol_decoder_came_twee_feed(void* context, bool level, uint32_t duration);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the hash sum of the last randomly received parcel.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderCameTwee instance
|
||||||
|
* @return hash Hash sum
|
||||||
|
*/
|
||||||
uint8_t subghz_protocol_decoder_came_twee_get_hash_data(void* context);
|
uint8_t subghz_protocol_decoder_came_twee_get_hash_data(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serialize data SubGhzProtocolDecoderCameTwee.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderCameTwee instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @param frequency The frequency at which the signal was received, Hz
|
||||||
|
* @param preset The modulation on which the signal was received, FuriHalSubGhzPreset
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_came_twee_serialize(
|
bool subghz_protocol_decoder_came_twee_serialize(
|
||||||
void* context,
|
void* context,
|
||||||
FlipperFormat* flipper_format,
|
FlipperFormat* flipper_format,
|
||||||
uint32_t frequency,
|
uint32_t frequency,
|
||||||
FuriHalSubGhzPreset preset);
|
FuriHalSubGhzPreset preset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize data SubGhzProtocolDecoderCameTwee.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderCameTwee instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_came_twee_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_decoder_came_twee_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting a textual representation of the received data.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderCameTwee instance
|
||||||
|
* @param output Resulting text
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_came_twee_get_string(void* context, string_t output);
|
void subghz_protocol_decoder_came_twee_get_string(void* context, string_t output);
|
||||||
|
@ -159,6 +159,10 @@ void subghz_protocol_decoder_faac_slh_feed(void* context, bool level, uint32_t d
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Analysis of received data
|
||||||
|
* @param instance Pointer to a SubGhzBlockGeneric* instance
|
||||||
|
*/
|
||||||
static void subghz_protocol_faac_slh_check_remote_controller(SubGhzBlockGeneric* instance) {
|
static void subghz_protocol_faac_slh_check_remote_controller(SubGhzBlockGeneric* instance) {
|
||||||
uint64_t code_found_reverse =
|
uint64_t code_found_reverse =
|
||||||
subghz_protocol_blocks_reverse_key(instance->data, instance->data_count_bit);
|
subghz_protocol_blocks_reverse_key(instance->data, instance->data_count_bit);
|
||||||
|
@ -11,15 +11,65 @@ extern const SubGhzProtocolDecoder subghz_protocol_faac_slh_decoder;
|
|||||||
extern const SubGhzProtocolEncoder subghz_protocol_faac_slh_encoder;
|
extern const SubGhzProtocolEncoder subghz_protocol_faac_slh_encoder;
|
||||||
extern const SubGhzProtocol subghz_protocol_faac_slh;
|
extern const SubGhzProtocol subghz_protocol_faac_slh;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolDecoderFaacSLH.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolDecoderFaacSLH* pointer to a SubGhzProtocolDecoderFaacSLH instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_decoder_faac_slh_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_decoder_faac_slh_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolDecoderFaacSLH.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderFaacSLH instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_faac_slh_free(void* context);
|
void subghz_protocol_decoder_faac_slh_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset decoder SubGhzProtocolDecoderFaacSLH.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderFaacSLH instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_faac_slh_reset(void* context);
|
void subghz_protocol_decoder_faac_slh_reset(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a raw sequence of levels and durations received from the air.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderFaacSLH instance
|
||||||
|
* @param level Signal level true-high false-low
|
||||||
|
* @param duration Duration of this level in, us
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_faac_slh_feed(void* context, bool level, uint32_t duration);
|
void subghz_protocol_decoder_faac_slh_feed(void* context, bool level, uint32_t duration);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the hash sum of the last randomly received parcel.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderFaacSLH instance
|
||||||
|
* @return hash Hash sum
|
||||||
|
*/
|
||||||
uint8_t subghz_protocol_decoder_faac_slh_get_hash_data(void* context);
|
uint8_t subghz_protocol_decoder_faac_slh_get_hash_data(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serialize data SubGhzProtocolDecoderFaacSLH.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderFaacSLH instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @param frequency The frequency at which the signal was received, Hz
|
||||||
|
* @param preset The modulation on which the signal was received, FuriHalSubGhzPreset
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_faac_slh_serialize(
|
bool subghz_protocol_decoder_faac_slh_serialize(
|
||||||
void* context,
|
void* context,
|
||||||
FlipperFormat* flipper_format,
|
FlipperFormat* flipper_format,
|
||||||
uint32_t frequency,
|
uint32_t frequency,
|
||||||
FuriHalSubGhzPreset preset);
|
FuriHalSubGhzPreset preset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize data SubGhzProtocolDecoderFaacSLH.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderFaacSLH instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_faac_slh_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_decoder_faac_slh_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting a textual representation of the received data.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderFaacSLH instance
|
||||||
|
* @param output Resulting text
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_faac_slh_get_string(void* context, string_t output);
|
void subghz_protocol_decoder_faac_slh_get_string(void* context, string_t output);
|
||||||
|
@ -88,6 +88,11 @@ void subghz_protocol_encoder_gate_tx_free(void* context) {
|
|||||||
free(instance);
|
free(instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generating an upload from data.
|
||||||
|
* @param instance Pointer to a SubGhzProtocolEncoderGateTx instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
static bool subghz_protocol_encoder_gate_tx_get_upload(SubGhzProtocolEncoderGateTx* instance) {
|
static bool subghz_protocol_encoder_gate_tx_get_upload(SubGhzProtocolEncoderGateTx* instance) {
|
||||||
furi_assert(instance);
|
furi_assert(instance);
|
||||||
size_t index = 0;
|
size_t index = 0;
|
||||||
@ -258,6 +263,10 @@ void subghz_protocol_decoder_gate_tx_feed(void* context, bool level, uint32_t du
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Analysis of received data
|
||||||
|
* @param instance Pointer to a SubGhzBlockGeneric* instance
|
||||||
|
*/
|
||||||
static void subghz_protocol_gate_tx_check_remote_controller(SubGhzBlockGeneric* instance) {
|
static void subghz_protocol_gate_tx_check_remote_controller(SubGhzBlockGeneric* instance) {
|
||||||
uint32_t code_found_reverse =
|
uint32_t code_found_reverse =
|
||||||
subghz_protocol_blocks_reverse_key(instance->data, instance->data_count_bit);
|
subghz_protocol_blocks_reverse_key(instance->data, instance->data_count_bit);
|
||||||
|
@ -11,20 +11,99 @@ extern const SubGhzProtocolDecoder subghz_protocol_gate_tx_decoder;
|
|||||||
extern const SubGhzProtocolEncoder subghz_protocol_gate_tx_encoder;
|
extern const SubGhzProtocolEncoder subghz_protocol_gate_tx_encoder;
|
||||||
extern const SubGhzProtocol subghz_protocol_gate_tx;
|
extern const SubGhzProtocol subghz_protocol_gate_tx;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolEncoderGateTx.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolEncoderGateTx* pointer to a SubGhzProtocolEncoderGateTx instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_encoder_gate_tx_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_encoder_gate_tx_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolEncoderGateTx.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderGateTx instance
|
||||||
|
*/
|
||||||
void subghz_protocol_encoder_gate_tx_free(void* context);
|
void subghz_protocol_encoder_gate_tx_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize and generating an upload to send.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderGateTx instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_encoder_gate_tx_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_encoder_gate_tx_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forced transmission stop.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderGateTx instance
|
||||||
|
*/
|
||||||
void subghz_protocol_encoder_gate_tx_stop(void* context);
|
void subghz_protocol_encoder_gate_tx_stop(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the level and duration of the upload to be loaded into DMA.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderGateTx instance
|
||||||
|
* @return LevelDuration
|
||||||
|
*/
|
||||||
LevelDuration subghz_protocol_encoder_gate_tx_yield(void* context);
|
LevelDuration subghz_protocol_encoder_gate_tx_yield(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolDecoderGateTx.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolDecoderGateTx* pointer to a SubGhzProtocolDecoderGateTx instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_decoder_gate_tx_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_decoder_gate_tx_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolDecoderGateTx.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderGateTx instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_gate_tx_free(void* context);
|
void subghz_protocol_decoder_gate_tx_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset decoder SubGhzProtocolDecoderGateTx.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderGateTx instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_gate_tx_reset(void* context);
|
void subghz_protocol_decoder_gate_tx_reset(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a raw sequence of levels and durations received from the air.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderGateTx instance
|
||||||
|
* @param level Signal level true-high false-low
|
||||||
|
* @param duration Duration of this level in, us
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_gate_tx_feed(void* context, bool level, uint32_t duration);
|
void subghz_protocol_decoder_gate_tx_feed(void* context, bool level, uint32_t duration);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the hash sum of the last randomly received parcel.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderGateTx instance
|
||||||
|
* @return hash Hash sum
|
||||||
|
*/
|
||||||
uint8_t subghz_protocol_decoder_gate_tx_get_hash_data(void* context);
|
uint8_t subghz_protocol_decoder_gate_tx_get_hash_data(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serialize data SubGhzProtocolDecoderGateTx.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderGateTx instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @param frequency The frequency at which the signal was received, Hz
|
||||||
|
* @param preset The modulation on which the signal was received, FuriHalSubGhzPreset
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_gate_tx_serialize(
|
bool subghz_protocol_decoder_gate_tx_serialize(
|
||||||
void* context,
|
void* context,
|
||||||
FlipperFormat* flipper_format,
|
FlipperFormat* flipper_format,
|
||||||
uint32_t frequency,
|
uint32_t frequency,
|
||||||
FuriHalSubGhzPreset preset);
|
FuriHalSubGhzPreset preset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize data SubGhzProtocolDecoderGateTx.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderGateTx instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_gate_tx_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_decoder_gate_tx_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting a textual representation of the received data.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderGateTx instance
|
||||||
|
* @param output Resulting text
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_gate_tx_get_string(void* context, string_t output);
|
void subghz_protocol_decoder_gate_tx_get_string(void* context, string_t output);
|
||||||
|
@ -91,6 +91,11 @@ void subghz_protocol_encoder_hormann_free(void* context) {
|
|||||||
free(instance);
|
free(instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generating an upload from data.
|
||||||
|
* @param instance Pointer to a SubGhzProtocolEncoderHormann instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
static bool subghz_protocol_encoder_hormann_get_upload(SubGhzProtocolEncoderHormann* instance) {
|
static bool subghz_protocol_encoder_hormann_get_upload(SubGhzProtocolEncoderHormann* instance) {
|
||||||
furi_assert(instance);
|
furi_assert(instance);
|
||||||
|
|
||||||
@ -285,6 +290,10 @@ void subghz_protocol_decoder_hormann_feed(void* context, bool level, uint32_t du
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Analysis of received data
|
||||||
|
* @param instance Pointer to a SubGhzBlockGeneric* instance
|
||||||
|
*/
|
||||||
static void subghz_protocol_hormann_check_remote_controller(SubGhzBlockGeneric* instance) {
|
static void subghz_protocol_hormann_check_remote_controller(SubGhzBlockGeneric* instance) {
|
||||||
instance->btn = (instance->data >> 4) & 0xF;
|
instance->btn = (instance->data >> 4) & 0xF;
|
||||||
}
|
}
|
||||||
|
@ -11,20 +11,99 @@ extern const SubGhzProtocolDecoder subghz_protocol_hormann_decoder;
|
|||||||
extern const SubGhzProtocolEncoder subghz_protocol_hormann_encoder;
|
extern const SubGhzProtocolEncoder subghz_protocol_hormann_encoder;
|
||||||
extern const SubGhzProtocol subghz_protocol_hormann;
|
extern const SubGhzProtocol subghz_protocol_hormann;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolEncoderHormann.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolEncoderHormann* pointer to a SubGhzProtocolEncoderHormann instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_encoder_hormann_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_encoder_hormann_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolEncoderHormann.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderHormann instance
|
||||||
|
*/
|
||||||
void subghz_protocol_encoder_hormann_free(void* context);
|
void subghz_protocol_encoder_hormann_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize and generating an upload to send.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderHormann instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_encoder_hormann_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_encoder_hormann_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forced transmission stop.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderHormann instance
|
||||||
|
*/
|
||||||
void subghz_protocol_encoder_hormann_stop(void* context);
|
void subghz_protocol_encoder_hormann_stop(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the level and duration of the upload to be loaded into DMA.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderHormann instance
|
||||||
|
* @return LevelDuration
|
||||||
|
*/
|
||||||
LevelDuration subghz_protocol_encoder_hormann_yield(void* context);
|
LevelDuration subghz_protocol_encoder_hormann_yield(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolDecoderHormann.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolDecoderHormann* pointer to a SubGhzProtocolDecoderHormann instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_decoder_hormann_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_decoder_hormann_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolDecoderHormann.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderHormann instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_hormann_free(void* context);
|
void subghz_protocol_decoder_hormann_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset decoder SubGhzProtocolDecoderHormann.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderHormann instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_hormann_reset(void* context);
|
void subghz_protocol_decoder_hormann_reset(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a raw sequence of levels and durations received from the air.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderHormann instance
|
||||||
|
* @param level Signal level true-high false-low
|
||||||
|
* @param duration Duration of this level in, us
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_hormann_feed(void* context, bool level, uint32_t duration);
|
void subghz_protocol_decoder_hormann_feed(void* context, bool level, uint32_t duration);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the hash sum of the last randomly received parcel.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderHormann instance
|
||||||
|
* @return hash Hash sum
|
||||||
|
*/
|
||||||
uint8_t subghz_protocol_decoder_hormann_get_hash_data(void* context);
|
uint8_t subghz_protocol_decoder_hormann_get_hash_data(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serialize data SubGhzProtocolDecoderHormann.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderHormann instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @param frequency The frequency at which the signal was received, Hz
|
||||||
|
* @param preset The modulation on which the signal was received, FuriHalSubGhzPreset
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_hormann_serialize(
|
bool subghz_protocol_decoder_hormann_serialize(
|
||||||
void* context,
|
void* context,
|
||||||
FlipperFormat* flipper_format,
|
FlipperFormat* flipper_format,
|
||||||
uint32_t frequency,
|
uint32_t frequency,
|
||||||
FuriHalSubGhzPreset preset);
|
FuriHalSubGhzPreset preset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize data SubGhzProtocolDecoderHormann.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderHormann instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_hormann_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_decoder_hormann_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting a textual representation of the received data.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderHormann instance
|
||||||
|
* @param output Resulting text
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_hormann_get_string(void* context, string_t output);
|
void subghz_protocol_decoder_hormann_get_string(void* context, string_t output);
|
||||||
|
@ -158,6 +158,10 @@ void subghz_protocol_decoder_ido_feed(void* context, bool level, uint32_t durati
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Analysis of received data
|
||||||
|
* @param instance Pointer to a SubGhzBlockGeneric* instance
|
||||||
|
*/
|
||||||
static void subghz_protocol_ido_check_remote_controller(SubGhzBlockGeneric* instance) {
|
static void subghz_protocol_ido_check_remote_controller(SubGhzBlockGeneric* instance) {
|
||||||
uint64_t code_found_reverse =
|
uint64_t code_found_reverse =
|
||||||
subghz_protocol_blocks_reverse_key(instance->data, instance->data_count_bit);
|
subghz_protocol_blocks_reverse_key(instance->data, instance->data_count_bit);
|
||||||
|
@ -11,15 +11,65 @@ extern const SubGhzProtocolDecoder subghz_protocol_ido_decoder;
|
|||||||
extern const SubGhzProtocolEncoder subghz_protocol_ido_encoder;
|
extern const SubGhzProtocolEncoder subghz_protocol_ido_encoder;
|
||||||
extern const SubGhzProtocol subghz_protocol_ido;
|
extern const SubGhzProtocol subghz_protocol_ido;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolDecoderIDo.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolDecoderIDo* pointer to a SubGhzProtocolDecoderIDo instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_decoder_ido_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_decoder_ido_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolDecoderIDo.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderIDo instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_ido_free(void* context);
|
void subghz_protocol_decoder_ido_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset decoder SubGhzProtocolDecoderIDo.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderIDo instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_ido_reset(void* context);
|
void subghz_protocol_decoder_ido_reset(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a raw sequence of levels and durations received from the air.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderIDo instance
|
||||||
|
* @param level Signal level true-high false-low
|
||||||
|
* @param duration Duration of this level in, us
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_ido_feed(void* context, bool level, uint32_t duration);
|
void subghz_protocol_decoder_ido_feed(void* context, bool level, uint32_t duration);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the hash sum of the last randomly received parcel.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderIDo instance
|
||||||
|
* @return hash Hash sum
|
||||||
|
*/
|
||||||
uint8_t subghz_protocol_decoder_ido_get_hash_data(void* context);
|
uint8_t subghz_protocol_decoder_ido_get_hash_data(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serialize data SubGhzProtocolDecoderIDo.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderIDo instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @param frequency The frequency at which the signal was received, Hz
|
||||||
|
* @param preset The modulation on which the signal was received, FuriHalSubGhzPreset
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_ido_serialize(
|
bool subghz_protocol_decoder_ido_serialize(
|
||||||
void* context,
|
void* context,
|
||||||
FlipperFormat* flipper_format,
|
FlipperFormat* flipper_format,
|
||||||
uint32_t frequency,
|
uint32_t frequency,
|
||||||
FuriHalSubGhzPreset preset);
|
FuriHalSubGhzPreset preset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize data SubGhzProtocolDecoderIDo.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderIDo instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_ido_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_decoder_ido_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting a textual representation of the received data.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderIDo instance
|
||||||
|
* @param output Resulting text
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_ido_get_string(void* context, string_t output);
|
void subghz_protocol_decoder_ido_get_string(void* context, string_t output);
|
@ -81,6 +81,12 @@ const SubGhzProtocol subghz_protocol_keeloq = {
|
|||||||
.encoder = &subghz_protocol_keeloq_encoder,
|
.encoder = &subghz_protocol_keeloq_encoder,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Analysis of received data
|
||||||
|
* @param instance Pointer to a SubGhzBlockGeneric* instance
|
||||||
|
* @param keystore Pointer to a SubGhzKeystore* instance
|
||||||
|
* @param manufacture_name
|
||||||
|
*/
|
||||||
static void subghz_protocol_keeloq_check_remote_controller(
|
static void subghz_protocol_keeloq_check_remote_controller(
|
||||||
SubGhzBlockGeneric* instance,
|
SubGhzBlockGeneric* instance,
|
||||||
SubGhzKeystore* keystore,
|
SubGhzKeystore* keystore,
|
||||||
@ -107,6 +113,11 @@ void subghz_protocol_encoder_keeloq_free(void* context) {
|
|||||||
free(instance);
|
free(instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Key generation from simple data
|
||||||
|
* @param instance Pointer to a SubGhzProtocolEncoderKeeloq* instance
|
||||||
|
* @param btn Button number, 4 bit
|
||||||
|
*/
|
||||||
static bool subghz_protocol_keeloq_gen_data(SubGhzProtocolEncoderKeeloq* instance, uint8_t btn) {
|
static bool subghz_protocol_keeloq_gen_data(SubGhzProtocolEncoderKeeloq* instance, uint8_t btn) {
|
||||||
instance->generic.cnt++;
|
instance->generic.cnt++;
|
||||||
uint32_t fix = btn << 28 | instance->generic.serial;
|
uint32_t fix = btn << 28 | instance->generic.serial;
|
||||||
@ -179,15 +190,18 @@ bool subghz_protocol_keeloq_create_data(
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generating an upload from data.
|
||||||
|
* @param instance Pointer to a SubGhzProtocolEncoderKeeloq instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
static bool
|
static bool
|
||||||
subghz_protocol_encoder_keeloq_get_upload(SubGhzProtocolEncoderKeeloq* instance, uint8_t btn) {
|
subghz_protocol_encoder_keeloq_get_upload(SubGhzProtocolEncoderKeeloq* instance, uint8_t btn) {
|
||||||
furi_assert(instance);
|
furi_assert(instance);
|
||||||
|
|
||||||
//gen new key
|
//gen new key
|
||||||
if(subghz_protocol_keeloq_gen_data(instance, btn)) {
|
if(subghz_protocol_keeloq_gen_data(instance, btn)) {
|
||||||
//ToDo Update display data
|
//ToDo if you need to add a callback to automatically update the data on the display
|
||||||
// if(instance->common.callback)
|
|
||||||
// instance->common.callback((SubGhzProtocolCommon*)instance, instance->common.context);
|
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -419,6 +433,14 @@ void subghz_protocol_decoder_keeloq_feed(void* context, bool level, uint32_t dur
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validation of decrypt data.
|
||||||
|
* @param instance Pointer to a SubGhzBlockGeneric instance
|
||||||
|
* @param decrypt Decrypd data
|
||||||
|
* @param btn Button number, 4 bit
|
||||||
|
* @param end_serial decrement the last 10 bits of the serial number
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
static inline bool subghz_protocol_keeloq_check_decrypt(
|
static inline bool subghz_protocol_keeloq_check_decrypt(
|
||||||
SubGhzBlockGeneric* instance,
|
SubGhzBlockGeneric* instance,
|
||||||
uint32_t decrypt,
|
uint32_t decrypt,
|
||||||
@ -433,11 +455,13 @@ static inline bool subghz_protocol_keeloq_check_decrypt(
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Checking the accepted code against the database manafacture key
|
/**
|
||||||
*
|
* Checking the accepted code against the database manafacture key
|
||||||
* @param instance SubGhzProtocolKeeloq instance
|
* @param instance Pointer to a SubGhzBlockGeneric* instance
|
||||||
* @param fix fix part of the parcel
|
* @param fix Fix part of the parcel
|
||||||
* @param hop hop encrypted part of the parcel
|
* @param hop Hop encrypted part of the parcel
|
||||||
|
* @param keystore Pointer to a SubGhzKeystore* instance
|
||||||
|
* @param manufacture_name
|
||||||
* @return true on successful search
|
* @return true on successful search
|
||||||
*/
|
*/
|
||||||
static uint8_t subghz_protocol_keeloq_check_remote_controller_selector(
|
static uint8_t subghz_protocol_keeloq_check_remote_controller_selector(
|
||||||
@ -575,10 +599,6 @@ static uint8_t subghz_protocol_keeloq_check_remote_controller_selector(
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Analysis of received data
|
|
||||||
*
|
|
||||||
* @param instance SubGhzProtocolKeeloq instance
|
|
||||||
*/
|
|
||||||
static void subghz_protocol_keeloq_check_remote_controller(
|
static void subghz_protocol_keeloq_check_remote_controller(
|
||||||
SubGhzBlockGeneric* instance,
|
SubGhzBlockGeneric* instance,
|
||||||
SubGhzKeystore* keystore,
|
SubGhzKeystore* keystore,
|
||||||
|
@ -11,8 +11,31 @@ extern const SubGhzProtocolDecoder subghz_protocol_keeloq_decoder;
|
|||||||
extern const SubGhzProtocolEncoder subghz_protocol_keeloq_encoder;
|
extern const SubGhzProtocolEncoder subghz_protocol_keeloq_encoder;
|
||||||
extern const SubGhzProtocol subghz_protocol_keeloq;
|
extern const SubGhzProtocol subghz_protocol_keeloq;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolEncoderKeeloq.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolEncoderKeeloq* pointer to a SubGhzProtocolEncoderKeeloq instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_encoder_keeloq_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_encoder_keeloq_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolEncoderKeeloq.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderKeeloq instance
|
||||||
|
*/
|
||||||
void subghz_protocol_encoder_keeloq_free(void* context);
|
void subghz_protocol_encoder_keeloq_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Key generation from simple data.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderKeeloq instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @param serial Serial number, 28 bit
|
||||||
|
* @param btn Button number, 4 bit
|
||||||
|
* @param cnt Container value, 16 bit
|
||||||
|
* @param manufacture_name Name of manufacturer's key
|
||||||
|
* @param frequency Transmission frequency, Hz
|
||||||
|
* @param preset Modulation, FuriHalSubGhzPreset
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_keeloq_create_data(
|
bool subghz_protocol_keeloq_create_data(
|
||||||
void* context,
|
void* context,
|
||||||
FlipperFormat* flipper_format,
|
FlipperFormat* flipper_format,
|
||||||
@ -22,18 +45,87 @@ bool subghz_protocol_keeloq_create_data(
|
|||||||
const char* manufacture_name,
|
const char* manufacture_name,
|
||||||
uint32_t frequency,
|
uint32_t frequency,
|
||||||
FuriHalSubGhzPreset preset);
|
FuriHalSubGhzPreset preset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize and generating an upload to send.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderKeeloq instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_encoder_keeloq_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_encoder_keeloq_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forced transmission stop.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderKeeloq instance
|
||||||
|
*/
|
||||||
void subghz_protocol_encoder_keeloq_stop(void* context);
|
void subghz_protocol_encoder_keeloq_stop(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the level and duration of the upload to be loaded into DMA.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderKeeloq instance
|
||||||
|
* @return LevelDuration
|
||||||
|
*/
|
||||||
LevelDuration subghz_protocol_encoder_keeloq_yield(void* context);
|
LevelDuration subghz_protocol_encoder_keeloq_yield(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolDecoderKeeloq.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolDecoderKeeloq* pointer to a SubGhzProtocolDecoderKeeloq instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_decoder_keeloq_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_decoder_keeloq_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolDecoderKeeloq.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderKeeloq instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_keeloq_free(void* context);
|
void subghz_protocol_decoder_keeloq_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset decoder SubGhzProtocolDecoderKeeloq.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderKeeloq instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_keeloq_reset(void* context);
|
void subghz_protocol_decoder_keeloq_reset(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a raw sequence of levels and durations received from the air.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderKeeloq instance
|
||||||
|
* @param level Signal level true-high false-low
|
||||||
|
* @param duration Duration of this level in, us
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_keeloq_feed(void* context, bool level, uint32_t duration);
|
void subghz_protocol_decoder_keeloq_feed(void* context, bool level, uint32_t duration);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the hash sum of the last randomly received parcel.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderKeeloq instance
|
||||||
|
* @return hash Hash sum
|
||||||
|
*/
|
||||||
uint8_t subghz_protocol_decoder_keeloq_get_hash_data(void* context);
|
uint8_t subghz_protocol_decoder_keeloq_get_hash_data(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serialize data SubGhzProtocolDecoderKeeloq.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderKeeloq instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @param frequency The frequency at which the signal was received, Hz
|
||||||
|
* @param preset The modulation on which the signal was received, FuriHalSubGhzPreset
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_keeloq_serialize(
|
bool subghz_protocol_decoder_keeloq_serialize(
|
||||||
void* context,
|
void* context,
|
||||||
FlipperFormat* flipper_format,
|
FlipperFormat* flipper_format,
|
||||||
uint32_t frequency,
|
uint32_t frequency,
|
||||||
FuriHalSubGhzPreset preset);
|
FuriHalSubGhzPreset preset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize data SubGhzProtocolDecoderKeeloq.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderKeeloq instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_keeloq_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_decoder_keeloq_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting a textual representation of the received data.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderKeeloq instance
|
||||||
|
* @param output Resulting text
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_keeloq_get_string(void* context, string_t output);
|
void subghz_protocol_decoder_keeloq_get_string(void* context, string_t output);
|
||||||
|
@ -10,7 +10,6 @@
|
|||||||
* https://phreakerclub.com/forum/showthread.php?t=1094
|
* https://phreakerclub.com/forum/showthread.php?t=1094
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define KEELOQ_NLF 0x3A5C742E
|
#define KEELOQ_NLF 0x3A5C742E
|
||||||
#define bit(x, n) (((x) >> (n)) & 1)
|
#define bit(x, n) (((x) >> (n)) & 1)
|
||||||
#define g5(x, a, b, c, d, e) \
|
#define g5(x, a, b, c, d, e) \
|
||||||
@ -26,41 +25,44 @@
|
|||||||
#define KEELOQ_LEARNING_SECURE 3u
|
#define KEELOQ_LEARNING_SECURE 3u
|
||||||
#define KEELOQ_LEARNING_MAGIC_XOR_TYPE_1 4u
|
#define KEELOQ_LEARNING_MAGIC_XOR_TYPE_1 4u
|
||||||
|
|
||||||
/** Simple Learning Encrypt
|
/**
|
||||||
|
* Simple Learning Encrypt
|
||||||
* @param data - 0xBSSSCCCC, B(4bit) key, S(10bit) serial&0x3FF, C(16bit) counter
|
* @param data - 0xBSSSCCCC, B(4bit) key, S(10bit) serial&0x3FF, C(16bit) counter
|
||||||
* @param key - manufacture (64bit)
|
* @param key - manufacture (64bit)
|
||||||
* @return keeloq encrypt data
|
* @return keeloq encrypt data
|
||||||
*/
|
*/
|
||||||
uint32_t subghz_protocol_keeloq_common_encrypt(const uint32_t data, const uint64_t key);
|
uint32_t subghz_protocol_keeloq_common_encrypt(const uint32_t data, const uint64_t key);
|
||||||
|
|
||||||
/** Simple Learning Decrypt
|
/**
|
||||||
|
* Simple Learning Decrypt
|
||||||
* @param data - keeloq encrypt data
|
* @param data - keeloq encrypt data
|
||||||
* @param key - manufacture (64bit)
|
* @param key - manufacture (64bit)
|
||||||
* @return 0xBSSSCCCC, B(4bit) key, S(10bit) serial&0x3FF, C(16bit) counter
|
* @return 0xBSSSCCCC, B(4bit) key, S(10bit) serial&0x3FF, C(16bit) counter
|
||||||
*/
|
*/
|
||||||
uint32_t subghz_protocol_keeloq_common_decrypt(const uint32_t data, const uint64_t key);
|
uint32_t subghz_protocol_keeloq_common_decrypt(const uint32_t data, const uint64_t key);
|
||||||
|
|
||||||
/** Normal Learning
|
/**
|
||||||
|
* Normal Learning
|
||||||
* @param data - serial number (28bit)
|
* @param data - serial number (28bit)
|
||||||
* @param key - manufacture (64bit)
|
* @param key - manufacture (64bit)
|
||||||
* @return manufacture for this serial number (64bit)
|
* @return manufacture for this serial number (64bit)
|
||||||
*/
|
*/
|
||||||
uint64_t subghz_protocol_keeloq_common_normal_learning(uint32_t data, const uint64_t key);
|
uint64_t subghz_protocol_keeloq_common_normal_learning(uint32_t data, const uint64_t key);
|
||||||
|
|
||||||
/** Secure Learning
|
/**
|
||||||
|
* Secure Learning
|
||||||
* @param data - serial number (28bit)
|
* @param data - serial number (28bit)
|
||||||
* @param seed - seed number (32bit)
|
* @param seed - seed number (32bit)
|
||||||
* @param key - manufacture (64bit)
|
* @param key - manufacture (64bit)
|
||||||
* @return manufacture for this serial number (64bit)
|
* @return manufacture for this serial number (64bit)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
uint64_t
|
uint64_t
|
||||||
subghz_protocol_keeloq_common_secure_learning(uint32_t data, uint32_t seed, const uint64_t key);
|
subghz_protocol_keeloq_common_secure_learning(uint32_t data, uint32_t seed, const uint64_t key);
|
||||||
|
|
||||||
/** Magic_xor_type1 Learning
|
/**
|
||||||
|
* Magic_xor_type1 Learning
|
||||||
* @param data - serial number (28bit)
|
* @param data - serial number (28bit)
|
||||||
* @param xor - magic xor (64bit)
|
* @param xor - magic xor (64bit)
|
||||||
* @return manufacture for this serial number (64bit)
|
* @return manufacture for this serial number (64bit)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
uint64_t subghz_protocol_keeloq_common_magic_xor_type1_learning(uint32_t data, uint64_t xor);
|
uint64_t subghz_protocol_keeloq_common_magic_xor_type1_learning(uint32_t data, uint64_t xor);
|
||||||
|
@ -203,9 +203,9 @@ uint8_t subghz_protocol_kia_crc8(uint8_t* data, size_t len) {
|
|||||||
return crc;
|
return crc;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Analysis of received data
|
/**
|
||||||
*
|
* Analysis of received data
|
||||||
* @param instance SubGhzProtocolKIA instance
|
* @param instance Pointer to a SubGhzBlockGeneric* instance
|
||||||
*/
|
*/
|
||||||
static void subghz_protocol_kia_check_remote_controller(SubGhzBlockGeneric* instance) {
|
static void subghz_protocol_kia_check_remote_controller(SubGhzBlockGeneric* instance) {
|
||||||
/*
|
/*
|
||||||
|
@ -11,15 +11,65 @@ extern const SubGhzProtocolDecoder subghz_protocol_kia_decoder;
|
|||||||
extern const SubGhzProtocolEncoder subghz_protocol_kia_encoder;
|
extern const SubGhzProtocolEncoder subghz_protocol_kia_encoder;
|
||||||
extern const SubGhzProtocol subghz_protocol_kia;
|
extern const SubGhzProtocol subghz_protocol_kia;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolDecoderKIA.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolDecoderKIA* pointer to a SubGhzProtocolDecoderKIA instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_decoder_kia_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_decoder_kia_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolDecoderKIA.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderKIA instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_kia_free(void* context);
|
void subghz_protocol_decoder_kia_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset decoder SubGhzProtocolDecoderKIA.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderKIA instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_kia_reset(void* context);
|
void subghz_protocol_decoder_kia_reset(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a raw sequence of levels and durations received from the air.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderKIA instance
|
||||||
|
* @param level Signal level true-high false-low
|
||||||
|
* @param duration Duration of this level in, us
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_kia_feed(void* context, bool level, uint32_t duration);
|
void subghz_protocol_decoder_kia_feed(void* context, bool level, uint32_t duration);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the hash sum of the last randomly received parcel.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderKIA instance
|
||||||
|
* @return hash Hash sum
|
||||||
|
*/
|
||||||
uint8_t subghz_protocol_decoder_kia_get_hash_data(void* context);
|
uint8_t subghz_protocol_decoder_kia_get_hash_data(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serialize data SubGhzProtocolDecoderKIA.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderKIA instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @param frequency The frequency at which the signal was received, Hz
|
||||||
|
* @param preset The modulation on which the signal was received, FuriHalSubGhzPreset
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_kia_serialize(
|
bool subghz_protocol_decoder_kia_serialize(
|
||||||
void* context,
|
void* context,
|
||||||
FlipperFormat* flipper_format,
|
FlipperFormat* flipper_format,
|
||||||
uint32_t frequency,
|
uint32_t frequency,
|
||||||
FuriHalSubGhzPreset preset);
|
FuriHalSubGhzPreset preset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize data SubGhzProtocolDecoderKIA.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderKIA instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_kia_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_decoder_kia_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting a textual representation of the received data.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderKIA instance
|
||||||
|
* @param output Resulting text
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_kia_get_string(void* context, string_t output);
|
void subghz_protocol_decoder_kia_get_string(void* context, string_t output);
|
||||||
|
@ -90,6 +90,11 @@ void subghz_protocol_encoder_nero_radio_free(void* context) {
|
|||||||
free(instance);
|
free(instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generating an upload from data.
|
||||||
|
* @param instance Pointer to a SubGhzProtocolEncoderNeroRadio instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
static bool
|
static bool
|
||||||
subghz_protocol_encoder_nero_radio_get_upload(SubGhzProtocolEncoderNeroRadio* instance) {
|
subghz_protocol_encoder_nero_radio_get_upload(SubGhzProtocolEncoderNeroRadio* instance) {
|
||||||
furi_assert(instance);
|
furi_assert(instance);
|
||||||
|
@ -11,20 +11,99 @@ extern const SubGhzProtocolDecoder subghz_protocol_nero_radio_decoder;
|
|||||||
extern const SubGhzProtocolEncoder subghz_protocol_nero_radio_encoder;
|
extern const SubGhzProtocolEncoder subghz_protocol_nero_radio_encoder;
|
||||||
extern const SubGhzProtocol subghz_protocol_nero_radio;
|
extern const SubGhzProtocol subghz_protocol_nero_radio;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolEncoderNeroRadio.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolEncoderNeroRadio* pointer to a SubGhzProtocolEncoderNeroRadio instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_encoder_nero_radio_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_encoder_nero_radio_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolEncoderNeroRadio.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderNeroRadio instance
|
||||||
|
*/
|
||||||
void subghz_protocol_encoder_nero_radio_free(void* context);
|
void subghz_protocol_encoder_nero_radio_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize and generating an upload to send.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderNeroRadio instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_encoder_nero_radio_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_encoder_nero_radio_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forced transmission stop.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderNeroRadio instance
|
||||||
|
*/
|
||||||
void subghz_protocol_encoder_nero_radio_stop(void* context);
|
void subghz_protocol_encoder_nero_radio_stop(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the level and duration of the upload to be loaded into DMA.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderNeroRadio instance
|
||||||
|
* @return LevelDuration
|
||||||
|
*/
|
||||||
LevelDuration subghz_protocol_encoder_nero_radio_yield(void* context);
|
LevelDuration subghz_protocol_encoder_nero_radio_yield(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolDecoderNeroRadio.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolDecoderNeroRadio* pointer to a SubGhzProtocolDecoderNeroRadio instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_decoder_nero_radio_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_decoder_nero_radio_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolDecoderNeroRadio.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNeroRadio instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_nero_radio_free(void* context);
|
void subghz_protocol_decoder_nero_radio_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset decoder SubGhzProtocolDecoderNeroRadio.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNeroRadio instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_nero_radio_reset(void* context);
|
void subghz_protocol_decoder_nero_radio_reset(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a raw sequence of levels and durations received from the air.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNeroRadio instance
|
||||||
|
* @param level Signal level true-high false-low
|
||||||
|
* @param duration Duration of this level in, us
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_nero_radio_feed(void* context, bool level, uint32_t duration);
|
void subghz_protocol_decoder_nero_radio_feed(void* context, bool level, uint32_t duration);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the hash sum of the last randomly received parcel.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNeroRadio instance
|
||||||
|
* @return hash Hash sum
|
||||||
|
*/
|
||||||
uint8_t subghz_protocol_decoder_nero_radio_get_hash_data(void* context);
|
uint8_t subghz_protocol_decoder_nero_radio_get_hash_data(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serialize data SubGhzProtocolDecoderNeroRadio.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNeroRadio instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @param frequency The frequency at which the signal was received, Hz
|
||||||
|
* @param preset The modulation on which the signal was received, FuriHalSubGhzPreset
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_nero_radio_serialize(
|
bool subghz_protocol_decoder_nero_radio_serialize(
|
||||||
void* context,
|
void* context,
|
||||||
FlipperFormat* flipper_format,
|
FlipperFormat* flipper_format,
|
||||||
uint32_t frequency,
|
uint32_t frequency,
|
||||||
FuriHalSubGhzPreset preset);
|
FuriHalSubGhzPreset preset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize data SubGhzProtocolDecoderNeroRadio.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNeroRadio instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_nero_radio_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_decoder_nero_radio_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting a textual representation of the received data.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNeroRadio instance
|
||||||
|
* @param output Resulting text
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_nero_radio_get_string(void* context, string_t output);
|
void subghz_protocol_decoder_nero_radio_get_string(void* context, string_t output);
|
||||||
|
@ -95,6 +95,11 @@ void subghz_protocol_encoder_nero_sketch_free(void* context) {
|
|||||||
free(instance);
|
free(instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generating an upload from data.
|
||||||
|
* @param instance Pointer to a SubGhzProtocolEncoderNeroSketch instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
static bool
|
static bool
|
||||||
subghz_protocol_encoder_nero_sketch_get_upload(SubGhzProtocolEncoderNeroSketch* instance) {
|
subghz_protocol_encoder_nero_sketch_get_upload(SubGhzProtocolEncoderNeroSketch* instance) {
|
||||||
furi_assert(instance);
|
furi_assert(instance);
|
||||||
|
@ -11,20 +11,99 @@ extern const SubGhzProtocolDecoder subghz_protocol_nero_sketch_decoder;
|
|||||||
extern const SubGhzProtocolEncoder subghz_protocol_nero_sketch_encoder;
|
extern const SubGhzProtocolEncoder subghz_protocol_nero_sketch_encoder;
|
||||||
extern const SubGhzProtocol subghz_protocol_nero_sketch;
|
extern const SubGhzProtocol subghz_protocol_nero_sketch;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolEncoderNeroSketch.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolEncoderNeroSketch* pointer to a SubGhzProtocolEncoderNeroSketch instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_encoder_nero_sketch_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_encoder_nero_sketch_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolEncoderNeroSketch.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderNeroSketch instance
|
||||||
|
*/
|
||||||
void subghz_protocol_encoder_nero_sketch_free(void* context);
|
void subghz_protocol_encoder_nero_sketch_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize and generating an upload to send.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderNeroSketch instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_encoder_nero_sketch_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_encoder_nero_sketch_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forced transmission stop.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderNeroSketch instance
|
||||||
|
*/
|
||||||
void subghz_protocol_encoder_nero_sketch_stop(void* context);
|
void subghz_protocol_encoder_nero_sketch_stop(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the level and duration of the upload to be loaded into DMA.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderNeroSketch instance
|
||||||
|
* @return LevelDuration
|
||||||
|
*/
|
||||||
LevelDuration subghz_protocol_encoder_nero_sketch_yield(void* context);
|
LevelDuration subghz_protocol_encoder_nero_sketch_yield(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolDecoderNeroSketch.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolDecoderNeroSketch* pointer to a SubGhzProtocolDecoderNeroSketch instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_decoder_nero_sketch_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_decoder_nero_sketch_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolDecoderNeroSketch.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNeroSketch instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_nero_sketch_free(void* context);
|
void subghz_protocol_decoder_nero_sketch_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset decoder SubGhzProtocolDecoderNeroSketch.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNeroSketch instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_nero_sketch_reset(void* context);
|
void subghz_protocol_decoder_nero_sketch_reset(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a raw sequence of levels and durations received from the air.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNeroSketch instance
|
||||||
|
* @param level Signal level true-high false-low
|
||||||
|
* @param duration Duration of this level in, us
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_nero_sketch_feed(void* context, bool level, uint32_t duration);
|
void subghz_protocol_decoder_nero_sketch_feed(void* context, bool level, uint32_t duration);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the hash sum of the last randomly received parcel.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNeroSketch instance
|
||||||
|
* @return hash Hash sum
|
||||||
|
*/
|
||||||
uint8_t subghz_protocol_decoder_nero_sketch_get_hash_data(void* context);
|
uint8_t subghz_protocol_decoder_nero_sketch_get_hash_data(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serialize data SubGhzProtocolDecoderNeroSketch.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNeroSketch instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @param frequency The frequency at which the signal was received, Hz
|
||||||
|
* @param preset The modulation on which the signal was received, FuriHalSubGhzPreset
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_nero_sketch_serialize(
|
bool subghz_protocol_decoder_nero_sketch_serialize(
|
||||||
void* context,
|
void* context,
|
||||||
FlipperFormat* flipper_format,
|
FlipperFormat* flipper_format,
|
||||||
uint32_t frequency,
|
uint32_t frequency,
|
||||||
FuriHalSubGhzPreset preset);
|
FuriHalSubGhzPreset preset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize data SubGhzProtocolDecoderNeroSketch.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNeroSketch instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_nero_sketch_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_decoder_nero_sketch_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting a textual representation of the received data.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNeroSketch instance
|
||||||
|
* @param output Resulting text
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_nero_sketch_get_string(void* context, string_t output);
|
void subghz_protocol_decoder_nero_sketch_get_string(void* context, string_t output);
|
||||||
|
@ -94,6 +94,11 @@ void subghz_protocol_encoder_nice_flo_free(void* context) {
|
|||||||
free(instance);
|
free(instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generating an upload from data.
|
||||||
|
* @param instance Pointer to a SubGhzProtocolEncoderNiceFlo instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
static bool subghz_protocol_encoder_nice_flo_get_upload(SubGhzProtocolEncoderNiceFlo* instance) {
|
static bool subghz_protocol_encoder_nice_flo_get_upload(SubGhzProtocolEncoderNiceFlo* instance) {
|
||||||
furi_assert(instance);
|
furi_assert(instance);
|
||||||
size_t index = 0;
|
size_t index = 0;
|
||||||
|
@ -11,20 +11,99 @@ extern const SubGhzProtocolDecoder subghz_protocol_nice_flo_decoder;
|
|||||||
extern const SubGhzProtocolEncoder subghz_protocol_nice_flo_encoder;
|
extern const SubGhzProtocolEncoder subghz_protocol_nice_flo_encoder;
|
||||||
extern const SubGhzProtocol subghz_protocol_nice_flo;
|
extern const SubGhzProtocol subghz_protocol_nice_flo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolEncoderNiceFlo.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolEncoderNiceFlo* pointer to a SubGhzProtocolEncoderNiceFlo instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_encoder_nice_flo_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_encoder_nice_flo_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolEncoderNiceFlo.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderNiceFlo instance
|
||||||
|
*/
|
||||||
void subghz_protocol_encoder_nice_flo_free(void* context);
|
void subghz_protocol_encoder_nice_flo_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize and generating an upload to send.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderNiceFlo instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_encoder_nice_flo_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_encoder_nice_flo_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forced transmission stop.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderNiceFlo instance
|
||||||
|
*/
|
||||||
void subghz_protocol_encoder_nice_flo_stop(void* context);
|
void subghz_protocol_encoder_nice_flo_stop(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the level and duration of the upload to be loaded into DMA.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderNiceFlo instance
|
||||||
|
* @return LevelDuration
|
||||||
|
*/
|
||||||
LevelDuration subghz_protocol_encoder_nice_flo_yield(void* context);
|
LevelDuration subghz_protocol_encoder_nice_flo_yield(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolDecoderNiceFlo.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolDecoderNiceFlo* pointer to a SubGhzProtocolDecoderNiceFlo instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_decoder_nice_flo_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_decoder_nice_flo_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolDecoderNiceFlo.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNiceFlo instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_nice_flo_free(void* context);
|
void subghz_protocol_decoder_nice_flo_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset decoder SubGhzProtocolDecoderNiceFlo.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNiceFlo instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_nice_flo_reset(void* context);
|
void subghz_protocol_decoder_nice_flo_reset(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a raw sequence of levels and durations received from the air.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNiceFlo instance
|
||||||
|
* @param level Signal level true-high false-low
|
||||||
|
* @param duration Duration of this level in, us
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_nice_flo_feed(void* context, bool level, uint32_t duration);
|
void subghz_protocol_decoder_nice_flo_feed(void* context, bool level, uint32_t duration);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the hash sum of the last randomly received parcel.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNiceFlo instance
|
||||||
|
* @return hash Hash sum
|
||||||
|
*/
|
||||||
uint8_t subghz_protocol_decoder_nice_flo_get_hash_data(void* context);
|
uint8_t subghz_protocol_decoder_nice_flo_get_hash_data(void* context);
|
||||||
void subghz_protocol_decoder_nice_flo_get_string(void* context, string_t output);
|
|
||||||
|
/**
|
||||||
|
* Serialize data SubGhzProtocolDecoderNiceFlo.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNiceFlo instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @param frequency The frequency at which the signal was received, Hz
|
||||||
|
* @param preset The modulation on which the signal was received, FuriHalSubGhzPreset
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_nice_flo_serialize(
|
bool subghz_protocol_decoder_nice_flo_serialize(
|
||||||
void* context,
|
void* context,
|
||||||
FlipperFormat* flipper_format,
|
FlipperFormat* flipper_format,
|
||||||
uint32_t frequency,
|
uint32_t frequency,
|
||||||
FuriHalSubGhzPreset preset);
|
FuriHalSubGhzPreset preset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize data SubGhzProtocolDecoderNiceFlo.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNiceFlo instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_nice_flo_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_decoder_nice_flo_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting a textual representation of the received data.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNiceFlo instance
|
||||||
|
* @param output Resulting text
|
||||||
|
*/
|
||||||
|
void subghz_protocol_decoder_nice_flo_get_string(void* context, string_t output);
|
@ -76,11 +76,11 @@ const SubGhzProtocol subghz_protocol_nice_flor_s = {
|
|||||||
.encoder = &subghz_protocol_nice_flor_s_encoder,
|
.encoder = &subghz_protocol_nice_flor_s_encoder,
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Read bytes from rainbow table
|
/**
|
||||||
*
|
* Read bytes from rainbow table
|
||||||
* @param instance - SubGhzProtocolNiceFlorS* instance
|
* @param file_name Full path to rainbow table the file
|
||||||
* @param address - address byte
|
* @param address Byte address in file
|
||||||
* @return byte data
|
* @return data
|
||||||
*/
|
*/
|
||||||
static uint8_t
|
static uint8_t
|
||||||
subghz_protocol_nice_flor_s_get_byte_in_file(const char* file_name, uint32_t address) {
|
subghz_protocol_nice_flor_s_get_byte_in_file(const char* file_name, uint32_t address) {
|
||||||
@ -277,9 +277,10 @@ void subghz_protocol_decoder_nice_flor_s_feed(void* context, bool level, uint32_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Decrypt protocol Nice Flor S
|
/**
|
||||||
*
|
* Analysis of received data
|
||||||
* @param instance - SubGhzProtocolNiceFlorS* instance
|
* @param instance Pointer to a SubGhzBlockGeneric* instance
|
||||||
|
* @param file_name Full path to rainbow table the file
|
||||||
*/
|
*/
|
||||||
static void subghz_protocol_nice_flor_s_remote_controller(
|
static void subghz_protocol_nice_flor_s_remote_controller(
|
||||||
SubGhzBlockGeneric* instance,
|
SubGhzBlockGeneric* instance,
|
||||||
|
@ -11,15 +11,65 @@ extern const SubGhzProtocolDecoder subghz_protocol_nice_flor_s_decoder;
|
|||||||
extern const SubGhzProtocolEncoder subghz_protocol_nice_flor_s_encoder;
|
extern const SubGhzProtocolEncoder subghz_protocol_nice_flor_s_encoder;
|
||||||
extern const SubGhzProtocol subghz_protocol_nice_flor_s;
|
extern const SubGhzProtocol subghz_protocol_nice_flor_s;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolDecoderNiceFlorS.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolDecoderNiceFlorS* pointer to a SubGhzProtocolDecoderNiceFlorS instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_decoder_nice_flor_s_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_decoder_nice_flor_s_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolDecoderNiceFlorS.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNiceFlorS instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_nice_flor_s_free(void* context);
|
void subghz_protocol_decoder_nice_flor_s_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset decoder SubGhzProtocolDecoderNiceFlorS.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNiceFlorS instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_nice_flor_s_reset(void* context);
|
void subghz_protocol_decoder_nice_flor_s_reset(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a raw sequence of levels and durations received from the air.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNiceFlorS instance
|
||||||
|
* @param level Signal level true-high false-low
|
||||||
|
* @param duration Duration of this level in, us
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_nice_flor_s_feed(void* context, bool level, uint32_t duration);
|
void subghz_protocol_decoder_nice_flor_s_feed(void* context, bool level, uint32_t duration);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the hash sum of the last randomly received parcel.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNiceFlorS instance
|
||||||
|
* @return hash Hash sum
|
||||||
|
*/
|
||||||
uint8_t subghz_protocol_decoder_nice_flor_s_get_hash_data(void* context);
|
uint8_t subghz_protocol_decoder_nice_flor_s_get_hash_data(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serialize data SubGhzProtocolDecoderNiceFlorS.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNiceFlorS instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @param frequency The frequency at which the signal was received, Hz
|
||||||
|
* @param preset The modulation on which the signal was received, FuriHalSubGhzPreset
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_nice_flor_s_serialize(
|
bool subghz_protocol_decoder_nice_flor_s_serialize(
|
||||||
void* context,
|
void* context,
|
||||||
FlipperFormat* flipper_format,
|
FlipperFormat* flipper_format,
|
||||||
uint32_t frequency,
|
uint32_t frequency,
|
||||||
FuriHalSubGhzPreset preset);
|
FuriHalSubGhzPreset preset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize data SubGhzProtocolDecoderNiceFlorS.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNiceFlorS instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_nice_flor_s_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_decoder_nice_flor_s_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting a textual representation of the received data.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderNiceFlorS instance
|
||||||
|
* @param output Resulting text
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_nice_flor_s_get_string(void* context, string_t output);
|
void subghz_protocol_decoder_nice_flor_s_get_string(void* context, string_t output);
|
||||||
|
@ -98,6 +98,11 @@ void subghz_protocol_encoder_princeton_free(void* context) {
|
|||||||
free(instance);
|
free(instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generating an upload from data.
|
||||||
|
* @param instance Pointer to a SubGhzProtocolEncoderPrinceton instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
static bool
|
static bool
|
||||||
subghz_protocol_encoder_princeton_get_upload(SubGhzProtocolEncoderPrinceton* instance) {
|
subghz_protocol_encoder_princeton_get_upload(SubGhzProtocolEncoderPrinceton* instance) {
|
||||||
furi_assert(instance);
|
furi_assert(instance);
|
||||||
|
@ -11,20 +11,99 @@ extern const SubGhzProtocolDecoder subghz_protocol_princeton_decoder;
|
|||||||
extern const SubGhzProtocolEncoder subghz_protocol_princeton_encoder;
|
extern const SubGhzProtocolEncoder subghz_protocol_princeton_encoder;
|
||||||
extern const SubGhzProtocol subghz_protocol_princeton;
|
extern const SubGhzProtocol subghz_protocol_princeton;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolEncoderPrinceton.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolEncoderPrinceton* pointer to a SubGhzProtocolEncoderPrinceton instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_encoder_princeton_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_encoder_princeton_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolEncoderPrinceton.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderPrinceton instance
|
||||||
|
*/
|
||||||
void subghz_protocol_encoder_princeton_free(void* context);
|
void subghz_protocol_encoder_princeton_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize and generating an upload to send.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderPrinceton instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_encoder_princeton_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_encoder_princeton_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forced transmission stop.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderPrinceton instance
|
||||||
|
*/
|
||||||
void subghz_protocol_encoder_princeton_stop(void* context);
|
void subghz_protocol_encoder_princeton_stop(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the level and duration of the upload to be loaded into DMA.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderPrinceton instance
|
||||||
|
* @return LevelDuration
|
||||||
|
*/
|
||||||
LevelDuration subghz_protocol_encoder_princeton_yield(void* context);
|
LevelDuration subghz_protocol_encoder_princeton_yield(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolDecoderPrinceton.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolDecoderPrinceton* pointer to a SubGhzProtocolDecoderPrinceton instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_decoder_princeton_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_decoder_princeton_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolDecoderPrinceton.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderPrinceton instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_princeton_free(void* context);
|
void subghz_protocol_decoder_princeton_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset decoder SubGhzProtocolDecoderPrinceton.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderPrinceton instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_princeton_reset(void* context);
|
void subghz_protocol_decoder_princeton_reset(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a raw sequence of levels and durations received from the air.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderPrinceton instance
|
||||||
|
* @param level Signal level true-high false-low
|
||||||
|
* @param duration Duration of this level in, us
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_princeton_feed(void* context, bool level, uint32_t duration);
|
void subghz_protocol_decoder_princeton_feed(void* context, bool level, uint32_t duration);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the hash sum of the last randomly received parcel.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderPrinceton instance
|
||||||
|
* @return hash Hash sum
|
||||||
|
*/
|
||||||
uint8_t subghz_protocol_decoder_princeton_get_hash_data(void* context);
|
uint8_t subghz_protocol_decoder_princeton_get_hash_data(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serialize data SubGhzProtocolDecoderPrinceton.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderPrinceton instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @param frequency The frequency at which the signal was received, Hz
|
||||||
|
* @param preset The modulation on which the signal was received, FuriHalSubGhzPreset
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_princeton_serialize(
|
bool subghz_protocol_decoder_princeton_serialize(
|
||||||
void* context,
|
void* context,
|
||||||
FlipperFormat* flipper_format,
|
FlipperFormat* flipper_format,
|
||||||
uint32_t frequency,
|
uint32_t frequency,
|
||||||
FuriHalSubGhzPreset preset);
|
FuriHalSubGhzPreset preset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize data SubGhzProtocolDecoderPrinceton.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderPrinceton instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_princeton_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_decoder_princeton_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting a textual representation of the received data.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderPrinceton instance
|
||||||
|
* @param output Resulting text
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_princeton_get_string(void* context, string_t output);
|
void subghz_protocol_decoder_princeton_get_string(void* context, string_t output);
|
||||||
|
@ -9,21 +9,29 @@ typedef struct SubGhzEncoderPrinceton SubGhzEncoderPrinceton;
|
|||||||
|
|
||||||
typedef void (*SubGhzDecoderPrincetonCallback)(SubGhzDecoderPrinceton* parser, void* context);
|
typedef void (*SubGhzDecoderPrincetonCallback)(SubGhzDecoderPrinceton* parser, void* context);
|
||||||
|
|
||||||
/** Allocate SubGhzEncoderPrinceton
|
/**
|
||||||
|
* Allocate SubGhzEncoderPrinceton
|
||||||
* @return pointer to SubGhzEncoderPrinceton instance
|
* @return pointer to SubGhzEncoderPrinceton instance
|
||||||
*/
|
*/
|
||||||
SubGhzEncoderPrinceton* subghz_encoder_princeton_for_testing_alloc();
|
SubGhzEncoderPrinceton* subghz_encoder_princeton_for_testing_alloc();
|
||||||
|
|
||||||
/** Free SubGhzEncoderPrinceton instance
|
/**
|
||||||
|
* Free SubGhzEncoderPrinceton instance
|
||||||
* @param instance - SubGhzEncoderPrinceton instance
|
* @param instance - SubGhzEncoderPrinceton instance
|
||||||
*/
|
*/
|
||||||
void subghz_encoder_princeton_for_testing_free(SubGhzEncoderPrinceton* instance);
|
void subghz_encoder_princeton_for_testing_free(SubGhzEncoderPrinceton* instance);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forced transmission stop.
|
||||||
|
* @param instance Pointer to a SubGhzEncoderPrinceton instance
|
||||||
|
* @param time_stop Transmission stop time, ms
|
||||||
|
*/
|
||||||
void subghz_encoder_princeton_for_testing_stop(
|
void subghz_encoder_princeton_for_testing_stop(
|
||||||
SubGhzEncoderPrinceton* instance,
|
SubGhzEncoderPrinceton* instance,
|
||||||
uint32_t time_stop);
|
uint32_t time_stop);
|
||||||
|
|
||||||
/** Set new encoder params
|
/**
|
||||||
|
* Set new encoder params
|
||||||
* @param instance - SubGhzEncoderPrinceton instance
|
* @param instance - SubGhzEncoderPrinceton instance
|
||||||
* @param key - 24bit key
|
* @param key - 24bit key
|
||||||
* @param repeat - how many times to repeat
|
* @param repeat - how many times to repeat
|
||||||
@ -35,31 +43,34 @@ void subghz_encoder_princeton_for_testing_set(
|
|||||||
size_t repeat,
|
size_t repeat,
|
||||||
uint32_t frequency);
|
uint32_t frequency);
|
||||||
|
|
||||||
/** Get repeat count left
|
/**
|
||||||
|
* Get repeat count left
|
||||||
* @param instance - SubGhzEncoderPrinceton instance
|
* @param instance - SubGhzEncoderPrinceton instance
|
||||||
* @return repeat count left
|
* @return repeat count left
|
||||||
*/
|
*/
|
||||||
size_t subghz_encoder_princeton_for_testing_get_repeat_left(SubGhzEncoderPrinceton* instance);
|
size_t subghz_encoder_princeton_for_testing_get_repeat_left(SubGhzEncoderPrinceton* instance);
|
||||||
|
|
||||||
/** Print encoder log
|
/**
|
||||||
|
* Print encoder log
|
||||||
* @param instance - SubGhzEncoderPrinceton instance
|
* @param instance - SubGhzEncoderPrinceton instance
|
||||||
*/
|
*/
|
||||||
void subghz_encoder_princeton_for_testing_print_log(void* context);
|
void subghz_encoder_princeton_for_testing_print_log(void* context);
|
||||||
|
|
||||||
/** Get level duration
|
/**
|
||||||
|
* Get level duration
|
||||||
* @param instance - SubGhzEncoderPrinceton instance
|
* @param instance - SubGhzEncoderPrinceton instance
|
||||||
* @return level duration
|
* @return level duration
|
||||||
*/
|
*/
|
||||||
LevelDuration subghz_encoder_princeton_for_testing_yield(void* context);
|
LevelDuration subghz_encoder_princeton_for_testing_yield(void* context);
|
||||||
|
|
||||||
/** Allocate SubGhzDecoderPrinceton
|
/**
|
||||||
*
|
* Allocate SubGhzDecoderPrinceton
|
||||||
* @return SubGhzDecoderPrinceton*
|
* @return SubGhzDecoderPrinceton*
|
||||||
*/
|
*/
|
||||||
SubGhzDecoderPrinceton* subghz_decoder_princeton_for_testing_alloc();
|
SubGhzDecoderPrinceton* subghz_decoder_princeton_for_testing_alloc();
|
||||||
|
|
||||||
/** Free SubGhzDecoderPrinceton
|
/**
|
||||||
*
|
* Free SubGhzDecoderPrinceton
|
||||||
* @param instance
|
* @param instance
|
||||||
*/
|
*/
|
||||||
void subghz_decoder_princeton_for_testing_free(SubGhzDecoderPrinceton* instance);
|
void subghz_decoder_princeton_for_testing_free(SubGhzDecoderPrinceton* instance);
|
||||||
@ -69,13 +80,14 @@ void subghz_decoder_princeton_for_testing_set_callback(
|
|||||||
SubGhzDecoderPrincetonCallback callback,
|
SubGhzDecoderPrincetonCallback callback,
|
||||||
void* context);
|
void* context);
|
||||||
|
|
||||||
/** Reset internal state
|
/**
|
||||||
|
* Reset internal state
|
||||||
* @param instance - SubGhzDecoderPrinceton instance
|
* @param instance - SubGhzDecoderPrinceton instance
|
||||||
*/
|
*/
|
||||||
void subghz_decoder_princeton_for_testing_reset(SubGhzDecoderPrinceton* instance);
|
void subghz_decoder_princeton_for_testing_reset(SubGhzDecoderPrinceton* instance);
|
||||||
|
|
||||||
/** Parse accepted duration
|
/**
|
||||||
*
|
* Parse accepted duration
|
||||||
* @param instance - SubGhzDecoderPrinceton instance
|
* @param instance - SubGhzDecoderPrinceton instance
|
||||||
* @param data - LevelDuration level_duration
|
* @param data - LevelDuration level_duration
|
||||||
*/
|
*/
|
||||||
|
@ -13,28 +13,121 @@ extern const SubGhzProtocolDecoder subghz_protocol_raw_decoder;
|
|||||||
extern const SubGhzProtocolEncoder subghz_protocol_raw_encoder;
|
extern const SubGhzProtocolEncoder subghz_protocol_raw_encoder;
|
||||||
extern const SubGhzProtocol subghz_protocol_raw;
|
extern const SubGhzProtocol subghz_protocol_raw;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Open file for writing
|
||||||
|
* @param instance Pointer to a SubGhzProtocolDecoderRAW instance
|
||||||
|
* @param dev_name File name
|
||||||
|
* @param frequency The frequency at which the signal was received, Hz
|
||||||
|
* @param preset The modulation on which the signal was received, FuriHalSubGhzPreset
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_raw_save_to_file_init(
|
bool subghz_protocol_raw_save_to_file_init(
|
||||||
SubGhzProtocolDecoderRAW* instance,
|
SubGhzProtocolDecoderRAW* instance,
|
||||||
const char* dev_name,
|
const char* dev_name,
|
||||||
uint32_t frequency,
|
uint32_t frequency,
|
||||||
FuriHalSubGhzPreset preset);
|
FuriHalSubGhzPreset preset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stop writing file to flash
|
||||||
|
* @param instance Pointer to a SubGhzProtocolDecoderRAW instance
|
||||||
|
*/
|
||||||
void subghz_protocol_raw_save_to_file_stop(SubGhzProtocolDecoderRAW* instance);
|
void subghz_protocol_raw_save_to_file_stop(SubGhzProtocolDecoderRAW* instance);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the number of samples received SubGhzProtocolDecoderRAW.
|
||||||
|
* @param instance Pointer to a SubGhzProtocolDecoderRAW instance
|
||||||
|
* @return count of samples
|
||||||
|
*/
|
||||||
size_t subghz_protocol_raw_get_sample_write(SubGhzProtocolDecoderRAW* instance);
|
size_t subghz_protocol_raw_get_sample_write(SubGhzProtocolDecoderRAW* instance);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolDecoderRAW.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolDecoderRAW* pointer to a SubGhzProtocolDecoderRAW instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_decoder_raw_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_decoder_raw_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolDecoderRAW.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderRAW instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_raw_free(void* context);
|
void subghz_protocol_decoder_raw_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset decoder SubGhzProtocolDecoderRAW.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderRAW instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_raw_reset(void* context);
|
void subghz_protocol_decoder_raw_reset(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a raw sequence of levels and durations received from the air.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderRAW instance
|
||||||
|
* @param level Signal level true-high false-low
|
||||||
|
* @param duration Duration of this level in, us
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_raw_feed(void* context, bool level, uint32_t duration);
|
void subghz_protocol_decoder_raw_feed(void* context, bool level, uint32_t duration);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting a textual representation of the received data.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderRAW instance
|
||||||
|
* @param output Resulting text
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_raw_get_string(void* context, string_t output);
|
void subghz_protocol_decoder_raw_get_string(void* context, string_t output);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolEncoderRAW.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolEncoderRAW* pointer to a SubGhzProtocolEncoderRAW instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_encoder_raw_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_encoder_raw_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolEncoderRAW.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderRAW instance
|
||||||
|
*/
|
||||||
void subghz_protocol_encoder_raw_free(void* context);
|
void subghz_protocol_encoder_raw_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forced transmission stop.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderRAW instance
|
||||||
|
*/
|
||||||
void subghz_protocol_encoder_raw_stop(void* context);
|
void subghz_protocol_encoder_raw_stop(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Сallback on completion of file transfer.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderRAW instance
|
||||||
|
*/
|
||||||
void subghz_protocol_raw_file_encoder_worker_callback_end(void* context);
|
void subghz_protocol_raw_file_encoder_worker_callback_end(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set callback on completion of file transfer.
|
||||||
|
* @param instance Pointer to a SubGhzProtocolEncoderRAW instance
|
||||||
|
* @param callback_end Callback, SubGhzProtocolEncoderRAWCallbackEnd
|
||||||
|
* @param context_end Context
|
||||||
|
*/
|
||||||
void subghz_protocol_raw_file_encoder_worker_set_callback_end(
|
void subghz_protocol_raw_file_encoder_worker_set_callback_end(
|
||||||
SubGhzProtocolEncoderRAW* instance,
|
SubGhzProtocolEncoderRAW* instance,
|
||||||
SubGhzProtocolEncoderRAWCallbackEnd callback_end,
|
SubGhzProtocolEncoderRAWCallbackEnd callback_end,
|
||||||
void* context_end);
|
void* context_end);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* File generation for RAW work.
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @param file_name File name
|
||||||
|
*/
|
||||||
void subghz_protocol_raw_gen_fff_data(FlipperFormat* flipper_format, const char* file_name);
|
void subghz_protocol_raw_gen_fff_data(FlipperFormat* flipper_format, const char* file_name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize and generating an upload to send.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderRAW instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_encoder_raw_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_encoder_raw_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the level and duration of the upload to be loaded into DMA.
|
||||||
|
* @param context Pointer to a SubGhzProtocolEncoderRAW instance
|
||||||
|
* @return LevelDuration
|
||||||
|
*/
|
||||||
LevelDuration subghz_protocol_encoder_raw_yield(void* context);
|
LevelDuration subghz_protocol_encoder_raw_yield(void* context);
|
||||||
|
@ -2,8 +2,22 @@
|
|||||||
|
|
||||||
#include "../types.h"
|
#include "../types.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registration by name SubGhzProtocol.
|
||||||
|
* @param name Protocol name
|
||||||
|
* @return SubGhzProtocol* pointer to a SubGhzProtocol instance
|
||||||
|
*/
|
||||||
const SubGhzProtocol* subghz_protocol_registry_get_by_name(const char* name);
|
const SubGhzProtocol* subghz_protocol_registry_get_by_name(const char* name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registration protocol by index in array SubGhzProtocol.
|
||||||
|
* @param index Protocol by index in array
|
||||||
|
* @return SubGhzProtocol* pointer to a SubGhzProtocol instance
|
||||||
|
*/
|
||||||
const SubGhzProtocol* subghz_protocol_registry_get_by_index(size_t index);
|
const SubGhzProtocol* subghz_protocol_registry_get_by_index(size_t index);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the number of registered protocols.
|
||||||
|
* @return Number of protocols
|
||||||
|
*/
|
||||||
size_t subghz_protocol_registry_count();
|
size_t subghz_protocol_registry_count();
|
||||||
|
@ -200,9 +200,10 @@ void subghz_protocol_decoder_scher_khan_feed(void* context, bool level, uint32_t
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Analysis of received data
|
/**
|
||||||
*
|
* Analysis of received data
|
||||||
* @param instance SubGhzProtocolScherKhan instance
|
* @param instance Pointer to a SubGhzBlockGeneric* instance
|
||||||
|
* @param protocol_name
|
||||||
*/
|
*/
|
||||||
static void subghz_protocol_scher_khan_check_remote_controller(
|
static void subghz_protocol_scher_khan_check_remote_controller(
|
||||||
SubGhzBlockGeneric* instance,
|
SubGhzBlockGeneric* instance,
|
||||||
|
@ -11,15 +11,65 @@ extern const SubGhzProtocolDecoder subghz_protocol_scher_khan_decoder;
|
|||||||
extern const SubGhzProtocolEncoder subghz_protocol_scher_khan_encoder;
|
extern const SubGhzProtocolEncoder subghz_protocol_scher_khan_encoder;
|
||||||
extern const SubGhzProtocol subghz_protocol_scher_khan;
|
extern const SubGhzProtocol subghz_protocol_scher_khan;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolDecoderScherKhan.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolDecoderScherKhan* pointer to a SubGhzProtocolDecoderScherKhan instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_decoder_scher_khan_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_decoder_scher_khan_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolDecoderScherKhan.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderScherKhan instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_scher_khan_free(void* context);
|
void subghz_protocol_decoder_scher_khan_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset decoder SubGhzProtocolDecoderScherKhan.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderScherKhan instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_scher_khan_reset(void* context);
|
void subghz_protocol_decoder_scher_khan_reset(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a raw sequence of levels and durations received from the air.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderScherKhan instance
|
||||||
|
* @param level Signal level true-high false-low
|
||||||
|
* @param duration Duration of this level in, us
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_scher_khan_feed(void* context, bool level, uint32_t duration);
|
void subghz_protocol_decoder_scher_khan_feed(void* context, bool level, uint32_t duration);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the hash sum of the last randomly received parcel.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderScherKhan instance
|
||||||
|
* @return hash Hash sum
|
||||||
|
*/
|
||||||
uint8_t subghz_protocol_decoder_scher_khan_get_hash_data(void* context);
|
uint8_t subghz_protocol_decoder_scher_khan_get_hash_data(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serialize data SubGhzProtocolDecoderScherKhan.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderScherKhan instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @param frequency The frequency at which the signal was received, Hz
|
||||||
|
* @param preset The modulation on which the signal was received, FuriHalSubGhzPreset
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_scher_khan_serialize(
|
bool subghz_protocol_decoder_scher_khan_serialize(
|
||||||
void* context,
|
void* context,
|
||||||
FlipperFormat* flipper_format,
|
FlipperFormat* flipper_format,
|
||||||
uint32_t frequency,
|
uint32_t frequency,
|
||||||
FuriHalSubGhzPreset preset);
|
FuriHalSubGhzPreset preset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize data SubGhzProtocolDecoderScherKhan.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderScherKhan instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_scher_khan_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_decoder_scher_khan_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting a textual representation of the received data.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderScherKhan instance
|
||||||
|
* @param output Resulting text
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_scher_khan_get_string(void* context, string_t output);
|
void subghz_protocol_decoder_scher_khan_get_string(void* context, string_t output);
|
||||||
|
@ -99,6 +99,11 @@ void subghz_protocol_decoder_somfy_keytis_reset(void* context) {
|
|||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Сhecksum calculation.
|
||||||
|
* @param data Вata for checksum calculation
|
||||||
|
* @return CRC
|
||||||
|
*/
|
||||||
static uint8_t subghz_protocol_somfy_keytis_crc(uint64_t data) {
|
static uint8_t subghz_protocol_somfy_keytis_crc(uint64_t data) {
|
||||||
uint8_t crc = 0;
|
uint8_t crc = 0;
|
||||||
data &= 0xFFF0FFFFFFFFFF;
|
data &= 0xFFF0FFFFFFFFFF;
|
||||||
@ -231,9 +236,9 @@ void subghz_protocol_decoder_somfy_keytis_feed(void* context, bool level, uint32
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Analysis of received data
|
/**
|
||||||
*
|
* Analysis of received data
|
||||||
* @param instance SubGhzProtocolSomfyKeytis instance
|
* @param instance Pointer to a SubGhzBlockGeneric* instance
|
||||||
*/
|
*/
|
||||||
static void subghz_protocol_somfy_keytis_check_remote_controller(SubGhzBlockGeneric* instance) {
|
static void subghz_protocol_somfy_keytis_check_remote_controller(SubGhzBlockGeneric* instance) {
|
||||||
//https://pushstack.wordpress.com/somfy-rts-protocol/
|
//https://pushstack.wordpress.com/somfy-rts-protocol/
|
||||||
@ -341,6 +346,10 @@ static void subghz_protocol_somfy_keytis_check_remote_controller(SubGhzBlockGene
|
|||||||
instance->serial = data & 0xFFFFFF;
|
instance->serial = data & 0xFFFFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get button name.
|
||||||
|
* @param btn Button number, 4 bit
|
||||||
|
*/
|
||||||
static const char* subghz_protocol_somfy_keytis_get_name_button(uint8_t btn) {
|
static const char* subghz_protocol_somfy_keytis_get_name_button(uint8_t btn) {
|
||||||
const char* name_btn[0x10] = {
|
const char* name_btn[0x10] = {
|
||||||
"Unknown",
|
"Unknown",
|
||||||
|
@ -11,15 +11,65 @@ extern const SubGhzProtocolDecoder subghz_protocol_somfy_keytis_decoder;
|
|||||||
extern const SubGhzProtocolEncoder subghz_protocol_somfy_keytis_encoder;
|
extern const SubGhzProtocolEncoder subghz_protocol_somfy_keytis_encoder;
|
||||||
extern const SubGhzProtocol subghz_protocol_somfy_keytis;
|
extern const SubGhzProtocol subghz_protocol_somfy_keytis;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolDecoderSomfyKeytis.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolDecoderSomfyKeytis* pointer to a SubGhzProtocolDecoderSomfyKeytis instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_decoder_somfy_keytis_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_decoder_somfy_keytis_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolDecoderSomfyKeytis.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderSomfyKeytis instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_somfy_keytis_free(void* context);
|
void subghz_protocol_decoder_somfy_keytis_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset decoder SubGhzProtocolDecoderSomfyKeytis.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderSomfyKeytis instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_somfy_keytis_reset(void* context);
|
void subghz_protocol_decoder_somfy_keytis_reset(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a raw sequence of levels and durations received from the air.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderSomfyKeytis instance
|
||||||
|
* @param level Signal level true-high false-low
|
||||||
|
* @param duration Duration of this level in, us
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_somfy_keytis_feed(void* context, bool level, uint32_t duration);
|
void subghz_protocol_decoder_somfy_keytis_feed(void* context, bool level, uint32_t duration);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the hash sum of the last randomly received parcel.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderSomfyKeytis instance
|
||||||
|
* @return hash Hash sum
|
||||||
|
*/
|
||||||
uint8_t subghz_protocol_decoder_somfy_keytis_get_hash_data(void* context);
|
uint8_t subghz_protocol_decoder_somfy_keytis_get_hash_data(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serialize data SubGhzProtocolDecoderSomfyKeytis.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderSomfyKeytis instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @param frequency The frequency at which the signal was received, Hz
|
||||||
|
* @param preset The modulation on which the signal was received, FuriHalSubGhzPreset
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_somfy_keytis_serialize(
|
bool subghz_protocol_decoder_somfy_keytis_serialize(
|
||||||
void* context,
|
void* context,
|
||||||
FlipperFormat* flipper_format,
|
FlipperFormat* flipper_format,
|
||||||
uint32_t frequency,
|
uint32_t frequency,
|
||||||
FuriHalSubGhzPreset preset);
|
FuriHalSubGhzPreset preset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize data SubGhzProtocolDecoderSomfyKeytis.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderSomfyKeytis instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_somfy_keytis_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_decoder_somfy_keytis_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting a textual representation of the received data.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderSomfyKeytis instance
|
||||||
|
* @param output Resulting text
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_somfy_keytis_get_string(void* context, string_t output);
|
void subghz_protocol_decoder_somfy_keytis_get_string(void* context, string_t output);
|
||||||
|
@ -98,6 +98,11 @@ void subghz_protocol_decoder_somfy_telis_reset(void* context) {
|
|||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Сhecksum calculation.
|
||||||
|
* @param data Вata for checksum calculation
|
||||||
|
* @return CRC
|
||||||
|
*/
|
||||||
static uint8_t subghz_protocol_somfy_telis_crc(uint64_t data) {
|
static uint8_t subghz_protocol_somfy_telis_crc(uint64_t data) {
|
||||||
uint8_t crc = 0;
|
uint8_t crc = 0;
|
||||||
data &= 0xFFF0FFFFFFFFFF;
|
data &= 0xFFF0FFFFFFFFFF;
|
||||||
@ -225,9 +230,9 @@ void subghz_protocol_decoder_somfy_telis_feed(void* context, bool level, uint32_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Analysis of received data
|
/**
|
||||||
*
|
* Analysis of received data
|
||||||
* @param instance SubGhzProtocolSomfyTelis instance
|
* @param instance Pointer to a SubGhzBlockGeneric* instance
|
||||||
*/
|
*/
|
||||||
static void subghz_protocol_somfy_telis_check_remote_controller(SubGhzBlockGeneric* instance) {
|
static void subghz_protocol_somfy_telis_check_remote_controller(SubGhzBlockGeneric* instance) {
|
||||||
//https://pushstack.wordpress.com/somfy-rts-protocol/
|
//https://pushstack.wordpress.com/somfy-rts-protocol/
|
||||||
@ -298,6 +303,10 @@ static void subghz_protocol_somfy_telis_check_remote_controller(SubGhzBlockGener
|
|||||||
instance->serial = data & 0xFFFFFF;
|
instance->serial = data & 0xFFFFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get button name.
|
||||||
|
* @param btn Button number, 4 bit
|
||||||
|
*/
|
||||||
static const char* subghz_protocol_somfy_telis_get_name_button(uint8_t btn) {
|
static const char* subghz_protocol_somfy_telis_get_name_button(uint8_t btn) {
|
||||||
const char* name_btn[0x10] = {
|
const char* name_btn[0x10] = {
|
||||||
"Unknown",
|
"Unknown",
|
||||||
|
@ -11,15 +11,65 @@ extern const SubGhzProtocolDecoder subghz_protocol_somfy_telis_decoder;
|
|||||||
extern const SubGhzProtocolEncoder subghz_protocol_somfy_telis_encoder;
|
extern const SubGhzProtocolEncoder subghz_protocol_somfy_telis_encoder;
|
||||||
extern const SubGhzProtocol subghz_protocol_somfy_telis;
|
extern const SubGhzProtocol subghz_protocol_somfy_telis;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolDecoderSomfyTelis.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolDecoderSomfyTelis* pointer to a SubGhzProtocolDecoderSomfyTelis instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_decoder_somfy_telis_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_decoder_somfy_telis_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolDecoderSomfyTelis.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderSomfyTelis instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_somfy_telis_free(void* context);
|
void subghz_protocol_decoder_somfy_telis_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset decoder SubGhzProtocolDecoderSomfyTelis.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderSomfyTelis instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_somfy_telis_reset(void* context);
|
void subghz_protocol_decoder_somfy_telis_reset(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a raw sequence of levels and durations received from the air.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderSomfyTelis instance
|
||||||
|
* @param level Signal level true-high false-low
|
||||||
|
* @param duration Duration of this level in, us
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_somfy_telis_feed(void* context, bool level, uint32_t duration);
|
void subghz_protocol_decoder_somfy_telis_feed(void* context, bool level, uint32_t duration);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the hash sum of the last randomly received parcel.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderSomfyTelis instance
|
||||||
|
* @return hash Hash sum
|
||||||
|
*/
|
||||||
uint8_t subghz_protocol_decoder_somfy_telis_get_hash_data(void* context);
|
uint8_t subghz_protocol_decoder_somfy_telis_get_hash_data(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serialize data SubGhzProtocolDecoderSomfyTelis.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderSomfyTelis instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @param frequency The frequency at which the signal was received, Hz
|
||||||
|
* @param preset The modulation on which the signal was received, FuriHalSubGhzPreset
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_somfy_telis_serialize(
|
bool subghz_protocol_decoder_somfy_telis_serialize(
|
||||||
void* context,
|
void* context,
|
||||||
FlipperFormat* flipper_format,
|
FlipperFormat* flipper_format,
|
||||||
uint32_t frequency,
|
uint32_t frequency,
|
||||||
FuriHalSubGhzPreset preset);
|
FuriHalSubGhzPreset preset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize data SubGhzProtocolDecoderSomfyTelis.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderSomfyTelis instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_somfy_telis_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_decoder_somfy_telis_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting a textual representation of the received data.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderSomfyTelis instance
|
||||||
|
* @param output Resulting text
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_somfy_telis_get_string(void* context, string_t output);
|
void subghz_protocol_decoder_somfy_telis_get_string(void* context, string_t output);
|
||||||
|
@ -181,6 +181,14 @@ void subghz_protocol_decoder_star_line_feed(void* context, bool level, uint32_t
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validation of decrypt data.
|
||||||
|
* @param instance Pointer to a SubGhzBlockGeneric instance
|
||||||
|
* @param decrypt Decrypd data
|
||||||
|
* @param btn Button number, 4 bit
|
||||||
|
* @param end_serial decrement the last 10 bits of the serial number
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
static inline bool subghz_protocol_star_line_check_decrypt(
|
static inline bool subghz_protocol_star_line_check_decrypt(
|
||||||
SubGhzBlockGeneric* instance,
|
SubGhzBlockGeneric* instance,
|
||||||
uint32_t decrypt,
|
uint32_t decrypt,
|
||||||
@ -194,11 +202,13 @@ static inline bool subghz_protocol_star_line_check_decrypt(
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Checking the accepted code against the database manafacture key
|
/**
|
||||||
*
|
* Checking the accepted code against the database manafacture key
|
||||||
* @param instance SubGhzProtocolStarLine instance
|
* @param instance Pointer to a SubGhzBlockGeneric* instance
|
||||||
* @param fix fix part of the parcel
|
* @param fix Fix part of the parcel
|
||||||
* @param hop hop encrypted part of the parcel
|
* @param hop Hop encrypted part of the parcel
|
||||||
|
* @param keystore Pointer to a SubGhzKeystore* instance
|
||||||
|
* @param manufacture_name
|
||||||
* @return true on successful search
|
* @return true on successful search
|
||||||
*/
|
*/
|
||||||
static uint8_t subghz_protocol_star_line_check_remote_controller_selector(
|
static uint8_t subghz_protocol_star_line_check_remote_controller_selector(
|
||||||
@ -279,9 +289,11 @@ static uint8_t subghz_protocol_star_line_check_remote_controller_selector(
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Analysis of received data
|
/**
|
||||||
*
|
* Analysis of received data
|
||||||
* @param instance SubGhzProtocolStarLine instance
|
* @param instance Pointer to a SubGhzBlockGeneric* instance
|
||||||
|
* @param keystore Pointer to a SubGhzKeystore* instance
|
||||||
|
* @param manufacture_name
|
||||||
*/
|
*/
|
||||||
static void subghz_protocol_star_line_check_remote_controller(
|
static void subghz_protocol_star_line_check_remote_controller(
|
||||||
SubGhzBlockGeneric* instance,
|
SubGhzBlockGeneric* instance,
|
||||||
|
@ -11,15 +11,65 @@ extern const SubGhzProtocolDecoder subghz_protocol_star_line_decoder;
|
|||||||
extern const SubGhzProtocolEncoder subghz_protocol_star_line_encoder;
|
extern const SubGhzProtocolEncoder subghz_protocol_star_line_encoder;
|
||||||
extern const SubGhzProtocol subghz_protocol_star_line;
|
extern const SubGhzProtocol subghz_protocol_star_line;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate SubGhzProtocolDecoderStarLine.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzProtocolDecoderStarLine* pointer to a SubGhzProtocolDecoderStarLine instance
|
||||||
|
*/
|
||||||
void* subghz_protocol_decoder_star_line_alloc(SubGhzEnvironment* environment);
|
void* subghz_protocol_decoder_star_line_alloc(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzProtocolDecoderStarLine.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderStarLine instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_star_line_free(void* context);
|
void subghz_protocol_decoder_star_line_free(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset decoder SubGhzProtocolDecoderStarLine.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderStarLine instance
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_star_line_reset(void* context);
|
void subghz_protocol_decoder_star_line_reset(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a raw sequence of levels and durations received from the air.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderStarLine instance
|
||||||
|
* @param level Signal level true-high false-low
|
||||||
|
* @param duration Duration of this level in, us
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_star_line_feed(void* context, bool level, uint32_t duration);
|
void subghz_protocol_decoder_star_line_feed(void* context, bool level, uint32_t duration);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the hash sum of the last randomly received parcel.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderStarLine instance
|
||||||
|
* @return hash Hash sum
|
||||||
|
*/
|
||||||
uint8_t subghz_protocol_decoder_star_line_get_hash_data(void* context);
|
uint8_t subghz_protocol_decoder_star_line_get_hash_data(void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serialize data SubGhzProtocolDecoderStarLine.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderStarLine instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @param frequency The frequency at which the signal was received, Hz
|
||||||
|
* @param preset The modulation on which the signal was received, FuriHalSubGhzPreset
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_star_line_serialize(
|
bool subghz_protocol_decoder_star_line_serialize(
|
||||||
void* context,
|
void* context,
|
||||||
FlipperFormat* flipper_format,
|
FlipperFormat* flipper_format,
|
||||||
uint32_t frequency,
|
uint32_t frequency,
|
||||||
FuriHalSubGhzPreset preset);
|
FuriHalSubGhzPreset preset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize data SubGhzProtocolDecoderStarLine.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderStarLine instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_protocol_decoder_star_line_deserialize(void* context, FlipperFormat* flipper_format);
|
bool subghz_protocol_decoder_star_line_deserialize(void* context, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting a textual representation of the received data.
|
||||||
|
* @param context Pointer to a SubGhzProtocolDecoderStarLine instance
|
||||||
|
* @param output Resulting text
|
||||||
|
*/
|
||||||
void subghz_protocol_decoder_star_line_get_string(void* context, string_t output);
|
void subghz_protocol_decoder_star_line_get_string(void* context, string_t output);
|
||||||
|
@ -19,7 +19,7 @@ struct SubGhzReceiver {
|
|||||||
void* context;
|
void* context;
|
||||||
};
|
};
|
||||||
|
|
||||||
SubGhzReceiver* subghz_receiver_alloc(SubGhzEnvironment* environment) {
|
SubGhzReceiver* subghz_receiver_alloc_init(SubGhzEnvironment* environment) {
|
||||||
SubGhzReceiver* instance = malloc(sizeof(SubGhzReceiver));
|
SubGhzReceiver* instance = malloc(sizeof(SubGhzReceiver));
|
||||||
SubGhzReceiverSlotArray_init(instance->slots);
|
SubGhzReceiverSlotArray_init(instance->slots);
|
||||||
|
|
||||||
|
@ -10,19 +10,56 @@ typedef void (*SubGhzReceiverCallback)(
|
|||||||
SubGhzProtocolDecoderBase* decoder_base,
|
SubGhzProtocolDecoderBase* decoder_base,
|
||||||
void* context);
|
void* context);
|
||||||
|
|
||||||
SubGhzReceiver* subghz_receiver_alloc(SubGhzEnvironment* environment);
|
/**
|
||||||
|
* Allocate and init SubGhzReceiver.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzReceiver* pointer to a SubGhzReceiver instance
|
||||||
|
*/
|
||||||
|
SubGhzReceiver* subghz_receiver_alloc_init(SubGhzEnvironment* environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzReceiver.
|
||||||
|
* @param instance Pointer to a SubGhzReceiver instance
|
||||||
|
*/
|
||||||
void subghz_receiver_free(SubGhzReceiver* instance);
|
void subghz_receiver_free(SubGhzReceiver* instance);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a raw sequence of levels and durations received from the air.
|
||||||
|
* @param instance Pointer to a SubGhzReceiver instance
|
||||||
|
* @param level Signal level true-high false-low
|
||||||
|
* @param duration Duration of this level in, us
|
||||||
|
*/
|
||||||
void subghz_receiver_decode(SubGhzReceiver* instance, bool level, uint32_t duration);
|
void subghz_receiver_decode(SubGhzReceiver* instance, bool level, uint32_t duration);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset decoder SubGhzReceiver.
|
||||||
|
* @param instance Pointer to a SubGhzReceiver instance
|
||||||
|
*/
|
||||||
void subghz_receiver_reset(SubGhzReceiver* instance);
|
void subghz_receiver_reset(SubGhzReceiver* instance);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set a callback upon completion of successful decoding of one of the protocols.
|
||||||
|
* @param instance Pointer to a SubGhzReceiver instance
|
||||||
|
* @param callback Callback, SubGhzReceiverCallback
|
||||||
|
* @param context Context
|
||||||
|
*/
|
||||||
void subghz_receiver_set_rx_callback(
|
void subghz_receiver_set_rx_callback(
|
||||||
SubGhzReceiver* instance,
|
SubGhzReceiver* instance,
|
||||||
SubGhzReceiverCallback callback,
|
SubGhzReceiverCallback callback,
|
||||||
void* context);
|
void* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the filter of receivers that will work at the moment.
|
||||||
|
* @param instance Pointer to a SubGhzReceiver instance
|
||||||
|
* @param filter Filter, SubGhzProtocolFlag
|
||||||
|
*/
|
||||||
void subghz_receiver_set_filter(SubGhzReceiver* instance, SubGhzProtocolFlag filter);
|
void subghz_receiver_set_filter(SubGhzReceiver* instance, SubGhzProtocolFlag filter);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Search for a cattery by his name.
|
||||||
|
* @param instance Pointer to a SubGhzReceiver instance
|
||||||
|
* @param decoder_name Receiver name
|
||||||
|
* @return SubGhzProtocolDecoderBase* pointer to a SubGhzProtocolDecoderBase instance
|
||||||
|
*/
|
||||||
SubGhzProtocolDecoderBase*
|
SubGhzProtocolDecoderBase*
|
||||||
subghz_receiver_search_decoder_base_by_name(SubGhzReceiver* instance, const char* decoder_name);
|
subghz_receiver_search_decoder_base_by_name(SubGhzReceiver* instance, const char* decoder_name);
|
||||||
|
@ -6,8 +6,8 @@ typedef void (*SubGhzFileEncoderWorkerCallbackEnd)(void* context);
|
|||||||
|
|
||||||
typedef struct SubGhzFileEncoderWorker SubGhzFileEncoderWorker;
|
typedef struct SubGhzFileEncoderWorker SubGhzFileEncoderWorker;
|
||||||
|
|
||||||
/** End callback SubGhzWorker
|
/**
|
||||||
*
|
* End callback SubGhzWorker.
|
||||||
* @param instance SubGhzFileEncoderWorker instance
|
* @param instance SubGhzFileEncoderWorker instance
|
||||||
* @param callback SubGhzFileEncoderWorkerCallbackEnd callback
|
* @param callback SubGhzFileEncoderWorkerCallbackEnd callback
|
||||||
*/
|
*/
|
||||||
@ -16,36 +16,41 @@ void subghz_file_encoder_worker_callback_end(
|
|||||||
SubGhzFileEncoderWorkerCallbackEnd callback_end,
|
SubGhzFileEncoderWorkerCallbackEnd callback_end,
|
||||||
void* context_end);
|
void* context_end);
|
||||||
|
|
||||||
/** Allocate SubGhzFileEncoderWorker
|
/**
|
||||||
*
|
* Allocate SubGhzFileEncoderWorker.
|
||||||
* @return SubGhzFileEncoderWorker*
|
* @return SubGhzFileEncoderWorker* pointer to a SubGhzFileEncoderWorker instance
|
||||||
*/
|
*/
|
||||||
SubGhzFileEncoderWorker* subghz_file_encoder_worker_alloc();
|
SubGhzFileEncoderWorker* subghz_file_encoder_worker_alloc();
|
||||||
|
|
||||||
/** Free SubGhzFileEncoderWorker
|
/**
|
||||||
*
|
* Free SubGhzFileEncoderWorker.
|
||||||
* @param instance SubGhzFileEncoderWorker instance
|
* @param instance Pointer to a SubGhzFileEncoderWorker instance
|
||||||
*/
|
*/
|
||||||
void subghz_file_encoder_worker_free(SubGhzFileEncoderWorker* instance);
|
void subghz_file_encoder_worker_free(SubGhzFileEncoderWorker* instance);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the level and duration of the upload to be loaded into DMA.
|
||||||
|
* @param context Pointer to a SubGhzFileEncoderWorker instance
|
||||||
|
* @return LevelDuration
|
||||||
|
*/
|
||||||
LevelDuration subghz_file_encoder_worker_get_level_duration(void* context);
|
LevelDuration subghz_file_encoder_worker_get_level_duration(void* context);
|
||||||
|
|
||||||
/** Start SubGhzFileEncoderWorker
|
/**
|
||||||
*
|
* Start SubGhzFileEncoderWorker.
|
||||||
* @param instance SubGhzFileEncoderWorker instance
|
* @param instance Pointer to a SubGhzFileEncoderWorker instance
|
||||||
* @return bool - true if ok
|
* @return bool - true if ok
|
||||||
*/
|
*/
|
||||||
bool subghz_file_encoder_worker_start(SubGhzFileEncoderWorker* instance, const char* file_path);
|
bool subghz_file_encoder_worker_start(SubGhzFileEncoderWorker* instance, const char* file_path);
|
||||||
|
|
||||||
/** Stop SubGhzFileEncoderWorker
|
/**
|
||||||
*
|
* Stop SubGhzFileEncoderWorker
|
||||||
* @param instance SubGhzFileEncoderWorker instance
|
* @param instance Pointer to a SubGhzFileEncoderWorker instance
|
||||||
*/
|
*/
|
||||||
void subghz_file_encoder_worker_stop(SubGhzFileEncoderWorker* instance);
|
void subghz_file_encoder_worker_stop(SubGhzFileEncoderWorker* instance);
|
||||||
|
|
||||||
/** Check if worker is running
|
/**
|
||||||
*
|
* Check if worker is running
|
||||||
* @param instance SubGhzFileEncoderWorker instance
|
* @param instance Pointer to a SubGhzFileEncoderWorker instance
|
||||||
* @return bool - true if running
|
* @return bool - true if running
|
||||||
*/
|
*/
|
||||||
bool subghz_file_encoder_worker_is_running(SubGhzFileEncoderWorker* instance);
|
bool subghz_file_encoder_worker_is_running(SubGhzFileEncoderWorker* instance);
|
||||||
|
@ -16,54 +16,57 @@ ARRAY_DEF(SubGhzKeyArray, SubGhzKey, M_POD_OPLIST)
|
|||||||
|
|
||||||
typedef struct SubGhzKeystore SubGhzKeystore;
|
typedef struct SubGhzKeystore SubGhzKeystore;
|
||||||
|
|
||||||
/** Allocate SubGhzKeystore
|
/**
|
||||||
*
|
* Allocate SubGhzKeystore.
|
||||||
* @return SubGhzKeystore*
|
* @return SubGhzKeystore* pointer to a SubGhzKeystore instance
|
||||||
*/
|
*/
|
||||||
SubGhzKeystore* subghz_keystore_alloc();
|
SubGhzKeystore* subghz_keystore_alloc();
|
||||||
|
|
||||||
/** Free SubGhzKeystore
|
/**
|
||||||
*
|
* Free SubGhzKeystore.
|
||||||
* @param instance
|
* @param instance Pointer to a SubGhzKeystore instance
|
||||||
*/
|
*/
|
||||||
void subghz_keystore_free(SubGhzKeystore* instance);
|
void subghz_keystore_free(SubGhzKeystore* instance);
|
||||||
|
|
||||||
/** Loading manufacture key from file
|
/**
|
||||||
*
|
* Loading manufacture key from file
|
||||||
* @param instance - SubGhzKeystore instance
|
* @param instance Pointer to a SubGhzKeystore instance
|
||||||
* @param filename - const char* full path to the file
|
* @param filename Full path to the file
|
||||||
*/
|
*/
|
||||||
bool subghz_keystore_load(SubGhzKeystore* instance, const char* filename);
|
bool subghz_keystore_load(SubGhzKeystore* instance, const char* filename);
|
||||||
|
|
||||||
/** Save manufacture key to file
|
/**
|
||||||
*
|
* Save manufacture key to file
|
||||||
* @param instance - SubGhzKeystore instance
|
* @param instance Pointer to a SubGhzKeystore instance
|
||||||
* @param filename - const char* full path to the file
|
* @param filename Full path to the file
|
||||||
|
* @return true On success
|
||||||
*/
|
*/
|
||||||
bool subghz_keystore_save(SubGhzKeystore* instance, const char* filename, uint8_t* iv);
|
bool subghz_keystore_save(SubGhzKeystore* instance, const char* filename, uint8_t* iv);
|
||||||
|
|
||||||
/** Get array of keys and names manufacture
|
/**
|
||||||
*
|
* Get array of keys and names manufacture
|
||||||
* @param instance - SubGhzKeystore instance
|
* @param instance Pointer to a SubGhzKeystore instance
|
||||||
* @return SubGhzKeyArray_t*
|
* @return SubGhzKeyArray_t*
|
||||||
*/
|
*/
|
||||||
SubGhzKeyArray_t* subghz_keystore_get_data(SubGhzKeystore* instance);
|
SubGhzKeyArray_t* subghz_keystore_get_data(SubGhzKeystore* instance);
|
||||||
|
|
||||||
/** Save RAW encrypted to file
|
/**
|
||||||
*
|
* Save RAW encrypted to file
|
||||||
* @param input_file_name - const char* full path to the input file
|
* @param input_file_name Full path to the input file
|
||||||
* @param output_file_name - const char* full path to the output file
|
* @param output_file_name Full path to the output file
|
||||||
|
* @param iv IV, 16 bytes in hex
|
||||||
*/
|
*/
|
||||||
bool subghz_keystore_raw_encrypted_save(
|
bool subghz_keystore_raw_encrypted_save(
|
||||||
const char* input_file_name,
|
const char* input_file_name,
|
||||||
const char* output_file_name,
|
const char* output_file_name,
|
||||||
uint8_t* iv);
|
uint8_t* iv);
|
||||||
|
|
||||||
/** Get decrypt RAW data to file
|
/**
|
||||||
*
|
* Get decrypt RAW data to file
|
||||||
* @param file_name - const char* full path to the input file
|
* @param file_name Full path to the input file
|
||||||
* @param offset - offset from the start of the RAW data
|
* @param offset Offset from the start of the RAW data
|
||||||
* @param data - returned array
|
* @param data Returned array
|
||||||
* @param len - required data length
|
* @param len Required data length
|
||||||
|
* @return true On success
|
||||||
*/
|
*/
|
||||||
bool subghz_keystore_raw_get_data(const char* file_name, size_t offset, uint8_t* data, size_t len);
|
bool subghz_keystore_raw_get_data(const char* file_name, size_t offset, uint8_t* data, size_t len);
|
||||||
|
@ -12,34 +12,34 @@ typedef enum {
|
|||||||
SubGhzTxRxWorkerStatusRx,
|
SubGhzTxRxWorkerStatusRx,
|
||||||
} SubGhzTxRxWorkerStatus;
|
} SubGhzTxRxWorkerStatus;
|
||||||
|
|
||||||
/** SubGhzTxRxWorker, add data to transfer
|
/**
|
||||||
*
|
* SubGhzTxRxWorker, add data to transfer
|
||||||
* @param instance SubGhzTxRxWorker instance
|
* @param instance Pointer to a SubGhzTxRxWorker instance
|
||||||
* @param data *data
|
* @param data *data
|
||||||
* @param size data size
|
* @param size data size
|
||||||
* @return bool true if ok
|
* @return bool true if ok
|
||||||
*/
|
*/
|
||||||
bool subghz_tx_rx_worker_write(SubGhzTxRxWorker* instance, uint8_t* data, size_t size);
|
bool subghz_tx_rx_worker_write(SubGhzTxRxWorker* instance, uint8_t* data, size_t size);
|
||||||
|
|
||||||
/** SubGhzTxRxWorker, get available data
|
/**
|
||||||
*
|
* SubGhzTxRxWorker, get available data
|
||||||
* @param instance SubGhzTxRxWorker instance
|
* @param instance Pointer to a SubGhzTxRxWorker instance
|
||||||
* @return size_t data size
|
* @return size_t data size
|
||||||
*/
|
*/
|
||||||
size_t subghz_tx_rx_worker_available(SubGhzTxRxWorker* instance);
|
size_t subghz_tx_rx_worker_available(SubGhzTxRxWorker* instance);
|
||||||
|
|
||||||
/** SubGhzTxRxWorker, read data
|
/**
|
||||||
*
|
* SubGhzTxRxWorker, read data
|
||||||
* @param instance SubGhzTxRxWorker instance
|
* @param instance Pointer to a SubGhzTxRxWorker instance
|
||||||
* @param data *data
|
* @param data *data
|
||||||
* @param size max data size, which can be read
|
* @param size max data size, which can be read
|
||||||
* @return size_t data size, how much is actually read
|
* @return size_t data size, how much is actually read
|
||||||
*/
|
*/
|
||||||
size_t subghz_tx_rx_worker_read(SubGhzTxRxWorker* instance, uint8_t* data, size_t size);
|
size_t subghz_tx_rx_worker_read(SubGhzTxRxWorker* instance, uint8_t* data, size_t size);
|
||||||
|
|
||||||
/** Сallback SubGhzTxRxWorker when there is data to read in an empty buffer
|
/**
|
||||||
*
|
* Сallback SubGhzTxRxWorker when there is data to read in an empty buffer
|
||||||
* @param instance SubGhzTxRxWorker instance
|
* @param instance Pointer to a SubGhzTxRxWorker instance
|
||||||
* @param callback SubGhzTxRxWorkerCallbackHaveRead callback
|
* @param callback SubGhzTxRxWorkerCallbackHaveRead callback
|
||||||
* @param context
|
* @param context
|
||||||
*/
|
*/
|
||||||
@ -48,34 +48,34 @@ void subghz_tx_rx_worker_set_callback_have_read(
|
|||||||
SubGhzTxRxWorkerCallbackHaveRead callback,
|
SubGhzTxRxWorkerCallbackHaveRead callback,
|
||||||
void* context);
|
void* context);
|
||||||
|
|
||||||
/** Allocate SubGhzTxRxWorker
|
/**
|
||||||
*
|
* Allocate SubGhzTxRxWorker
|
||||||
* @return SubGhzTxRxWorker*
|
* @return SubGhzTxRxWorker* Pointer to a SubGhzTxRxWorker instance
|
||||||
*/
|
*/
|
||||||
SubGhzTxRxWorker* subghz_tx_rx_worker_alloc();
|
SubGhzTxRxWorker* subghz_tx_rx_worker_alloc();
|
||||||
|
|
||||||
/** Free SubGhzTxRxWorker
|
/**
|
||||||
*
|
* Free SubGhzTxRxWorker
|
||||||
* @param instance SubGhzTxRxWorker instance
|
* @param instance Pointer to a SubGhzTxRxWorker instance
|
||||||
*/
|
*/
|
||||||
void subghz_tx_rx_worker_free(SubGhzTxRxWorker* instance);
|
void subghz_tx_rx_worker_free(SubGhzTxRxWorker* instance);
|
||||||
|
|
||||||
/** Start SubGhzTxRxWorker
|
/**
|
||||||
*
|
* Start SubGhzTxRxWorker
|
||||||
* @param instance SubGhzTxRxWorker instance
|
* @param instance Pointer to a SubGhzTxRxWorker instance
|
||||||
* @return bool - true if ok
|
* @return bool - true if ok
|
||||||
*/
|
*/
|
||||||
bool subghz_tx_rx_worker_start(SubGhzTxRxWorker* instance, uint32_t frequency);
|
bool subghz_tx_rx_worker_start(SubGhzTxRxWorker* instance, uint32_t frequency);
|
||||||
|
|
||||||
/** Stop SubGhzTxRxWorker
|
/**
|
||||||
*
|
* Stop SubGhzTxRxWorker
|
||||||
* @param instance SubGhzTxRxWorker instance
|
* @param instance Pointer to a SubGhzTxRxWorker instance
|
||||||
*/
|
*/
|
||||||
void subghz_tx_rx_worker_stop(SubGhzTxRxWorker* instance);
|
void subghz_tx_rx_worker_stop(SubGhzTxRxWorker* instance);
|
||||||
|
|
||||||
/** Check if worker is running
|
/**
|
||||||
*
|
* Check if worker is running
|
||||||
* @param instance SubGhzTxRxWorker instance
|
* @param instance Pointer to a SubGhzTxRxWorker instance
|
||||||
* @return bool - true if running
|
* @return bool - true if running
|
||||||
*/
|
*/
|
||||||
bool subghz_tx_rx_worker_is_running(SubGhzTxRxWorker* instance);
|
bool subghz_tx_rx_worker_is_running(SubGhzTxRxWorker* instance);
|
||||||
|
@ -10,55 +10,55 @@ typedef void (*SubGhzWorkerPairCallback)(void* context, bool level, uint32_t dur
|
|||||||
|
|
||||||
void subghz_worker_rx_callback(bool level, uint32_t duration, void* context);
|
void subghz_worker_rx_callback(bool level, uint32_t duration, void* context);
|
||||||
|
|
||||||
/** Allocate SubGhzWorker
|
/**
|
||||||
*
|
* Allocate SubGhzWorker.
|
||||||
* @return SubGhzWorker*
|
* @return SubGhzWorker* Pointer to a SubGhzWorker instance
|
||||||
*/
|
*/
|
||||||
SubGhzWorker* subghz_worker_alloc();
|
SubGhzWorker* subghz_worker_alloc();
|
||||||
|
|
||||||
/** Free SubGhzWorker
|
/**
|
||||||
*
|
* Free SubGhzWorker.
|
||||||
* @param instance SubGhzWorker instance
|
* @param instance Pointer to a SubGhzWorker instance
|
||||||
*/
|
*/
|
||||||
void subghz_worker_free(SubGhzWorker* instance);
|
void subghz_worker_free(SubGhzWorker* instance);
|
||||||
|
|
||||||
/** Overrun callback SubGhzWorker
|
/**
|
||||||
*
|
* Overrun callback SubGhzWorker.
|
||||||
* @param instance SubGhzWorker instance
|
* @param instance Pointer to a SubGhzWorker instance
|
||||||
* @param callback SubGhzWorkerOverrunCallback callback
|
* @param callback SubGhzWorkerOverrunCallback callback
|
||||||
*/
|
*/
|
||||||
void subghz_worker_set_overrun_callback(
|
void subghz_worker_set_overrun_callback(
|
||||||
SubGhzWorker* instance,
|
SubGhzWorker* instance,
|
||||||
SubGhzWorkerOverrunCallback callback);
|
SubGhzWorkerOverrunCallback callback);
|
||||||
|
|
||||||
/** Pair callback SubGhzWorker
|
/**
|
||||||
*
|
* Pair callback SubGhzWorker.
|
||||||
* @param instance SubGhzWorker instance
|
* @param instance Pointer to a SubGhzWorker instance
|
||||||
* @param callback SubGhzWorkerOverrunCallback callback
|
* @param callback SubGhzWorkerOverrunCallback callback
|
||||||
*/
|
*/
|
||||||
void subghz_worker_set_pair_callback(SubGhzWorker* instance, SubGhzWorkerPairCallback callback);
|
void subghz_worker_set_pair_callback(SubGhzWorker* instance, SubGhzWorkerPairCallback callback);
|
||||||
|
|
||||||
/** Context callback SubGhzWorker
|
/**
|
||||||
*
|
* Context callback SubGhzWorker.
|
||||||
* @param instance SubGhzWorker instance
|
* @param instance Pointer to a SubGhzWorker instance
|
||||||
* @param context
|
* @param context
|
||||||
*/
|
*/
|
||||||
void subghz_worker_set_context(SubGhzWorker* instance, void* context);
|
void subghz_worker_set_context(SubGhzWorker* instance, void* context);
|
||||||
|
|
||||||
/** Start SubGhzWorker
|
/**
|
||||||
*
|
* Start SubGhzWorker.
|
||||||
* @param instance SubGhzWorker instance
|
* @param instance Pointer to a SubGhzWorker instance
|
||||||
*/
|
*/
|
||||||
void subghz_worker_start(SubGhzWorker* instance);
|
void subghz_worker_start(SubGhzWorker* instance);
|
||||||
|
|
||||||
/** Stop SubGhzWorker
|
/** Stop SubGhzWorker
|
||||||
*
|
* @param instance Pointer to a SubGhzWorker instance
|
||||||
* @param instance SubGhzWorker instance
|
|
||||||
*/
|
*/
|
||||||
void subghz_worker_stop(SubGhzWorker* instance);
|
void subghz_worker_stop(SubGhzWorker* instance);
|
||||||
|
|
||||||
/** Check if worker is running
|
/**
|
||||||
* @param instance SubGhzWorker instance
|
* Check if worker is running.
|
||||||
|
* @param instance Pointer to a SubGhzWorker instance
|
||||||
* @return bool - true if running
|
* @return bool - true if running
|
||||||
*/
|
*/
|
||||||
bool subghz_worker_is_running(SubGhzWorker* instance);
|
bool subghz_worker_is_running(SubGhzWorker* instance);
|
||||||
|
@ -11,13 +11,37 @@ struct SubGhzTransmitter {
|
|||||||
SubGhzProtocolEncoderBase* protocol_instance;
|
SubGhzProtocolEncoderBase* protocol_instance;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate and init SubGhzTransmitter.
|
||||||
|
* @param environment Pointer to a SubGhzEnvironment instance
|
||||||
|
* @return SubGhzTransmitter* pointer to a SubGhzTransmitter instance
|
||||||
|
*/
|
||||||
SubGhzTransmitter*
|
SubGhzTransmitter*
|
||||||
subghz_transmitter_alloc_init(SubGhzEnvironment* environment, const char* protocol_name);
|
subghz_transmitter_alloc_init(SubGhzEnvironment* environment, const char* protocol_name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free SubGhzTransmitter.
|
||||||
|
* @param instance Pointer to a SubGhzTransmitter instance
|
||||||
|
*/
|
||||||
void subghz_transmitter_free(SubGhzTransmitter* instance);
|
void subghz_transmitter_free(SubGhzTransmitter* instance);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forced transmission stop.
|
||||||
|
* @param instance Pointer to a SubGhzTransmitter instance
|
||||||
|
*/
|
||||||
bool subghz_transmitter_stop(SubGhzTransmitter* instance);
|
bool subghz_transmitter_stop(SubGhzTransmitter* instance);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deserialize and generating an upload to send.
|
||||||
|
* @param instance Pointer to a SubGhzTransmitter instance
|
||||||
|
* @param flipper_format Pointer to a FlipperFormat instance
|
||||||
|
* @return true On success
|
||||||
|
*/
|
||||||
bool subghz_transmitter_deserialize(SubGhzTransmitter* instance, FlipperFormat* flipper_format);
|
bool subghz_transmitter_deserialize(SubGhzTransmitter* instance, FlipperFormat* flipper_format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getting the level and duration of the upload to be loaded into DMA.
|
||||||
|
* @param context Pointer to a SubGhzTransmitter instance
|
||||||
|
* @return LevelDuration
|
||||||
|
*/
|
||||||
LevelDuration subghz_transmitter_yield(void* context);
|
LevelDuration subghz_transmitter_yield(void* context);
|
||||||
|
Loading…
Reference in New Issue
Block a user