mirror of
git://projects.qi-hardware.com/ben-wpan.git
synced 2024-11-25 20:14:40 +02:00
atusb/fw/: new request ATUSB_GPIO_CLEANUP to re-enable INT0
- board.h (gpio_cleanup), board_app.c (gpio_cleanup): restore INT0 when done manipulating GPIOs - board.c (gpio): updated comment explaining how to restore INT0 - include/atusb/ep0.h (enum atspi_requests), ep0.c (ATUSB_GPIO_CLEANUP): new request to return to normal operation after ATUSB_GPIO
This commit is contained in:
parent
f8f2f890d9
commit
f7b9a18917
@ -81,6 +81,7 @@ uint64_t timer_read(void);
|
||||
void timer_init(void);
|
||||
|
||||
int gpio(uint8_t port, uint8_t data, uint8_t dir, uint8_t mask, uint8_t *res);
|
||||
void gpio_cleanup(void);
|
||||
|
||||
void board_init(void);
|
||||
void board_app_init(void);
|
||||
|
@ -93,7 +93,7 @@ void timer_init(void)
|
||||
|
||||
int gpio(uint8_t port, uint8_t data, uint8_t dir, uint8_t mask, uint8_t *res)
|
||||
{
|
||||
EIMSK = 0; /* must reset to recover INT_RF */
|
||||
EIMSK = 0; /* recover INT_RF to ATUSB_GPIO_CLEANUP or an MCU reset */
|
||||
|
||||
switch (port) {
|
||||
case 1:
|
||||
@ -138,6 +138,12 @@ int gpio(uint8_t port, uint8_t data, uint8_t dir, uint8_t mask, uint8_t *res)
|
||||
}
|
||||
|
||||
|
||||
void gpio_cleanup(void)
|
||||
{
|
||||
EIMSK = 1 << 0;
|
||||
}
|
||||
|
||||
|
||||
ISR(INT0_vect)
|
||||
{
|
||||
static uint8_t irq;
|
||||
|
@ -125,6 +125,9 @@ static int my_setup(const struct setup_request *setup)
|
||||
return 0;
|
||||
usb_send(&eps[0], buf, 3, NULL, NULL);
|
||||
return 1;
|
||||
case ATUSB_TO_DEV(ATUSB_GPIO_CLEANUP):
|
||||
gpio_cleanup();
|
||||
return 1;
|
||||
|
||||
case ATUSB_TO_DEV(ATUSB_SLP_TR):
|
||||
debug("ATUSB_SLP_TR\n");
|
||||
|
@ -27,6 +27,7 @@
|
||||
* ->host ATUSB_TIMER - - #bytes (6)
|
||||
* ->host ATUSB_GPIO dir+data mask+p# 3
|
||||
* host-> ATUSB_SLP_TR - - 0
|
||||
* host-> ATUSB_GPIO_CLEANUP - - 0
|
||||
*
|
||||
* host-> ATUSB_REG_WRITE value addr 0
|
||||
* ->host ATUSB_REG_READ - addr 1
|
||||
@ -80,6 +81,7 @@ enum atspi_requests {
|
||||
ATUSB_TIMER,
|
||||
ATUSB_GPIO,
|
||||
ATUSB_SLP_TR,
|
||||
ATUSB_GPIO_CLEANUP,
|
||||
ATUSB_REG_WRITE = 0x20, /* transceiver group */
|
||||
ATUSB_REG_READ,
|
||||
ATUSB_BUF_WRITE,
|
||||
|
Loading…
Reference in New Issue
Block a user