summaryrefslogtreecommitdiff
path: root/tmk_core/protocol/arm_atsam/main_arm_atsam.c
diff options
context:
space:
mode:
Diffstat (limited to 'tmk_core/protocol/arm_atsam/main_arm_atsam.c')
-rw-r--r--tmk_core/protocol/arm_atsam/main_arm_atsam.c185
1 files changed, 80 insertions, 105 deletions
diff --git a/tmk_core/protocol/arm_atsam/main_arm_atsam.c b/tmk_core/protocol/arm_atsam/main_arm_atsam.c
index 0974a230d4..a42d9daf38 100644
--- a/tmk_core/protocol/arm_atsam/main_arm_atsam.c
+++ b/tmk_core/protocol/arm_atsam/main_arm_atsam.c
@@ -25,50 +25,43 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include <string.h>
#include "quantum.h"
-//From protocol directory
+// From protocol directory
#include "arm_atsam_protocol.h"
-//From keyboard's directory
+// From keyboard's directory
#include "config_led.h"
-uint8_t g_usb_state = USB_FSMSTATUS_FSMSTATE_OFF_Val; //Saved USB state from hardware value to detect changes
+uint8_t g_usb_state = USB_FSMSTATUS_FSMSTATE_OFF_Val; // Saved USB state from hardware value to detect changes
-void main_subtasks(void);
+void main_subtasks(void);
uint8_t keyboard_leds(void);
-void send_keyboard(report_keyboard_t *report);
-void send_mouse(report_mouse_t *report);
-void send_system(uint16_t data);
-void send_consumer(uint16_t data);
-
-host_driver_t arm_atsam_driver = {
- keyboard_leds,
- send_keyboard,
- send_mouse,
- send_system,
- send_consumer
-};
+void send_keyboard(report_keyboard_t *report);
+void send_mouse(report_mouse_t *report);
+void send_system(uint16_t data);
+void send_consumer(uint16_t data);
+
+host_driver_t arm_atsam_driver = {keyboard_leds, send_keyboard, send_mouse, send_system, send_consumer};
uint8_t led_states;
-uint8_t keyboard_leds(void)
-{
+uint8_t keyboard_leds(void) {
#ifdef NKRO_ENABLE
if (keymap_config.nkro)
return udi_hid_nkro_report_set;
else
-#endif //NKRO_ENABLE
+#endif // NKRO_ENABLE
return udi_hid_kbd_report_set;
}
-void send_keyboard(report_keyboard_t *report)
-{
+void send_keyboard(report_keyboard_t *report) {
uint32_t irqflags;
#ifdef NKRO_ENABLE
- if (!keymap_config.nkro)
- {
-#endif //NKRO_ENABLE
- while (udi_hid_kbd_b_report_trans_ongoing) { main_subtasks(); } //Run other tasks while waiting for USB to be free
+ if (!keymap_config.nkro) {
+#endif // NKRO_ENABLE
+ while (udi_hid_kbd_b_report_trans_ongoing) {
+ main_subtasks();
+ } // Run other tasks while waiting for USB to be free
irqflags = __get_PRIMASK();
__disable_irq();
@@ -81,10 +74,10 @@ void send_keyboard(report_keyboard_t *report)
__DMB();
__set_PRIMASK(irqflags);
#ifdef NKRO_ENABLE
- }
- else
- {
- while (udi_hid_nkro_b_report_trans_ongoing) { main_subtasks(); } //Run other tasks while waiting for USB to be free
+ } else {
+ while (udi_hid_nkro_b_report_trans_ongoing) {
+ main_subtasks();
+ } // Run other tasks while waiting for USB to be free
irqflags = __get_PRIMASK();
__disable_irq();
@@ -97,11 +90,10 @@ void send_keyboard(report_keyboard_t *report)
__DMB();
__set_PRIMASK(irqflags);
}
-#endif //NKRO_ENABLE
+#endif // NKRO_ENABLE
}
-void send_mouse(report_mouse_t *report)
-{
+void send_mouse(report_mouse_t *report) {
#ifdef MOUSEKEY_ENABLE
uint32_t irqflags;
@@ -115,11 +107,10 @@ void send_mouse(report_mouse_t *report)
__DMB();
__set_PRIMASK(irqflags);
-#endif //MOUSEKEY_ENABLE
+#endif // MOUSEKEY_ENABLE
}
-void send_system(uint16_t data)
-{
+void send_system(uint16_t data) {
#ifdef EXTRAKEY_ENABLE
uint32_t irqflags;
@@ -130,16 +121,15 @@ void send_system(uint16_t data)
udi_hid_exk_report.desc.report_id = REPORT_ID_SYSTEM;
if (data != 0) data = data - SYSTEM_POWER_DOWN + 1;
udi_hid_exk_report.desc.report_data = data;
- udi_hid_exk_b_report_valid = 1;
+ udi_hid_exk_b_report_valid = 1;
udi_hid_exk_send_report();
__DMB();
__set_PRIMASK(irqflags);
-#endif //EXTRAKEY_ENABLE
+#endif // EXTRAKEY_ENABLE
}
-void send_consumer(uint16_t data)
-{
+void send_consumer(uint16_t data) {
#ifdef EXTRAKEY_ENABLE
uint32_t irqflags;
@@ -147,71 +137,64 @@ void send_consumer(uint16_t data)
__disable_irq();
__DMB();
- udi_hid_exk_report.desc.report_id = REPORT_ID_CONSUMER;
+ udi_hid_exk_report.desc.report_id = REPORT_ID_CONSUMER;
udi_hid_exk_report.desc.report_data = data;
- udi_hid_exk_b_report_valid = 1;
+ udi_hid_exk_b_report_valid = 1;
udi_hid_exk_send_report();
__DMB();
__set_PRIMASK(irqflags);
-#endif //EXTRAKEY_ENABLE
+#endif // EXTRAKEY_ENABLE
}
-void main_subtask_usb_state(void)
-{
- static uint64_t fsmstate_on_delay = 0; //Delay timer to be sure USB is actually operating before bringing up hardware
- uint8_t fsmstate_now = USB->DEVICE.FSMSTATUS.reg; //Current state from hardware register
+void main_subtask_usb_state(void) {
+ static uint64_t fsmstate_on_delay = 0; // Delay timer to be sure USB is actually operating before bringing up hardware
+ uint8_t fsmstate_now = USB->DEVICE.FSMSTATUS.reg; // Current state from hardware register
- if (fsmstate_now == USB_FSMSTATUS_FSMSTATE_SUSPEND_Val) //If USB SUSPENDED
+ if (fsmstate_now == USB_FSMSTATUS_FSMSTATE_SUSPEND_Val) // If USB SUSPENDED
{
- fsmstate_on_delay = 0; //Clear ON delay timer
+ fsmstate_on_delay = 0; // Clear ON delay timer
- if (g_usb_state != USB_FSMSTATUS_FSMSTATE_SUSPEND_Val) //If previously not SUSPENDED
+ if (g_usb_state != USB_FSMSTATUS_FSMSTATE_SUSPEND_Val) // If previously not SUSPENDED
{
- suspend_power_down(); //Run suspend routine
- g_usb_state = fsmstate_now; //Save current USB state
+ suspend_power_down(); // Run suspend routine
+ g_usb_state = fsmstate_now; // Save current USB state
}
- }
- else if (fsmstate_now == USB_FSMSTATUS_FSMSTATE_SLEEP_Val) //Else if USB SLEEPING
+ } else if (fsmstate_now == USB_FSMSTATUS_FSMSTATE_SLEEP_Val) // Else if USB SLEEPING
{
- fsmstate_on_delay = 0; //Clear ON delay timer
+ fsmstate_on_delay = 0; // Clear ON delay timer
- if (g_usb_state != USB_FSMSTATUS_FSMSTATE_SLEEP_Val) //If previously not SLEEPING
+ if (g_usb_state != USB_FSMSTATUS_FSMSTATE_SLEEP_Val) // If previously not SLEEPING
{
- suspend_power_down(); //Run suspend routine
- g_usb_state = fsmstate_now; //Save current USB state
+ suspend_power_down(); // Run suspend routine
+ g_usb_state = fsmstate_now; // Save current USB state
}
- }
- else if (fsmstate_now == USB_FSMSTATUS_FSMSTATE_ON_Val) //Else if USB ON
+ } else if (fsmstate_now == USB_FSMSTATUS_FSMSTATE_ON_Val) // Else if USB ON
{
- if (g_usb_state != USB_FSMSTATUS_FSMSTATE_ON_Val) //If previously not ON
+ if (g_usb_state != USB_FSMSTATUS_FSMSTATE_ON_Val) // If previously not ON
{
- if (fsmstate_on_delay == 0) //If ON delay timer is cleared
+ if (fsmstate_on_delay == 0) // If ON delay timer is cleared
{
- fsmstate_on_delay = timer_read64() + 250; //Set ON delay timer
- }
- else if (timer_read64() > fsmstate_on_delay) //Else if ON delay timer is active and timed out
+ fsmstate_on_delay = timer_read64() + 250; // Set ON delay timer
+ } else if (timer_read64() > fsmstate_on_delay) // Else if ON delay timer is active and timed out
{
- suspend_wakeup_init(); //Run wakeup routine
- g_usb_state = fsmstate_now; //Save current USB state
+ suspend_wakeup_init(); // Run wakeup routine
+ g_usb_state = fsmstate_now; // Save current USB state
}
}
- }
- else //Else if USB is in a state not being tracked
+ } else // Else if USB is in a state not being tracked
{
- fsmstate_on_delay = 0; //Clear ON delay timer
+ fsmstate_on_delay = 0; // Clear ON delay timer
}
}
-void main_subtask_power_check(void)
-{
+void main_subtask_power_check(void) {
static uint64_t next_5v_checkup = 0;
- if (timer_read64() > next_5v_checkup)
- {
+ if (timer_read64() > next_5v_checkup) {
next_5v_checkup = timer_read64() + 5;
- v_5v = adc_get(ADC_5V);
+ v_5v = adc_get(ADC_5V);
v_5v_avg = 0.9 * v_5v_avg + 0.1 * v_5v;
#ifdef RGB_MATRIX_ENABLE
@@ -220,27 +203,23 @@ void main_subtask_power_check(void)
}
}
-void main_subtask_usb_extra_device(void)
-{
+void main_subtask_usb_extra_device(void) {
static uint64_t next_usb_checkup = 0;
- if (timer_read64() > next_usb_checkup)
- {
+ if (timer_read64() > next_usb_checkup) {
next_usb_checkup = timer_read64() + 10;
USB_HandleExtraDevice();
}
}
-void main_subtasks(void)
-{
+void main_subtasks(void) {
main_subtask_usb_state();
main_subtask_power_check();
main_subtask_usb_extra_device();
}
-int main(void)
-{
+int main(void) {
DBG_LED_ENA;
DBG_1_ENA;
DBG_1_OFF;
@@ -259,7 +238,7 @@ int main(void)
#ifdef RGB_MATRIX_ENABLE
i2c1_init();
-#endif // RGB_MATRIX_ENABLE
+#endif // RGB_MATRIX_ENABLE
matrix_init();
@@ -273,21 +252,23 @@ int main(void)
CDC_init();
DBGC(DC_MAIN_CDC_INIT_COMPLETE);
- while (USB2422_Port_Detect_Init() == 0) {}
+ while (USB2422_Port_Detect_Init() == 0) {
+ }
DBG_LED_OFF;
#ifdef RGB_MATRIX_ENABLE
- while (I2C3733_Init_Control() != 1) {}
- while (I2C3733_Init_Drivers() != 1) {}
+ while (I2C3733_Init_Control() != 1) {
+ }
+ while (I2C3733_Init_Drivers() != 1) {
+ }
I2C_DMAC_LED_Init();
i2c_led_q_init();
- for (uint8_t drvid = 0; drvid < ISSI3733_DRIVER_COUNT; drvid++)
- I2C_LED_Q_ONOFF(drvid); //Queue data
-#endif // RGB_MATRIX_ENABLE
+ for (uint8_t drvid = 0; drvid < ISSI3733_DRIVER_COUNT; drvid++) I2C_LED_Q_ONOFF(drvid); // Queue data
+#endif // RGB_MATRIX_ENABLE
keyboard_setup();
@@ -297,21 +278,18 @@ int main(void)
#ifdef CONSOLE_ENABLE
uint64_t next_print = 0;
-#endif //CONSOLE_ENABLE
+#endif // CONSOLE_ENABLE
v_5v_avg = adc_get(ADC_5V);
debug_code_disable();
- while (1)
- {
- main_subtasks(); //Note these tasks will also be run while waiting for USB keyboard polling intervals
+ while (1) {
+ main_subtasks(); // Note these tasks will also be run while waiting for USB keyboard polling intervals
- if (g_usb_state == USB_FSMSTATUS_FSMSTATE_SUSPEND_Val || g_usb_state == USB_FSMSTATUS_FSMSTATE_SLEEP_Val)
- {
- if (suspend_wakeup_condition())
- {
- udc_remotewakeup(); //Send remote wakeup signal
+ if (g_usb_state == USB_FSMSTATUS_FSMSTATE_SUSPEND_Val || g_usb_state == USB_FSMSTATUS_FSMSTATE_SLEEP_Val) {
+ if (suspend_wakeup_condition()) {
+ udc_remotewakeup(); // Send remote wakeup signal
wait_ms(50);
}
@@ -321,16 +299,13 @@ int main(void)
keyboard_task();
#ifdef CONSOLE_ENABLE
- if (timer_read64() > next_print)
- {
+ if (timer_read64() > next_print) {
next_print = timer_read64() + 250;
- //Add any debug information here that you want to see very often
- //dprintf("5v=%u 5vu=%u dlow=%u dhi=%u gca=%u gcd=%u\r\n", v_5v, v_5v_avg, v_5v_avg - V5_LOW, v_5v_avg - V5_HIGH, gcr_actual, gcr_desired);
+ // Add any debug information here that you want to see very often
+ // dprintf("5v=%u 5vu=%u dlow=%u dhi=%u gca=%u gcd=%u\r\n", v_5v, v_5v_avg, v_5v_avg - V5_LOW, v_5v_avg - V5_HIGH, gcr_actual, gcr_desired);
}
-#endif //CONSOLE_ENABLE
+#endif // CONSOLE_ENABLE
}
-
return 1;
}
-