summary refs log tree commit diff
path: root/common
diff options
context:
space:
mode:
Diffstat (limited to 'common')
-rw-r--r--common/avr/bootloader.c (renamed from common/bootloader.c)0
-rw-r--r--common/avr/eeconfig.c (renamed from common/eeconfig.c)0
-rw-r--r--common/avr/suspend.c (renamed from common/suspend.c)24
-rw-r--r--common/avr/suspend_avr.h27
-rw-r--r--common/host.h4
-rw-r--r--common/keyboard.c1
-rw-r--r--common/keymap.c1
-rw-r--r--common/mbed/bootloader.c4
-rw-r--r--common/mbed/suspend.c6
-rw-r--r--common/mbed/xprintf.cpp46
-rw-r--r--common/mbed/xprintf.h17
-rw-r--r--common/mousekey.c1
-rw-r--r--common/mousekey.h20
-rw-r--r--common/progmem.h11
-rw-r--r--common/suspend.h20
15 files changed, 150 insertions, 32 deletions
diff --git a/common/bootloader.c b/common/avr/bootloader.c
index cda295b181..cda295b181 100644
--- a/common/bootloader.c
+++ b/common/avr/bootloader.c
diff --git a/common/eeconfig.c b/common/avr/eeconfig.c
index 5bd47dc6ad..5bd47dc6ad 100644
--- a/common/eeconfig.c
+++ b/common/avr/eeconfig.c
diff --git a/common/suspend.c b/common/avr/suspend.c
index 5b378892f3..f44a036beb 100644
--- a/common/suspend.c
+++ b/common/avr/suspend.c
@@ -1,7 +1,29 @@
-#include "suspend.h"
+#include <stdbool.h>
+#include <avr/sleep.h>
+#include <avr/wdt.h>
+#include <avr/interrupt.h>
 #include "matrix.h"
 #include "action.h"
 #include "backlight.h"
+#include "suspend_avr.h"
+#include "suspend.h"
+
+
+#define wdt_intr_enable(value)   \
+__asm__ __volatile__ (  \
+    "in __tmp_reg__,__SREG__" "\n\t"    \
+    "cli" "\n\t"    \
+    "wdr" "\n\t"    \
+    "sts %0,%1" "\n\t"  \
+    "out __SREG__,__tmp_reg__" "\n\t"   \
+    "sts %0,%2" "\n\t" \
+    : /* no outputs */  \
+    : "M" (_SFR_MEM_ADDR(_WD_CONTROL_REG)), \
+    "r" (_BV(_WD_CHANGE_BIT) | _BV(WDE)), \
+    "r" ((uint8_t) ((value & 0x08 ? _WD_PS3_MASK : 0x00) | \
+        _BV(WDIE) | (value & 0x07)) ) \
+    : "r0"  \
+)
 
 
 void suspend_power_down(void)
