[FL-1929, FL-2164] IR App migrate to FFF (#949)

* IR app move to FFF
* [FL-2164] Hide unimplemented submenus
* Fix brute force fail
* Fix FFF endless reading
* Reformat TV bruteforce lib to FFF
* fixes & cleanup
* Infrared: switch to constexpr.

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
This commit is contained in:
Albert Kharisov
2022-01-10 21:13:41 +04:00
committed by GitHub
parent 389ff92cc1
commit 990a065bd0
22 changed files with 1980 additions and 917 deletions

View File

@@ -9,21 +9,24 @@ public:
typedef struct {
size_t timings_cnt;
uint32_t* timings;
uint32_t frequency;
float duty_cycle;
} RawSignal;
private:
bool decoded;
bool raw_signal;
union {
IrdaMessage message;
RawSignal raw;
} payload;
void copy_timings(const uint32_t* timings, size_t size);
void
copy_raw_signal(const uint32_t* timings, size_t size, uint32_t frequency, float duty_cycle);
void clear_timings();
public:
IrdaAppSignal() {
decoded = true;
raw_signal = false;
payload.message.protocol = IrdaProtocolUnknown;
}
@@ -31,7 +34,11 @@ public:
clear_timings();
}
IrdaAppSignal(const uint32_t* timings, size_t timings_cnt);
IrdaAppSignal(
const uint32_t* timings,
size_t timings_cnt,
uint32_t frequency,
float duty_cycle);
IrdaAppSignal(const IrdaMessage* irda_message);
IrdaAppSignal(const IrdaAppSignal& other);
@@ -40,22 +47,22 @@ public:
IrdaAppSignal& operator=(const IrdaAppSignal& signal);
void set_message(const IrdaMessage* irda_message);
void set_raw_signal(uint32_t* timings, size_t timings_cnt);
void copy_raw_signal(uint32_t* timings, size_t timings_cnt);
void
set_raw_signal(uint32_t* timings, size_t timings_cnt, uint32_t frequency, float duty_cycle);
void transmit() const;
bool is_raw(void) const {
return !decoded;
return raw_signal;
}
const IrdaMessage& get_message(void) const {
furi_assert(decoded);
furi_assert(!raw_signal);
return payload.message;
}
const RawSignal& get_raw_signal(void) const {
furi_assert(!decoded);
furi_assert(raw_signal);
return payload.raw;
}
};