]> git.donarmstrong.com Git - tmk_firmware.git/blobdiff - keyboard/hhkb_rn42/rn42.c
Fix rn42.h API
[tmk_firmware.git] / keyboard / hhkb_rn42 / rn42.c
index 89ecb199cab9eb852d70cdf47b0f0e50331d6373..a041cc366f6b604bb85b70dcc54a1b41b34d15e5 100644 (file)
@@ -24,17 +24,17 @@ host_driver_t rn42_driver = {
 
 void rn42_init(void)
 {
-    // PF1: check RTS(active low)
-    DDRF &= ~(1<<1);
-    PORTF &= ~(1<<1);
-
     // PF7: BT connection control(HiZ: connect, low: disconnect)
     // JTAG disable for PORT F. write JTD bit twice within four cycles.
     MCUCR |= (1<<JTD);
     MCUCR |= (1<<JTD);
     rn42_autoconnect();
 
-    // PD5: CTS    (low: allow to send, high:not allowed)
+    // PF1: RTS(low: allowed to send, high: not allowed)
+    DDRF &= ~(1<<1);
+    PORTF &= ~(1<<1);
+
+    // PD5: CTS(low: allow to send, high:not allow)
     DDRD |= (1<<5);
     PORTD &= ~(1<<5);
 
@@ -46,22 +46,43 @@ void rn42_putc(uint8_t c)
     serial_send(c);
 }
 
+bool rn42_autoconnecting(void)
+{
+    // GPIO6 for control connection(high: auto connect, low: disconnect)
+    // Note that this needs config: SM,4(Auto-Connect DTR Mode)
+    return (PORTF & (1<<7) ? true : false);
+}
+
 void rn42_autoconnect(void)
 {
-    DDRF &= ~(1<<7);
-    PORTF &= ~(1<<7);
+    // hi to auto connect
+    DDRF |= (1<<7);
+    PORTF |= (1<<7);
 }
 
 void rn42_disconnect(void)
 {
+    // low to disconnect
     DDRF |= (1<<7);
     PORTF &= ~(1<<7);
 }
 
-bool rn42_ready(void)
+bool rn42_rts(void)
+{
+    // low when RN-42 is powered and ready to receive
+    return PINF&(1<<1);
+}
+
+void rn42_cts_hi(void)
 {
-    // RTS low
-    return PINF&(1<<1) ? false : true;
+    // not allow to send
+    PORTD |= (1<<5);
+}
+
+void rn42_cts_lo(void)
+{
+    // allow to send
+    PORTD &= ~(1<<5);
 }