]> git.donarmstrong.com Git - tmk_firmware.git/blobdiff - protocol/ps2.h
Merge remote-tracking branch 'tmk/master' into cub_layout
[tmk_firmware.git] / protocol / ps2.h
index 483eea7209a769d10790f19952728f974ab72ccf..acde679cf42352fc4c7750bfdbf33ae77c5b19d0 100644 (file)
@@ -39,8 +39,9 @@ POSSIBILITY OF SUCH DAMAGE.
 #define PS2_H
 
 #include <stdbool.h>
-#include <util/delay.h>
-#include <avr/io.h>
+#include "wait.h"
+#include "ps2_io.h"
+#include "print.h"
 
 /*
  * Primitive PS/2 Library for AVR
@@ -92,79 +93,27 @@ uint8_t ps2_host_recv(void);
 void ps2_host_set_led(uint8_t usb_led);
 
 
-/* Check port settings for clock and data line */
-#if !(defined(PS2_CLOCK_PORT) && \
-      defined(PS2_CLOCK_PIN) && \
-      defined(PS2_CLOCK_DDR) && \
-      defined(PS2_CLOCK_BIT))
-#   error "PS/2 clock port setting is required in config.h"
-#endif
-
-#if !(defined(PS2_DATA_PORT) && \
-      defined(PS2_DATA_PIN) && \
-      defined(PS2_DATA_DDR) && \
-      defined(PS2_DATA_BIT))
-#   error "PS/2 data port setting is required in config.h"
-#endif
-
 /*--------------------------------------------------------------------
  * static functions
  *------------------------------------------------------------------*/
-static inline void clock_lo(void)
-{
-    PS2_CLOCK_PORT &= ~(1<<PS2_CLOCK_BIT);
-    PS2_CLOCK_DDR  |=  (1<<PS2_CLOCK_BIT);
-}
-static inline void clock_hi(void)
-{
-    /* input with pull up */
-    PS2_CLOCK_DDR  &= ~(1<<PS2_CLOCK_BIT);
-    PS2_CLOCK_PORT |=  (1<<PS2_CLOCK_BIT);
-}
-static inline bool clock_in(void)
-{
-    PS2_CLOCK_DDR  &= ~(1<<PS2_CLOCK_BIT);
-    PS2_CLOCK_PORT |=  (1<<PS2_CLOCK_BIT);
-    _delay_us(1);
-    return PS2_CLOCK_PIN&(1<<PS2_CLOCK_BIT);
-}
-static inline void data_lo(void)
-{
-    PS2_DATA_PORT &= ~(1<<PS2_DATA_BIT);
-    PS2_DATA_DDR  |=  (1<<PS2_DATA_BIT);
-}
-static inline void data_hi(void)
-{
-    /* input with pull up */
-    PS2_DATA_DDR  &= ~(1<<PS2_DATA_BIT);
-    PS2_DATA_PORT |=  (1<<PS2_DATA_BIT);
-}
-static inline bool data_in(void)
-{
-    PS2_DATA_DDR  &= ~(1<<PS2_DATA_BIT);
-    PS2_DATA_PORT |=  (1<<PS2_DATA_BIT);
-    _delay_us(1);
-    return PS2_DATA_PIN&(1<<PS2_DATA_BIT);
-}
-
 static inline uint16_t wait_clock_lo(uint16_t us)
 {
-    while (clock_in()  && us) { asm(""); _delay_us(1); us--; }
+    while (clock_in()  && us) { asm(""); wait_us(1); us--; }
     return us;
 }
 static inline uint16_t wait_clock_hi(uint16_t us)
 {
-    while (!clock_in() && us) { asm(""); _delay_us(1); us--; }
+    while (!clock_in() && us) { asm(""); wait_us(1); us--; }
     return us;
 }
 static inline uint16_t wait_data_lo(uint16_t us)
 {
-    while (data_in() && us)  { asm(""); _delay_us(1); us--; }
+    while (data_in() && us)  { asm(""); wait_us(1); us--; }
     return us;
 }
 static inline uint16_t wait_data_hi(uint16_t us)
 {
-    while (!data_in() && us)  { asm(""); _delay_us(1); us--; }
+    while (!data_in() && us)  { asm(""); wait_us(1); us--; }
     return us;
 }