SubGhz: automatically select path based on frequency for static code emulation (#419)
This commit is contained in:
		
							parent
							
								
									239c174610
								
							
						
					
					
						commit
						1ae3bc1a2d
					
				| @ -6,6 +6,7 @@ | |||||||
| #include "subghz_static.h" | #include "subghz_static.h" | ||||||
| 
 | 
 | ||||||
| #include <furi.h> | #include <furi.h> | ||||||
|  | #include <api-hal.h> | ||||||
| #include <gui/gui.h> | #include <gui/gui.h> | ||||||
| #include <gui/view_dispatcher.h> | #include <gui/view_dispatcher.h> | ||||||
| #include <gui/modules/submenu.h> | #include <gui/modules/submenu.h> | ||||||
| @ -24,6 +25,20 @@ static const uint32_t subghz_frequencies[] = { | |||||||
|     925000000, |     925000000, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | static const ApiHalSubGhzPath subghz_frequencies_paths[] = { | ||||||
|  |     ApiHalSubGhzPath2, | ||||||
|  |     ApiHalSubGhzPath2, | ||||||
|  |     ApiHalSubGhzPath2, | ||||||
|  |     ApiHalSubGhzPath2, | ||||||
|  |     ApiHalSubGhzPath1, | ||||||
|  |     ApiHalSubGhzPath1, | ||||||
|  |     ApiHalSubGhzPath1, | ||||||
|  |     ApiHalSubGhzPath3, | ||||||
|  |     ApiHalSubGhzPath3, | ||||||
|  |     ApiHalSubGhzPath3, | ||||||
|  |     ApiHalSubGhzPath3, | ||||||
|  | }; | ||||||
|  | 
 | ||||||
| static const uint32_t subghz_frequencies_count = sizeof(subghz_frequencies) / sizeof(uint32_t); | static const uint32_t subghz_frequencies_count = sizeof(subghz_frequencies) / sizeof(uint32_t); | ||||||
| 
 | 
 | ||||||
| struct SubGhz { | struct SubGhz { | ||||||
|  | |||||||
| @ -22,6 +22,7 @@ typedef enum { | |||||||
| } SubghzStaticStatus; | } SubghzStaticStatus; | ||||||
| 
 | 
 | ||||||
| typedef struct { | typedef struct { | ||||||
|  |     uint8_t frequency; | ||||||
|     uint32_t real_frequency; |     uint32_t real_frequency; | ||||||
|     ApiHalSubGhzPath path; |     ApiHalSubGhzPath path; | ||||||
|     uint8_t button; |     uint8_t button; | ||||||
| @ -71,18 +72,28 @@ bool subghz_static_input(InputEvent* event, void* context) { | |||||||
| 
 | 
 | ||||||
|     with_view_model( |     with_view_model( | ||||||
|         subghz_static->view, (SubghzStaticModel * model) { |         subghz_static->view, (SubghzStaticModel * model) { | ||||||
|  |             bool reconfigure = false; | ||||||
|             if(event->type == InputTypeShort) { |             if(event->type == InputTypeShort) { | ||||||
|                 if(event->key == InputKeyLeft) { |                 if(event->key == InputKeyLeft) { | ||||||
|                     if(model->button > 0) model->button--; |                     if(model->frequency > 0) model->frequency--; | ||||||
|  |                     reconfigure = true; | ||||||
|                 } else if(event->key == InputKeyRight) { |                 } else if(event->key == InputKeyRight) { | ||||||
|                     if(model->button < 2) model->button++; |                     if(model->frequency < subghz_frequencies_count - 1) model->frequency++; | ||||||
| 
 |                     reconfigure = true; | ||||||
|                 } else if(event->key == InputKeyDown) { |                 } else if(event->key == InputKeyDown) { | ||||||
|                     if(model->path > 0) model->path--; |                     if(model->button > 0) model->button--; | ||||||
|                 } else if(event->key == InputKeyUp) { |                 } else if(event->key == InputKeyUp) { | ||||||
|                     if(model->path < ApiHalSubGhzPath3) model->path++; |                     if(model->button < 2) model->button++; | ||||||
|                 } |                 } | ||||||
|  |                 model->path = subghz_frequencies_paths[model->frequency]; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             if(reconfigure) { | ||||||
|  |                 api_hal_subghz_idle(); | ||||||
|  |                 model->real_frequency = | ||||||
|  |                     api_hal_subghz_set_frequency(subghz_frequencies[model->frequency]); | ||||||
|                 api_hal_subghz_set_path(model->path); |                 api_hal_subghz_set_path(model->path); | ||||||
|  |                 api_hal_subghz_tx(); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             if(event->key == InputKeyOk) { |             if(event->key == InputKeyOk) { | ||||||
| @ -138,9 +149,12 @@ void subghz_static_enter(void* context) { | |||||||
| 
 | 
 | ||||||
|     with_view_model( |     with_view_model( | ||||||
|         subghz_static->view, (SubghzStaticModel * model) { |         subghz_static->view, (SubghzStaticModel * model) { | ||||||
|             model->real_frequency = api_hal_subghz_set_frequency(433920000); |             model->frequency = 4; | ||||||
|             model->path = ApiHalSubGhzPathIsolate; // isolate
 |             model->real_frequency = | ||||||
|  |                 api_hal_subghz_set_frequency(subghz_frequencies[model->frequency]); | ||||||
|  |             model->path = subghz_frequencies_paths[model->frequency]; | ||||||
|             model->button = 0; |             model->button = 0; | ||||||
|  |             api_hal_subghz_set_path(model->path); | ||||||
|             return true; |             return true; | ||||||
|         }); |         }); | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 あく
						あく