Input handling and debouncing (#148)
* Add input driver and definitions for target_f2 * Add input_dump example * Invert charge input * Fix back and left button configuration * remove input debug * input testing case * move header * lint code Co-authored-by: aanper <mail@s3f.ru>
This commit is contained in:
		
							
								
								
									
										40
									
								
								applications/input/input.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								applications/input/input.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
			
		||||
#ifndef __INPUT_H
 | 
			
		||||
#define __INPUT_H
 | 
			
		||||
 | 
			
		||||
#include <stdbool.h>
 | 
			
		||||
 | 
			
		||||
#define INPUT_COUNT 7
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    InputUp = 0,
 | 
			
		||||
    InputDown,
 | 
			
		||||
    InputRight,
 | 
			
		||||
    InputLeft,
 | 
			
		||||
    InputOk,
 | 
			
		||||
    InputBack,
 | 
			
		||||
    InputCharging,
 | 
			
		||||
} Input;
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    Input input;
 | 
			
		||||
    bool state;
 | 
			
		||||
} InputEvent;
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    bool up : 1;
 | 
			
		||||
    bool down : 1;
 | 
			
		||||
    bool right : 1;
 | 
			
		||||
    bool left : 1;
 | 
			
		||||
    bool ok : 1;
 | 
			
		||||
    bool back : 1;
 | 
			
		||||
    bool charging : 1;
 | 
			
		||||
} __attribute__((packed)) InputState;
 | 
			
		||||
 | 
			
		||||
#define _BITS2STATE(bits)                                                                        \
 | 
			
		||||
    {                                                                                            \
 | 
			
		||||
        .up = (((bits)&0x01) != 0), .down = (((bits)&0x02) != 0), .right = (((bits)&0x04) != 0), \
 | 
			
		||||
        .left = (((bits)&0x08) != 0), .ok = (((bits)&0x10) != 0), .back = (((bits)&0x20) != 0),  \
 | 
			
		||||
        .charging = (((bits)&0x40) != 0)                                                         \
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#endif /* __INPUT_H */
 | 
			
		||||
		Reference in New Issue
	
	Block a user