SubGhz: read and save static remotes. Create new static and dynamic remotes. (#646)
* SubGhz: the functions of saving loading KeeLog have been modified, saving KeeLog is prohibited * SubGhz: Fix displaying Nice FlorS in the Raed scene * SubGhz: Fix displaying Faac SLH in the Raed scene * SubGhz: Fix displaying iDo in the Raed scene * SubGhz: Fix displaying Star Line in the Raed scene * SubGhz: Fix displaying Nice Flo in the Raed scene, added save and load functions. (testing needed, no remote control) * SubGhz: subghz_beginadded common encoder upload signal * SubGhz: add Came encoder * SubGhz: modified pricenton encoder, fix view transmitter hide the "Send" button if there is no encoder * SubGhz: add nice flo encoder, need testing no remote control * SubGhz: add gate_tx encoder * SubGhz: add nero_sketch encoder * SubGhz: add keelog encoder * SubGhz: add long upload upload while the button is pressed while releasing the transfer is over, with a check for sticking (maximum 200 upload repetitions) * SubGhz: fix max upload * SubGhz: Fix structure subghz add encoder * SubGhz: add generating and sending a dynamic keelog key, refactoring the code * SubGhz: add notifications * SubGhz: add creating a new remote control (Pricenton, Nice Flo 12bit, Nice Flo 24bit, CAME 12bit, CAME 24bit, Gate TX, DoorHan) * SubGhz: Fix load file, fix scene start * Subghz: Fix show key * SubGhz: Fix subghz_cli * SubGhz: Fix furi-hal-subghz * Format sources * SubGhz: standard notification scheme, fix broken assert in DMA. * SubGhz: move level alignment logic to furi-hal-subghz, fix spelling, cleanup. Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
This commit is contained in:
		@@ -404,6 +404,7 @@ void furi_hal_subghz_stop_async_rx() {
 | 
			
		||||
 | 
			
		||||
#define API_HAL_SUBGHZ_ASYNC_TX_BUFFER_FULL (256)
 | 
			
		||||
#define API_HAL_SUBGHZ_ASYNC_TX_BUFFER_HALF (API_HAL_SUBGHZ_ASYNC_TX_BUFFER_FULL/2)
 | 
			
		||||
#define API_HAL_SUBGHZ_ASYNC_TX_GUARD_TIME  333
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    uint32_t* buffer;
 | 
			
		||||
@@ -416,16 +417,30 @@ static FuriHalSubGhzAsyncTx furi_hal_subghz_async_tx = {0};
 | 
			
		||||
 | 
			
		||||
static void furi_hal_subghz_async_tx_refill(uint32_t* buffer, size_t samples) {
 | 
			
		||||
    while (samples > 0) {
 | 
			
		||||
        bool is_odd = samples % 2;
 | 
			
		||||
        LevelDuration ld = furi_hal_subghz_async_tx.callback(furi_hal_subghz_async_tx.callback_context);
 | 
			
		||||
        if (level_duration_is_reset(ld)) {
 | 
			
		||||
            // One more even sample required to end at low level
 | 
			
		||||
            if (is_odd) {
 | 
			
		||||
                *buffer = API_HAL_SUBGHZ_ASYNC_TX_GUARD_TIME;
 | 
			
		||||
                buffer++;
 | 
			
		||||
                samples--;
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
        } else  {
 | 
			
		||||
        } else {
 | 
			
		||||
            // Inject guard time if level is incorrect
 | 
			
		||||
            if (is_odd == level_duration_get_level(ld)) {
 | 
			
		||||
                *buffer = API_HAL_SUBGHZ_ASYNC_TX_GUARD_TIME;
 | 
			
		||||
                buffer++;
 | 
			
		||||
                samples--;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            uint32_t duration = level_duration_get_duration(ld);
 | 
			
		||||
            assert(duration > 0);
 | 
			
		||||
            *buffer = duration;
 | 
			
		||||
            buffer++;
 | 
			
		||||
            samples--;
 | 
			
		||||
        }
 | 
			
		||||
        buffer++;
 | 
			
		||||
        samples--;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    memset(buffer, 0, samples * sizeof(uint32_t));
 | 
			
		||||
@@ -452,7 +467,6 @@ static void furi_hal_subghz_async_tx_timer_isr() {
 | 
			
		||||
            } else {
 | 
			
		||||
                furi_hal_subghz_state = SubGhzStateAsyncTxEnd;
 | 
			
		||||
                LL_TIM_DisableCounter(TIM2);
 | 
			
		||||
                hal_gpio_init(&gpio_cc1101_g0, GpioModeOutputPushPull, GpioPullDown, GpioSpeedLow);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user