Skip to content
This repository
tree: ecd06a1723
Fetching contributors…

Cannot retrieve contributors at this time

file 124 lines (103 sloc) 4.007 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
/*
LUFA Library
Copyright (C) Dean Camera, 2011.

dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/

/*
Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com)

Permission to use, copy, modify, distribute, and sell this
software and its documentation for any purpose is hereby granted
without fee, provided that the above copyright notice appear in
all copies and that both that the copyright notice and this
permission notice and warranty disclaimer appear in supporting
documentation, and that the name of the author not be used in
advertising or publicity pertaining to distribution of the
software without specific, written prior permission.

The author disclaim all warranties with regard to this
software, including all implied warranties of merchantability
and fitness. In no event shall the author be liable for any
special, indirect or consequential damages or any damages
whatsoever resulting from loss of use, data or profits, whether
in an action of contract, negligence or other tortious action,
arising out of or in connection with the use or performance of
this software.
*/

/** \file
*
* Header file for BootloaderCDC.c.
*/

#ifndef _CDC_H_
#define _CDC_H_

/* Includes: */
#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/boot.h>
#include <avr/eeprom.h>
#include <avr/power.h>
#include <avr/interrupt.h>
#include <stdbool.h>

#include "Descriptors.h"

#include <LUFA/Drivers/USB/USB.h>
/* Macros: */
/** Version major of the CDC bootloader. */
#define BOOTLOADER_VERSION_MAJOR 0x01

/** Version minor of the CDC bootloader. */
#define BOOTLOADER_VERSION_MINOR 0x00

/** Hardware version major of the CDC bootloader. */
#define BOOTLOADER_HWVERSION_MAJOR 0x01

/** Hardware version minor of the CDC bootloader. */
#define BOOTLOADER_HWVERSION_MINOR 0x00

/** Eight character bootloader firmware identifier reported to the host when requested */
#define SOFTWARE_IDENTIFIER "CATERINA"
#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n))
#ifdef BOARD_MINIMUS
#define LED_MASK ((1<<5)|(1<<6))
#define LED_SETUP() DDRD |= LED_MASK; PORTD |= LED_MASK
#define L_LED_ON() PORTD &= ~(1<<6)
#define L_LED_OFF() PORTD |= (1<<6)
#define L_LED_TOGGLE() PORTD ^= (1<<6)
#define TX_LED_OFF() update_leds(1,0)
#define TX_LED_ON() update_leds(1,1)
#define RX_LED_OFF() update_leds(2,0)
#define RX_LED_ON() update_leds(2,1)
#define LED_STOP() DDRD &= ~LED_MASK; PORTD &= ~LED_MASK;
#else
#define LED_SETUP() DDRC |= (1<<7); DDRB |= (1<<0); DDRD |= (1<<5);
#define L_LED_OFF() PORTC &= ~(1<<7)
#define L_LED_ON() PORTC |= (1<<7)
#define L_LED_TOGGLE() PORTC ^= (1<<7)
#define TX_LED_OFF() PORTD |= (1<<5)
#define TX_LED_ON() PORTD &= ~(1<<5)
#define RX_LED_OFF() PORTB |= (1<<0)
#define RX_LED_ON() PORTB &= ~(1<<0)
#define LED_STOP()
#endif

/* Type Defines: */
/** Type define for a non-returning pointer to the start of the loaded application in flash memory. */
typedef void (*AppPtr_t)(void) ATTR_NO_RETURN;

/* Function Prototypes: */
void StartSketch(void);
void LEDPulse(void);

void CDC_Task(void);
void SetupHardware(void);

void EVENT_USB_Device_ConfigurationChanged(void);

#if defined(INCLUDE_FROM_CATERINA_C) || defined(__DOXYGEN__)
#if !defined(NO_BLOCK_SUPPORT)
static void ReadWriteMemoryBlock(const uint8_t Command);
#endif
static uint8_t FetchNextCommandByte(void);
static void WriteNextResponseByte(const uint8_t Response);
#ifdef BOARD_MINIMUS
static uint8_t led_state;
static inline void update_leds(uint8_t mask, uint8_t bits)
{
led_state = (led_state & ~mask) | (bits & mask);
if (led_state)
PORTD &= ~(1<<5);
else
PORTD |= (1<<5);
}
#endif
#endif

#endif

Something went wrong with that request. Please try again.