mirror of
git://projects.qi-hardware.com/ben-wpan.git
synced 2024-11-25 21:12:48 +02:00
atusb/fw/: convert functions returning "int" to "bool"
Firmware size is down from 5612 to 3590 bytes. Wow !
This commit is contained in:
parent
c9ab070ffd
commit
a8db238cbb
@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* fw/board.h - Board-specific functions and definitions
|
* fw/board.h - Board-specific functions and definitions
|
||||||
*
|
*
|
||||||
* Written 2008-2011 by Werner Almesberger
|
* Written 2008-2011, 2013 by Werner Almesberger
|
||||||
* Copyright 2008-2011 Werner Almesberger
|
* Copyright 2008-2011, 2013 Werner Almesberger
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -13,6 +13,7 @@
|
|||||||
#ifndef BOARD_H
|
#ifndef BOARD_H
|
||||||
#define BOARD_H
|
#define BOARD_H
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
|
||||||
@ -87,7 +88,7 @@ void panic(void);
|
|||||||
uint64_t timer_read(void);
|
uint64_t timer_read(void);
|
||||||
void timer_init(void);
|
void timer_init(void);
|
||||||
|
|
||||||
int gpio(uint8_t port, uint8_t data, uint8_t dir, uint8_t mask, uint8_t *res);
|
bool gpio(uint8_t port, uint8_t data, uint8_t dir, uint8_t mask, uint8_t *res);
|
||||||
void gpio_cleanup(void);
|
void gpio_cleanup(void);
|
||||||
|
|
||||||
void board_init(void);
|
void board_init(void);
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* fw/board_app.c - Board-specific functions (for the application)
|
* fw/board_app.c - Board-specific functions (for the application)
|
||||||
*
|
*
|
||||||
* Written 2011 by Werner Almesberger
|
* Written 2011, 2013 by Werner Almesberger
|
||||||
* Copyright 2011 Werner Almesberger
|
* Copyright 2011, 2013 Werner Almesberger
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include <avr/io.h>
|
#include <avr/io.h>
|
||||||
@ -92,7 +93,7 @@ void timer_init(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int gpio(uint8_t port, uint8_t data, uint8_t dir, uint8_t mask, uint8_t *res)
|
bool gpio(uint8_t port, uint8_t data, uint8_t dir, uint8_t mask, uint8_t *res)
|
||||||
{
|
{
|
||||||
EIMSK = 0; /* recover INT_RF to ATUSB_GPIO_CLEANUP or an MCU reset */
|
EIMSK = 0; /* recover INT_RF to ATUSB_GPIO_CLEANUP or an MCU reset */
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* fw/ep0.c - EP0 extension protocol
|
* fw/ep0.c - EP0 extension protocol
|
||||||
*
|
*
|
||||||
* Written 2008-2011 by Werner Almesberger
|
* Written 2008-2011, 2013 by Werner Almesberger
|
||||||
* Copyright 2008-2011 Werner Almesberger
|
* Copyright 2008-2011, 2013 Werner Almesberger
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -11,6 +11,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
@ -57,7 +58,7 @@ static void do_buf_write(void *user)
|
|||||||
#define BUILD_OFFSET 7 /* '#' plus "65535" plus ' ' */
|
#define BUILD_OFFSET 7 /* '#' plus "65535" plus ' ' */
|
||||||
|
|
||||||
|
|
||||||
static int my_setup(const struct setup_request *setup)
|
static bool my_setup(const struct setup_request *setup)
|
||||||
{
|
{
|
||||||
uint16_t req = setup->bmRequestType | setup->bRequest << 8;
|
uint16_t req = setup->bmRequestType | setup->bRequest << 8;
|
||||||
unsigned tmp;
|
unsigned tmp;
|
||||||
@ -254,7 +255,7 @@ static int my_setup(const struct setup_request *setup)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int my_dfu_setup(const struct setup_request *setup)
|
static bool my_dfu_setup(const struct setup_request *setup)
|
||||||
{
|
{
|
||||||
switch (setup->bmRequestType | setup->bRequest << 8) {
|
switch (setup->bmRequestType | setup->bRequest << 8) {
|
||||||
case DFU_TO_DEV(DFU_DETACH):
|
case DFU_TO_DEV(DFU_DETACH):
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* fw/flash.c - Board-specific flash functions
|
* fw/flash.c - Board-specific flash functions
|
||||||
*
|
*
|
||||||
* Written 2011 by Werner Almesberger
|
* Written 2011, 2013 by Werner Almesberger
|
||||||
* Copyright 2011 Werner Almesberger
|
* Copyright 2011, 2013 Werner Almesberger
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -11,6 +11,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include <avr/boot.h>
|
#include <avr/boot.h>
|
||||||
@ -29,7 +30,7 @@ void flash_start(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int flash_can_write(uint16_t size)
|
bool flash_can_write(uint16_t size)
|
||||||
{
|
{
|
||||||
return payload+size <= BOOT_ADDR;
|
return payload+size <= BOOT_ADDR;
|
||||||
}
|
}
|
||||||
|
@ -118,7 +118,7 @@ static void change_state(uint8_t new)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int mac_rx(int on)
|
bool mac_rx(int on)
|
||||||
{
|
{
|
||||||
if (on) {
|
if (on) {
|
||||||
mac_irq = handle_irq;
|
mac_irq = handle_irq;
|
||||||
@ -178,7 +178,7 @@ static void do_tx(void *user)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int mac_tx(uint16_t flags, uint16_t len)
|
bool mac_tx(uint16_t flags, uint16_t len)
|
||||||
{
|
{
|
||||||
if (len > MAX_PSDU)
|
if (len > MAX_PSDU)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -13,13 +13,14 @@
|
|||||||
#ifndef MAC_H
|
#ifndef MAC_H
|
||||||
#define MAC_H
|
#define MAC_H
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
|
||||||
extern int (*mac_irq)(void);
|
extern int (*mac_irq)(void);
|
||||||
|
|
||||||
int mac_rx(int on);
|
bool mac_rx(int on);
|
||||||
int mac_tx(uint16_t flags, uint16_t len);
|
bool mac_tx(uint16_t flags, uint16_t len);
|
||||||
void mac_reset(void);
|
void mac_reset(void);
|
||||||
|
|
||||||
#endif /* !MAC_H */
|
#endif /* !MAC_H */
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* fw/sernum.c - ATUSB serial number
|
* fw/sernum.c - ATUSB serial number
|
||||||
*
|
*
|
||||||
* Written 2008-2011 by Werner Almesberger
|
* Written 2008-2011, 2013 by Werner Almesberger
|
||||||
* Copyright 2008-2011 Werner Almesberger
|
* Copyright 2008-2011, 2013 Werner Almesberger
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -11,6 +11,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include "usb.h"
|
#include "usb.h"
|
||||||
@ -26,7 +27,7 @@ static const uint8_t string_descriptor_0[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
int sernum_get_descr(uint8_t type, uint8_t index, const uint8_t **reply,
|
bool sernum_get_descr(uint8_t type, uint8_t index, const uint8_t **reply,
|
||||||
uint8_t *size)
|
uint8_t *size)
|
||||||
{
|
{
|
||||||
if (type != USB_DT_STRING)
|
if (type != USB_DT_STRING)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* fw/sernum.h - ATUSB serial number
|
* fw/sernum.h - ATUSB serial number
|
||||||
*
|
*
|
||||||
* Written 2011 by Werner Almesberger
|
* Written 2011, 2013 by Werner Almesberger
|
||||||
* Copyright 2011 Werner Almesberger
|
* Copyright 2011, 2013 Werner Almesberger
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -13,6 +13,7 @@
|
|||||||
#ifndef SERNUM_H
|
#ifndef SERNUM_H
|
||||||
#define SERNUM_H
|
#define SERNUM_H
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include "board.h"
|
#include "board.h"
|
||||||
@ -20,12 +21,12 @@
|
|||||||
|
|
||||||
#ifdef HAS_BOARD_SERNUM
|
#ifdef HAS_BOARD_SERNUM
|
||||||
|
|
||||||
int sernum_get_descr(uint8_t type, uint8_t index, const uint8_t **reply,
|
bool sernum_get_descr(uint8_t type, uint8_t index, const uint8_t **reply,
|
||||||
uint8_t *size);
|
uint8_t *size);
|
||||||
|
|
||||||
#else /* HAS_BOARD_SERNUM */
|
#else /* HAS_BOARD_SERNUM */
|
||||||
|
|
||||||
static inline int sernum_get_descr(uint8_t type, uint8_t index,
|
static inline bool sernum_get_descr(uint8_t type, uint8_t index,
|
||||||
const uint8_t **reply, uint8_t *size)
|
const uint8_t **reply, uint8_t *size)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* fw/spi.c - ATmega8 family SPI I/O
|
* fw/spi.c - ATmega8 family SPI I/O
|
||||||
*
|
*
|
||||||
* Written 2011 by Werner Almesberger
|
* Written 2011, 2013 by Werner Almesberger
|
||||||
* Copyright 2011 Werner Almesberger
|
* Copyright 2011, 2013 Werner Almesberger
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -11,6 +11,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include <avr/io.h>
|
#include <avr/io.h>
|
||||||
@ -19,7 +20,7 @@
|
|||||||
#include "spi.h"
|
#include "spi.h"
|
||||||
|
|
||||||
|
|
||||||
static int spi_initialized = 0;
|
static bool spi_initialized = 0;
|
||||||
|
|
||||||
|
|
||||||
void spi_begin(void)
|
void spi_begin(void)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* fw/usb/atu2.c - Chip-specific driver for Atmel ATxxxU2 USB chips
|
* fw/usb/atu2.c - Chip-specific driver for Atmel ATxxxU2 USB chips
|
||||||
*
|
*
|
||||||
* Written 2008-2011 by Werner Almesberger
|
* Written 2008-2011, 2013 by Werner Almesberger
|
||||||
* Copyright 2008-2011 Werner Almesberger
|
* Copyright 2008-2011, 2013 Werner Almesberger
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -18,6 +18,7 @@
|
|||||||
* - enumeration often encounters an error -71 (from which it recovers)
|
* - enumeration often encounters an error -71 (from which it recovers)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#define F_CPU 8000000UL
|
#define F_CPU 8000000UL
|
||||||
@ -59,11 +60,10 @@ static void enable_addr(void *user)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int set_addr(uint8_t addr)
|
void set_addr(uint8_t addr)
|
||||||
{
|
{
|
||||||
UDADDR = addr;
|
UDADDR = addr;
|
||||||
usb_send(&eps[0], NULL, 0, enable_addr, NULL);
|
usb_send(&eps[0], NULL, 0, enable_addr, NULL);
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -76,7 +76,7 @@ void usb_ep_change(struct ep_descr *ep)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int ep_setup(void)
|
static bool ep_setup(void)
|
||||||
{
|
{
|
||||||
struct setup_request setup;
|
struct setup_request setup;
|
||||||
|
|
||||||
@ -96,7 +96,7 @@ static int ep_setup(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int ep_rx(struct ep_descr *ep)
|
static bool ep_rx(struct ep_descr *ep)
|
||||||
{
|
{
|
||||||
uint8_t size;
|
uint8_t size;
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* boot/dfu.c - DFU protocol engine
|
* boot/dfu.c - DFU protocol engine
|
||||||
*
|
*
|
||||||
* Written 2008-2011 by Werner Almesberger
|
* Written 2008-2011, 2013 by Werner Almesberger
|
||||||
* Copyright 2008-2011 Werner Almesberger
|
* Copyright 2008-2011, 2013 Werner Almesberger
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -25,6 +25,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include "usb.h"
|
#include "usb.h"
|
||||||
@ -81,7 +82,7 @@ const uint8_t config_descriptor[] = {
|
|||||||
|
|
||||||
|
|
||||||
static uint16_t next_block = 0;
|
static uint16_t next_block = 0;
|
||||||
static int did_download;
|
static bool did_download;
|
||||||
|
|
||||||
|
|
||||||
static uint8_t buf[EP0_SIZE];
|
static uint8_t buf[EP0_SIZE];
|
||||||
@ -95,7 +96,7 @@ static void block_write(void *user)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int block_receive(uint16_t length)
|
static bool block_receive(uint16_t length)
|
||||||
{
|
{
|
||||||
static uint16_t size;
|
static uint16_t size;
|
||||||
|
|
||||||
@ -115,7 +116,7 @@ static int block_receive(uint16_t length)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int block_transmit(uint16_t length)
|
static bool block_transmit(uint16_t length)
|
||||||
{
|
{
|
||||||
uint16_t got;
|
uint16_t got;
|
||||||
|
|
||||||
@ -134,9 +135,9 @@ static int block_transmit(uint16_t length)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int my_setup(const struct setup_request *setup)
|
static bool my_setup(const struct setup_request *setup)
|
||||||
{
|
{
|
||||||
int ok;
|
bool ok;
|
||||||
|
|
||||||
switch (setup->bmRequestType | setup->bRequest << 8) {
|
switch (setup->bmRequestType | setup->bRequest << 8) {
|
||||||
case DFU_TO_DEV(DFU_DETACH):
|
case DFU_TO_DEV(DFU_DETACH):
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* boot/dfu.h - DFU protocol constants and data structures
|
* boot/dfu.h - DFU protocol constants and data structures
|
||||||
*
|
*
|
||||||
* Written 2008, 2011 by Werner Almesberger
|
* Written 2008, 2011, 2013 by Werner Almesberger
|
||||||
* Copyright 2008, 2011 Werner Almesberger
|
* Copyright 2008, 2011, 2013 Werner Almesberger
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -14,6 +14,7 @@
|
|||||||
#ifndef DFU_H
|
#ifndef DFU_H
|
||||||
#define DFU_H
|
#define DFU_H
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include "usb.h"
|
#include "usb.h"
|
||||||
@ -101,13 +102,13 @@ extern struct dfu dfu;
|
|||||||
|
|
||||||
|
|
||||||
void flash_start(void);
|
void flash_start(void);
|
||||||
int flash_can_write(uint16_t size);
|
bool flash_can_write(uint16_t size);
|
||||||
void flash_write(const uint8_t *buf, uint16_t size);
|
void flash_write(const uint8_t *buf, uint16_t size);
|
||||||
void flash_end_write(void);
|
void flash_end_write(void);
|
||||||
uint16_t flash_read(uint8_t *buf, uint16_t size);
|
uint16_t flash_read(uint8_t *buf, uint16_t size);
|
||||||
|
|
||||||
int dfu_setup_common(const struct setup_request *setup);
|
bool dfu_setup_common(const struct setup_request *setup);
|
||||||
int dfu_my_descr(uint8_t type, uint8_t index, const uint8_t **reply,
|
bool dfu_my_descr(uint8_t type, uint8_t index, const uint8_t **reply,
|
||||||
uint8_t *size);
|
uint8_t *size);
|
||||||
|
|
||||||
void dfu_init(void);
|
void dfu_init(void);
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* boot/dfu_common.c - DFU protocol engine parts common to App/DFU
|
* boot/dfu_common.c - DFU protocol engine parts common to App/DFU
|
||||||
*
|
*
|
||||||
* Written 2008-2011 by Werner Almesberger
|
* Written 2008-2011, 2013 by Werner Almesberger
|
||||||
* Copyright 2008-2011 Werner Almesberger
|
* Copyright 2008-2011, 2013 Werner Almesberger
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -25,6 +25,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include "usb.h"
|
#include "usb.h"
|
||||||
@ -65,7 +66,7 @@ struct dfu dfu = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
int dfu_setup_common(const struct setup_request *setup)
|
bool dfu_setup_common(const struct setup_request *setup)
|
||||||
{
|
{
|
||||||
switch (setup->bmRequestType | setup->bRequest << 8) {
|
switch (setup->bmRequestType | setup->bRequest << 8) {
|
||||||
case DFU_FROM_DEV(DFU_GETSTATUS):
|
case DFU_FROM_DEV(DFU_GETSTATUS):
|
||||||
@ -89,7 +90,7 @@ int dfu_setup_common(const struct setup_request *setup)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int dfu_my_descr(uint8_t type, uint8_t index, const uint8_t **reply,
|
bool dfu_my_descr(uint8_t type, uint8_t index, const uint8_t **reply,
|
||||||
uint8_t *size)
|
uint8_t *size)
|
||||||
{
|
{
|
||||||
if (type != DFU_DT_FUNCTIONAL)
|
if (type != DFU_DT_FUNCTIONAL)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* fw/usb/usb.c - USB hardware setup and standard device requests
|
* fw/usb/usb.c - USB hardware setup and standard device requests
|
||||||
*
|
*
|
||||||
* Written 2008-2011 by Werner Almesberger
|
* Written 2008-2011, 2013 by Werner Almesberger
|
||||||
* Copyright 2008-2011 Werner Almesberger
|
* Copyright 2008-2011, 2013 Werner Almesberger
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -16,6 +16,7 @@
|
|||||||
* - should support EP clearing and stalling
|
* - should support EP clearing and stalling
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include "usb.h"
|
#include "usb.h"
|
||||||
@ -33,9 +34,9 @@ extern void panic(void);
|
|||||||
#define BUG_ON(cond)
|
#define BUG_ON(cond)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int (*user_setup)(const struct setup_request *setup);
|
bool (*user_setup)(const struct setup_request *setup);
|
||||||
void (*user_set_interface)(int nth);
|
void (*user_set_interface)(int nth);
|
||||||
int (*user_get_descriptor)(uint8_t type, uint8_t index,
|
bool (*user_get_descriptor)(uint8_t type, uint8_t index,
|
||||||
const uint8_t **reply, uint8_t *size);
|
const uint8_t **reply, uint8_t *size);
|
||||||
void (*user_reset)(void);
|
void (*user_reset)(void);
|
||||||
|
|
||||||
@ -53,7 +54,7 @@ void usb_io(struct ep_descr *ep, enum ep_state state, uint8_t *buf,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int get_descriptor(uint8_t type, uint8_t index, uint16_t length)
|
static bool get_descriptor(uint8_t type, uint8_t index, uint16_t length)
|
||||||
{
|
{
|
||||||
const uint8_t *reply;
|
const uint8_t *reply;
|
||||||
uint8_t size;
|
uint8_t size;
|
||||||
@ -82,7 +83,7 @@ static int get_descriptor(uint8_t type, uint8_t index, uint16_t length)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int handle_setup(const struct setup_request *setup)
|
bool handle_setup(const struct setup_request *setup)
|
||||||
{
|
{
|
||||||
switch (setup->bmRequestType | setup->bRequest << 8) {
|
switch (setup->bmRequestType | setup->bRequest << 8) {
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* fw/usb//usb.h - USB hardware setup and standard device requests
|
* fw/usb//usb.h - USB hardware setup and standard device requests
|
||||||
*
|
*
|
||||||
* Written 2008, 2009, 2011 by Werner Almesberger
|
* Written 2008, 2009, 2011, 2013 by Werner Almesberger
|
||||||
* Copyright 2008, 2009, 2011 Werner Almesberger
|
* Copyright 2008, 2009, 2011, 2013 Werner Almesberger
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -15,6 +15,7 @@
|
|||||||
#define USB_H
|
#define USB_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
|
||||||
@ -132,9 +133,9 @@ extern const uint8_t device_descriptor[];
|
|||||||
extern const uint8_t config_descriptor[];
|
extern const uint8_t config_descriptor[];
|
||||||
extern struct ep_descr eps[];
|
extern struct ep_descr eps[];
|
||||||
|
|
||||||
extern int (*user_setup)(const struct setup_request *setup);
|
extern bool (*user_setup)(const struct setup_request *setup);
|
||||||
extern void (*user_set_interface)(int nth);
|
extern void (*user_set_interface)(int nth);
|
||||||
extern int (*user_get_descriptor)(uint8_t type, uint8_t index,
|
extern bool (*user_get_descriptor)(uint8_t type, uint8_t index,
|
||||||
const uint8_t **reply, uint8_t *size);
|
const uint8_t **reply, uint8_t *size);
|
||||||
extern void (*user_reset)(void);
|
extern void (*user_reset)(void);
|
||||||
|
|
||||||
@ -148,8 +149,8 @@ extern void (*user_reset)(void);
|
|||||||
void usb_io(struct ep_descr *ep, enum ep_state state, uint8_t *buf,
|
void usb_io(struct ep_descr *ep, enum ep_state state, uint8_t *buf,
|
||||||
uint8_t size, void (*callback)(void *user), void *user);
|
uint8_t size, void (*callback)(void *user), void *user);
|
||||||
|
|
||||||
int handle_setup(const struct setup_request *setup);
|
bool handle_setup(const struct setup_request *setup);
|
||||||
int set_addr(uint8_t addr);
|
void set_addr(uint8_t addr);
|
||||||
void usb_ep_change(struct ep_descr *ep);
|
void usb_ep_change(struct ep_descr *ep);
|
||||||
void usb_reset(void);
|
void usb_reset(void);
|
||||||
void usb_init(void);
|
void usb_init(void);
|
||||||
|
Loading…
Reference in New Issue
Block a user