$(INCLUDE_DIR)/delay.h \
$(INCLUDE_DIR)/reg_ezusb.h \
$(INCLUDE_DIR)/io.h \
- $(INCLUDE_DIR)/msgtypes.h \
- $(INCLUDE_DIR)/shorttypes.h
+ $(INCLUDE_DIR)/msgtypes.h
# Disable all built-in rules.
.SUFFIXES:
#ifndef __DELAY_H
#define __DELAY_H
-#include "shorttypes.h"
+#include <stdint.h>
#define NOP {__asm nop __endasm;}
void delay_5us(void);
void delay_1ms(void);
-void delay_us(u16 delay);
-void delay_ms(u16 delay);
+void delay_us(uint16_t delay);
+void delay_ms(uint16_t delay);
#endif
#ifndef __JTAG_H
#define __JTAG_H
-#include "shorttypes.h"
+#include <stdint.h>
#define NOP {__asm nop __endasm;}
-void jtag_scan_in(u8 out_offset, u8 in_offset);
-void jtag_slow_scan_in(u8 out_offset, u8 in_offset);
+void jtag_scan_in(uint8_t out_offset, uint8_t in_offset);
+void jtag_slow_scan_in(uint8_t out_offset, uint8_t in_offset);
-void jtag_scan_out(u8 out_offset);
-void jtag_slow_scan_out(u8 out_offset);
+void jtag_scan_out(uint8_t out_offset);
+void jtag_slow_scan_out(uint8_t out_offset);
-void jtag_scan_io(u8 out_offset, u8 in_offset);
-void jtag_slow_scan_io(u8 out_offset, u8 in_offset);
+void jtag_scan_io(uint8_t out_offset, uint8_t in_offset);
+void jtag_slow_scan_io(uint8_t out_offset, uint8_t in_offset);
-void jtag_clock_tck(u16 count);
-void jtag_slow_clock_tck(u16 count);
-void jtag_clock_tms(u8 count, u8 sequence);
-void jtag_slow_clock_tms(u8 count, u8 sequence);
+void jtag_clock_tck(uint16_t count);
+void jtag_slow_clock_tck(uint16_t count);
+void jtag_clock_tms(uint8_t count, uint8_t sequence);
+void jtag_slow_clock_tms(uint8_t count, uint8_t sequence);
-u16 jtag_get_signals(void);
-void jtag_set_signals(u8 low, u8 high);
+uint16_t jtag_get_signals(void);
+void jtag_set_signals(uint8_t low, uint8_t high);
-void jtag_configure_tck_delay(u8 scan_in, u8 scan_out, u8 scan_io, u8 tck,
- u8 tms);
+void jtag_configure_tck_delay(uint8_t scan_in, uint8_t scan_out,
+ uint8_t scan_io, uint8_t tck, uint8_t tms);
#endif
#ifndef __PROTOCOL_H
#define __PROTOCOL_H
-#include "shorttypes.h"
#include "common.h"
#include <stdbool.h>
+++ /dev/null
-/***************************************************************************
- * Copyright (C) 2011 by Martin Schmoelzer *
- * <martin.schmoelzer@student.tuwien.ac.at> *
- * *
- * 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 *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * 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, write to the *
- * Free Software Foundation, Inc., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
- ***************************************************************************/
-
-#ifndef __SHORTTYPES_H
-#define __SHORTTYPES_H
-
-#include <stdint.h>
-
-/**
- * @file Integer type definitions for shorter code (easier to stay within 80
- * character maximum line length).
- */
-
-/* Signed integers */
-typedef int8_t s8;
-typedef int16_t s16;
-typedef int32_t s32;
-
-/* Unsigned integers */
-typedef uint8_t u8;
-typedef uint16_t u16;
-typedef uint32_t u32;
-
-#endif
#ifndef __USB_H
#define __USB_H
-#include "shorttypes.h"
#include "reg_ezusb.h"
+#include <stdint.h>
#include <stdbool.h>
#define NULL (void*)0;
-/* High and Low byte of a word (u16) */
-#define HI8(word) (u8)(((u16)word >> 8) & 0xff)
-#define LO8(word) (u8)((u16)word & 0xff)
+/* High and Low byte of a word (uint16_t) */
+#define HI8(word) (uint8_t)(((uint16_t)word >> 8) & 0xff)
+#define LO8(word) (uint8_t)((uint16_t)word & 0xff)
/* Convenience functions */
#define STALL_EP0() EP0CS |= EP0STALL
/** USB Device Descriptor. See USB 1.1 spec, pp. 196 - 198 */
struct usb_device_descriptor {
- u8 bLength; ///< Size of this descriptor in bytes.
- u8 bDescriptorType; ///< DEVICE Descriptor Type.
- u16 bcdUSB; ///< USB specification release number (BCD).
- u8 bDeviceClass; ///< Class code.
- u8 bDeviceSubClass; ///< Subclass code.
- u8 bDeviceProtocol; ///< Protocol code.
- u8 bMaxPacketSize0; ///< Maximum packet size for EP0 (8, 16, 32, 64).
- u16 idVendor; ///< USB Vendor ID.
- u16 idProduct; ///< USB Product ID.
- u16 bcdDevice; ///< Device Release Number (BCD).
- u8 iManufacturer; ///< Index of manufacturer string descriptor.
- u8 iProduct; ///< Index of product string descriptor.
- u8 iSerialNumber; ///< Index of string descriptor containing serial #.
- u8 bNumConfigurations; ///< Number of possible configurations.
+ uint8_t bLength; ///< Size of this descriptor in bytes.
+ uint8_t bDescriptorType; ///< DEVICE Descriptor Type.
+ uint16_t bcdUSB; ///< USB specification release number (BCD).
+ uint8_t bDeviceClass; ///< Class code.
+ uint8_t bDeviceSubClass; ///< Subclass code.
+ uint8_t bDeviceProtocol; ///< Protocol code.
+ uint8_t bMaxPacketSize0; ///< Maximum packet size for EP0 (8, 16, 32, 64).
+ uint16_t idVendor; ///< USB Vendor ID.
+ uint16_t idProduct; ///< USB Product ID.
+ uint16_t bcdDevice; ///< Device Release Number (BCD).
+ uint8_t iManufacturer; ///< Index of manufacturer string descriptor.
+ uint8_t iProduct; ///< Index of product string descriptor.
+ uint8_t iSerialNumber; ///< Index of string descriptor containing serial #.
+ uint8_t bNumConfigurations; ///< Number of possible configurations.
};
/** USB Configuration Descriptor. See USB 1.1 spec, pp. 199 - 200 */
struct usb_config_descriptor {
- u8 bLength; ///< Size of this descriptor in bytes.
- u8 bDescriptorType; ///< CONFIGURATION descriptor type.
- u16 wTotalLength; ///< Combined total length of all descriptors.
- u8 bNumInterfaces; ///< Number of interfaces in this configuration.
- u8 bConfigurationValue; ///< Value used to select this configuration.
- u8 iConfiguration; ///< Index of configuration string descriptor.
- u8 bmAttributes; ///< Configuration characteristics.
- u8 MaxPower; ///< Maximum power consumption in 2 mA units.
+ uint8_t bLength; ///< Size of this descriptor in bytes.
+ uint8_t bDescriptorType; ///< CONFIGURATION descriptor type.
+ uint16_t wTotalLength; ///< Combined total length of all descriptors.
+ uint8_t bNumInterfaces; ///< Number of interfaces in this configuration.
+ uint8_t bConfigurationValue;///< Value used to select this configuration.
+ uint8_t iConfiguration; ///< Index of configuration string descriptor.
+ uint8_t bmAttributes; ///< Configuration characteristics.
+ uint8_t MaxPower; ///< Maximum power consumption in 2 mA units.
};
/** USB Interface Descriptor. See USB 1.1 spec, pp. 201 - 203 */
struct usb_interface_descriptor {
- u8 bLength; ///< Size of this descriptor in bytes.
- u8 bDescriptorType; ///< INTERFACE descriptor type.
- u8 bInterfaceNumber; ///< Interface number.
- u8 bAlternateSetting; ///< Value used to select alternate setting.
- u8 bNumEndpoints; ///< Number of endpoints used by this interface.
- u8 bInterfaceClass; ///< Class code.
- u8 bInterfaceSubclass; ///< Subclass code.
- u8 bInterfaceProtocol; ///< Protocol code.
- u8 iInterface; ///< Index of interface string descriptor.
+ uint8_t bLength; ///< Size of this descriptor in bytes.
+ uint8_t bDescriptorType; ///< INTERFACE descriptor type.
+ uint8_t bInterfaceNumber; ///< Interface number.
+ uint8_t bAlternateSetting; ///< Value used to select alternate setting.
+ uint8_t bNumEndpoints; ///< Number of endpoints used by this interface.
+ uint8_t bInterfaceClass; ///< Class code.
+ uint8_t bInterfaceSubclass; ///< Subclass code.
+ uint8_t bInterfaceProtocol; ///< Protocol code.
+ uint8_t iInterface; ///< Index of interface string descriptor.
};
/** USB Endpoint Descriptor. See USB 1.1 spec, pp. 203 - 204 */
struct usb_endpoint_descriptor {
- u8 bLength; ///< Size of this descriptor in bytes.
- u8 bDescriptorType; ///< ENDPOINT descriptor type.
- u8 bEndpointAddress; ///< Endpoint Address: USB 1.1 spec, table 9-10.
- u8 bmAttributes; ///< Endpoint Attributes: USB 1.1 spec, table 9-10.
- u16 wMaxPacketSize; ///< Maximum packet size for this endpoint.
- u8 bInterval; ///< Polling interval (in ms) for this endpoint.
+ uint8_t bLength; ///< Size of this descriptor in bytes.
+ uint8_t bDescriptorType; ///< ENDPOINT descriptor type.
+ uint8_t bEndpointAddress; ///< Endpoint Address: USB 1.1 spec, table 9-10.
+ uint8_t bmAttributes; ///< Endpoint Attributes: USB 1.1 spec, table 9-10.
+ uint16_t wMaxPacketSize; ///< Maximum packet size for this endpoint.
+ uint8_t bInterval; ///< Polling interval (in ms) for this endpoint.
};
/** USB Language Descriptor. See USB 1.1 spec, pp. 204 - 205 */
struct usb_language_descriptor {
- u8 bLength; ///< Size of this descriptor in bytes.
- u8 bDescriptorType; ///< STRING descriptor type.
- u16 wLANGID[]; ///< LANGID codes.
+ uint8_t bLength; ///< Size of this descriptor in bytes.
+ uint8_t bDescriptorType; ///< STRING descriptor type.
+ uint16_t wLANGID[]; ///< LANGID codes.
};
/** USB String Descriptor. See USB 1.1 spec, pp. 204 - 205 */
struct usb_string_descriptor {
- u8 bLength; ///< Size of this descriptor in bytes.
- u8 bDescriptorType; ///< STRING descriptor type.
- u16 bString[]; ///< UNICODE encoded string.
+ uint8_t bLength; ///< Size of this descriptor in bytes.
+ uint8_t bDescriptorType; ///< STRING descriptor type.
+ uint16_t bString[]; ///< UNICODE encoded string.
};
/********************** USB Control Endpoint 0 related *********************/
/** USB Control Setup Data. See USB 1.1 spec, pp. 183 - 185 */
struct setup_data {
- u8 bmRequestType; ///< Characteristics of a request.
- u8 bRequest; ///< Specific request.
- u16 wValue; ///< Field that varies according to request.
- u16 wIndex; ///< Field that varies according to request.
- u16 wLength; ///< Number of bytes to transfer in data stage.
+ uint8_t bmRequestType; ///< Characteristics of a request.
+ uint8_t bRequest; ///< Specific request.
+ uint16_t wValue; ///< Field that varies according to request.
+ uint16_t wIndex; ///< Field that varies according to request.
+ uint16_t wLength; ///< Number of bytes to transfer in data stage.
};
/* External declarations for variables that need to be accessed outside of
/*************************** Function Prototypes ***************************/
-__xdata u8* usb_get_endpoint_cs_reg(u8 ep);
-void usb_reset_data_toggle(u8 ep);
+__xdata uint8_t* usb_get_endpoint_cs_reg(uint8_t ep);
+void usb_reset_data_toggle(uint8_t ep);
bool usb_handle_get_status(void);
bool usb_handle_clear_feature(void);
}
void delay_1ms(void) {
- u16 i;
+ uint16_t i;
for (i = 0; i < 598; i++);
}
-void delay_us(u16 delay)
+void delay_us(uint16_t delay)
{
- u16 i;
- u16 maxcount = (delay / 5);
+ uint16_t i;
+ uint16_t maxcount = (delay / 5);
for (i = 0; i < maxcount; i++) {
delay_5us();
}
}
-void delay_ms(u16 delay)
+void delay_ms(uint16_t delay)
{
- u16 i;
+ uint16_t i;
for (i = 0; i < delay; i++) {
delay_1ms();
#include <stdbool.h>
/** Delay value for SCAN_IN operations with less than maximum TCK frequency */
-u8 delay_scan_in = 0;
+uint8_t delay_scan_in = 0;
/** Delay value for SCAN_OUT operations with less than maximum TCK frequency */
-u8 delay_scan_out = 0;
+uint8_t delay_scan_out = 0;
/** Delay value for SCAN_IO operations with less than maximum TCK frequency */
-u8 delay_scan_io = 0;
+uint8_t delay_scan_io = 0;
/** Delay value for CLOCK_TCK operations with less than maximum frequency */
-u8 delay_tck = 0;
+uint8_t delay_tck = 0;
/** Delay value for CLOCK_TMS operations with less than maximum frequency */
-u8 delay_tms = 0;
+uint8_t delay_tms = 0;
/**
* Perform JTAG SCAN-IN operation at maximum TCK frequency.
*
* @param out_offset offset in OUT2BUF where payload data starts
*/
-void jtag_scan_in(u8 out_offset, u8 in_offset)
+void jtag_scan_in(uint8_t out_offset, uint8_t in_offset)
{
- u8 scan_size_bytes, bits_last_byte;
- u8 tms_count_start, tms_count_end;
- u8 tms_sequence_start, tms_sequence_end;
- u8 tdo_data, i, j;
+ uint8_t scan_size_bytes, bits_last_byte;
+ uint8_t tms_count_start, tms_count_end;
+ uint8_t tms_sequence_start, tms_sequence_end;
+ uint8_t tdo_data, i, j;
- u8 outb_buffer;
+ uint8_t outb_buffer;
/* Get parameters from OUT2BUF */
scan_size_bytes = OUT2BUF[out_offset];
*
* @param out_offset offset in OUT2BUF where payload data starts
*/
-void jtag_slow_scan_in(u8 out_offset, u8 in_offset)
+void jtag_slow_scan_in(uint8_t out_offset, uint8_t in_offset)
{
- u8 scan_size_bytes, bits_last_byte;
- u8 tms_count_start, tms_count_end;
- u8 tms_sequence_start, tms_sequence_end;
- u8 tdo_data, i, j, k;
+ uint8_t scan_size_bytes, bits_last_byte;
+ uint8_t tms_count_start, tms_count_end;
+ uint8_t tms_sequence_start, tms_sequence_end;
+ uint8_t tdo_data, i, j, k;
- u8 outb_buffer;
+ uint8_t outb_buffer;
/* Get parameters from OUT2BUF */
scan_size_bytes = OUT2BUF[out_offset];
*
* @param out_offset offset in OUT2BUF where payload data starts
*/
-void jtag_scan_out(u8 out_offset)
+void jtag_scan_out(uint8_t out_offset)
{
- u8 scan_size_bytes, bits_last_byte;
- u8 tms_count_start, tms_count_end;
- u8 tms_sequence_start, tms_sequence_end;
- u8 tdi_data, i, j;
+ uint8_t scan_size_bytes, bits_last_byte;
+ uint8_t tms_count_start, tms_count_end;
+ uint8_t tms_sequence_start, tms_sequence_end;
+ uint8_t tdi_data, i, j;
- u8 outb_buffer;
+ uint8_t outb_buffer;
/* Get parameters from OUT2BUF */
scan_size_bytes = OUT2BUF[out_offset];
*
* @param out_offset offset in OUT2BUF where payload data starts
*/
-void jtag_slow_scan_out(u8 out_offset)
+void jtag_slow_scan_out(uint8_t out_offset)
{
- u8 scan_size_bytes, bits_last_byte;
- u8 tms_count_start, tms_count_end;
- u8 tms_sequence_start, tms_sequence_end;
- u8 tdi_data, i, j, k;
+ uint8_t scan_size_bytes, bits_last_byte;
+ uint8_t tms_count_start, tms_count_end;
+ uint8_t tms_sequence_start, tms_sequence_end;
+ uint8_t tdi_data, i, j, k;
- u8 outb_buffer;
+ uint8_t outb_buffer;
/* Get parameters from OUT2BUF */
scan_size_bytes = OUT2BUF[out_offset];
*
* @param out_offset offset in OUT2BUF where payload data starts
*/
-void jtag_scan_io(u8 out_offset, u8 in_offset)
+void jtag_scan_io(uint8_t out_offset, uint8_t in_offset)
{
- u8 scan_size_bytes, bits_last_byte;
- u8 tms_count_start, tms_count_end;
- u8 tms_sequence_start, tms_sequence_end;
- u8 tdi_data, tdo_data, i, j;
+ uint8_t scan_size_bytes, bits_last_byte;
+ uint8_t tms_count_start, tms_count_end;
+ uint8_t tms_sequence_start, tms_sequence_end;
+ uint8_t tdi_data, tdo_data, i, j;
- u8 outb_buffer;
+ uint8_t outb_buffer;
/* Get parameters from OUT2BUF */
scan_size_bytes = OUT2BUF[out_offset];
*
* @param out_offset offset in OUT2BUF where payload data starts
*/
-void jtag_slow_scan_io(u8 out_offset, u8 in_offset)
+void jtag_slow_scan_io(uint8_t out_offset, uint8_t in_offset)
{
- u8 scan_size_bytes, bits_last_byte;
- u8 tms_count_start, tms_count_end;
- u8 tms_sequence_start, tms_sequence_end;
- u8 tdi_data, tdo_data, i, j, k;
+ uint8_t scan_size_bytes, bits_last_byte;
+ uint8_t tms_count_start, tms_count_end;
+ uint8_t tms_sequence_start, tms_sequence_end;
+ uint8_t tdi_data, tdo_data, i, j, k;
- u8 outb_buffer;
+ uint8_t outb_buffer;
/* Get parameters from OUT2BUF */
scan_size_bytes = OUT2BUF[out_offset];
*
* @param count number of TCK clock cyclces to generate.
*/
-void jtag_clock_tck(u16 count)
+void jtag_clock_tck(uint16_t count)
{
- u16 i;
- u8 outb_buffer = OUTB & ~(PIN_TCK);
+ uint16_t i;
+ uint8_t outb_buffer = OUTB & ~(PIN_TCK);
for ( i = 0; i < count; i++ ) {
OUTB = outb_buffer;
*
* @param count number of TCK clock cyclces to generate.
*/
-void jtag_slow_clock_tck(u16 count)
+void jtag_slow_clock_tck(uint16_t count)
{
- u16 i;
- u8 j;
- u8 outb_buffer = OUTB & ~(PIN_TCK);
+ uint16_t i;
+ uint8_t j;
+ uint8_t outb_buffer = OUTB & ~(PIN_TCK);
for ( i = 0; i < count; i++ ) {
OUTB = outb_buffer;
* @param sequence the TMS pin levels for each state transition, starting with
* the least-significant bit.
*/
-void jtag_clock_tms(u8 count, u8 sequence)
+void jtag_clock_tms(uint8_t count, uint8_t sequence)
{
- u8 outb_buffer = OUTB & ~(PIN_TCK);
- u8 i;
+ uint8_t outb_buffer = OUTB & ~(PIN_TCK);
+ uint8_t i;
for ( i = 0; i < count; i++ ) {
/* Set TMS pin according to sequence parameter */
* @param sequence the TMS pin levels for each state transition, starting with
* the least-significant bit.
*/
-void jtag_slow_clock_tms(u8 count, u8 sequence)
+void jtag_slow_clock_tms(uint8_t count, uint8_t sequence)
{
- u8 outb_buffer = OUTB & ~(PIN_TCK);
- u8 i, j;
+ uint8_t outb_buffer = OUTB & ~(PIN_TCK);
+ uint8_t i, j;
for (i = 0; i < count; i++) {
/* Set TMS pin according to sequence parameter */
* of the JTAG input signals and the least-significant byte cotains the state
* of the JTAG output signals.
*/
-u16 jtag_get_signals(void)
+uint16_t jtag_get_signals(void)
{
- u8 input_signal_state, output_signal_state;
+ uint8_t input_signal_state, output_signal_state;
input_signal_state = 0;
output_signal_state = 0;
/* Get states of output pins */
output_signal_state = PINSB & MASK_PORTB_DIRECTION_OUT;
- return ((u16)input_signal_state << 8) | ((u16)output_signal_state);
+ return ((uint16_t)input_signal_state << 8) | ((uint16_t)output_signal_state);
}
/**
* @param low signals which should be de-asserted.
* @param high signals which should be asserted.
*/
-void jtag_set_signals(u8 low, u8 high)
+void jtag_set_signals(uint8_t low, uint8_t high)
{
OUTB &= ~(low & MASK_PORTB_DIRECTION_OUT);
OUTB |= (high & MASK_PORTB_DIRECTION_OUT);
* @param tck number of delay cycles in clock_tck operations.
* @param tms number of delay cycles in clock_tms operations.
*/
-void jtag_configure_tck_delay(u8 scan_in, u8 scan_out, u8 scan_io, u8 tck,
- u8 tms)
+void jtag_configure_tck_delay(uint8_t scan_in, uint8_t scan_out,
+ uint8_t scan_io, uint8_t tck, uint8_t tms)
{
delay_scan_in = scan_in;
delay_scan_out = scan_out;
#include "main.h"
-#include "shorttypes.h"
#include "io.h"
#include "usb.h"
#include "protocol.h"
*/
/** Index in EP2 Bulk-OUT data buffer that contains the current command ID */
-volatile u8 cmd_id_index;
+volatile uint8_t cmd_id_index;
/** Number of data bytes already in EP2 Bulk-IN buffer */
-volatile u8 payload_index_in;
+volatile uint8_t payload_index_in;
/**
* Execute a SET_LEDS command.
*/
void execute_set_led_command(void)
{
- u8 led_state = OUT2BUF[cmd_id_index + 1];
+ uint8_t led_state = OUT2BUF[cmd_id_index + 1];
if (led_state & RUN_LED_ON) {
SET_RUN_LED();
*/
bool execute_command(void)
{
- u8 usb_out_bytecount, usb_in_bytecount;
- u16 signal_state;
- u16 count;
+ uint8_t usb_out_bytecount, usb_in_bytecount;
+ uint16_t signal_state;
+ uint16_t count;
/* Most commands do not transfer IN data. To save code space, we write 0 to
* usb_in_bytecount here, then modify it in the switch statement below where
break;
case CMD_CLOCK_TCK:
usb_out_bytecount = 2;
- count = (u16)OUT2BUF[cmd_id_index + 1];
- count |= ((u16)OUT2BUF[cmd_id_index + 2]) << 8;
+ count = (uint16_t)OUT2BUF[cmd_id_index + 1];
+ count |= ((uint16_t)OUT2BUF[cmd_id_index + 2]) << 8;
jtag_clock_tck(count);
break;
case CMD_SLOW_SCAN_IN:
break;
case CMD_SLOW_CLOCK_TCK:
usb_out_bytecount = 2;
- count = (u16)OUT2BUF[cmd_id_index + 1];
- count |= ((u16)OUT2BUF[cmd_id_index + 2]) << 8;
+ count = (uint16_t)OUT2BUF[cmd_id_index + 1];
+ count |= ((uint16_t)OUT2BUF[cmd_id_index + 2]) << 8;
jtag_slow_clock_tck(count);
break;
case CMD_SLEEP_US:
usb_out_bytecount = 2;
- count = (u16)OUT2BUF[cmd_id_index + 1];
- count |= ((u16)OUT2BUF[cmd_id_index + 2]) << 8;
+ count = (uint16_t)OUT2BUF[cmd_id_index + 1];
+ count |= ((uint16_t)OUT2BUF[cmd_id_index + 2]) << 8;
delay_us(count);
break;
case CMD_SLEEP_MS:
usb_out_bytecount = 2;
- count = (u16)OUT2BUF[cmd_id_index + 1];
- count |= ((u16)OUT2BUF[cmd_id_index + 2]) << 8;
+ count = (uint16_t)OUT2BUF[cmd_id_index + 1];
+ count |= ((uint16_t)OUT2BUF[cmd_id_index + 2]) << 8;
delay_ms(count);
break;
case CMD_GET_SIGNALS:
* specified in \a ep
* @return on failure: NULL
*/
-__xdata u8* usb_get_endpoint_cs_reg(u8 ep)
+__xdata uint8_t* usb_get_endpoint_cs_reg(uint8_t ep)
{
/* Mask direction bit */
- u8 ep_num = ep & 0x7F;
+ uint8_t ep_num = ep & 0x7F;
switch (ep_num) {
case 0:
return NULL;
}
-void usb_reset_data_toggle(u8 ep)
+void usb_reset_data_toggle(uint8_t ep)
{
/* TOGCTL register:
+----+-----+-----+------+-----+-------+-------+-------+
to the IO bit and the endpoint number to the EP2..EP0 bits. Then, in a
separate write cycle, the R bit needs to be set.
*/
- u8 togctl_value = (ep & 0x80 >> 3) | (ep & 0x7);
+ uint8_t togctl_value = (ep & 0x80 >> 3) | (ep & 0x7);
/* First step: Write EP number and direction bit */
TOGCTL = togctl_value;
*/
bool usb_handle_get_status(void)
{
- u8 *ep_cs;
+ uint8_t *ep_cs;
switch (setup_data.bmRequestType) {
case GS_DEVICE:
*/
bool usb_handle_clear_feature(void)
{
- __xdata u8 *ep_cs;
+ __xdata uint8_t *ep_cs;
switch (setup_data.bmRequestType) {
case CF_DEVICE:
*/
bool usb_handle_set_feature(void)
{
- __xdata u8 *ep_cs;
+ __xdata uint8_t *ep_cs;
switch (setup_data.bmRequestType) {
case SF_DEVICE:
*/
bool usb_handle_get_descriptor(void)
{
- __xdata u8 descriptor_type;
- __xdata u8 descriptor_index;
+ __xdata uint8_t descriptor_type;
+ __xdata uint8_t descriptor_index;
descriptor_type = (setup_data.wValue & 0xff00) >> 8;
descriptor_index = setup_data.wValue & 0x00ff;