summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhathach <[email protected]>2019-04-01 18:31:20 +0700
committerhathach <[email protected]>2019-04-01 18:35:37 +0700
commit8457d0d14cb79174d537c2cd210c0dea3c997358 (patch)
tree4d27824d4a764544d9a31226f0ebec26a6a8b542
parent2cc4ab2aef3c057f959cfec8a28e64061e04336f (diff)
add board_button_read()
-rw-r--r--examples/device/cdc_msc_hid/ses/samd21/samd21.emProject5
-rw-r--r--examples/device/cdc_msc_hid/src/main.c2
-rw-r--r--examples/device/cdc_msc_hid_freertos/src/main.c2
-rw-r--r--hw/bsp/board.h37
-rw-r--r--hw/bsp/ea4088qs/board_ea4088qs.c2
-rw-r--r--hw/bsp/ea4357/board_ea4357.c2
-rw-r--r--hw/bsp/lpcxpresso11u68/board_lpcxpresso11u68.c2
-rw-r--r--hw/bsp/lpcxpresso1347/board_lpcxpresso1347.c2
-rw-r--r--hw/bsp/lpcxpresso1769/board_lpcxpresso1769.c2
-rw-r--r--hw/bsp/mcb1800/board_mcb1800.c2
-rw-r--r--hw/bsp/metro_m0_express/board.mk3
-rw-r--r--hw/bsp/metro_m0_express/board_metro_m0_express.c14
-rw-r--r--hw/bsp/metro_m4_express/board.mk3
-rw-r--r--hw/bsp/metro_m4_express/board_metro_m4_express.c12
-rw-r--r--hw/bsp/pca10056/board_pca10056.c22
15 files changed, 59 insertions, 53 deletions
diff --git a/examples/device/cdc_msc_hid/ses/samd21/samd21.emProject b/examples/device/cdc_msc_hid/ses/samd21/samd21.emProject
index e65873008..30aad55ca 100644
--- a/examples/device/cdc_msc_hid/ses/samd21/samd21.emProject
+++ b/examples/device/cdc_msc_hid/ses/samd21/samd21.emProject
@@ -67,6 +67,11 @@
<file file_name="../../../../../hw/mcu/microchip/samd/asf4/samd21/hpl/sysctrl/hpl_sysctrl.c" />
</folder>
</folder>
+ <folder Name="hal">
+ <folder Name="src">
+ <file file_name="../../../../../hw/mcu/microchip/samd/asf4/samd21/hal/src/hal_atomic.c" />
+ </folder>
+ </folder>
</folder>
</folder>
</folder>
diff --git a/examples/device/cdc_msc_hid/src/main.c b/examples/device/cdc_msc_hid/src/main.c
index a203e567e..12e331af7 100644
--- a/examples/device/cdc_msc_hid/src/main.c
+++ b/examples/device/cdc_msc_hid/src/main.c
@@ -135,7 +135,7 @@ void usb_hid_task(void)
if ( board_millis() < start_ms + interval_ms) return; // not enough time
start_ms += interval_ms;
- uint32_t const btn = board_buttons();
+ uint32_t const btn = board_button_read();
if ( tud_suspended() && btn )
{
diff --git a/examples/device/cdc_msc_hid_freertos/src/main.c b/examples/device/cdc_msc_hid_freertos/src/main.c
index 388bd9ad1..e47937bd5 100644
--- a/examples/device/cdc_msc_hid_freertos/src/main.c
+++ b/examples/device/cdc_msc_hid_freertos/src/main.c
@@ -158,7 +158,7 @@ void usb_hid_task(void* params)
if ( board_millis() < start_ms + interval_ms) return; // not enough time
start_ms += interval_ms;
- uint32_t const btn = board_buttons();
+ uint32_t const btn = board_button_read();
/*------------- Keyboard -------------*/
if ( tud_hid_keyboard_ready() )
diff --git a/hw/bsp/board.h b/hw/bsp/board.h
index df9d5d11d..7d12d68fb 100644
--- a/hw/bsp/board.h
+++ b/hw/bsp/board.h
@@ -46,6 +46,7 @@
//--------------------------------------------------------------------+
// Board Porting API
+// For simplicity, only one LED and one Button are used
//--------------------------------------------------------------------+
// Initialize on-board peripherals : led, button, uart and USB
@@ -54,9 +55,9 @@ void board_init(void);
// Turn LED on or off
void board_led_control(bool state);
-// Get the current state of buttons on the board
-// \return Bitmask where a '1' means active (pressed), a '0' means inactive.
-uint32_t board_buttons(void);
+// Get the current state of button
+// a '1' means active (pressed), a '0' means inactive.
+uint32_t board_button_read(void);
// Get characters from UART
int board_uart_read(uint8_t* buf, int len);
@@ -65,28 +66,20 @@ int board_uart_read(uint8_t* buf, int len);
int board_uart_write(void const * buf, int len);
#if CFG_TUSB_OS == OPT_OS_NONE
-
-// Get current milliseconds, must be implemented in board.c when no OS is used
-uint32_t board_millis(void);
-
+ // Get current milliseconds, must be implemented when no RTOS is used
+ uint32_t board_millis(void);
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
-
-static inline uint32_t board_millis(void)
-{
- return ( ( ((uint64_t) xTaskGetTickCount()) * 1000) / configTICK_RATE_HZ );
-}
-
+ static inline uint32_t board_millis(void)
+ {
+ return ( ( ((uint64_t) xTaskGetTickCount()) * 1000) / configTICK_RATE_HZ );
+ }
#elif CFG_TUSB_OS == OPT_OS_MYNEWT
-
-static inline uint32_t board_millis(void)
-{
- return os_time_ticks_to_ms32( os_time_get() );
-}
-
+ static inline uint32_t board_millis(void)
+ {
+ return os_time_ticks_to_ms32( os_time_get() );
+ }
#elif
-
-#error "Need to implement board_millis() for this OS"
-
+ #error "Need to implement board_millis() for this OS"
#endif
//--------------------------------------------------------------------+
diff --git a/hw/bsp/ea4088qs/board_ea4088qs.c b/hw/bsp/ea4088qs/board_ea4088qs.c
index 4f4e19ee0..2d5110d25 100644
--- a/hw/bsp/ea4088qs/board_ea4088qs.c
+++ b/hw/bsp/ea4088qs/board_ea4088qs.c
@@ -127,7 +127,7 @@ static bool button_read(uint8_t id)
}
#endif
-uint32_t board_buttons(void)
+uint32_t board_button_read(void)
{
uint32_t result = 0;
diff --git a/hw/bsp/ea4357/board_ea4357.c b/hw/bsp/ea4357/board_ea4357.c
index 6d7d936db..898ad38ad 100644
--- a/hw/bsp/ea4357/board_ea4357.c
+++ b/hw/bsp/ea4357/board_ea4357.c
@@ -269,7 +269,7 @@ static bool button_read(uint8_t id)
}
#endif
-uint32_t board_buttons(void)
+uint32_t board_button_read(void)
{
uint32_t result = 0;
diff --git a/hw/bsp/lpcxpresso11u68/board_lpcxpresso11u68.c b/hw/bsp/lpcxpresso11u68/board_lpcxpresso11u68.c
index fa0966831..e1f1fd366 100644
--- a/hw/bsp/lpcxpresso11u68/board_lpcxpresso11u68.c
+++ b/hw/bsp/lpcxpresso11u68/board_lpcxpresso11u68.c
@@ -121,7 +121,7 @@ void board_led_control(bool state)
//--------------------------------------------------------------------+
// Buttons
//--------------------------------------------------------------------+
-uint32_t board_buttons(void)
+uint32_t board_button_read(void)
{
// for(uint8_t i=0; i<BOARD_BUTTON_COUNT; i++) GPIOGetPinValue(buttons[i].port, buttons[i].pin);
// return GPIOGetPinValue(buttons[0].port, buttons[0].pin) ? 0 : 1; // button is active low
diff --git a/hw/bsp/lpcxpresso1347/board_lpcxpresso1347.c b/hw/bsp/lpcxpresso1347/board_lpcxpresso1347.c
index 4f7909b12..70d41e547 100644
--- a/hw/bsp/lpcxpresso1347/board_lpcxpresso1347.c
+++ b/hw/bsp/lpcxpresso1347/board_lpcxpresso1347.c
@@ -144,7 +144,7 @@ static bool button_read(uint8_t id)
}
#endif
-uint32_t board_buttons(void)
+uint32_t board_button_read(void)
{
uint32_t result = 0;
diff --git a/hw/bsp/lpcxpresso1769/board_lpcxpresso1769.c b/hw/bsp/lpcxpresso1769/board_lpcxpresso1769.c
index 420c90e60..04ec13db0 100644
--- a/hw/bsp/lpcxpresso1769/board_lpcxpresso1769.c
+++ b/hw/bsp/lpcxpresso1769/board_lpcxpresso1769.c
@@ -180,7 +180,7 @@ static bool button_read(uint8_t id)
}
#endif
-uint32_t board_buttons(void)
+uint32_t board_button_read(void)
{
uint32_t result = 0;
diff --git a/hw/bsp/mcb1800/board_mcb1800.c b/hw/bsp/mcb1800/board_mcb1800.c
index b81ecaad2..90e705888 100644
--- a/hw/bsp/mcb1800/board_mcb1800.c
+++ b/hw/bsp/mcb1800/board_mcb1800.c
@@ -193,7 +193,7 @@ static bool button_read(uint8_t id)
}
*/
-uint32_t board_buttons(void)
+uint32_t board_button_read(void)
{
uint32_t result = 0;
diff --git a/hw/bsp/metro_m0_express/board.mk b/hw/bsp/metro_m0_express/board.mk
index 0776ea567..98c4401d2 100644
--- a/hw/bsp/metro_m0_express/board.mk
+++ b/hw/bsp/metro_m0_express/board.mk
@@ -19,7 +19,8 @@ SRC_C += \
hw/mcu/microchip/samd/asf4/samd21/gcc/system_samd21.c \
hw/mcu/microchip/samd/asf4/samd21/hpl/gclk/hpl_gclk.c \
hw/mcu/microchip/samd/asf4/samd21/hpl/pm/hpl_pm.c \
- hw/mcu/microchip/samd/asf4/samd21/hpl/sysctrl/hpl_sysctrl.c
+ hw/mcu/microchip/samd/asf4/samd21/hpl/sysctrl/hpl_sysctrl.c \
+ hw/mcu/microchip/samd/asf4/samd21/hal/src/hal_atomic.c
INC += \
-I$(TOP)/hw/mcu/microchip/samd/asf4/samd21/ \
diff --git a/hw/bsp/metro_m0_express/board_metro_m0_express.c b/hw/bsp/metro_m0_express/board_metro_m0_express.c
index 11bb16c3c..ee0edca74 100644
--- a/hw/bsp/metro_m0_express/board_metro_m0_express.c
+++ b/hw/bsp/metro_m0_express/board_metro_m0_express.c
@@ -39,6 +39,7 @@
// MACRO TYPEDEF CONSTANT ENUM DECLARATION
//--------------------------------------------------------------------+
#define LED_PIN 17
+#define BUTTON_PIN 14
/* Referenced GCLKs, should be initialized firstly */
#define _GCLK_INIT_1ST (1 << 0 | 1 << 1)
@@ -63,6 +64,10 @@ void board_init(void)
gpio_set_pin_direction(LED_PIN, GPIO_DIRECTION_OUT);
gpio_set_pin_level(LED_PIN, 0);
+ // Button init
+ gpio_set_pin_direction(BUTTON_PIN, GPIO_DIRECTION_IN);
+ gpio_set_pin_pull_mode(BUTTON_PIN, GPIO_PULL_UP);
+
#if CFG_TUSB_OS == OPT_OS_NONE
// 1ms tick timer (samd SystemCoreClock may not correct)
SysTick_Config(CONF_CPU_FREQUENCY / 1000);
@@ -101,10 +106,12 @@ void board_led_control(bool state)
gpio_set_pin_level(LED_PIN, state);
}
+uint32_t board_button_read(void)
+{
+ // button is active low
+ return gpio_get_pin_level(BUTTON_PIN) ? 0 : 1;
+}
-/*------------------------------------------------------------------*/
-/* TUSB HAL MILLISECOND
- *------------------------------------------------------------------*/
#if CFG_TUSB_OS == OPT_OS_NONE
volatile uint32_t system_ticks = 0;
@@ -118,5 +125,4 @@ uint32_t board_millis(void)
return system_ticks;
}
-
#endif
diff --git a/hw/bsp/metro_m4_express/board.mk b/hw/bsp/metro_m4_express/board.mk
index 827613723..a0c94c448 100644
--- a/hw/bsp/metro_m4_express/board.mk
+++ b/hw/bsp/metro_m4_express/board.mk
@@ -21,7 +21,8 @@ SRC_C += \
hw/mcu/microchip/samd/asf4/samd51/hpl/gclk/hpl_gclk.c \
hw/mcu/microchip/samd/asf4/samd51/hpl/mclk/hpl_mclk.c \
hw/mcu/microchip/samd/asf4/samd51/hpl/osc32kctrl/hpl_osc32kctrl.c \
- hw/mcu/microchip/samd/asf4/samd51/hpl/oscctrl/hpl_oscctrl.c
+ hw/mcu/microchip/samd/asf4/samd51/hpl/oscctrl/hpl_oscctrl.c \
+ hw/mcu/microchip/samd/asf4/samd51/hal/src/hal_atomic.c
INC += \
-I$(TOP)/hw/mcu/microchip/samd/asf4/samd51/ \
diff --git a/hw/bsp/metro_m4_express/board_metro_m4_express.c b/hw/bsp/metro_m4_express/board_metro_m4_express.c
index 6a134f807..b311aa571 100644
--- a/hw/bsp/metro_m4_express/board_metro_m4_express.c
+++ b/hw/bsp/metro_m4_express/board_metro_m4_express.c
@@ -35,7 +35,8 @@
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM DECLARATION
//--------------------------------------------------------------------+
-#define LED_PIN 16
+#define LED_PIN 16
+#define BUTTON_PIN (32 + 17)
/* Referenced GCLKs, should be initialized firstly */
#define _GCLK_INIT_1ST 0xFFFFFFFF
@@ -61,6 +62,10 @@ void board_init(void)
gpio_set_pin_direction(LED_PIN, GPIO_DIRECTION_OUT);
gpio_set_pin_level(LED_PIN, 0);
+ // Button init
+ gpio_set_pin_direction(BUTTON_PIN, GPIO_DIRECTION_IN);
+ gpio_set_pin_pull_mode(BUTTON_PIN, GPIO_PULL_UP);
+
#if CFG_TUSB_OS == OPT_OS_NONE
// 1ms tick timer (samd SystemCoreClock may not correct)
SysTick_Config(CONF_CPU_FREQUENCY / 1000);
@@ -90,6 +95,11 @@ void board_led_control(bool state)
gpio_set_pin_level(LED_PIN, state);
}
+uint32_t board_button_read(void)
+{
+ // button is active low
+ return gpio_get_pin_level(BUTTON_PIN) ? 0 : 1;
+}
/*------------------------------------------------------------------*/
/* TUSB HAL MILLISECOND
diff --git a/hw/bsp/pca10056/board_pca10056.c b/hw/bsp/pca10056/board_pca10056.c
index 493508841..44a4cb450 100644
--- a/hw/bsp/pca10056/board_pca10056.c
+++ b/hw/bsp/pca10056/board_pca10056.c
@@ -42,10 +42,7 @@
#define LED_PIN 13
#define LED_STATE_ON 0
-uint8_t _button_pins[] = { 11, 12, 24, 25 };
-
-#define BUTTON_COUNT sizeof(_button_pins)
-
+#define BUTTON_PIN 11
/*------------------------------------------------------------------*/
/* TUSB HAL MILLISECOND
@@ -79,12 +76,12 @@ void board_init(void)
NRF_CLOCK->LFCLKSRC = (uint32_t)((CLOCK_LFCLKSRC_SRC_Xtal << CLOCK_LFCLKSRC_SRC_Pos) & CLOCK_LFCLKSRC_SRC_Msk);
NRF_CLOCK->TASKS_LFCLKSTART = 1UL;
- // LEDs
+ // LED
nrf_gpio_cfg_output(LED_PIN);
board_led_control(false);
// Button
- for(uint8_t i=0; i<BUTTON_COUNT; i++) nrf_gpio_cfg_input(_button_pins[i], NRF_GPIO_PIN_PULLUP);
+ nrf_gpio_cfg_input(BUTTON_PIN, NRF_GPIO_PIN_PULLUP);
#if CFG_TUSB_OS == OPT_OS_NONE
// 1ms tick timer
@@ -134,17 +131,10 @@ void board_led_control(bool state)
nrf_gpio_pin_write(LED_PIN, state ? LED_STATE_ON : (1-LED_STATE_ON));
}
-uint32_t board_buttons(void)
+uint32_t board_button_read(void)
{
- uint32_t ret = 0;
-
- for(uint8_t i=0; i<BUTTON_COUNT; i++)
- {
- // button is active LOW
- ret |= (nrf_gpio_pin_read(_button_pins[i]) ? 0 : (1 << i));
- }
-
- return ret;
+ // button is active LOW
+ return (nrf_gpio_pin_read(BUTTON_PIN) ? 0 : 1);
}
int board_uart_read(uint8_t* buf, int len)