stub out secure as its own feature
This commit is contained in:
		
							parent
							
								
									2c068d08dd
								
							
						
					
					
						commit
						89fab427c4
					
				
					 14 changed files with 204 additions and 5 deletions
				
			
		
							
								
								
									
										66
									
								
								quantum/secure.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								quantum/secure.c
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,66 @@ | |||
| // Copyright 2022 QMK
 | ||||
| // SPDX-License-Identifier: GPL-2.0-or-later
 | ||||
| 
 | ||||
| #include "secure.h" | ||||
| #include "timer.h" | ||||
| 
 | ||||
| #ifndef SECURE_UNLOCK_TIMEOUT | ||||
| #    define SECURE_UNLOCK_TIMEOUT 5000 | ||||
| #endif | ||||
| 
 | ||||
| #ifndef SECURE_IDLE_TIMEOUT | ||||
| #    define SECURE_IDLE_TIMEOUT 60000 | ||||
| #endif | ||||
| 
 | ||||
| secure_status_t secure_status = SECURE_LOCKED; | ||||
| static uint32_t unlock_time   = 0; | ||||
| static uint32_t idle_time     = 0; | ||||
| 
 | ||||
| secure_status_t secure_get_status(void) { | ||||
|     return secure_status; | ||||
| } | ||||
| 
 | ||||
| bool secure_is_unlocking(void) { | ||||
|     return secure_status == SECURE_PENDING; | ||||
| } | ||||
| 
 | ||||
| void secure_lock(void) { | ||||
|     secure_status = SECURE_LOCKED; | ||||
| } | ||||
| 
 | ||||
| void secure_unlock(void) { | ||||
|     secure_status = SECURE_UNLOCKED; | ||||
|     idle_time     = timer_read32(); | ||||
| } | ||||
| 
 | ||||
| void secure_request_unlock(void) { | ||||
|     if (secure_status == SECURE_LOCKED) { | ||||
|         secure_status = SECURE_PENDING; | ||||
|         unlock_time   = timer_read32(); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void secure_keypress_event(uint8_t row, uint8_t col) { | ||||
|     // TODO: check keypress is actually part of unlock sequence
 | ||||
|     secure_unlock(); | ||||
| } | ||||
| 
 | ||||
| void secure_task(void) { | ||||
| #if SECURE_UNLOCK_TIMEOUT != 0 | ||||
|     // handle unlock timeout
 | ||||
|     if (secure_status == SECURE_PENDING) { | ||||
|         if (timer_elapsed32(unlock_time) >= SECURE_UNLOCK_TIMEOUT) { | ||||
|             secure_lock(); | ||||
|         } | ||||
|     } | ||||
| #endif | ||||
| 
 | ||||
| #if SECURE_IDLE_TIMEOUT != 0 | ||||
|     // handle idle timeout
 | ||||
|     if (secure_status == SECURE_UNLOCKED) { | ||||
|         if (timer_elapsed32(idle_time) >= SECURE_IDLE_TIMEOUT) { | ||||
|             secure_lock(); | ||||
|         } | ||||
|     } | ||||
| #endif | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 zvecr
						zvecr