diff options
| author | Priyadi Iman Nurcahyo <priyadi@priyadi.net> | 2016-12-05 01:07:12 +0700 | 
|---|---|---|
| committer | Priyadi Iman Nurcahyo <priyadi@priyadi.net> | 2016-12-05 01:07:12 +0700 | 
| commit | 6ef3060b4292392be1455c26d260e819f7d12ef0 (patch) | |
| tree | b63180761ea05e6f6e257f2ce592011e1f8f48d4 /tmk_core/protocol | |
| parent | fc80aa9974faad146837cd26d9264b5a6c74dd4b (diff) | |
Implemented weak ps2_mouse_init_user()
There are a lot of PS/2 commands, some are vendor/device specific, so we
provide a weak ps2_mouse_init_user() to be implemented in each keyboard
that need it.
Diffstat (limited to 'tmk_core/protocol')
| -rw-r--r-- | tmk_core/protocol/ps2_mouse.c | 54 | ||||
| -rw-r--r-- | tmk_core/protocol/ps2_mouse.h | 49 | 
2 files changed, 56 insertions, 47 deletions
diff --git a/tmk_core/protocol/ps2_mouse.c b/tmk_core/protocol/ps2_mouse.c index af971dd497..e3c6974440 100644 --- a/tmk_core/protocol/ps2_mouse.c +++ b/tmk_core/protocol/ps2_mouse.c @@ -28,53 +28,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  /* ============================= MACROS ============================ */ -#define PS2_MOUSE_SEND(command, message) \ -do { \ -   uint8_t rcv = ps2_host_send(command); \ -   if (debug_mouse) { \ -        print((message)); \ -        xprintf(" command: %X, result: %X, error: %X \n", command, rcv, ps2_error); \ -    } \ -} while(0) - -#define PS2_MOUSE_SEND_SAFE(command, message) \ -do { \ -    if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ -        ps2_mouse_disable_data_reporting(); \ -    } \ -    PS2_MOUSE_SEND(command, message); \ -    if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ -        ps2_mouse_enable_data_reporting(); \ -    } \ -} while(0) - -#define PS2_MOUSE_SET_SAFE(command, value, message) \ -do { \ -    if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ -        ps2_mouse_disable_data_reporting(); \ -    } \ -    PS2_MOUSE_SEND(command, message); \ -    PS2_MOUSE_SEND(value, "Sending value"); \ -    if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ -        ps2_mouse_enable_data_reporting(); \ -    } \ -} while(0) - -#define PS2_MOUSE_RECEIVE(message) \ -do { \ -   uint8_t rcv = ps2_host_recv_response(); \ -   if (debug_mouse) { \ -        print((message)); \ -        xprintf(" result: %X, error: %X \n", rcv, ps2_error); \ -    } \ -} while(0) - -static enum ps2_mouse_mode_e { -    PS2_MOUSE_STREAM_MODE, -    PS2_MOUSE_REMOTE_MODE, -} ps2_mouse_mode = PS2_MOUSE_STREAM_MODE; - -static report_mouse_t mouse_report = {}; +static report_mouse_t mouse_report = {};./  static inline void ps2_mouse_print_report(report_mouse_t *mouse_report);  static inline void ps2_mouse_convert_report_to_hid(report_mouse_t *mouse_report); @@ -108,6 +62,12 @@ void ps2_mouse_init(void) {  #ifdef PS2_MOUSE_USE_2_1_SCALING      ps2_mouse_set_scaling_2_1();  #endif + +    ps2_mouse_init_user(); +} + +__attribute__((weak)) +void ps2_mouse_init_user(void) {  }  void ps2_mouse_task(void) { diff --git a/tmk_core/protocol/ps2_mouse.h b/tmk_core/protocol/ps2_mouse.h index e11c705fc6..3c93a46342 100644 --- a/tmk_core/protocol/ps2_mouse.h +++ b/tmk_core/protocol/ps2_mouse.h @@ -19,6 +19,53 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  #define  PS2_MOUSE_H  #include <stdbool.h> +#include "debug.h" + +#define PS2_MOUSE_SEND(command, message) \ +do { \ +   uint8_t rcv = ps2_host_send(command); \ +   if (debug_mouse) { \ +        print((message)); \ +        xprintf(" command: %X, result: %X, error: %X \n", command, rcv, ps2_error); \ +    } \ +} while(0) + +#define PS2_MOUSE_SEND_SAFE(command, message) \ +do { \ +    if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ +        ps2_mouse_disable_data_reporting(); \ +    } \ +    PS2_MOUSE_SEND(command, message); \ +    if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ +        ps2_mouse_enable_data_reporting(); \ +    } \ +} while(0) + +#define PS2_MOUSE_SET_SAFE(command, value, message) \ +do { \ +    if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ +        ps2_mouse_disable_data_reporting(); \ +    } \ +    PS2_MOUSE_SEND(command, message); \ +    PS2_MOUSE_SEND(value, "Sending value"); \ +    if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ +        ps2_mouse_enable_data_reporting(); \ +    } \ +} while(0) + +#define PS2_MOUSE_RECEIVE(message) \ +do { \ +   uint8_t rcv = ps2_host_recv_response(); \ +   if (debug_mouse) { \ +        print((message)); \ +        xprintf(" result: %X, error: %X \n", rcv, ps2_error); \ +    } \ +} while(0) + +static enum ps2_mouse_mode_e { +    PS2_MOUSE_STREAM_MODE, +    PS2_MOUSE_REMOTE_MODE, +} ps2_mouse_mode = PS2_MOUSE_STREAM_MODE;  /*   * Data format: @@ -107,6 +154,8 @@ typedef enum ps2_mouse_sample_rate_e {  void ps2_mouse_init(void); +void ps2_mouse_init_user(void); +  void ps2_mouse_task(void);  void ps2_mouse_disable_data_reporting(void);  | 
