55 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* TODO */
 | |
| 
 | |
| #include <ch.h>
 | |
| #include <hal.h>
 | |
| 
 | |
| #include "matrix.h"
 | |
| #include "action.h"
 | |
| #include "action_util.h"
 | |
| #include "mousekey.h"
 | |
| #include "programmable_button.h"
 | |
| #include "host.h"
 | |
| #include "suspend.h"
 | |
| #include "led.h"
 | |
| #include "wait.h"
 | |
| 
 | |
| /** \brief suspend power down
 | |
|  *
 | |
|  * FIXME: needs doc
 | |
|  */
 | |
| void suspend_power_down(void) {
 | |
|     suspend_power_down_quantum();
 | |
|     // on AVR, this enables the watchdog for 15ms (max), and goes to
 | |
|     // SLEEP_MODE_PWR_DOWN
 | |
| 
 | |
|     wait_ms(17);
 | |
| }
 | |
| 
 | |
| /** \brief suspend wakeup condition
 | |
|  *
 | |
|  * run immediately after wakeup
 | |
|  * FIXME: needs doc
 | |
|  */
 | |
| void suspend_wakeup_init(void) {
 | |
|     // clear keyboard state
 | |
|     // need to do it manually, because we're running from ISR
 | |
|     //  and clear_keyboard() calls print
 | |
|     // so only clear the variables in memory
 | |
|     // the reports will be sent from main.c afterwards
 | |
|     // or if the PC asks for GET_REPORT
 | |
|     clear_mods();
 | |
|     clear_weak_mods();
 | |
|     clear_keys();
 | |
| #ifdef MOUSEKEY_ENABLE
 | |
|     mousekey_clear();
 | |
| #endif /* MOUSEKEY_ENABLE */
 | |
| #ifdef PROGRAMMABLE_BUTTON_ENABLE
 | |
|     programmable_button_clear();
 | |
| #endif /* PROGRAMMABLE_BUTTON_ENABLE */
 | |
| #ifdef EXTRAKEY_ENABLE
 | |
|     host_system_send(0);
 | |
|     host_consumer_send(0);
 | |
| #endif /* EXTRAKEY_ENABLE */
 | |
| 
 | |
|     suspend_wakeup_init_quantum();
 | |
| }
 | 