diff --git a/common/avr/suspend_avr.h b/common/avr/suspend_avr.h
new file mode 100644
index 0000000000..357102da44
--- /dev/null
+++ b/common/avr/suspend_avr.h
@@ -0,0 +1,27 @@
+#ifndef SUSPEND_AVR_H
+#define SUSPEND_AVR_H
+
+#include <stdint.h>
+#include <stdbool.h>
+#include <avr/sleep.h>
+#include <avr/wdt.h>
+#include <avr/interrupt.h>
+
+
+#define wdt_intr_enable(value)   \
+__asm__ __volatile__ (  \
+    "in __tmp_reg__,__SREG__" "\n\t"    \
+    "cli" "\n\t"    \
+    "wdr" "\n\t"    \
+    "sts %0,%1" "\n\t"  \
+    "out __SREG__,__tmp_reg__" "\n\t"   \
+    "sts %0,%2" "\n\t" \
+    : /* no outputs */  \
+    : "M" (_SFR_MEM_ADDR(_WD_CONTROL_REG)), \
+    "r" (_BV(_WD_CHANGE_BIT) | _BV(WDE)), \
+    "r" ((uint8_t) ((value & 0x08 ? _WD_PS3_MASK : 0x00) | \
+        _BV(WDIE) | (value & 0x07)) ) \
+    : "r0"  \
+)
+
+#endif
diff --git a/common/host.h b/common/host.h
index a56e6c3b04..918af69e8f 100644
--- a/common/host.h
+++ b/common/host.h
@@ -32,8 +32,8 @@ extern "C" {
 extern bool keyboard_nkro;
 #endif
 
-uint8_t keyboard_idle;
-uint8_t keyboard_protocol;
+extern uint8_t keyboard_idle;
+extern uint8_t keyboard_protocol;
 
 
 /* host driver */
diff --git a/common/keyboard.c b/common/keyboard.c
index b71d5bf13c..9a809ff4a1 100644
--- a/common/keyboard.c
+++ b/common/keyboard.c
@@ -15,7 +15,6 @@ You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 #include <stdint.h>
-#include <util/delay.h>
 #include "keyboard.h"
 #include "matrix.h"
 #include "keymap.h"
diff --git a/common/keymap.c b/common/keymap.c
index 0df2e2edff..4c0b61b8c1 100644
--- a/common/keymap.c
+++ b/common/keymap.c
@@ -14,7 +14,6 @@ GNU General Public License for more details.
 You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
-#include <avr/pgmspace.h>
 #include "keymap.h"
 #include "report.h"
 #include "keycode.h"
diff --git a/common/mbed/bootloader.c b/common/mbed/bootloader.c
new file mode 100644
index 0000000000..b51e83943a
--- /dev/null
+++ b/common/mbed/bootloader.c
@@ -0,0 +1,4 @@
+#include "bootloader.h"
+
+
+void bootloader_jump(void) {}
diff --git a/common/mbed/suspend.c b/common/mbed/suspend.c
new file mode 100644
index 0000000000..32651574f8
--- /dev/null
+++ b/common/mbed/suspend.c
@@ -0,0 +1,6 @@
+#include <stdbool.h>
+
+
+void suspend_power_down(void) {}
+bool suspend_wakeup_condition(void) { return true; }
+void suspend_wakeup_init(void) {}
diff --git a/common/mbed/xprintf.cpp b/common/mbed/xprintf.cpp
new file mode 100644
index 0000000000..4342b79f80
--- /dev/null
+++ b/common/mbed/xprintf.cpp
@@ -0,0 +1,46 @@
+#include <cstdarg>
+//#include <stdarg.h>
+#include "mbed.h"
+#include "mbed/xprintf.h"
+
+
+#define STRING_STACK_LIMIT    120
+
+/* mbed Serial */
+Serial ser(UART_TX, UART_RX);
+
+/* TODO: Need small implementation for embedded */
+int xprintf(const char* format, ...)
+{
+    /* copy from mbed/common/RawSerial.cpp */
+    std::va_list arg;
+    va_start(arg, format);
+    int len = vsnprintf(NULL, 0, format, arg);
+    if (len < STRING_STACK_LIMIT) {
+        char temp[STRING_STACK_LIMIT];
+        vsprintf(temp, format, arg);
+        ser.puts(temp);
+    } else {
+        char *temp = new char[len + 1];
+        vsprintf(temp, format, arg);
+        ser.puts(temp);
+        delete[] temp;
+    }
+    va_end(arg);
+    return len;
+
+/* Fail: __builtin_va_arg_pack?
+ * https://gcc.gnu.org/onlinedocs/gcc-4.3.5/gcc/Constructing-Calls.html#Constructing-Calls
+    void *arg = __builtin_apply_args();
+    void *ret = __builtin_apply((void*)(&(ser.printf)), arg, 100);
+    __builtin_return(ret)
+*/
+/* Fail: varargs can not be passed to printf
+    //int r = ser.printf("test %i\r\n", 123);
+    va_list arg;
+    va_start(arg, format);
+    int r = ser.printf(format, arg);
+    va_end(arg);
+    return r;
+*/
+}
diff --git a/common/mbed/xprintf.h b/common/mbed/xprintf.h
new file mode 100644
index 0000000000..26bc529e5b
--- /dev/null
+++ b/common/mbed/xprintf.h
@@ -0,0 +1,17 @@
+#ifndef XPRINTF_H
+#define XPRINTF_H
+
+//#define xprintf(format, ...)            __xprintf(format, ##__VA_ARGS__)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int xprintf(const char *format, ...);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif
diff --git a/common/mousekey.c b/common/mousekey.c
index 017be94116..23469476e2 100644
--- a/common/mousekey.c
+++ b/common/mousekey.c
@@ -16,7 +16,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #include <stdint.h>
-#include <util/delay.h>
 #include "keycode.h"
 #include "host.h"
 #include "timer.h"
diff --git a/common/mousekey.h b/common/mousekey.h
index d8d7beaaa3..6eede06b44 100644
--- a/common/mousekey.h
+++ b/common/mousekey.h
@@ -52,12 +52,16 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #endif
 
 
-uint8_t mk_delay;
-uint8_t mk_interval;
-uint8_t mk_max_speed;
-uint8_t mk_time_to_max;
-uint8_t mk_wheel_max_speed;
-uint8_t mk_wheel_time_to_max;
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern uint8_t mk_delay;
+extern uint8_t mk_interval;
+extern uint8_t mk_max_speed;
+extern uint8_t mk_time_to_max;
+extern uint8_t mk_wheel_max_speed;
+extern uint8_t mk_wheel_time_to_max;
 
 
 void mousekey_task(void);
@@ -66,4 +70,8 @@ void mousekey_off(uint8_t code);
 void mousekey_clear(void);
 void mousekey_send(void);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif
diff --git a/common/progmem.h b/common/progmem.h
new file mode 100644
index 0000000000..09aeb8b7c4
--- /dev/null
+++ b/common/progmem.h
@@ -0,0 +1,11 @@
+#ifndef PROGMEM_H
+#define PROGMEM_H 1
+
+#if defined(__AVR__)
+#   include <avr/pgmspace.h>
+#elif defined(__arm__)
+#   define PROGMEM
+#   define pgm_read_byte(p)     *(p)
+#endif
+
+#endif
diff --git a/common/suspend.h b/common/suspend.h
index 1c1e41ac3e..9b76f280d1 100644
--- a/common/suspend.h
+++ b/common/suspend.h
@@ -3,26 +3,6 @@
 
 #include <stdint.h>
 #include <stdbool.h>
-#include <avr/sleep.h>
-#include <avr/wdt.h>
-#include <avr/interrupt.h>
-
-
-#define wdt_intr_enable(value)   \
-__asm__ __volatile__ (  \
-    "in __tmp_reg__,__SREG__" "\n\t"    \
-    "cli" "\n\t"    \
-    "wdr" "\n\t"    \
-    "sts %0,%1" "\n\t"  \
-    "out __SREG__,__tmp_reg__" "\n\t"   \
-    "sts %0,%2" "\n\t" \
-    : /* no outputs */  \
-    : "M" (_SFR_MEM_ADDR(_WD_CONTROL_REG)), \
-    "r" (_BV(_WD_CHANGE_BIT) | _BV(WDE)), \
-    "r" ((uint8_t) ((value & 0x08 ? _WD_PS3_MASK : 0x00) | \
-        _BV(WDIE) | (value & 0x07)) ) \
-    : "r0"  \
-)
 
 
 void suspend_power_down(void);