summaryrefslogtreecommitdiff
path: root/software
diff options
context:
space:
mode:
authorChristian Pointner <equinox@helsinki.at>2015-02-24 18:48:36 (GMT)
committerChristian Pointner <equinox@helsinki.at>2015-02-24 18:48:36 (GMT)
commit2731ff242cc6bb5cd4a1a5b61625c28fdfb7441f (patch)
treeaef19c62f9248e859e8d071fc410685e81b4d5c2 /software
parent1c4a41156d5a6762ce04bc6bd71b657cd32590bd (diff)
switch to new avr-utils method
Diffstat (limited to 'software')
-rw-r--r--software/defines.mk228
-rw-r--r--software/include.mk162
-rw-r--r--software/lib/anyio.c116
-rw-r--r--software/lib/anyio.h33
-rw-r--r--software/lib/ds1820.c167
-rw-r--r--software/lib/ds1820.h61
-rw-r--r--software/lib/led.c155
-rw-r--r--software/lib/led.h36
-rw-r--r--software/lib/lufa-descriptor-keyboardmouse.c310
-rw-r--r--software/lib/lufa-descriptor-keyboardmouse.h81
-rw-r--r--software/lib/lufa-descriptor-midi.c337
-rw-r--r--software/lib/lufa-descriptor-midi.h87
-rw-r--r--software/lib/lufa-descriptor-rndis.c267
-rw-r--r--software/lib/lufa-descriptor-rndis.h89
-rw-r--r--software/lib/lufa-descriptor-usbdualserial.c394
-rw-r--r--software/lib/lufa-descriptor-usbdualserial.h112
-rw-r--r--software/lib/lufa-descriptor-usbserial.c280
-rw-r--r--software/lib/lufa-descriptor-usbserial.h89
-rw-r--r--software/lib/onewire.c571
-rw-r--r--software/lib/onewire.h206
-rw-r--r--software/lib/serialio.c44
-rw-r--r--software/lib/serialio.h32
-rw-r--r--software/lib/usbio.c116
-rw-r--r--software/lib/usbio.h33
-rw-r--r--software/lib/util.c135
-rw-r--r--software/lib/util.h32
-rw-r--r--software/lufa.mk41
-rw-r--r--software/rhmixxx/Makefile5
28 files changed, 3 insertions, 4216 deletions
diff --git a/software/defines.mk b/software/defines.mk
deleted file mode 100644
index 9af0179..0000000
--- a/software/defines.mk
+++ /dev/null
@@ -1,228 +0,0 @@
-##
-## spreadspace avr utils
-##
-##
-## Copyright (C) 2013-2014 Christian Pointner <equinox@spreadspace.org>
-##
-## This file is part of spreadspace avr utils.
-##
-## spreadspace avr utils 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 3 of the License, or
-## any later version.
-##
-## spreadspace avr utils 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 spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>.
-##
-
-ifeq ($(BOARD_TYPE),teensy1)
- MCU := at90usb162
- ARCH = AVR8
- F_CPU := 16000000
- F_USB = $(F_CPU)
- PROG := teensy
- LUFA_BOARD = TEENSY
-endif
-ifeq ($(BOARD_TYPE),teensy2)
- MCU := atmega32u4
- ARCH = AVR8
- F_CPU := 16000000
- F_USB = $(F_CPU)
- PROG := teensy
- LUFA_BOARD = TEENSY2
-endif
-ifeq ($(BOARD_TYPE),teensy1pp)
- MCU := at90usb646
- ARCH = AVR8
- F_CPU := 16000000
- F_USB = $(F_CPU)
- PROG := teensy
- LUFA_BOARD = TEENSY
-endif
-ifeq ($(BOARD_TYPE),teensy2pp)
- MCU := at90usb1286
- ARCH = AVR8
- F_CPU := 16000000
- F_USB = $(F_CPU)
- PROG := teensy
- LUFA_BOARD = TEENSY2
-endif
-ifeq ($(BOARD_TYPE),minimus)
- MCU := at90usb162
- ARCH = AVR8
- F_CPU := 16000000
- F_USB = $(F_CPU)
- PROG := DFU
- LUFA_BOARD = MINIMUS
- RESET_FUNC := ../tools/reset_minimus
- RESET_PARAM = "03eb:2ffa"
-endif
-ifeq ($(BOARD_TYPE),minimus32)
- MCU := atmega32u2
- ARCH = AVR8
- F_CPU := 16000000
- F_USB = $(F_CPU)
- PROG := DFU
- LUFA_BOARD = MINIMUS
- RESET_FUNC := ../tools/reset_minimus
- RESET_PARAM = "03eb:2ff0"
-endif
-ifeq ($(BOARD_TYPE),hhd70dongle)
- MCU := atmega32u4
- ARCH = AVR8
- F_CPU := 16000000
- F_USB = $(F_CPU)
- PROG := DFU
- LUFA_BOARD = NONE
-endif
-ifeq ($(BOARD_TYPE),rda1846dongle)
- MCU := atmega32u4
- ARCH = AVR8
- F_CPU := 16000000
- F_USB = $(F_CPU)
- PROG := DFU
- LUFA_BOARD = NONE
-endif
-ifeq ($(BOARD_TYPE),culV3)
- MCU := atmega32u4
- ARCH = AVR8
- F_CPU := 8000000
- F_USB = $(F_CPU)
- PROG := DFU
- LUFA_BOARD = CULV3
-endif
-ifeq ($(BOARD_TYPE),slowpandongle1)
- MCU := at90usb162
- ARCH = AVR8
- F_CPU := 16000000
- F_USB = $(F_CPU)
- PROG := DFU
- LUFA_BOARD = NONE
-endif
-ifeq ($(BOARD_TYPE),slowpandongle2)
- MCU := atmega32u4
- ARCH = AVR8
- F_CPU := 16000000
- F_USB = $(F_CPU)
- PROG := DFU
- LUFA_BOARD = NONE
-endif
-ifeq ($(BOARD_TYPE),teenstep)
- MCU := atmega32u4
- ARCH = AVR8
- F_CPU := 16000000
- F_USB = $(F_CPU)
- PROG := DFU
- LUFA_BOARD = NONE
-endif
-ifeq ($(BOARD_TYPE),rhmixxx)
- MCU := at90usb1286
- ARCH = AVR8
- F_CPU := 16000000
- F_USB = $(F_CPU)
- PROG := DFU
- LUFA_BOARD = NONE
-endif
-ifeq ($(BOARD_TYPE),arduinoUno)
- MCU := atmega328p
- ARCH = AVR8
- F_CPU := 16000000
- PROG := avrdude
- UPLOAD_RATE := 57600
- PROG_TYPE := stk500v1
- AVRDUDE_PORT := /dev/ttyUSB0
- RESET_FUNC := ../tools/reset_arduino
- RESET_PARAM = $(AVRDUDE_PORT)
-endif
-ifeq ($(BOARD_TYPE),arduino2009v2)
- MCU := atmega328p
- ARCH = AVR8
- F_CPU := 16000000
- PROG := avrdude
- UPLOAD_RATE := 57600
- PROG_TYPE := stk500v1
- AVRDUDE_PORT := /dev/ttyUSB0
- RESET_FUNC := ../tools/reset_arduino
- RESET_PARAM = $(AVRDUDE_PORT)
-endif
-ifeq ($(BOARD_TYPE),arduino2009)
- MCU := atmega168
- ARCH = AVR8
- F_CPU := 16000000
- PROG := avrdude
- UPLOAD_RATE := 19200
- PROG_TYPE := stk500v1
- AVRDUDE_PORT := /dev/ttyUSB0
- RESET_FUNC := ../tools/reset_arduino
- RESET_PARAM = $(AVRDUDE_PORT)
-endif
-ifeq ($(BOARD_TYPE),arduino10000)
- MCU := atmega168
- ARCH = AVR8
- F_CPU := 16000000
- PROG := avrdude
- UPLOAD_RATE := 19200
- PROG_TYPE := stk500v1
- AVRDUDE_PORT := /dev/ttyUSB0
- RESET_FUNC := ../tools/reset_arduino
- RESET_PARAM = $(AVRDUDE_PORT)
-endif
-ifeq ($(BOARD_TYPE),arduinoNG)
- MCU := atmega8
- ARCH = AVR8
- F_CPU := 16000000
- PROG := avrdude
- UPLOAD_RATE := 19200
- PROG_TYPE := stk500v1
- AVRDUDE_PORT := /dev/ttyUSB0
- RESET_FUNC := ../tools/reset_dummy
-endif
-ifeq ($(BOARD_TYPE),AvrNetIo)
- MCU := atmega32
- ARCH = AVR8
- F_CPU := 16000000
- PROG := avrdude
- UPLOAD_RATE := 19200
- PROG_TYPE := stk500v2
- AVRDUDE_PORT := /dev/ttyS0
-endif
-
-CC = avr-gcc
-OBJCOPY = avr-objcopy
-AR = avr-ar rcs
-SIZE = avr-size
-
-LIB_DIR = ../lib
-
-DFU = dfu-programmer
-teensy = teensy_loader_cli
-avrdude = avrdude
-
-## Options common to compile, link and assembly rules
-COMMON = -mmcu=$(MCU)
-
-## Compile options common for all C compilation units.
-CFLAGS = $(COMMON)
-CFLAGS += -O2
-CFLAGS += -funsigned-char
-CFLAGS += -funsigned-bitfields
-CFLAGS += -ffunction-sections
-CFLAGS += -fpack-struct
-CFLAGS += -fshort-enums
-CFLAGS += -Wall
-CFLAGS += -Wstrict-prototypes
-CFLAGS += -I$(LIB_DIR)
-CFLAGS += -DF_CPU=$(F_CPU)UL
-CFLAGS += -D__BOARD_$(BOARD_TYPE)__
-CFLAGS += -DARCH=ARCH_$(ARCH)
-CFLAGS += -std=c99
-
-
-## Linker flags
-LDFLAGS = $(COMMON)
-LDFLAGS +=
diff --git a/software/include.mk b/software/include.mk
deleted file mode 100644
index c2eb585..0000000
--- a/software/include.mk
+++ /dev/null
@@ -1,162 +0,0 @@
-##
-## spreadspace avr utils
-##
-##
-## Copyright (C) 2013-2014 Christian Pointner <equinox@spreadspace.org>
-##
-## This file is part of spreadspace avr utils.
-##
-## spreadspace avr utils 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 3 of the License, or
-## any later version.
-##
-## spreadspace avr utils 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 spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>.
-##
-
-include ../defines.mk
-
-## project-specific objects
-SRC := $(OBJ:%.o=%.c)
-DEP := $(SRC:%.c=%.d)
-OBJ_LIB := $(LIBS:%=lib-%.o)
-SRC_LIB := $(LIBS:%=$(LIB_DIR)/%.c)
-DEP_LIB := $(LIBS:%=lib-%.d)
-
-.PHONY: prepare clean clean-external distclean clean-lufa program erase flash reset run
-
-ELFFILE := $(NAME).elf
-HEXFILE := $(NAME).hex
-
-all: prepare $(HEXFILE)
-
-
-## external Libs
-LDFLAGS += -L./
-
-ifdef LUFA_PATH
-CFLAGS += -I$(LUFA_PATH)
-CFLAGS += -DF_USB=$(F_USB)UL
-CFLAGS += -DBOARD=BOARD_$(LUFA_BOARD)
-CFLAGS += $(LUFA_OPTS)
-endif
-
-prepare: $(EXTERNAL_LIBS:%=build-%)
-clean-external: $(EXTERNAL_LIBS:%=clean-%)
-
-export
-build-lufa: liblufa.a
-
-liblufa.a: Makefile
- @echo "building external LUFA lib ($(LUFA_PATH))"
- make -f ../lufa.mk liblufa.a
- make -f ../lufa.mk clean
-
-clean-lufa:
- @echo "cleaning external LUFA lib ($(LUFA_PATH))"
- make -f ../lufa.mk clean
- rm -f liblufa.a
-
-
-## project-specific objects
-lib-%.d: $(LIB_DIR)/%.c Makefile
- @set -e; rm -f $@; \
- $(CC) -MM $(CFLAGS) $< > $@.$$$$; \
- sed 's,\($*\)\.o[ :]*,lib-\1.o $@ : ,g' < $@.$$$$ > $@; \
- rm -f $@.$$$$; echo '(re)building $@'
-
-%.d: %.c Makefile
- @set -e; rm -f $@; \
- $(CC) -MM $(CFLAGS) $< > $@.$$$$; \
- sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
- rm -f $@.$$$$; echo '(re)building $@'
-
-ifneq ($(MAKECMDGOALS),distclean)
--include $(DEP)
--include $(DEP_LIB)
-endif
-
-lib-%.o: $(LIB_DIR)/%.c Makefile
- $(CC) $(CFLAGS) -c $< -o $@
-
-%.o: %.c Makefile
- $(CC) $(CFLAGS) -c $< -o $@
-
-$(ELFFILE): $(OBJ) $(OBJ_LIB) $(EXTERNAL_LIBS:%=lib%.a)
- $(CC) $(LDFLAGS) $(OBJ) $(OBJ_LIB) $(EXTERNAL_LIBS:%=-l%) -o $@
- $(SIZE) $@
- @echo ""
-
-$(HEXFILE): $(ELFFILE)
- $(OBJCOPY) -O ihex -R .eeprom -R .fuse -R .lock -R .signature $< $@
-
-clean: $(CLEAN_TARGETS)
- rm -f *.o
- rm -f *.d
- rm -f *.d.*
- rm -f $(ELFFILE)
- rm -f $(HEXFILE)
-
-distclean: clean-external clean
-
-### DFU-Programmer
-define DFU/erase
- $(DFU) $(MCU) erase || true
-endef
-
-define DFU/flash
- $(DFU) $(MCU) flash $1
-endef
-
-define DFU/run
- $(DFU) $(MCU) start
-endef
-
-### teensy-loader
-define teensy/erase
-endef
-
-define teensy/flash
- $(teensy) -mmcu=$(MCU) -w -v $1
-endef
-
-define teensy/run
-endef
-
-### avrdude
-define avrdude/erase
-endef
-
-define avrdude/flash
- $(avrdude) -V -F -p $(MCU) -P $(AVRDUDE_PORT) -c $(PROG_TYPE) -b $(UPLOAD_RATE) -U flash:w:$1
-endef
-
-define avrdude/run
-endef
-
-### Program Targets
-program: reset erase flash run
-
-erase:
- $(call $(PROG)/$@,)
-
-flash: $(HEXFILE)
- $(call $(PROG)/$@,$(HEXFILE))
-
-run:
- $(call $(PROG)/$@,)
-
-reset:
- @if [ -n "$(RESET_FUNC)" ]; then \
- if [ -x "$(RESET_FUNC)" ]; then \
- eval $(RESET_FUNC) $(RESET_PARAM); \
- else \
- echo "WARNING: ignoring non-existing or non-executable reset script"; \
- fi \
- fi
diff --git a/software/lib/anyio.c b/software/lib/anyio.c
deleted file mode 100644
index 2aae54e..0000000
--- a/software/lib/anyio.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * spreadspace avr utils
- *
- *
- * Copyright (C) 2013-2014 Christian Pointner <equinox@spreadspace.org>
- * Othmar Gsenger <otti@wirdorange.org>
- *
- * This file is part of spreadspace avr utils.
- *
- * spreadspace avr utils 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 3 of the License, or
- * any later version.
- *
- * spreadspace avr utils 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 spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <stdio.h>
-
-#include "anyio.h"
-
-#include <LUFA/Drivers/USB/USB.h>
-#include "lufa-descriptor-usbserial.h"
-#include "LUFA/Drivers/Peripheral/Serial.h"
-
-/*
- LUFA Library
- Copyright (C) Dean Camera, 2012.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-USB_ClassInfo_CDC_Device_t VirtualSerial_CDC_Interface =
- {
- .Config =
- {
- .ControlInterfaceNumber = 0,
-
- .DataINEndpointNumber = CDC_TX_EPNUM,
- .DataINEndpointSize = CDC_TXRX_EPSIZE,
- .DataINEndpointDoubleBank = false,
-
- .DataOUTEndpointNumber = CDC_RX_EPNUM,
- .DataOUTEndpointSize = CDC_TXRX_EPSIZE,
- .DataOUTEndpointDoubleBank = false,
-
- .NotificationEndpointNumber = CDC_NOTIFICATION_EPNUM,
- .NotificationEndpointSize = CDC_NOTIFICATION_EPSIZE,
- .NotificationEndpointDoubleBank = false,
- },
- };
-
-void EVENT_USB_Device_ConfigurationChanged(void)
-{
- CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface);
-}
-
-void EVENT_USB_Device_ControlRequest(void)
-{
- CDC_Device_ProcessControlRequest(&VirtualSerial_CDC_Interface);
-}
-/* end LUFA CDC-ACM specific definitions*/
-
-static FILE usb_stream;
-static FILE serial_stream;
-
-void anyio_init(const uint32_t baudrate, const uint8_t doublespeed)
-{
- Serial_Init(baudrate, doublespeed);
- Serial_CreateStream(&serial_stream);
- stdin = stdout = stderr = &serial_stream;
-
- USB_Init();
- CDC_Device_CreateStream(&VirtualSerial_CDC_Interface,&usb_stream);
-}
-
-void anyio_task(void)
-{
-#if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
- if(USB_DeviceState == DEVICE_STATE_Unattached && USB_VBUS_GetStatus()) {
- USB_Disable();
- USB_Init();
- }
-#endif
-
- CDC_Device_USBTask(&VirtualSerial_CDC_Interface);
- USB_USBTask();
-}
-
-int16_t anyio_bytes_received(void)
-{
- if(stdin == &usb_stream)
- return CDC_Device_BytesReceived(&VirtualSerial_CDC_Interface);
- else
- return (int16_t)Serial_IsCharReceived();
-}
-
-void EVENT_CDC_Device_ControLineStateChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
-{
- if(CDCInterfaceInfo->State.ControlLineStates.HostToDevice & CDC_CONTROL_LINE_OUT_DTR)
- stdin = stdout = stderr = &usb_stream;
- else
- stdin = stdout = stderr = &serial_stream;
-}
-
-void EVENT_USB_Device_Disconnect(void)
-{
- stdin = stdout = stderr = &serial_stream;
-}
diff --git a/software/lib/anyio.h b/software/lib/anyio.h
deleted file mode 100644
index 2cf4ae1..0000000
--- a/software/lib/anyio.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * spreadspace avr utils
- *
- *
- * Copyright (C) 2013-2014 Christian Pointner <equinox@spreadspace.org>
- * Othmar Gsenger <otti@wirdorange.org>
- *
- * This file is part of spreadspace avr utils.
- *
- * spreadspace avr utils 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 3 of the License, or
- * any later version.
- *
- * spreadspace avr utils 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 spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SPREADAVR_anyio_h_INCLUDED
-#define SPREADAVR_anyio_h_INCLUDED
-
-#include <stdint.h>
-
-void anyio_init(const uint32_t baudrate, const uint8_t doublespeed);
-void anyio_task(void);
-int16_t anyio_bytes_received(void);
-
-#endif
diff --git a/software/lib/ds1820.c b/software/lib/ds1820.c
deleted file mode 100644
index 4619498..0000000
--- a/software/lib/ds1820.c
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * spreadspace avr utils - usb-1wire example
- *
- *
- * Copyright (C) 2013-2014 Bernhard Tittelbach <xro@realraum.at>
- * based on code from:
- * http://www.pjrc.com/teensy/td_libs_OneWire.html
- *
- * This file is part of spreadspace avr utils.
- *
- * spreadspace avr utils 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 3 of the License, or
- * any later version.
- *
- * spreadspace avr utils 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 spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>.
- */
-
-
-#include "ds1820.h"
-#include "onewire.h"
-#include "util/delay.h"
-
-uint8_t owi_ds1820_addr_[MAX_OWI_DEVICES][8];
-uint8_t num_ds1820_found_;
-
-uint8_t ds1820_discover(void)
-{
- uint8_t d=0;
- num_ds1820_found_ = 0;
- if (! owi_reset()) //if no devices on bus, return now
- return 0;
- owi_reset_search();
- _delay_ms(250);
-
- //Search only for DS1820 temp sensors
- owi_target_search(DS1820_FAMILY_ID);
-
- while ( owi_search(owi_ds1820_addr_[ d ]))
- {
- d++;
- if ( d >= MAX_OWI_DEVICES)
- break;
- }
- num_ds1820_found_ = d;
- return num_ds1820_found_;
-}
-
-void ds1820_set_resolution(uint8_t d, uint8_t bits)
-{
- uint8_t resolution;
- if (d >= num_ds1820_found_ || bits < 9 || bits > 12)
- return;
-
- owi_reset();
- owi_select(owi_ds1820_addr_[d]);
-
- owi_write(DS1820_WRITE_SCRATCHPAD, 0);
- owi_write(0xFF, 0);
- owi_write(0x7F, 0);
-
- resolution = (bits - 9) << 5;
- owi_write(resolution | 0x1F, 0);
-}
-
-void ds1820_start_measuring(uint8_t d)
-{
- owi_reset();
- owi_select(owi_ds1820_addr_[d]);
- owi_write(DS1820_START_CONVERSION, 1);
-}
-
-uint16_t ds1820_get_conversion_time_ms(uint8_t bits)
-{
- switch (bits)
- {
- case 9: return DS1820_TCONV_MS_9BITS;
- case 10: return DS1820_TCONV_MS_10BITS;
- case 11: return DS1820_TCONV_MS_11BITS;
- default: return DS1820_TCONV_MS_12BITS;
- }
-}
-
-void ds1820_wait_conversion_time(uint8_t bits)
-{
- switch (bits)
- {
- case 9: _delay_ms(DS1820_TCONV_MS_9BITS); break;
- case 10: _delay_ms(DS1820_TCONV_MS_10BITS); break;
- case 11: _delay_ms(DS1820_TCONV_MS_11BITS); break;
- default: _delay_ms(DS1820_TCONV_MS_12BITS); break;
- }
-}
-
-int16_t ds1820_read_temperature(uint8_t d)
-{
- uint8_t data[9];
- int16_t raw = 0;
- uint8_t type_s=0;
- uint8_t cfg, i;
-
- owi_reset();
- owi_select(owi_ds1820_addr_[d]);
- owi_write(DS1820_READ_SCRATCHPAD, 0); // Read Scratchpad
- for (i = 0; i < 9; i++) { // we need 9 bytes
- data[i] = owi_read();
- }
- #if (ONEWIRE_CRC == 1)
- uint8_t crc_result = owi_crc8(data,8);
- if (crc_result != data[8])
- return DS1820_ERROR;
- #endif
-
- // the first ROM byte indicates which chip
- switch (owi_ds1820_addr_[d][0])
- {
- case 0x10:
- type_s = 1;
- break;
- case 0x28:
- case 0x22:
- type_s = 0;
- break;
- default:
- break;
- }
-
- // Convert the data to actual temperature
- // because the result is a 16 bit signed integer, it should
- // be stored to an "int16_t" type, which is always 16 bits
- // even when compiled on a 32 bit processor.
- raw = (data[1] << 8) | data[0];
- if (type_s)
- {
- raw = raw << 3; // 9 bit resolution default
- if (data[7] == 0x10) {
- // "count remain" gives full 12 bit resolution
- raw = (raw & 0xFFF0) + 12 - data[6];
- }
- } else {
- cfg = (data[4] & 0x60);
- // at lower res, the low bits are undefined, so let's zero them
- if (cfg == DS1820_RESOLUTION_9BITS)
- raw = raw & ~7; // 9 bit resolution, 93.75 ms
- else if (cfg == DS1820_RESOLUTION_10BITS)
- raw = raw & ~3; // 10 bit res, 187.5 ms
- else if (cfg == DS1820_RESOLUTION_11BITS)
- raw = raw & ~1; // 11 bit res, 375 ms
- //// default is 12 bit resolution, 750 ms conversion time
- }
-
- return raw;
-}
-
-float ds1820_raw_temp_to_celsius(int16_t t)
-{
- if ( t == DS1820_ERROR )
- return DS1820_ERROR;
- else
- return ((float) t) / 16.0;
-}
diff --git a/software/lib/ds1820.h b/software/lib/ds1820.h
deleted file mode 100644
index 64a0089..0000000
--- a/software/lib/ds1820.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * spreadspace avr utils - usb-1wire example
- *
- *
- * Copyright (C) 2013-2014 Bernhard Tittelbach <xro@realraum.at>
- * based on code from:
- * http://www.pjrc.com/teensy/td_libs_OneWire.html
- *
- * This file is part of spreadspace avr utils.
- *
- * spreadspace avr utils 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 3 of the License, or
- * any later version.
- *
- * spreadspace avr utils 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 spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __DS1820__
-#define __DS1820__
-
-#include <stdint.h>
-
-#define DS1820_FAMILY_ID 0x10
-#define DS1820_START_CONVERSION 0x44
-#define DS1820_READ_SCRATCHPAD 0xbe
-#define DS1820_WRITE_SCRATCHPAD 0x4e
-#define DS1820_ERROR -1000 // Return code. Outside temperature range.
-#define DS1820_RESOLUTION_9BITS 0x00
-#define DS1820_RESOLUTION_10BITS 0x20
-#define DS1820_RESOLUTION_11BITS 0x40
-#define DS1820_RESOLUTION_12BITS 0x60
-#define DS1820_TCONV_MS_9BITS 96
-#define DS1820_TCONV_MS_10BITS 195
-#define DS1820_TCONV_MS_11BITS 390
-#define DS1820_TCONV_MS_12BITS 800
-
-#define DS2890_FAMILY_ID 0x2c
-#define DS2890_WRITE_CONTROL_REGISTER 0X55
-#define DS2890_RELEASE_CODE 0x96
-#define DS2890_WRITE_POSITION 0x0f
-
-#ifndef MAX_OWI_DEVICES
-#define MAX_OWI_DEVICES 8
-#endif
-
-uint8_t ds1820_discover(void);
-void ds1820_set_resolution(uint8_t d, uint8_t bits);
-void ds1820_start_measuring(uint8_t d);
-uint16_t ds1820_get_conversion_time_ms(uint8_t bits);
-void ds1820_wait_conversion_time(uint8_t bits);
-int16_t ds1820_read_temperature(uint8_t d);
-float ds1820_raw_temp_to_celsius(int16_t t);
-
-#endif \ No newline at end of file
diff --git a/software/lib/led.c b/software/lib/led.c
deleted file mode 100644
index 4f3aec2..0000000
--- a/software/lib/led.c
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * spreadspace avr utils
- *
- *
- * Copyright (C) 2013-2014 Christian Pointner <equinox@spreadspace.org>
- *
- * This file is part of spreadspace avr utils.
- *
- * spreadspace avr utils 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 3 of the License, or
- * any later version.
- *
- * spreadspace avr utils 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 spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <avr/io.h>
-
-#include "led.h"
-
-#if defined(__BOARD_minimus__) || defined(__BOARD_minimus32__)
-#define NUM_LEDS 2
-#elif defined(__BOARD_teensy1__) || defined(__BOARD_teensy1pp__) || defined(__BOARD_teensy2__) || defined(__BOARD_teensy2pp__) || \
- defined(__BOARD_arduinoNG__) || defined(__BOARD_arduino2009v2__) || defined(__BOARD_arduino2009__) || defined(__BOARD_arduino10000__) || \
- defined(__BOARD_hhd70dongle__) || defined(__BOARD_rda1846dongle__) || defined(__BOARD_culV3__) || \
- defined(__BOARD_slowpandongle1__) || defined(__BOARD_slowpandongle2__) || defined(__BOARD_teenstep__) || \
- defined(__BOARD_rhmixxx__)
-#define NUM_LEDS 1
-#else
-#define NUM_LEDS 0
-#endif
-
-#if defined(__BOARD_teensy1__) || defined(__BOARD_teensy1pp__) || defined(__BOARD_minimus__) || defined(__BOARD_minimus32__) || \
- defined(__BOARD_rhmixxx__)
-#define LED_DIR 0
-#else
-#define LED_DIR 1
-#endif
-
-#if defined(__BOARD_teensy1__) || defined(__BOARD_teensy1pp__) || defined(__BOARD_teensy2__) || defined(__BOARD_teensy2pp__) || \
- defined(__BOARD_teenstep__)
-#define LED_PORT PORTD
-#define LED_DDR DDRD
-#define LED_PINNUM 6
-#endif
-
-#if defined(__BOARD_minimus__) || defined(__BOARD_minimus32__)
-#define LED_PORT PORTD
-#define LED_DDR DDRD
-#define LED_PINNUM 5
-
-#define LED2_PORT PORTD
-#define LED2_DDR DDRD
-#define LED2_PINNUM 6
-#endif
-
-#if defined(__BOARD_slowpandongle2__) || defined(__BOARD_hhd70dongle__) || defined(__BOARD_rda1846dongle__) || defined(__BOARD_culV3__)
-#define LED_PORT PORTE
-#define LED_DDR DDRE
-#define LED_PINNUM 6
-#endif
-
-#if defined(__BOARD_slowpandongle1__)
-#define LED_PORT PORTC
-#define LED_DDR DDRC
-#define LED_PINNUM 2
-#endif
-
-#if defined(__BOARD_arduino2009v2__) || defined(__BOARD_arduino2009__) || defined(__BOARD_arduino10000__) || defined(__BOARD_arduinoNG__)
-#define LED_PORT PORTB
-#define LED_DDR DDRB
-#define LED_PINNUM 5
-#endif
-
-#if defined(__BOARD_rhmixxx__)
-#define LED_PORT PORTE
-#define LED_DDR DDRE
-#define LED_PINNUM 0
-#endif
-
-void led_init(void)
-{
-#if NUM_LEDS >= 1
- led_off();
- LED_DDR = 1<<LED_PINNUM;
-#if NUM_LEDS >= 2
- LED2_DDR |= 1<<LED2_PINNUM;
-#endif
-#endif
-}
-
-void led_on(void)
-{
-#if NUM_LEDS >= 1
-#if LED_DIR == 1
- LED_PORT |= 1<<LED_PINNUM;
-#else
- LED_PORT &= ~(1<<LED_PINNUM);
-#endif
-#endif
-}
-
-void led_off(void)
-{
-#if NUM_LEDS >= 1
-#if LED_DIR == 1
- LED_PORT &= ~(1<<LED_PINNUM);
-#else
- LED_PORT |= 1<<LED_PINNUM;
-#endif
-#endif
-}
-
-void led_toggle(void)
-{
-#if NUM_LEDS >= 1
- LED_PORT ^= 1<<LED_PINNUM;
-#endif
-}
-
-
-void led2_on(void)
-{
-#if NUM_LEDS >= 2
-#if LED_DIR == 1
- LED2_PORT |= 1<<LED2_PINNUM;
-#else
- LED2_PORT &= ~(1<<LED2_PINNUM);
-#endif
-#endif
-}
-
-void led2_off(void)
-{
-#if NUM_LEDS >= 2
-#if LED_DIR == 1
- LED2_PORT &= ~(1<<LED2_PINNUM);
-#else
- LED2_PORT |= 1<<LED2_PINNUM;
-#endif
-#endif
-}
-
-void led2_toggle(void)
-{
-#if NUM_LEDS >= 2
- LED2_PORT ^= 1<<LED2_PINNUM;
-#endif
-}
diff --git a/software/lib/led.h b/software/lib/led.h
deleted file mode 100644
index 0c78193..0000000
--- a/software/lib/led.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * spreadspace avr utils
- *
- *
- * Copyright (C) 2013-2014 Christian Pointner <equinox@spreadspace.org>
- *
- * This file is part of spreadspace avr utils.
- *
- * spreadspace avr utils 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 3 of the License, or
- * any later version.
- *
- * spreadspace avr utils 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 spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SPREADAVR_led_h_INCLUDED
-#define SPREADAVR_led_h_INCLUDED
-
-void led_init(void);
-
-void led_on(void);
-void led_off(void);
-void led_toggle(void);
-
-void led2_on(void);
-void led2_off(void);
-void led2_toggle(void);
-
-#endif
diff --git a/software/lib/lufa-descriptor-keyboardmouse.c b/software/lib/lufa-descriptor-keyboardmouse.c
deleted file mode 100644
index acc319b..0000000
--- a/software/lib/lufa-descriptor-keyboardmouse.c
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
- LUFA Library
- Copyright (C) Dean Camera, 2012.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-/*
- Copyright 2012 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
- *
- * USB Device Descriptors, for library use when in USB device mode. Descriptors are special
- * computer-readable structures which the host requests upon device enumeration, to determine
- * the device's capabilities and functions.
- */
-
-#include "lufa-descriptor-keyboardmouse.h"
-
-/** HID class report descriptor. This is a special descriptor constructed with values from the
- * USBIF HID class specification to describe the reports and capabilities of the HID device. This
- * descriptor is parsed by the host and its contents used to determine what data (and in what encoding)
- * the device will send, and what it may be sent back from the host. Refer to the HID specification for
- * more details on HID report descriptors.
- *
- * This descriptor describes the mouse HID interface's report structure.
- */
-const USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] =
-{
- /* Use the HID class driver's standard Mouse report.
- * Min X/Y Axis values: -1
- * Max X/Y Axis values: 1
- * Min physical X/Y Axis values (used to determine resolution): -1
- * Max physical X/Y Axis values (used to determine resolution): 1
- * Buttons: 3
- * Absolute screen coordinates: false
- */
- HID_DESCRIPTOR_MOUSE(-1, 1, -1, 1, 3, false)
-};
-
-/** Same as the MouseReport structure, but defines the keyboard HID interface's report structure. */
-const USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] =
-{
- /* Use the HID class driver's standard Keyboard report.
- * Max simultaneous keys: 6
- */
- HID_DESCRIPTOR_KEYBOARD(6)
-};
-
-/** Device descriptor structure. This descriptor, located in FLASH memory, describes the overall
- * device characteristics, including the supported USB version, control endpoint size and the
- * number of device configurations. The descriptor is read out by the USB host when the enumeration
- * process begins.
- */
-const USB_Descriptor_Device_t PROGMEM DeviceDescriptor =
-{
- .Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device},
-
- .USBSpecification = VERSION_BCD(01.10),
- .Class = USB_CSCP_NoDeviceClass,
- .SubClass = USB_CSCP_NoDeviceSubclass,
- .Protocol = USB_CSCP_NoDeviceProtocol,
-
- .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE,
-
- .VendorID = 0x03EB,
- .ProductID = 0x204D,
- .ReleaseNumber = VERSION_BCD(00.01),
-
- .ManufacturerStrIndex = 0x01,
- .ProductStrIndex = 0x02,
- .SerialNumStrIndex = NO_DESCRIPTOR,
-
- .NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS
-};
-
-/** Configuration descriptor structure. This descriptor, located in FLASH memory, describes the usage
- * of the device in one of its supported configurations, including information about any device interfaces
- * and endpoints. The descriptor is read out by the USB host during the enumeration process when selecting
- * a configuration so that the host may correctly communicate with the USB device.
- */
-const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
-{
- .Config =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration},
-
- .TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t),
- .TotalInterfaces = 2,
-
- .ConfigurationNumber = 1,
- .ConfigurationStrIndex = NO_DESCRIPTOR,
-
- .ConfigAttributes = (USB_CONFIG_ATTR_RESERVED | USB_CONFIG_ATTR_SELFPOWERED),
-
- .MaxPowerConsumption = USB_CONFIG_POWER_MA(100)
- },
-
- .HID1_KeyboardInterface =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
-
- .InterfaceNumber = 0x00,
- .AlternateSetting = 0x00,
-
- .TotalEndpoints = 1,
-
- .Class = HID_CSCP_HIDClass,
- .SubClass = HID_CSCP_BootSubclass,
- .Protocol = HID_CSCP_KeyboardBootProtocol,
-
- .InterfaceStrIndex = NO_DESCRIPTOR
- },
-
- .HID1_KeyboardHID =
- {
- .Header = {.Size = sizeof(USB_HID_Descriptor_HID_t), .Type = HID_DTYPE_HID},
-
- .HIDSpec = VERSION_BCD(01.11),
- .CountryCode = 0x00,
- .TotalReportDescriptors = 1,
- .HIDReportType = HID_DTYPE_Report,
- .HIDReportLength = sizeof(KeyboardReport)
- },
-
- .HID1_ReportINEndpoint =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
-
- .EndpointAddress = (ENDPOINT_DIR_IN | KEYBOARD_IN_EPNUM),
- .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
- .EndpointSize = HID_EPSIZE,
- .PollingIntervalMS = 0x01
- },
-
- .HID2_MouseInterface =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
-
- .InterfaceNumber = 0x01,
- .AlternateSetting = 0x00,
-
- .TotalEndpoints = 1,
-
- .Class = HID_CSCP_HIDClass,
- .SubClass = HID_CSCP_BootSubclass,
- .Protocol = HID_CSCP_MouseBootProtocol,
-
- .InterfaceStrIndex = NO_DESCRIPTOR
- },
-
- .HID2_MouseHID =
- {
- .Header = {.Size = sizeof(USB_HID_Descriptor_HID_t), .Type = HID_DTYPE_HID},
-
- .HIDSpec = VERSION_BCD(01.11),
- .CountryCode = 0x00,
- .TotalReportDescriptors = 1,
- .HIDReportType = HID_DTYPE_Report,
- .HIDReportLength = sizeof(MouseReport)
- },
-
- .HID2_ReportINEndpoint =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
-
- .EndpointAddress = (ENDPOINT_DIR_IN | MOUSE_IN_EPNUM),
- .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
- .EndpointSize = HID_EPSIZE,
- .PollingIntervalMS = 0x01
- }
-};
-
-/** Language descriptor structure. This descriptor, located in FLASH memory, is returned when the host requests
- * the string descriptor with index 0 (the first index). It is actually an array of 16-bit integers, which indicate
- * via the language ID table available at USB.org what languages the device supports for its string descriptors.
- */
-const USB_Descriptor_String_t PROGMEM LanguageString =
-{
- .Header = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String},
-
- .UnicodeString = {LANGUAGE_ID_ENG}
-};
-
-/** Manufacturer descriptor string. This is a Unicode string containing the manufacturer's details in human readable
- * form, and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
- * Descriptor.
- */
-const USB_Descriptor_String_t PROGMEM ManufacturerString =
-{
-#ifndef USB_MANUFACTURER
- .Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String},
- .UnicodeString = L"Dean Camera"
-#else
- .Header = {.Size = USB_STRING_LEN(USB_MANUFACTURER_LEN), .Type = DTYPE_String},
- .UnicodeString = USB_MANUFACTURER
-#endif
-};
-
-/** Product descriptor string. This is a Unicode string containing the product's details in human readable form,
- * and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
- * Descriptor.
- */
-const USB_Descriptor_String_t PROGMEM ProductString =
-{
-#ifndef USB_PRODUCT
- .Header = {.Size = USB_STRING_LEN(28), .Type = DTYPE_String},
- .UnicodeString = L"LUFA Mouse and Keyboard Demo"
-#else
- .Header = {.Size = USB_STRING_LEN(USB_PRODUCT_LEN), .Type = DTYPE_String},
- .UnicodeString = USB_PRODUCT
-#endif
-};
-
-/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
- * documentation) by the application code so that the address and size of a requested descriptor can be given
- * to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
- * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
- * USB host.
- */
-uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
- const uint8_t wIndex,
- const void** const DescriptorAddress)
-{
- const uint8_t DescriptorType = (wValue >> 8);
- const uint8_t DescriptorNumber = (wValue & 0xFF);
-
- const void* Address = NULL;
- uint16_t Size = NO_DESCRIPTOR;
-
- switch (DescriptorType)
- {
- case DTYPE_Device:
- Address = &DeviceDescriptor;
- Size = sizeof(USB_Descriptor_Device_t);
- break;
- case DTYPE_Configuration:
- Address = &ConfigurationDescriptor;
- Size = sizeof(USB_Descriptor_Configuration_t);
- break;
- case DTYPE_String:
- switch (DescriptorNumber)
- {
- case 0x00:
- Address = &LanguageString;
- Size = pgm_read_byte(&LanguageString.Header.Size);
- break;
- case 0x01:
- Address = &ManufacturerString;
- Size = pgm_read_byte(&ManufacturerString.Header.Size);
- break;
- case 0x02:
- Address = &ProductString;
- Size = pgm_read_byte(&ProductString.Header.Size);
- break;
- }
-
- break;
- case HID_DTYPE_HID:
- if (!(wIndex))
- {
- Address = &ConfigurationDescriptor.HID1_KeyboardHID;
- Size = sizeof(USB_HID_Descriptor_HID_t);
- }
- else
- {
- Address = &ConfigurationDescriptor.HID2_MouseHID;
- Size = sizeof(USB_HID_Descriptor_HID_t);
- }
-
- break;
- case HID_DTYPE_Report:
- if (!(wIndex))
- {
- Address = &KeyboardReport;
- Size = sizeof(KeyboardReport);
- }
- else
- {
- Address = &MouseReport;
- Size = sizeof(MouseReport);
- }
-
- break;
- }
-
- *DescriptorAddress = Address;
- return Size;
-}
-
diff --git a/software/lib/lufa-descriptor-keyboardmouse.h b/software/lib/lufa-descriptor-keyboardmouse.h
deleted file mode 100644
index 9381602..0000000
--- a/software/lib/lufa-descriptor-keyboardmouse.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- LUFA Library
- Copyright (C) Dean Camera, 2012.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-/*
- Copyright 2012 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 Descriptors.c.
- */
-
-#ifndef _DESCRIPTORS_H_
-#define _DESCRIPTORS_H_
-
- /* Includes: */
- #include <avr/pgmspace.h>
-
- #include <LUFA/Drivers/USB/USB.h>
-
- /* Type Defines: */
- /** Type define for the device configuration descriptor structure. This must be defined in the
- * application code, as the configuration descriptor contains several sub-descriptors which
- * vary between devices, and which describe the device's usage to the host.
- */
- typedef struct
- {
- USB_Descriptor_Configuration_Header_t Config;
-
- // Keyboard HID Interface
- USB_Descriptor_Interface_t HID1_KeyboardInterface;
- USB_HID_Descriptor_HID_t HID1_KeyboardHID;
- USB_Descriptor_Endpoint_t HID1_ReportINEndpoint;
-
- // Mouse HID Interface
- USB_Descriptor_Interface_t HID2_MouseInterface;
- USB_HID_Descriptor_HID_t HID2_MouseHID;
- USB_Descriptor_Endpoint_t HID2_ReportINEndpoint;
- } USB_Descriptor_Configuration_t;
-
- /* Macros: */
- /** Endpoint number of the Keyboard HID reporting IN endpoint. */
- #define KEYBOARD_IN_EPNUM 1
-
- /** Endpoint number of the Mouse HID reporting IN endpoint. */
- #define MOUSE_IN_EPNUM 3
-
- /** Size in bytes of each of the HID reporting IN endpoints. */
- #define HID_EPSIZE 8
-
- /* Function Prototypes: */
- uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
- const uint8_t wIndex,
- const void** const DescriptorAddress)
- ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
-
-#endif
-
diff --git a/software/lib/lufa-descriptor-midi.c b/software/lib/lufa-descriptor-midi.c
deleted file mode 100644
index 99fab41..0000000
--- a/software/lib/lufa-descriptor-midi.c
+++ /dev/null
@@ -1,337 +0,0 @@
-/*
- LUFA Library
- Copyright (C) Dean Camera, 2012.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-/*
- Copyright 2012 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
- *
- * USB Device Descriptors, for library use when in USB device mode. Descriptors are special
- * computer-readable structures which the host requests upon device enumeration, to determine
- * the device's capabilities and functions.
- */
-
-#include "lufa-descriptor-midi.h"
-
-/** Device descriptor structure. This descriptor, located in FLASH memory, describes the overall
- * device characteristics, including the supported USB version, control endpoint size and the
- * number of device configurations. The descriptor is read out by the USB host when the enumeration
- * process begins.
- */
-const USB_Descriptor_Device_t PROGMEM DeviceDescriptor =
-{
- .Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device},
-
- .USBSpecification = VERSION_BCD(01.10),
- .Class = USB_CSCP_NoDeviceClass,
- .SubClass = USB_CSCP_NoDeviceSubclass,
- .Protocol = USB_CSCP_NoDeviceProtocol,
-
- .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE,
-
- .VendorID = 0x03EB,
- .ProductID = 0x2048,
- .ReleaseNumber = VERSION_BCD(00.01),
-
- .ManufacturerStrIndex = 0x01,
- .ProductStrIndex = 0x02,
- .SerialNumStrIndex = NO_DESCRIPTOR,
-
- .NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS
-};
-
-/** Configuration descriptor structure. This descriptor, located in FLASH memory, describes the usage
- * of the device in one of its supported configurations, including information about any device interfaces
- * and endpoints. The descriptor is read out by the USB host during the enumeration process when selecting
- * a configuration so that the host may correctly communicate with the USB device.
- */
-const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
-{
- .Config =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration},
-
- .TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t),
- .TotalInterfaces = 2,
-
- .ConfigurationNumber = 1,
- .ConfigurationStrIndex = NO_DESCRIPTOR,
-
- .ConfigAttributes = (USB_CONFIG_ATTR_RESERVED | USB_CONFIG_ATTR_SELFPOWERED),
-
- .MaxPowerConsumption = USB_CONFIG_POWER_MA(100)
- },
-
- .Audio_ControlInterface =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
-
- .InterfaceNumber = 0,
- .AlternateSetting = 0,
-
- .TotalEndpoints = 0,
-
- .Class = AUDIO_CSCP_AudioClass,
- .SubClass = AUDIO_CSCP_ControlSubclass,
- .Protocol = AUDIO_CSCP_ControlProtocol,
-
- .InterfaceStrIndex = NO_DESCRIPTOR
- },
-
- .Audio_ControlInterface_SPC =
- {
- .Header = {.Size = sizeof(USB_Audio_Descriptor_Interface_AC_t), .Type = DTYPE_CSInterface},
- .Subtype = AUDIO_DSUBTYPE_CSInterface_Header,
-
- .ACSpecification = VERSION_BCD(01.00),
- .TotalLength = sizeof(USB_Audio_Descriptor_Interface_AC_t),
-
- .InCollection = 1,
- .InterfaceNumber = 1,
- },
-
- .Audio_StreamInterface =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
-
- .InterfaceNumber = 1,
- .AlternateSetting = 0,
-
- .TotalEndpoints = 2,
-
- .Class = AUDIO_CSCP_AudioClass,
- .SubClass = AUDIO_CSCP_MIDIStreamingSubclass,
- .Protocol = AUDIO_CSCP_StreamingProtocol,
-
- .InterfaceStrIndex = NO_DESCRIPTOR
- },
-
- .Audio_StreamInterface_SPC =
- {
- .Header = {.Size = sizeof(USB_MIDI_Descriptor_AudioInterface_AS_t), .Type = DTYPE_CSInterface},
- .Subtype = AUDIO_DSUBTYPE_CSInterface_General,
-
- .AudioSpecification = VERSION_BCD(01.00),
-
- .TotalLength = (sizeof(USB_Descriptor_Configuration_t) -
- offsetof(USB_Descriptor_Configuration_t, Audio_StreamInterface_SPC))
- },
-
- .MIDI_In_Jack_Emb =
- {
- .Header = {.Size = sizeof(USB_MIDI_Descriptor_InputJack_t), .Type = DTYPE_CSInterface},
- .Subtype = AUDIO_DSUBTYPE_CSInterface_InputTerminal,
-
- .JackType = MIDI_JACKTYPE_Embedded,
- .JackID = 0x01,
-
- .JackStrIndex = NO_DESCRIPTOR
- },
-
- .MIDI_In_Jack_Ext =
- {
- .Header = {.Size = sizeof(USB_MIDI_Descriptor_InputJack_t), .Type = DTYPE_CSInterface},
- .Subtype = AUDIO_DSUBTYPE_CSInterface_InputTerminal,
-
- .JackType = MIDI_JACKTYPE_External,
- .JackID = 0x02,
-
- .JackStrIndex = NO_DESCRIPTOR
- },
-
- .MIDI_Out_Jack_Emb =
- {
- .Header = {.Size = sizeof(USB_MIDI_Descriptor_OutputJack_t), .Type = DTYPE_CSInterface},
- .Subtype = AUDIO_DSUBTYPE_CSInterface_OutputTerminal,
-
- .JackType = MIDI_JACKTYPE_Embedded,
- .JackID = 0x03,
-
- .NumberOfPins = 1,
- .SourceJackID = {0x02},
- .SourcePinID = {0x01},
-
- .JackStrIndex = NO_DESCRIPTOR
- },
-
- .MIDI_Out_Jack_Ext =
- {
- .Header = {.Size = sizeof(USB_MIDI_Descriptor_OutputJack_t), .Type = DTYPE_CSInterface},
- .Subtype = AUDIO_DSUBTYPE_CSInterface_OutputTerminal,
-
- .JackType = MIDI_JACKTYPE_External,
- .JackID = 0x04,
-
- .NumberOfPins = 1,
- .SourceJackID = {0x01},
- .SourcePinID = {0x01},
-
- .JackStrIndex = NO_DESCRIPTOR
- },
-
- .MIDI_In_Jack_Endpoint =
- {
- .Endpoint =
- {
- .Header = {.Size = sizeof(USB_Audio_Descriptor_StreamEndpoint_Std_t), .Type = DTYPE_Endpoint},
-
- .EndpointAddress = (ENDPOINT_DIR_OUT | MIDI_STREAM_OUT_EPNUM),
- .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
- .EndpointSize = MIDI_STREAM_EPSIZE,
- .PollingIntervalMS = 0x01
- },
-
- .Refresh = 0,
- .SyncEndpointNumber = 0
- },
-
- .MIDI_In_Jack_Endpoint_SPC =
- {
- .Header = {.Size = sizeof(USB_MIDI_Descriptor_Jack_Endpoint_t), .Type = DTYPE_CSEndpoint},
- .Subtype = AUDIO_DSUBTYPE_CSEndpoint_General,
-
- .TotalEmbeddedJacks = 0x01,
- .AssociatedJackID = {0x01}
- },
-
- .MIDI_Out_Jack_Endpoint =
- {
- .Endpoint =
- {
- .Header = {.Size = sizeof(USB_Audio_Descriptor_StreamEndpoint_Std_t), .Type = DTYPE_Endpoint},
-
- .EndpointAddress = (ENDPOINT_DIR_IN | MIDI_STREAM_IN_EPNUM),
- .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
- .EndpointSize = MIDI_STREAM_EPSIZE,
- .PollingIntervalMS = 0x01
- },
-
- .Refresh = 0,
- .SyncEndpointNumber = 0
- },
-
- .MIDI_Out_Jack_Endpoint_SPC =
- {
- .Header = {.Size = sizeof(USB_MIDI_Descriptor_Jack_Endpoint_t), .Type = DTYPE_CSEndpoint},
- .Subtype = AUDIO_DSUBTYPE_CSEndpoint_General,
-
- .TotalEmbeddedJacks = 0x01,
- .AssociatedJackID = {0x03}
- }
-};
-
-/** Language descriptor structure. This descriptor, located in FLASH memory, is returned when the host requests
- * the string descriptor with index 0 (the first index). It is actually an array of 16-bit integers, which indicate
- * via the language ID table available at USB.org what languages the device supports for its string descriptors.
- */
-const USB_Descriptor_String_t PROGMEM LanguageString =
-{
- .Header = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String},
-
- .UnicodeString = {LANGUAGE_ID_ENG}
-};
-
-/** Manufacturer descriptor string. This is a Unicode string containing the manufacturer's details in human readable
- * form, and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
- * Descriptor.
- */
-const USB_Descriptor_String_t PROGMEM ManufacturerString =
-{
-#ifndef USB_MANUFACTURER
- .Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String},
- .UnicodeString = L"Dean Camera"
-#else
- .Header = {.Size = USB_STRING_LEN(USB_MANUFACTURER_LEN), .Type = DTYPE_String},
- .UnicodeString = USB_MANUFACTURER
-#endif
-};
-
-/** Product descriptor string. This is a Unicode string containing the product's details in human readable form,
- * and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
- * Descriptor.
- */
-const USB_Descriptor_String_t PROGMEM ProductString =
-{
-#ifndef USB_PRODUCT
- .Header = {.Size = USB_STRING_LEN(14), .Type = DTYPE_String},
- .UnicodeString = L"LUFA MIDI Demo"
-#else
- .Header = {.Size = USB_STRING_LEN(USB_PRODUCT_LEN), .Type = DTYPE_String},
- .UnicodeString = USB_PRODUCT
-#endif
-};
-
-/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
- * documentation) by the application code so that the address and size of a requested descriptor can be given
- * to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
- * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
- * USB host.
- */
-uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
- const uint8_t wIndex,
- const void** const DescriptorAddress)
-{
- const uint8_t DescriptorType = (wValue >> 8);
- const uint8_t DescriptorNumber = (wValue & 0xFF);
-
- const void* Address = NULL;
- uint16_t Size = NO_DESCRIPTOR;
-
- switch (DescriptorType)
- {
- case DTYPE_Device:
- Address = &DeviceDescriptor;
- Size = sizeof(USB_Descriptor_Device_t);
- break;
- case DTYPE_Configuration:
- Address = &ConfigurationDescriptor;
- Size = sizeof(USB_Descriptor_Configuration_t);
- break;
- case DTYPE_String:
- switch (DescriptorNumber)
- {
- case 0x00:
- Address = &LanguageString;
- Size = pgm_read_byte(&LanguageString.Header.Size);
- break;
- case 0x01:
- Address = &ManufacturerString;
- Size = pgm_read_byte(&ManufacturerString.Header.Size);
- break;
- case 0x02:
- Address = &ProductString;
- Size = pgm_read_byte(&ProductString.Header.Size);
- break;
- }
-
- break;
- }
-
- *DescriptorAddress = Address;
- return Size;
-}
-
diff --git a/software/lib/lufa-descriptor-midi.h b/software/lib/lufa-descriptor-midi.h
deleted file mode 100644
index 592ac9f..0000000
--- a/software/lib/lufa-descriptor-midi.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- LUFA Library
- Copyright (C) Dean Camera, 2012.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-/*
- Copyright 2012 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 Descriptors.c.
- */
-
-#ifndef _DESCRIPTORS_H_
-#define _DESCRIPTORS_H_
-
- /* Includes: */
- #include <LUFA/Drivers/USB/USB.h>
-
- #include <avr/pgmspace.h>
-
- /* Macros: */
- /** Endpoint number of the MIDI streaming data IN endpoint, for device-to-host data transfers. */
- #define MIDI_STREAM_IN_EPNUM 2
-
- /** Endpoint number of the MIDI streaming data OUT endpoint, for host-to-device data transfers. */
- #define MIDI_STREAM_OUT_EPNUM 1
-
- /** Endpoint size in bytes of the Audio isochronous streaming data IN and OUT endpoints. */
- #define MIDI_STREAM_EPSIZE 64
-
- /* Type Defines: */
- /** Type define for the device configuration descriptor structure. This must be defined in the
- * application code, as the configuration descriptor contains several sub-descriptors which
- * vary between devices, and which describe the device's usage to the host.
- */
- typedef struct
- {
- USB_Descriptor_Configuration_Header_t Config;
-
- // MIDI Audio Control Interface
- USB_Descriptor_Interface_t Audio_ControlInterface;
- USB_Audio_Descriptor_Interface_AC_t Audio_ControlInterface_SPC;
-
- // MIDI Audio Streaming Interface
- USB_Descriptor_Interface_t Audio_StreamInterface;
- USB_MIDI_Descriptor_AudioInterface_AS_t Audio_StreamInterface_SPC;
- USB_MIDI_Descriptor_InputJack_t MIDI_In_Jack_Emb;
- USB_MIDI_Descriptor_InputJack_t MIDI_In_Jack_Ext;
- USB_MIDI_Descriptor_OutputJack_t MIDI_Out_Jack_Emb;
- USB_MIDI_Descriptor_OutputJack_t MIDI_Out_Jack_Ext;
- USB_Audio_Descriptor_StreamEndpoint_Std_t MIDI_In_Jack_Endpoint;
- USB_MIDI_Descriptor_Jack_Endpoint_t MIDI_In_Jack_Endpoint_SPC;
- USB_Audio_Descriptor_StreamEndpoint_Std_t MIDI_Out_Jack_Endpoint;
- USB_MIDI_Descriptor_Jack_Endpoint_t MIDI_Out_Jack_Endpoint_SPC;
- } USB_Descriptor_Configuration_t;
-
- /* Function Prototypes: */
- uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
- const uint8_t wIndex,
- const void** const DescriptorAddress)
- ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
-
-#endif
-
diff --git a/software/lib/lufa-descriptor-rndis.c b/software/lib/lufa-descriptor-rndis.c
deleted file mode 100644
index ba29037..0000000
--- a/software/lib/lufa-descriptor-rndis.c
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- LUFA Library
- Copyright (C) Dean Camera, 2012.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-/*
- Copyright 2012 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
- *
- * USB Device Descriptors, for library use when in USB device mode. Descriptors are special
- * computer-readable structures which the host requests upon device enumeration, to determine
- * the device's capabilities and functions.
- */
-
-#include "lufa-descriptor-rndis.h"
-
-/** Device descriptor structure. This descriptor, located in FLASH memory, describes the overall
- * device characteristics, including the supported USB version, control endpoint size and the
- * number of device configurations. The descriptor is read out by the USB host when the enumeration
- * process begins.
- */
-const USB_Descriptor_Device_t PROGMEM DeviceDescriptor =
-{
- .Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device},
-
- .USBSpecification = VERSION_BCD(01.10),
- .Class = CDC_CSCP_CDCClass,
- .SubClass = CDC_CSCP_NoSpecificSubclass,
- .Protocol = CDC_CSCP_NoSpecificProtocol,
-
- .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE,
-
- .VendorID = 0x03EB,
- .ProductID = 0x204C,
- .ReleaseNumber = VERSION_BCD(00.01),
-
- .ManufacturerStrIndex = 0x01,
- .ProductStrIndex = 0x02,
- .SerialNumStrIndex = NO_DESCRIPTOR,
-
- .NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS
-};
-
-/** Configuration descriptor structure. This descriptor, located in FLASH memory, describes the usage
- * of the device in one of its supported configurations, including information about any device interfaces
- * and endpoints. The descriptor is read out by the USB host during the enumeration process when selecting
- * a configuration so that the host may correctly communicate with the USB device.
- */
-const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
-{
- .Config =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration},
-
- .TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t),
- .TotalInterfaces = 2,
-
- .ConfigurationNumber = 1,
- .ConfigurationStrIndex = NO_DESCRIPTOR,
-
- .ConfigAttributes = (USB_CONFIG_ATTR_RESERVED | USB_CONFIG_ATTR_SELFPOWERED),
-
- .MaxPowerConsumption = USB_CONFIG_POWER_MA(100)
- },
-
- .CDC_CCI_Interface =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
-
- .InterfaceNumber = 0,
- .AlternateSetting = 0,
-
- .TotalEndpoints = 1,
-
- .Class = CDC_CSCP_CDCClass,
- .SubClass = CDC_CSCP_ACMSubclass,
- .Protocol = CDC_CSCP_VendorSpecificProtocol,
-
- .InterfaceStrIndex = NO_DESCRIPTOR
- },
-
- .CDC_Functional_Header =
- {
- .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalHeader_t), .Type = DTYPE_CSInterface},
- .Subtype = CDC_DSUBTYPE_CSInterface_Header,
-
- .CDCSpecification = VERSION_BCD(01.10),
- },
-
- .CDC_Functional_ACM =
- {
- .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalACM_t), .Type = DTYPE_CSInterface},
- .Subtype = CDC_DSUBTYPE_CSInterface_ACM,
-
- .Capabilities = 0x00,
- },
-
- .CDC_Functional_Union =
- {
- .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
- .Subtype = CDC_DSUBTYPE_CSInterface_Union,
-
- .MasterInterfaceNumber = 0,
- .SlaveInterfaceNumber = 1,
- },
-
- .CDC_NotificationEndpoint =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
-
- .EndpointAddress = (ENDPOINT_DIR_IN | CDC_NOTIFICATION_EPNUM),
- .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
- .EndpointSize = CDC_NOTIFICATION_EPSIZE,
- .PollingIntervalMS = 0xFF
- },
-
- .CDC_DCI_Interface =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
-
- .InterfaceNumber = 1,
- .AlternateSetting = 0,
-
- .TotalEndpoints = 2,
-
- .Class = CDC_CSCP_CDCDataClass,
- .SubClass = CDC_CSCP_NoDataSubclass,
- .Protocol = CDC_CSCP_NoDataProtocol,
-
- .InterfaceStrIndex = NO_DESCRIPTOR
- },
-
- .RNDIS_DataOutEndpoint =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
-
- .EndpointAddress = (ENDPOINT_DIR_OUT | CDC_RX_EPNUM),
- .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
- .EndpointSize = CDC_TXRX_EPSIZE,
- .PollingIntervalMS = 0x01
- },
-
- .RNDIS_DataInEndpoint =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
-
- .EndpointAddress = (ENDPOINT_DIR_IN | CDC_TX_EPNUM),
- .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
- .EndpointSize = CDC_TXRX_EPSIZE,
- .PollingIntervalMS = 0x01
- }
-};
-
-/** Language descriptor structure. This descriptor, located in FLASH memory, is returned when the host requests
- * the string descriptor with index 0 (the first index). It is actually an array of 16-bit integers, which indicate
- * via the language ID table available at USB.org what languages the device supports for its string descriptors.
- */
-const USB_Descriptor_String_t PROGMEM LanguageString =
-{
- .Header = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String},
-
- .UnicodeString = {LANGUAGE_ID_ENG}
-};
-
-/** Manufacturer descriptor string. This is a Unicode string containing the manufacturer's details in human readable
- * form, and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
- * Descriptor.
- */
-const USB_Descriptor_String_t PROGMEM ManufacturerString =
-{
-#ifndef USB_MANUFACTURER
- .Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String},
- .UnicodeString = L"Dean Camera"
-#else
- .Header = {.Size = USB_STRING_LEN(USB_MANUFACTURER_LEN), .Type = DTYPE_String},
- .UnicodeString = USB_MANUFACTURER
-#endif
-};
-
-/** Product descriptor string. This is a Unicode string containing the product's details in human readable form,
- * and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
- * Descriptor.
- */
-const USB_Descriptor_String_t PROGMEM ProductString =
-{
-#ifndef USB_PRODUCT
- .Header = {.Size = USB_STRING_LEN(23), .Type = DTYPE_String},
- .UnicodeString = L"LUFA USB-RS232 Adapter"
-#else
- .Header = {.Size = USB_STRING_LEN(USB_PRODUCT_LEN), .Type = DTYPE_String},
- .UnicodeString = USB_PRODUCT
-#endif
-};
-
-/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
- * documentation) by the application code so that the address and size of a requested descriptor can be given
- * to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
- * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
- * USB host.
- */
-uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
- const uint8_t wIndex,
- const void** const DescriptorAddress)
-{
- const uint8_t DescriptorType = (wValue >> 8);
- const uint8_t DescriptorNumber = (wValue & 0xFF);
-
- const void* Address = NULL;
- uint16_t Size = NO_DESCRIPTOR;
-
- switch (DescriptorType)
- {
- case DTYPE_Device:
- Address = &DeviceDescriptor;
- Size = sizeof(USB_Descriptor_Device_t);
- break;
- case DTYPE_Configuration:
- Address = &ConfigurationDescriptor;
- Size = sizeof(USB_Descriptor_Configuration_t);
- break;
- case DTYPE_String:
- switch (DescriptorNumber)
- {
- case 0x00:
- Address = &LanguageString;
- Size = pgm_read_byte(&LanguageString.Header.Size);
- break;
- case 0x01:
- Address = &ManufacturerString;
- Size = pgm_read_byte(&ManufacturerString.Header.Size);
- break;
- case 0x02:
- Address = &ProductString;
- Size = pgm_read_byte(&ProductString.Header.Size);
- break;
- }
-
- break;
- }
-
- *DescriptorAddress = Address;
- return Size;
-}
-
diff --git a/software/lib/lufa-descriptor-rndis.h b/software/lib/lufa-descriptor-rndis.h
deleted file mode 100644
index 508ac2f..0000000
--- a/software/lib/lufa-descriptor-rndis.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- LUFA Library
- Copyright (C) Dean Camera, 2012.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-/*
- Copyright 2012 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 Descriptors.c.
- */
-
-#ifndef _DESCRIPTORS_H_
-#define _DESCRIPTORS_H_
-
- /* Includes: */
- #include <LUFA/Drivers/USB/USB.h>
-
- #include <avr/pgmspace.h>
-
- /* Macros: */
- /** Endpoint number of the CDC device-to-host notification IN endpoint. */
- #define CDC_NOTIFICATION_EPNUM 3
-
- /** Endpoint number of the CDC device-to-host data IN endpoint. */
- #define CDC_TX_EPNUM 1
-
- /** Endpoint number of the CDC host-to-device data OUT endpoint. */
- #define CDC_RX_EPNUM 2
-
- /** Size in bytes of the CDC device-to-host notification IN endpoint. */
- #define CDC_NOTIFICATION_EPSIZE 8
-
- /** Size in bytes of the CDC data IN and OUT endpoints. */
- #define CDC_TXRX_EPSIZE 64
-
- /* Type Defines: */
- /** Type define for the device configuration descriptor structure. This must be defined in the
- * application code, as the configuration descriptor contains several sub-descriptors which
- * vary between devices, and which describe the device's usage to the host.
- */
- typedef struct
- {
- USB_Descriptor_Configuration_Header_t Config;
-
- // RNDIS CDC Control Interface
- USB_Descriptor_Interface_t CDC_CCI_Interface;
- USB_CDC_Descriptor_FunctionalHeader_t CDC_Functional_Header;
- USB_CDC_Descriptor_FunctionalACM_t CDC_Functional_ACM;
- USB_CDC_Descriptor_FunctionalUnion_t CDC_Functional_Union;
- USB_Descriptor_Endpoint_t CDC_NotificationEndpoint;
-
- // RNDIS CDC Data Interface
- USB_Descriptor_Interface_t CDC_DCI_Interface;
- USB_Descriptor_Endpoint_t RNDIS_DataOutEndpoint;
- USB_Descriptor_Endpoint_t RNDIS_DataInEndpoint;
- } USB_Descriptor_Configuration_t;
-
- /* Function Prototypes: */
- uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
- const uint8_t wIndex,
- const void** const DescriptorAddress)
- ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
-
-#endif
-
diff --git a/software/lib/lufa-descriptor-usbdualserial.c b/software/lib/lufa-descriptor-usbdualserial.c
deleted file mode 100644
index 639391c..0000000
--- a/software/lib/lufa-descriptor-usbdualserial.c
+++ /dev/null
@@ -1,394 +0,0 @@
-/*
- LUFA Library
- Copyright (C) Dean Camera, 2012.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-/*
- Copyright 2012 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
- *
- * USB Device Descriptors, for library use when in USB device mode. Descriptors are special
- * computer-readable structures which the host requests upon device enumeration, to determine
- * the device's capabilities and functions.
- */
-
-#include "lufa-descriptor-usbdualserial.h"
-
-/* On some devices, there is a factory set internal serial number which can be automatically sent to the host as
- * the device's serial number when the Device Descriptor's .SerialNumStrIndex entry is set to USE_INTERNAL_SERIAL.
- * This allows the host to track a device across insertions on different ports, allowing them to retain allocated
- * resources like COM port numbers and drivers. On demos using this feature, give a warning on unsupported devices
- * so that the user can supply their own serial number descriptor instead or remove the USE_INTERNAL_SERIAL value
- * from the Device Descriptor (forcing the host to generate a serial number for each device from the VID, PID and
- * port location).
- */
-#if (USE_INTERNAL_SERIAL == NO_DESCRIPTOR)
- #warning USE_INTERNAL_SERIAL is not available on this AVR - please manually construct a device serial descriptor.
-#endif
-
-/** Device descriptor structure. This descriptor, located in FLASH memory, describes the overall
- * device characteristics, including the supported USB version, control endpoint size and the
- * number of device configurations. The descriptor is read out by the USB host when the enumeration
- * process begins.
- */
-const USB_Descriptor_Device_t PROGMEM DeviceDescriptor =
-{
- .Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device},
-
- .USBSpecification = VERSION_BCD(01.10),
- .Class = USB_CSCP_IADDeviceClass,
- .SubClass = USB_CSCP_IADDeviceSubclass,
- .Protocol = USB_CSCP_IADDeviceProtocol,
-
- .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE,
-
- .VendorID = 0x03EB,
- .ProductID = 0x204E,
- .ReleaseNumber = VERSION_BCD(00.01),
-
- .ManufacturerStrIndex = 0x01,
- .ProductStrIndex = 0x02,
- .SerialNumStrIndex = USE_INTERNAL_SERIAL,
-
- .NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS
-};
-
-/** Configuration descriptor structure. This descriptor, located in FLASH memory, describes the usage
- * of the device in one of its supported configurations, including information about any device interfaces
- * and endpoints. The descriptor is read out by the USB host during the enumeration process when selecting
- * a configuration so that the host may correctly communicate with the USB device.
- */
-const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
-{
- .Config =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration},
-
- .TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t),
- .TotalInterfaces = 4,
-
- .ConfigurationNumber = 1,
- .ConfigurationStrIndex = NO_DESCRIPTOR,
-
- .ConfigAttributes = (USB_CONFIG_ATTR_RESERVED | USB_CONFIG_ATTR_SELFPOWERED),
-
- .MaxPowerConsumption = USB_CONFIG_POWER_MA(100)
- },
-
- .CDC1_IAD =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Interface_Association_t), .Type = DTYPE_InterfaceAssociation},
-
- .FirstInterfaceIndex = 0,
- .TotalInterfaces = 2,
-
- .Class = CDC_CSCP_CDCClass,
- .SubClass = CDC_CSCP_ACMSubclass,
- .Protocol = CDC_CSCP_ATCommandProtocol,
-
- .IADStrIndex = NO_DESCRIPTOR
- },
-
- .CDC1_CCI_Interface =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
-
- .InterfaceNumber = 0,
- .AlternateSetting = 0,
-
- .TotalEndpoints = 1,
-
- .Class = CDC_CSCP_CDCClass,
- .SubClass = CDC_CSCP_ACMSubclass,
- .Protocol = CDC_CSCP_ATCommandProtocol,
-
- .InterfaceStrIndex = NO_DESCRIPTOR
- },
-
- .CDC1_Functional_Header =
- {
- .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalHeader_t), .Type = DTYPE_CSInterface},
- .Subtype = CDC_DSUBTYPE_CSInterface_Header,
-
- .CDCSpecification = VERSION_BCD(01.10),
- },
-
- .CDC1_Functional_ACM =
- {
- .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalACM_t), .Type = DTYPE_CSInterface},
- .Subtype = CDC_DSUBTYPE_CSInterface_ACM,
-
- .Capabilities = 0x06,
- },
-
- .CDC1_Functional_Union =
- {
- .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
- .Subtype = CDC_DSUBTYPE_CSInterface_Union,
-
- .MasterInterfaceNumber = 0,
- .SlaveInterfaceNumber = 1,
- },
-
- .CDC1_ManagementEndpoint =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
-
- .EndpointAddress = (ENDPOINT_DIR_IN | CDC1_NOTIFICATION_EPNUM),
- .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
- .EndpointSize = CDC_NOTIFICATION_EPSIZE,
- .PollingIntervalMS = 0xFF
- },
-
- .CDC1_DCI_Interface =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
-
- .InterfaceNumber = 1,
- .AlternateSetting = 0,
-
- .TotalEndpoints = 2,
-
- .Class = CDC_CSCP_CDCDataClass,
- .SubClass = CDC_CSCP_NoDataSubclass,
- .Protocol = CDC_CSCP_NoDataProtocol,
-
- .InterfaceStrIndex = NO_DESCRIPTOR
- },
-
- .CDC1_DataOutEndpoint =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
-
- .EndpointAddress = (ENDPOINT_DIR_OUT | CDC1_RX_EPNUM),
- .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
- .EndpointSize = CDC_TXRX_EPSIZE,
- .PollingIntervalMS = 0x01
- },
-
- .CDC1_DataInEndpoint =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
-
- .EndpointAddress = (ENDPOINT_DIR_IN | CDC1_TX_EPNUM),
- .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
- .EndpointSize = CDC_TXRX_EPSIZE,
- .PollingIntervalMS = 0x01
- },
-
- .CDC2_IAD =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Interface_Association_t), .Type = DTYPE_InterfaceAssociation},
-
- .FirstInterfaceIndex = 2,
- .TotalInterfaces = 2,
-
- .Class = CDC_CSCP_CDCClass,
- .SubClass = CDC_CSCP_ACMSubclass,
- .Protocol = CDC_CSCP_ATCommandProtocol,
-
- .IADStrIndex = NO_DESCRIPTOR
- },
-
- .CDC2_CCI_Interface =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
-
- .InterfaceNumber = 2,
- .AlternateSetting = 0,
-
- .TotalEndpoints = 1,
-
- .Class = CDC_CSCP_CDCClass,
- .SubClass = CDC_CSCP_ACMSubclass,
- .Protocol = CDC_CSCP_ATCommandProtocol,
-
- .InterfaceStrIndex = NO_DESCRIPTOR
- },
-
- .CDC2_Functional_Header =
- {
- .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalHeader_t), .Type = DTYPE_CSInterface},
- .Subtype = CDC_DSUBTYPE_CSInterface_Header,
-
- .CDCSpecification = VERSION_BCD(01.10),
- },
-
- .CDC2_Functional_ACM =
- {
- .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalACM_t), .Type = DTYPE_CSInterface},
- .Subtype = CDC_DSUBTYPE_CSInterface_ACM,
-
- .Capabilities = 0x06,
- },
-
- .CDC2_Functional_Union =
- {
- .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
- .Subtype = CDC_DSUBTYPE_CSInterface_Union,
-
- .MasterInterfaceNumber = 2,
- .SlaveInterfaceNumber = 3,
- },
-
- .CDC2_ManagementEndpoint =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
-
- .EndpointAddress = (ENDPOINT_DIR_IN | CDC2_NOTIFICATION_EPNUM),
- .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
- .EndpointSize = CDC_NOTIFICATION_EPSIZE,
- .PollingIntervalMS = 0xFF
- },
-
- .CDC2_DCI_Interface =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
-
- .InterfaceNumber = 3,
- .AlternateSetting = 0,
-
- .TotalEndpoints = 2,
-
- .Class = CDC_CSCP_CDCDataClass,
- .SubClass = CDC_CSCP_NoDataSubclass,
- .Protocol = CDC_CSCP_NoDataProtocol,
-
- .InterfaceStrIndex = NO_DESCRIPTOR
- },
-
- .CDC2_DataOutEndpoint =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
-
- .EndpointAddress = (ENDPOINT_DIR_OUT | CDC2_RX_EPNUM),
- .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
- .EndpointSize = CDC_TXRX_EPSIZE,
- .PollingIntervalMS = 0x01
- },
-
- .CDC2_DataInEndpoint =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
-
- .EndpointAddress = (ENDPOINT_DIR_IN | CDC2_TX_EPNUM),
- .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
- .EndpointSize = CDC_TXRX_EPSIZE,
- .PollingIntervalMS = 0x01
- }
-};
-
-/** Language descriptor structure. This descriptor, located in FLASH memory, is returned when the host requests
- * the string descriptor with index 0 (the first index). It is actually an array of 16-bit integers, which indicate
- * via the language ID table available at USB.org what languages the device supports for its string descriptors.
- */
-const USB_Descriptor_String_t PROGMEM LanguageString =
-{
- .Header = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String},
-
- .UnicodeString = {LANGUAGE_ID_ENG}
-};
-
-/** Manufacturer descriptor string. This is a Unicode string containing the manufacturer's details in human readable
- * form, and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
- * Descriptor.
- */
-const USB_Descriptor_String_t PROGMEM ManufacturerString =
-{
-#ifndef USB_MANUFACTURER
- .Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String},
- .UnicodeString = L"Dean Camera"
-#else
- .Header = {.Size = USB_STRING_LEN(USB_MANUFACTURER_LEN), .Type = DTYPE_String},
- .UnicodeString = USB_MANUFACTURER
-#endif
-};
-
-/** Product descriptor string. This is a Unicode string containing the product's details in human readable form,
- * and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
- * Descriptor.
- */
-const USB_Descriptor_String_t PROGMEM ProductString =
-{
-#ifndef USB_PRODUCT
- .Header = {.Size = USB_STRING_LEN(13), .Type = DTYPE_String},
- .UnicodeString = L"LUFA Dual CDC Demo"
-#else
- .Header = {.Size = USB_STRING_LEN(USB_PRODUCT_LEN), .Type = DTYPE_String},
- .UnicodeString = USB_PRODUCT
-#endif
-};
-
-/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
- * documentation) by the application code so that the address and size of a requested descriptor can be given
- * to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
- * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
- * USB host.
- */
-uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
- const uint8_t wIndex,
- const void** const DescriptorAddress)
-{
- const uint8_t DescriptorType = (wValue >> 8);
- const uint8_t DescriptorNumber = (wValue & 0xFF);
-
- const void* Address = NULL;
- uint16_t Size = NO_DESCRIPTOR;
-
- switch (DescriptorType)
- {
- case DTYPE_Device:
- Address = &DeviceDescriptor;
- Size = sizeof(USB_Descriptor_Device_t);
- break;
- case DTYPE_Configuration:
- Address = &ConfigurationDescriptor;
- Size = sizeof(USB_Descriptor_Configuration_t);
- break;
- case DTYPE_String:
- switch (DescriptorNumber)
- {
- case 0x00:
- Address = &LanguageString;
- Size = pgm_read_byte(&LanguageString.Header.Size);
- break;
- case 0x01:
- Address = &ManufacturerString;
- Size = pgm_read_byte(&ManufacturerString.Header.Size);
- break;
- case 0x02:
- Address = &ProductString;
- Size = pgm_read_byte(&ProductString.Header.Size);
- break;
- }
-
- break;
- }
-
- *DescriptorAddress = Address;
- return Size;
-}
-
diff --git a/software/lib/lufa-descriptor-usbdualserial.h b/software/lib/lufa-descriptor-usbdualserial.h
deleted file mode 100644
index d1e6ca6..0000000
--- a/software/lib/lufa-descriptor-usbdualserial.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- LUFA Library
- Copyright (C) Dean Camera, 2012.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-/*
- Copyright 2012 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 Descriptors.c.
- */
-
-#ifndef _DESCRIPTORS_H_
-#define _DESCRIPTORS_H_
-
- /* Includes: */
- #include <avr/pgmspace.h>
-
- #include <LUFA/Drivers/USB/USB.h>
-
- /* Macros: */
- /** Endpoint number of the first CDC interface's device-to-host data IN endpoint. */
- #define CDC1_TX_EPNUM 1
-
- /** Endpoint number of the first CDC interface's host-to-device data OUT endpoint. */
- #define CDC1_RX_EPNUM 2
-
- /** Endpoint number of the first CDC interface's device-to-host notification IN endpoint. */
- #define CDC1_NOTIFICATION_EPNUM 3
-
- /** Endpoint number of the second CDC interface's device-to-host data IN endpoint. */
- #define CDC2_TX_EPNUM 4
-
- /** Endpoint number of the second CDC interface's host-to-device data OUT endpoint. */
- #define CDC2_RX_EPNUM 5
-
- /** Endpoint number of the second CDC interface's device-to-host notification IN endpoint. */
- #define CDC2_NOTIFICATION_EPNUM 6
-
- /** Size in bytes of the CDC device-to-host notification IN endpoints. */
- #define CDC_NOTIFICATION_EPSIZE 8
-
- /** Size in bytes of the CDC data IN and OUT endpoints. */
- #define CDC_TXRX_EPSIZE 16
-
- /* Type Defines: */
- /** Type define for the device configuration descriptor structure. This must be defined in the
- * application code, as the configuration descriptor contains several sub-descriptors which
- * vary between devices, and which describe the device's usage to the host.
- */
- typedef struct
- {
- USB_Descriptor_Configuration_Header_t Config;
-
- // First CDC Control Interface
- USB_Descriptor_Interface_Association_t CDC1_IAD;
- USB_Descriptor_Interface_t CDC1_CCI_Interface;
- USB_CDC_Descriptor_FunctionalHeader_t CDC1_Functional_Header;
- USB_CDC_Descriptor_FunctionalACM_t CDC1_Functional_ACM;
- USB_CDC_Descriptor_FunctionalUnion_t CDC1_Functional_Union;
- USB_Descriptor_Endpoint_t CDC1_ManagementEndpoint;
-
- // First CDC Data Interface
- USB_Descriptor_Interface_t CDC1_DCI_Interface;
- USB_Descriptor_Endpoint_t CDC1_DataOutEndpoint;
- USB_Descriptor_Endpoint_t CDC1_DataInEndpoint;
-
- // Second CDC Control Interface
- USB_Descriptor_Interface_Association_t CDC2_IAD;
- USB_Descriptor_Interface_t CDC2_CCI_Interface;
- USB_CDC_Descriptor_FunctionalHeader_t CDC2_Functional_Header;
- USB_CDC_Descriptor_FunctionalACM_t CDC2_Functional_ACM;
- USB_CDC_Descriptor_FunctionalUnion_t CDC2_Functional_Union;
- USB_Descriptor_Endpoint_t CDC2_ManagementEndpoint;
-
- // Second CDC Data Interface
- USB_Descriptor_Interface_t CDC2_DCI_Interface;
- USB_Descriptor_Endpoint_t CDC2_DataOutEndpoint;
- USB_Descriptor_Endpoint_t CDC2_DataInEndpoint;
- } USB_Descriptor_Configuration_t;
-
- /* Function Prototypes: */
- uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
- const uint8_t wIndex,
- const void** const DescriptorAddress)
- ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
-
-#endif
-
diff --git a/software/lib/lufa-descriptor-usbserial.c b/software/lib/lufa-descriptor-usbserial.c
deleted file mode 100644
index fa2ef25..0000000
--- a/software/lib/lufa-descriptor-usbserial.c
+++ /dev/null
@@ -1,280 +0,0 @@
-/*
- LUFA Library
- Copyright (C) Dean Camera, 2012.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-/*
- Copyright 2012 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
- *
- * USB Device Descriptors, for library use when in USB device mode. Descriptors are special
- * computer-readable structures which the host requests upon device enumeration, to determine
- * the device's capabilities and functions.
- */
-
-#include "lufa-descriptor-usbserial.h"
-
-/* On some devices, there is a factory set internal serial number which can be automatically sent to the host as
- * the device's serial number when the Device Descriptor's .SerialNumStrIndex entry is set to USE_INTERNAL_SERIAL.
- * This allows the host to track a device across insertions on different ports, allowing them to retain allocated
- * resources like COM port numbers and drivers. On demos using this feature, give a warning on unsupported devices
- * so that the user can supply their own serial number descriptor instead or remove the USE_INTERNAL_SERIAL value
- * from the Device Descriptor (forcing the host to generate a serial number for each device from the VID, PID and
- * port location).
- */
-#if (USE_INTERNAL_SERIAL == NO_DESCRIPTOR)
- #warning USE_INTERNAL_SERIAL is not available on this AVR - please manually construct a device serial descriptor.
-#endif
-
-/** Device descriptor structure. This descriptor, located in FLASH memory, describes the overall
- * device characteristics, including the supported USB version, control endpoint size and the
- * number of device configurations. The descriptor is read out by the USB host when the enumeration
- * process begins.
- */
-const USB_Descriptor_Device_t PROGMEM DeviceDescriptor =
-{
- .Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device},
-
- .USBSpecification = VERSION_BCD(01.10),
- .Class = CDC_CSCP_CDCClass,
- .SubClass = CDC_CSCP_NoSpecificSubclass,
- .Protocol = CDC_CSCP_NoSpecificProtocol,
-
- .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE,
-
- .VendorID = 0x03EB,
- .ProductID = 0x204B,
- .ReleaseNumber = VERSION_BCD(00.01),
-
- .ManufacturerStrIndex = 0x01,
- .ProductStrIndex = 0x02,
- .SerialNumStrIndex = USE_INTERNAL_SERIAL,
-
- .NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS
-};
-
-/** Configuration descriptor structure. This descriptor, located in FLASH memory, describes the usage
- * of the device in one of its supported configurations, including information about any device interfaces
- * and endpoints. The descriptor is read out by the USB host during the enumeration process when selecting
- * a configuration so that the host may correctly communicate with the USB device.
- */
-const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
-{
- .Config =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration},
-
- .TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t),
- .TotalInterfaces = 2,
-
- .ConfigurationNumber = 1,
- .ConfigurationStrIndex = NO_DESCRIPTOR,
-
- .ConfigAttributes = (USB_CONFIG_ATTR_RESERVED | USB_CONFIG_ATTR_SELFPOWERED),
-
- .MaxPowerConsumption = USB_CONFIG_POWER_MA(100)
- },
-
- .CDC_CCI_Interface =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
-
- .InterfaceNumber = 0,
- .AlternateSetting = 0,
-
- .TotalEndpoints = 1,
-
- .Class = CDC_CSCP_CDCClass,
- .SubClass = CDC_CSCP_ACMSubclass,
- .Protocol = CDC_CSCP_ATCommandProtocol,
-
- .InterfaceStrIndex = NO_DESCRIPTOR
- },
-
- .CDC_Functional_Header =
- {
- .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalHeader_t), .Type = DTYPE_CSInterface},
- .Subtype = CDC_DSUBTYPE_CSInterface_Header,
-
- .CDCSpecification = VERSION_BCD(01.10),
- },
-
- .CDC_Functional_ACM =
- {
- .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalACM_t), .Type = DTYPE_CSInterface},
- .Subtype = CDC_DSUBTYPE_CSInterface_ACM,
-
- .Capabilities = 0x06,
- },
-
- .CDC_Functional_Union =
- {
- .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
- .Subtype = CDC_DSUBTYPE_CSInterface_Union,
-
- .MasterInterfaceNumber = 0,
- .SlaveInterfaceNumber = 1,
- },
-
- .CDC_NotificationEndpoint =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
-
- .EndpointAddress = (ENDPOINT_DIR_IN | CDC_NOTIFICATION_EPNUM),
- .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
- .EndpointSize = CDC_NOTIFICATION_EPSIZE,
- .PollingIntervalMS = 0xFF
- },
-
- .CDC_DCI_Interface =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
-
- .InterfaceNumber = 1,
- .AlternateSetting = 0,
-
- .TotalEndpoints = 2,
-
- .Class = CDC_CSCP_CDCDataClass,
- .SubClass = CDC_CSCP_NoDataSubclass,
- .Protocol = CDC_CSCP_NoDataProtocol,
-
- .InterfaceStrIndex = NO_DESCRIPTOR
- },
-
- .CDC_DataOutEndpoint =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
-
- .EndpointAddress = (ENDPOINT_DIR_OUT | CDC_RX_EPNUM),
- .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
- .EndpointSize = CDC_TXRX_EPSIZE,
- .PollingIntervalMS = 0x01
- },
-
- .CDC_DataInEndpoint =
- {
- .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
-
- .EndpointAddress = (ENDPOINT_DIR_IN | CDC_TX_EPNUM),
- .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
- .EndpointSize = CDC_TXRX_EPSIZE,
- .PollingIntervalMS = 0x01
- }
-};
-
-/** Language descriptor structure. This descriptor, located in FLASH memory, is returned when the host requests
- * the string descriptor with index 0 (the first index). It is actually an array of 16-bit integers, which indicate
- * via the language ID table available at USB.org what languages the device supports for its string descriptors.
- */
-const USB_Descriptor_String_t PROGMEM LanguageString =
-{
- .Header = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String},
-
- .UnicodeString = {LANGUAGE_ID_ENG}
-};
-
-
-/** Manufacturer descriptor string. This is a Unicode string containing the manufacturer's details in human readable
- * form, and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
- * Descriptor.
- */
-const USB_Descriptor_String_t PROGMEM ManufacturerString =
-{
-#ifndef USB_MANUFACTURER
- .Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String},
- .UnicodeString = L"Dean Camera"
-#else
- .Header = {.Size = USB_STRING_LEN(USB_MANUFACTURER_LEN), .Type = DTYPE_String},
- .UnicodeString = USB_MANUFACTURER
-#endif
-};
-
-/** Product descriptor string. This is a Unicode string containing the product's details in human readable form,
- * and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
- * Descriptor.
- */
-const USB_Descriptor_String_t PROGMEM ProductString =
-{
-#ifndef USB_PRODUCT
- .Header = {.Size = USB_STRING_LEN(23), .Type = DTYPE_String},
- .UnicodeString = L"LUFA USB-RS232 Adapter"
-#else
- .Header = {.Size = USB_STRING_LEN(USB_PRODUCT_LEN), .Type = DTYPE_String},
- .UnicodeString = USB_PRODUCT
-#endif
-};
-
-/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
- * documentation) by the application code so that the address and size of a requested descriptor can be given
- * to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
- * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
- * USB host.
- */
-uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
- const uint8_t wIndex,
- const void** const DescriptorAddress)
-{
- const uint8_t DescriptorType = (wValue >> 8);
- const uint8_t DescriptorNumber = (wValue & 0xFF);
-
- const void* Address = NULL;
- uint16_t Size = NO_DESCRIPTOR;
-
- switch (DescriptorType)
- {
- case DTYPE_Device:
- Address = &DeviceDescriptor;
- Size = sizeof(USB_Descriptor_Device_t);
- break;
- case DTYPE_Configuration:
- Address = &ConfigurationDescriptor;
- Size = sizeof(USB_Descriptor_Configuration_t);
- break;
- case DTYPE_String:
- switch (DescriptorNumber)
- {
- case 0x00:
- Address = &LanguageString;
- Size = pgm_read_byte(&LanguageString.Header.Size);
- break;
- case 0x01:
- Address = &ManufacturerString;
- Size = pgm_read_byte(&ManufacturerString.Header.Size);
- break;
- case 0x02:
- Address = &ProductString;
- Size = pgm_read_byte(&ProductString.Header.Size);
- break;
- }
-
- break;
- }
-
- *DescriptorAddress = Address;
- return Size;
-}
-
diff --git a/software/lib/lufa-descriptor-usbserial.h b/software/lib/lufa-descriptor-usbserial.h
deleted file mode 100644
index 97afd41..0000000
--- a/software/lib/lufa-descriptor-usbserial.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- LUFA Library
- Copyright (C) Dean Camera, 2012.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-/*
- Copyright 2012 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 Descriptors.c.
- */
-
-#ifndef _DESCRIPTORS_H_
-#define _DESCRIPTORS_H_
-
- /* Includes: */
- #include <avr/pgmspace.h>
-
- #include <LUFA/Drivers/USB/USB.h>
-
- /* Macros: */
- /** Endpoint number of the CDC device-to-host notification IN endpoint. */
- #define CDC_NOTIFICATION_EPNUM 2
-
- /** Endpoint number of the CDC device-to-host data IN endpoint. */
- #define CDC_TX_EPNUM 3
-
- /** Endpoint number of the CDC host-to-device data OUT endpoint. */
- #define CDC_RX_EPNUM 4
-
- /** Size in bytes of the CDC device-to-host notification IN endpoint. */
- #define CDC_NOTIFICATION_EPSIZE 8
-
- /** Size in bytes of the CDC data IN and OUT endpoints. */
- #define CDC_TXRX_EPSIZE 16
-
- /* Type Defines: */
- /** Type define for the device configuration descriptor structure. This must be defined in the
- * application code, as the configuration descriptor contains several sub-descriptors which
- * vary between devices, and which describe the device's usage to the host.
- */
- typedef struct
- {
- USB_Descriptor_Configuration_Header_t Config;
-
- // CDC Command Interface
- USB_Descriptor_Interface_t CDC_CCI_Interface;
- USB_CDC_Descriptor_FunctionalHeader_t CDC_Functional_Header;
- USB_CDC_Descriptor_FunctionalACM_t CDC_Functional_ACM;
- USB_CDC_Descriptor_FunctionalUnion_t CDC_Functional_Union;
- USB_Descriptor_Endpoint_t CDC_NotificationEndpoint;
-
- // CDC Data Interface
- USB_Descriptor_Interface_t CDC_DCI_Interface;
- USB_Descriptor_Endpoint_t CDC_DataOutEndpoint;
- USB_Descriptor_Endpoint_t CDC_DataInEndpoint;
- } USB_Descriptor_Configuration_t;
-
- /* Function Prototypes: */
- uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
- const uint8_t wIndex,
- const void** const DescriptorAddress)
- ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
-
-#endif
-
diff --git a/software/lib/onewire.c b/software/lib/onewire.c
deleted file mode 100644
index f28ef41..0000000
--- a/software/lib/onewire.c
+++ /dev/null
@@ -1,571 +0,0 @@
-/*
-Copyright (c) 2007, Jim Studt (original old version - many contributors since)
-refactored from C++ to C by Bernhard Tittelbach
-
-The latest version of this library may be found at:
- http://www.pjrc.com/teensy/td_libs_OneWire.html
-
-OneWire has been maintained by Paul Stoffregen (paul@pjrc.com) since
-January 2010. At the time, it was in need of many bug fixes, but had
-been abandoned the original author (Jim Studt). None of the known
-contributors were interested in maintaining OneWire. Paul typically
-works on OneWire every 6 to 12 months. Patches usually wait that
-long. If anyone is interested in more actively maintaining OneWire,
-please contact Paul.
-
-Version 2.2:
- Teensy 3.0 compatibility, Paul Stoffregen, paul@pjrc.com
- Arduino Due compatibility, http://arduino.cc/forum/index.php?topic=141030
- Fix DS18B20 example negative temperature
- Fix DS18B20 example's low res modes, Ken Butcher
- Improve reset timing, Mark Tillotson
- Add const qualifiers, Bertrik Sikken
- Add initial value input to crc16, Bertrik Sikken
- Add target_search() function, Scott Roberts
-
-Version 2.1:
- Arduino 1.0 compatibility, Paul Stoffregen
- Improve temperature example, Paul Stoffregen
- DS250x_PROM example, Guillermo Lovato
- PIC32 (chipKit) compatibility, Jason Dangel, dangel.jason AT gmail.com
- Improvements from Glenn Trewitt:
- - crc16() now works
- - check_crc16() does all of calculation/checking work.
- - Added read_bytes() and write_bytes(), to reduce tedious loops.
- - Added ds2408 example.
- Delete very old, out-of-date readme file (info is here)
-
-Version 2.0: Modifications by Paul Stoffregen, January 2010:
-http://www.pjrc.com/teensy/td_libs_OneWire.html
- Search fix from Robin James
- http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1238032295/27#27
- Use direct optimized I/O in all cases
- Disable interrupts during timing critical sections
- (this solves many random communication errors)
- Disable interrupts during read-modify-write I/O
- Reduce RAM consumption by eliminating unnecessary
- variables and trimming many to 8 bits
- Optimize both crc8 - table version moved to flash
-
-Modified to work with larger numbers of devices - avoids loop.
-Tested in Arduino 11 alpha with 12 sensors.
-26 Sept 2008 -- Robin James
-http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1238032295/27#27
-
-Updated to work with arduino-0008 and to include skip() as of
-2007/07/06. --RJL20
-
-Modified to calculate the 8-bit CRC directly, avoiding the need for
-the 256-byte lookup table to be loaded in RAM. Tested in arduino-0010
--- Tom Pollard, Jan 23, 2008
-
-Jim Studt's original library was modified by Josh Larios.
-
-Tom Pollard, pollard@alum.mit.edu, contributed around May 20, 2008
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Much of the code was inspired by Derek Yerger's code, though I don't
-think much of that remains. In any event that was..
- (copyleft) 2006 by Derek Yerger - Free to distribute freely.
-
-The CRC code was excerpted and inspired by the Dallas Semiconductor
-sample code bearing this copyright.
-//---------------------------------------------------------------------------
-// Copyright (C) 2000 Dallas Semiconductor Corporation, All Rights Reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-// IN NO EVENT SHALL DALLAS SEMICONDUCTOR BE LIABLE FOR ANY CLAIM, DAMAGES
-// OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-//
-// Except as contained in this notice, the name of Dallas Semiconductor
-// shall not be used except as stated in the Dallas Semiconductor
-// Branding Policy.
-//--------------------------------------------------------------------------
-*/
-
-#include "onewire.h"
-#include <util/delay.h>
-#include <avr/interrupt.h>
-
-
-IO_REG_TYPE owi_bitmask;
-volatile IO_REG_TYPE *owi_baseReg;
-#if ONEWIRE_SEARCH
-// global search state
-unsigned char ROM_NO[8];
-uint8_t owi_LastDiscrepancy;
-uint8_t owi_LastFamilyDiscrepancy;
-uint8_t owi_LastDeviceFlag;
-#endif
-
-
-void owi_init(uint8_t pin, volatile IO_REG_TYPE *pin_read_port)
-{
- owi_bitmask = _BV(pin);
- owi_baseReg = pin_read_port;
- DIRECT_MODE_INPUT(owi_baseReg, owi_bitmask);
-#if ONEWIRE_SEARCH
- owi_reset_search();
-#endif
-}
-
-
-// Perform the onewire reset function. We will wait up to 250uS for
-// the bus to come high, if it doesn't then it is broken or shorted
-// and we return a 0;
-//
-// Returns 1 if a device asserted a presence pulse, 0 otherwise.
-//
-uint8_t owi_reset(void)
-{
- IO_REG_TYPE mask = owi_bitmask;
- register volatile IO_REG_TYPE *reg IO_REG_ASM = owi_baseReg;
- uint8_t r;
- uint8_t retries = 125;
-
- cli();
- DIRECT_MODE_INPUT(reg, mask);
- sei();
- // wait until the wire is high... just in case
- do {
- if (--retries == 0) return 0;
- _delay_us(2);
- } while ( !DIRECT_READ(reg, mask));
-
- cli();
- DIRECT_WRITE_LOW(reg, mask);
- DIRECT_MODE_OUTPUT(reg, mask); // drive output low
- sei();
- _delay_us(480);
- cli();
- DIRECT_MODE_INPUT(reg, mask); // allow it to float
- _delay_us(70);
- r = !DIRECT_READ(reg, mask);
- sei();
- _delay_us(410);
- return r;
-}
-
-//
-// Write a bit. Port and bit is used to cut lookup time and provide
-// more certain timing.
-//
-void owi_write_bit(uint8_t v)
-{
- IO_REG_TYPE mask=owi_bitmask;
- register volatile IO_REG_TYPE *reg IO_REG_ASM = owi_baseReg;
-
- if (v & 1) {
- cli();
- DIRECT_WRITE_LOW(reg, mask);
- DIRECT_MODE_OUTPUT(reg, mask); // drive output low
- _delay_us(10);
- DIRECT_WRITE_HIGH(reg, mask); // drive output high
- sei();
- _delay_us(55);
- } else {
- cli();
- DIRECT_WRITE_LOW(reg, mask);
- DIRECT_MODE_OUTPUT(reg, mask); // drive output low
- _delay_us(65);
- DIRECT_WRITE_HIGH(reg, mask); // drive output high
- sei();
- _delay_us(5);
- }
-}
-
-//
-// Read a bit. Port and bit is used to cut lookup time and provide
-// more certain timing.
-//
-uint8_t owi_read_bit(void)
-{
- IO_REG_TYPE mask=owi_bitmask;
- register volatile IO_REG_TYPE *reg IO_REG_ASM = owi_baseReg;
- uint8_t r;
-
- cli();
- DIRECT_MODE_OUTPUT(reg, mask);
- DIRECT_WRITE_LOW(reg, mask);
- _delay_us(3);
- DIRECT_MODE_INPUT(reg, mask); // let pin float, pull up will raise
- _delay_us(10);
- r = DIRECT_READ(reg, mask);
- sei();
- _delay_us(53);
- return r;
-}
-
-//
-// Write a byte. The writing code uses the active drivers to raise the
-// pin high, if you need power after the write (e.g. DS18S20 in
-// parasite power mode) then set 'power' to 1, otherwise the pin will
-// go tri-state at the end of the write to avoid heating in a short or
-// other mishap.
-//
-void owi_write(uint8_t v, uint8_t power /* = 0 */) {
- uint8_t bitMask;
-
- for (bitMask = 0x01; bitMask; bitMask <<= 1) {
- owi_write_bit( (bitMask & v)?1:0);
- }
- if ( !power) {
- cli();
- DIRECT_MODE_INPUT(owi_baseReg, owi_bitmask);
- DIRECT_WRITE_LOW(owi_baseReg, owi_bitmask);
- sei();
- }
-}
-
-void owi_write_bytes(const uint8_t *buf, uint16_t count, bool power /* = 0 */) {
- for (uint16_t i = 0 ; i < count ; i++)
- owi_write(buf[i],0);
- if (!power) {
- cli();
- DIRECT_MODE_INPUT(owi_baseReg, owi_bitmask);
- DIRECT_WRITE_LOW(owi_baseReg, owi_bitmask);
- sei();
- }
-}
-
-//
-// Read a byte
-//
-uint8_t owi_read() {
- uint8_t bitMask;
- uint8_t r = 0;
-
- for (bitMask = 0x01; bitMask; bitMask <<= 1) {
- if ( owi_read_bit()) r |= bitMask;
- }
- return r;
-}
-
-void owi_read_bytes(uint8_t *buf, uint16_t count) {
- for (uint16_t i = 0 ; i < count ; i++)
- buf[i] = owi_read();
-}
-
-//
-// Do a ROM select
-//
-void owi_select(const uint8_t rom[8])
-{
- uint8_t i;
-
- owi_write(0x55,0); // Choose ROM
-
- for (i = 0; i < 8; i++) owi_write(rom[i],0);
-}
-
-//
-// Do a ROM skip
-//
-void owi_skip()
-{
- owi_write(0xCC,0); // Skip ROM
-}
-
-void owi_depower()
-{
- cli();
- DIRECT_MODE_INPUT(owi_baseReg, owi_bitmask);
- sei();
-}
-
-#if ONEWIRE_SEARCH
-
-//
-// You need to use this function to start a search again from the beginning.
-// You do not need to do it for the first search, though you could.
-//
-void owi_reset_search()
-{
- // reset the search state
- owi_LastDiscrepancy = 0;
- owi_LastDeviceFlag = FALSE;
- owi_LastFamilyDiscrepancy = 0;
- for(int i = 7; ; i--) {
- ROM_NO[i] = 0;
- if ( i == 0) break;
- }
-}
-
-// Setup the search to find the device type 'family_code' on the next call
-// to search(*newAddr) if it is present.
-//
-void owi_target_search(uint8_t family_code)
-{
- // set the search state to find SearchFamily type devices
- ROM_NO[0] = family_code;
- for (uint8_t i = 1; i < 8; i++)
- ROM_NO[i] = 0;
- owi_LastDiscrepancy = 64;
- owi_LastFamilyDiscrepancy = 0;
- owi_LastDeviceFlag = FALSE;
-}
-
-//
-// Perform a search. If this function returns a '1' then it has
-// enumerated the next device and you may retrieve the ROM from the
-// owi_address variable. If there are no devices, no further
-// devices, or something horrible happens in the middle of the
-// enumeration then a 0 is returned. If a new device is found then
-// its address is copied to newAddr. Use owi_reset_search() to
-// start over.
-//
-// --- Replaced by the one from the Dallas Semiconductor web site ---
-//--------------------------------------------------------------------------
-// Perform the 1-Wire Search Algorithm on the 1-Wire bus using the existing
-// search state.
-// Return TRUE : device found, ROM number in ROM_NO buffer
-// FALSE : device not found, end of search
-//
-uint8_t owi_search(uint8_t *newAddr)
-{
- uint8_t id_bit_number;
- uint8_t last_zero, rom_byte_number, search_result;
- uint8_t id_bit, cmp_id_bit;
-
- unsigned char rom_byte_mask, search_direction;
-
- // initialize for search
- id_bit_number = 1;
- last_zero = 0;
- rom_byte_number = 0;
- rom_byte_mask = 1;
- search_result = 0;
-
- // if the last call was not the last one
- if (!owi_LastDeviceFlag)
- {
- // 1-Wire reset
- if (!owi_reset())
- {
- // reset the search
- owi_LastDiscrepancy = 0;
- owi_LastDeviceFlag = FALSE;
- owi_LastFamilyDiscrepancy = 0;
- return FALSE;
- }
-
- // issue the search command
- owi_write(0xF0,0);
-
- // loop to do the search
- do
- {
- // read a bit and its complement
- id_bit = owi_read_bit();
- cmp_id_bit = owi_read_bit();
-
- // check for no devices on 1-wire
- if ((id_bit == 1) && (cmp_id_bit == 1))
- break;
- else
- {
- // all devices coupled have 0 or 1
- if (id_bit != cmp_id_bit)
- search_direction = id_bit; // bit write value for search
- else
- {
- // if this discrepancy if before the Last Discrepancy
- // on a previous next then pick the same as last time
- if (id_bit_number < owi_LastDiscrepancy)
- search_direction = ((ROM_NO[rom_byte_number] & rom_byte_mask) > 0);
- else
- // if equal to last pick 1, if not then pick 0
- search_direction = (id_bit_number == owi_LastDiscrepancy);
-
- // if 0 was picked then record its position in LastZero
- if (search_direction == 0)
- {
- last_zero = id_bit_number;
-
- // check for Last discrepancy in family
- if (last_zero < 9)
- owi_LastFamilyDiscrepancy = last_zero;
- }
- }
-
- // set or clear the bit in the ROM byte rom_byte_number
- // with mask rom_byte_mask
- if (search_direction == 1)
- ROM_NO[rom_byte_number] |= rom_byte_mask;
- else
- ROM_NO[rom_byte_number] &= ~rom_byte_mask;
-
- // serial number search direction write bit
- owi_write_bit(search_direction);
-
- // increment the byte counter id_bit_number
- // and shift the mask rom_byte_mask
- id_bit_number++;
- rom_byte_mask <<= 1;
-
- // if the mask is 0 then go to new SerialNum byte rom_byte_number and reset mask
- if (rom_byte_mask == 0)
- {
- rom_byte_number++;
- rom_byte_mask = 1;
- }
- }
- }
- while(rom_byte_number < 8); // loop until through all ROM bytes 0-7
-
- // if the search was successful then
- if (!(id_bit_number < 65))
- {
- // search successful so set owi_LastDiscrepancy,owi_LastDeviceFlag,search_result
- owi_LastDiscrepancy = last_zero;
-
- // check for last device
- if (owi_LastDiscrepancy == 0)
- owi_LastDeviceFlag = TRUE;
-
- search_result = TRUE;
- }
- }
-
- // if no device found then reset counters so next 'search' will be like a first
- if (!search_result || !ROM_NO[0])
- {
- owi_LastDiscrepancy = 0;
- owi_LastDeviceFlag = FALSE;
- owi_LastFamilyDiscrepancy = 0;
- search_result = FALSE;
- }
- for (int i = 0; i < 8; i++) newAddr[i] = ROM_NO[i];
- return search_result;
- }
-
-#endif
-
-#if ONEWIRE_CRC
-// The 1-Wire CRC scheme is described in Maxim Application Note 27:
-// "Understanding and Using Cyclic Redundancy Checks with Maxim iButton Products"
-//
-
-#if ONEWIRE_CRC8_TABLE
-// This table comes from Dallas sample code where it is freely reusable,
-// though Copyright (C) 2000 Dallas Semiconductor Corporation
-const uint8_t PROGMEM dscrc_table[] = {
- 0, 94,188,226, 97, 63,221,131,194,156,126, 32,163,253, 31, 65,
- 157,195, 33,127,252,162, 64, 30, 95, 1,227,189, 62, 96,130,220,
- 35,125,159,193, 66, 28,254,160,225,191, 93, 3,128,222, 60, 98,
- 190,224, 2, 92,223,129, 99, 61,124, 34,192,158, 29, 67,161,255,
- 70, 24,250,164, 39,121,155,197,132,218, 56,102,229,187, 89, 7,
- 219,133,103, 57,186,228, 6, 88, 25, 71,165,251,120, 38,196,154,
- 101, 59,217,135, 4, 90,184,230,167,249, 27, 69,198,152,122, 36,
- 248,166, 68, 26,153,199, 37,123, 58,100,134,216, 91, 5,231,185,
- 140,210, 48,110,237,179, 81, 15, 78, 16,242,172, 47,113,147,205,
- 17, 79,173,243,112, 46,204,146,211,141,111, 49,178,236, 14, 80,
- 175,241, 19, 77,206,144,114, 44,109, 51,209,143, 12, 82,176,238,
- 50,108,142,208, 83, 13,239,177,240,174, 76, 18,145,207, 45,115,
- 202,148,118, 40,171,245, 23, 73, 8, 86,180,234,105, 55,213,139,
- 87, 9,235,181, 54,104,138,212,149,203, 41,119,244,170, 72, 22,
- 233,183, 85, 11,136,214, 52,106, 43,117,151,201, 74, 20,246,168,
- 116, 42,200,150, 21, 75,169,247,182,232, 10, 84,215,137,107, 53};
-
-//
-// Compute a Dallas Semiconductor 8 bit CRC. These show up in the ROM
-// and the registers. (note: this might better be done without to
-// table, it would probably be smaller and certainly fast enough
-// compared to all those delayMicrosecond() calls. But I got
-// confused, so I use this table from the examples.)
-//
-uint8_t owi_crc8(const uint8_t *addr, uint8_t len)
-{
- uint8_t crc = 0;
-
- while (len--) {
- crc = pgm_read_byte(dscrc_table + (crc ^ *addr++));
- }
- return crc;
-}
-#else
-//
-// Compute a Dallas Semiconductor 8 bit CRC directly.
-// this is much slower, but much smaller, than the lookup table.
-//
-uint8_t owi_crc8(const uint8_t *addr, uint8_t len)
-{
- uint8_t crc = 0;
-
- while (len--) {
- uint8_t inbyte = *addr++;
- for (uint8_t i = 8; i; i--) {
- uint8_t mix = (crc ^ inbyte) & 0x01;
- crc >>= 1;
- if (mix) crc ^= 0x8C;
- inbyte >>= 1;
- }
- }
- return crc;
-}
-#endif
-
-#if ONEWIRE_CRC16
-bool owi_check_crc16(const uint8_t* input, uint16_t len, const uint8_t* inverted_crc, uint16_t crc)
-{
- crc = ~owi_crc16(input, len, crc);
- return (crc & 0xFF) == inverted_crc[0] && (crc >> 8) == inverted_crc[1];
-}
-
-uint16_t owi_crc16(const uint8_t* input, uint16_t len, uint16_t crc)
-{
- static const uint8_t oddparity[16] =
- { 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0 };
-
- for (uint16_t i = 0 ; i < len ; i++) {
- // Even though we're just copying a byte from the input,
- // we'll be doing 16-bit computation with it.
- uint16_t cdata = input[i];
- cdata = (cdata ^ crc) & 0xff;
- crc >>= 8;
-
- if (oddparity[cdata & 0x0F] ^ oddparity[cdata >> 4])
- crc ^= 0xC001;
-
- cdata <<= 6;
- crc ^= cdata;
- cdata <<= 1;
- crc ^= cdata;
- }
- return crc;
-}
-#endif
-
-#endif
diff --git a/software/lib/onewire.h b/software/lib/onewire.h
deleted file mode 100644
index 1410fde..0000000
--- a/software/lib/onewire.h
+++ /dev/null
@@ -1,206 +0,0 @@
-#ifndef OneWire_h
-#define OneWire_h
-
-#include <inttypes.h>
-#include <stdbool.h>
-#include <avr/pgmspace.h>
-
-// You can exclude certain features from OneWire. In theory, this
-// might save some space. In practice, the compiler automatically
-// removes unused code (technically, the linker, using -fdata-sections
-// and -ffunction-sections when compiling, and Wl,--gc-sections
-// when linking), so most of these will not result in any code size
-// reduction. Well, unless you try to use the missing features
-// and redesign your program to not need them! ONEWIRE_CRC8_TABLE
-// is the exception, because it selects a fast but large algorithm
-// or a small but slow algorithm.
-
-// you can exclude onewire_search by defining that to 0
-#ifndef ONEWIRE_SEARCH
-#define ONEWIRE_SEARCH 1
-#endif
-
-// You can exclude CRC checks altogether by defining this to 0
-#ifndef ONEWIRE_CRC
-#define ONEWIRE_CRC 1
-#endif
-
-// Select the table-lookup method of computing the 8-bit CRC
-// by setting this to 1. The lookup table enlarges code size by
-// about 250 bytes. It does NOT consume RAM (but did in very
-// old versions of OneWire). If you disable this, a slower
-// but very compact algorithm is used.
-#ifndef ONEWIRE_CRC8_TABLE
-#define ONEWIRE_CRC8_TABLE 1
-#endif
-
-// You can allow 16-bit CRC checks by defining this to 1
-// (Note that ONEWIRE_CRC must also be 1.)
-#ifndef ONEWIRE_CRC16
-#define ONEWIRE_CRC16 1
-#endif
-
-#define FALSE 0
-#define TRUE 1
-
-// Platform specific I/O definitions
-
-#if defined(__AVR__)
-#define PIN_TO_BASEREG(pin) (portInputRegister(digitalPinToPort(pin)))
-#define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin))
-#define IO_REG_TYPE uint8_t
-#define IO_REG_ASM __asm__("r30")
-#define DIRECT_READ(base, mask) (((*(base)) & (mask)) ? 1 : 0)
-#define DIRECT_MODE_INPUT(base, mask) ((*((base)+1)) &= ~(mask))
-#define DIRECT_MODE_OUTPUT(base, mask) ((*((base)+1)) |= (mask))
-#define DIRECT_WRITE_LOW(base, mask) ((*((base)+2)) &= ~(mask))
-#define DIRECT_WRITE_HIGH(base, mask) ((*((base)+2)) |= (mask))
-
-#elif defined(__MK20DX128__)
-#define PIN_TO_BASEREG(pin) (portOutputRegister(pin))
-#define PIN_TO_BITMASK(pin) (1)
-#define IO_REG_TYPE uint8_t
-#define IO_REG_ASM
-#define DIRECT_READ(base, mask) (*((base)+512))
-#define DIRECT_MODE_INPUT(base, mask) (*((base)+640) = 0)
-#define DIRECT_MODE_OUTPUT(base, mask) (*((base)+640) = 1)
-#define DIRECT_WRITE_LOW(base, mask) (*((base)+256) = 1)
-#define DIRECT_WRITE_HIGH(base, mask) (*((base)+128) = 1)
-
-#elif defined(__SAM3X8E__)
-// Arduino 1.5.1 may have a bug in delayMicroseconds() on Arduino Due.
-// http://arduino.cc/forum/index.php/topic,141030.msg1076268.html#msg1076268
-// If you have trouble with OneWire on Arduino Due, please check the
-// status of delayMicroseconds() before reporting a bug in OneWire!
-#define PIN_TO_BASEREG(pin) (&(digitalPinToPort(pin)->PIO_PER))
-#define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin))
-#define IO_REG_TYPE uint32_t
-#define IO_REG_ASM
-#define DIRECT_READ(base, mask) (((*((base)+15)) & (mask)) ? 1 : 0)
-#define DIRECT_MODE_INPUT(base, mask) ((*((base)+5)) = (mask))
-#define DIRECT_MODE_OUTPUT(base, mask) ((*((base)+4)) = (mask))
-#define DIRECT_WRITE_LOW(base, mask) ((*((base)+13)) = (mask))
-#define DIRECT_WRITE_HIGH(base, mask) ((*((base)+12)) = (mask))
-#ifndef PROGMEM
-#define PROGMEM
-#endif
-#ifndef pgm_read_byte
-#define pgm_read_byte(addr) (*(const uint8_t *)(addr))
-#endif
-
-#elif defined(__PIC32MX__)
-#define PIN_TO_BASEREG(pin) (portModeRegister(digitalPinToPort(pin)))
-#define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin))
-#define IO_REG_TYPE uint32_t
-#define IO_REG_ASM
-#define DIRECT_READ(base, mask) (((*(base+4)) & (mask)) ? 1 : 0) //PORTX + 0x10
-#define DIRECT_MODE_INPUT(base, mask) ((*(base+2)) = (mask)) //TRISXSET + 0x08
-#define DIRECT_MODE_OUTPUT(base, mask) ((*(base+1)) = (mask)) //TRISXCLR + 0x04
-#define DIRECT_WRITE_LOW(base, mask) ((*(base+8+1)) = (mask)) //LATXCLR + 0x24
-#define DIRECT_WRITE_HIGH(base, mask) ((*(base+8+2)) = (mask)) //LATXSET + 0x28
-
-#else
-#error "Please define I/O register types here"
-#endif
-
-#ifndef _BV
-#define _BV(bit) (1 << (bit))
-#endif
-
-void owi_init(uint8_t pin, volatile IO_REG_TYPE *pin_read_port);
-
-uint8_t owi_reset(void);
-void owi_select(const uint8_t rom[8]);
-
-// Issue a 1-Wire rom skip command, to address all on bus.
-void owi_skip(void);
-
-// Write a byte. If 'power' is one then the wire is held high at
-// the end for parasitically powered devices. You are responsible
-// for eventually depowering it by calling depower() or doing
-// another read or write.
-void owi_write(uint8_t v, uint8_t power);
-
-void owi_write_bytes(const uint8_t *buf, uint16_t count, bool power);
-
-// Read a byte.
-uint8_t owi_read(void);
-
-void owi_read_bytes(uint8_t *buf, uint16_t count);
-
-// Write a bit. The bus is always left powered at the end, see
-// note in write() about that.
-void owi_write_bit(uint8_t v);
-
-// Read a bit.
-uint8_t owi_read_bit(void);
-
-// Stop forcing power onto the bus. You only need to do this if
-// you used the 'power' flag to write() or used a write_bit() call
-// and aren't about to do another read or write. You would rather
-// not leave this powered if you don't have to, just in case
-// someone shorts your bus.
-void owi_depower(void);
-
-#if ONEWIRE_SEARCH
-// Clear the search state so that if will start from the beginning again.
-void owi_reset_search(void);
-
-// Setup the search to find the device type 'family_code' on the next call
-// to search(*newAddr) if it is present.
-void owi_target_search(uint8_t family_code);
-
-// Look for the next device. Returns 1 if a new address has been
-// returned. A zero might mean that the bus is shorted, there are
-// no devices, or you have already retrieved all of them. It
-// might be a good idea to check the CRC to make sure you didn't
-// get garbage. The order is deterministic. You will always get
-// the same devices in the same order.
-uint8_t owi_search(uint8_t *newAddr);
-#endif
-
-#if ONEWIRE_CRC
-// Compute a Dallas Semiconductor 8 bit CRC, these are used in the
-// ROM and scratchpad registers.
-uint8_t owi_crc8(const uint8_t *addr, uint8_t len);
-
-#if ONEWIRE_CRC16
-// Compute the 1-Wire CRC16 and compare it against the received CRC.
-// Example usage (reading a DS2408):
-// // Put everything in a buffer so we can compute the CRC easily.
-// uint8_t buf[13];
-// buf[0] = 0xF0; // Read PIO Registers
-// buf[1] = 0x88; // LSB address
-// buf[2] = 0x00; // MSB address
-// WriteBytes(net, buf, 3); // Write 3 cmd bytes
-// ReadBytes(net, buf+3, 10); // Read 6 data bytes, 2 0xFF, 2 CRC16
-// if (!CheckCRC16(buf, 11, &buf[11])) {
-// // Handle error.
-// }
-//
-// @param input - Array of bytes to checksum.
-// @param len - How many bytes to use.
-// @param inverted_crc - The two CRC16 bytes in the received data.
-// This should just point into the received data,
-// *not* at a 16-bit integer.
-// @param crc - The crc starting value (optional)
-// @return True, iff the CRC matches.
-bool owi_check_crc16(const uint8_t* input, uint16_t len, const uint8_t* inverted_crc, uint16_t crc);
-
-// Compute a Dallas Semiconductor 16 bit CRC. This is required to check
-// the integrity of data received from many 1-Wire devices. Note that the
-// CRC computed here is *not* what you'll get from the 1-Wire network,
-// for two reasons:
-// 1) The CRC is transmitted bitwise inverted.
-// 2) Depending on the endian-ness of your processor, the binary
-// representation of the two-byte return value may have a different
-// byte order than the two bytes you get from 1-Wire.
-// @param input - Array of bytes to checksum.
-// @param len - How many bytes to use.
-// @param crc - The crc starting value (optional)
-// @return The CRC16, as defined by Dallas Semiconductor.
-uint16_t owi_crc16(const uint8_t* input, uint16_t len, uint16_t crc);
-#endif
-#endif
-
-#endif
diff --git a/software/lib/serialio.c b/software/lib/serialio.c
deleted file mode 100644
index fde2935..0000000
--- a/software/lib/serialio.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * spreadspace avr utils
- *
- *
- * Copyright (C) 2014 Christian Pointner <equinox@spreadspace.org>
- *
- * This file is part of spreadspace avr utils.
- *
- * spreadspace avr utils 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 3 of the License, or
- * any later version.
- *
- * spreadspace avr utils 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 spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <stdio.h>
-
-#include "serialio.h"
-#include "LUFA/Drivers/Peripheral/Serial.h"
-
-static FILE serial_stream;
-
-void serialio_init(const uint32_t baudrate, const uint8_t doublespeed)
-{
- Serial_Init(baudrate, doublespeed);
- Serial_CreateStream(&serial_stream);
- stdin = stdout = stderr = &serial_stream;
-}
-
-void serialio_task(void)
-{
-}
-
-int16_t serialio_bytes_received(void)
-{
- return (int16_t)Serial_IsCharReceived();
-}
diff --git a/software/lib/serialio.h b/software/lib/serialio.h
deleted file mode 100644
index 3b0781e..0000000
--- a/software/lib/serialio.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * spreadspace avr utils
- *
- *
- * Copyright (C) 2014 Christian Pointner <equinox@spreadspace.org>
- *
- * This file is part of spreadspace avr utils.
- *
- * spreadspace avr utils 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 3 of the License, or
- * any later version.
- *
- * spreadspace avr utils 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 spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SPREADAVR_serialio_h_INCLUDED
-#define SPREADAVR_serialio_h_INCLUDED
-
-#include <stdint.h>
-
-void serialio_init(const uint32_t baudrate, const uint8_t doublespeed);
-void serialio_task(void);
-int16_t serialio_bytes_received(void);
-
-#endif
diff --git a/software/lib/usbio.c b/software/lib/usbio.c
deleted file mode 100644
index fbdd5a3..0000000
--- a/software/lib/usbio.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * spreadspace avr utils
- *
- *
- * Copyright (C) 2013-2014 Christian Pointner <equinox@spreadspace.org>
- * Othmar Gsenger <otti@wirdorange.org>
- *
- * This file is part of spreadspace avr utils.
- *
- * spreadspace avr utils 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 3 of the License, or
- * any later version.
- *
- * spreadspace avr utils 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 spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <stdio.h>
-
-#include "usbio.h"
-
-#include <LUFA/Drivers/USB/USB.h>
-#include "lufa-descriptor-usbserial.h"
-#include "LUFA/Drivers/Peripheral/Serial.h"
-
-/*
- LUFA Library
- Copyright (C) Dean Camera, 2012.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-USB_ClassInfo_CDC_Device_t VirtualSerial_CDC_Interface =
- {
- .Config =
- {
- .ControlInterfaceNumber = 0,
-
- .DataINEndpointNumber = CDC_TX_EPNUM,
- .DataINEndpointSize = CDC_TXRX_EPSIZE,
- .DataINEndpointDoubleBank = false,
-
- .DataOUTEndpointNumber = CDC_RX_EPNUM,
- .DataOUTEndpointSize = CDC_TXRX_EPSIZE,
- .DataOUTEndpointDoubleBank = false,
-
- .NotificationEndpointNumber = CDC_NOTIFICATION_EPNUM,
- .NotificationEndpointSize = CDC_NOTIFICATION_EPSIZE,
- .NotificationEndpointDoubleBank = false,
- },
- };
-
-void EVENT_USB_Device_ConfigurationChanged(void)
-{
- CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface);
-}
-
-void EVENT_USB_Device_ControlRequest(void)
-{
- CDC_Device_ProcessControlRequest(&VirtualSerial_CDC_Interface);
-}
-/* end LUFA CDC-ACM specific definitions*/
-
-static int dummy_putchar(char DataByte, FILE *Stream) { return 0; }
-static int dummy_getchar(FILE *Stream) { return 0; }
-static FILE dummy_stream = FDEV_SETUP_STREAM(dummy_putchar, dummy_getchar, _FDEV_SETUP_RW);
-static FILE usb_stream;
-
-void usbio_init(void)
-{
- stdin = stdout = stderr = &dummy_stream;
-
- USB_Init();
- CDC_Device_CreateStream(&VirtualSerial_CDC_Interface,&usb_stream);
-}
-
-void usbio_task(void)
-{
-#if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
- if(USB_DeviceState == DEVICE_STATE_Unattached && USB_VBUS_GetStatus()) {
- USB_Disable();
- USB_Init();
- }
-#endif
-
- CDC_Device_USBTask(&VirtualSerial_CDC_Interface);
- USB_USBTask();
-}
-
-int16_t usbio_bytes_received(void)
-{
- if(stdin == &usb_stream)
- return CDC_Device_BytesReceived(&VirtualSerial_CDC_Interface);
- else
- return 0;
-}
-
-void EVENT_CDC_Device_ControLineStateChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
-{
- if(CDCInterfaceInfo->State.ControlLineStates.HostToDevice & CDC_CONTROL_LINE_OUT_DTR)
- stdin = stdout = stderr = &usb_stream;
- else
- stdin = stdout = stderr = &dummy_stream;
-}
-
-void EVENT_USB_Device_Disconnect(void)
-{
- stdin = stdout = stderr = &dummy_stream;
-}
diff --git a/software/lib/usbio.h b/software/lib/usbio.h
deleted file mode 100644
index 1237f37..0000000
--- a/software/lib/usbio.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * spreadspace avr utils
- *
- *
- * Copyright (C) 2013-2014 Christian Pointner <equinox@spreadspace.org>
- * Othmar Gsenger <otti@wirdorange.org>
- *
- * This file is part of spreadspace avr utils.
- *
- * spreadspace avr utils 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 3 of the License, or
- * any later version.
- *
- * spreadspace avr utils 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 spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SPREADAVR_usbio_h_INCLUDED
-#define SPREADAVR_usbio_h_INCLUDED
-
-#include <stdint.h>
-
-void usbio_init(void);
-void usbio_task(void);
-int16_t usbio_bytes_received(void);
-
-#endif
diff --git a/software/lib/util.c b/software/lib/util.c
deleted file mode 100644
index 7f15bfe..0000000
--- a/software/lib/util.c
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * spreadspace avr utils
- *
- *
- * Copyright (C) 2013-2014 Christian Pointner <equinox@spreadspace.org>
- *
- * This file is part of spreadspace avr utils.
- *
- * spreadspace avr utils 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 3 of the License, or
- * any later version.
- *
- * spreadspace avr utils 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 spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <avr/interrupt.h>
-#include <avr/io.h>
-#include <util/delay.h>
-
-#include "util.h"
-
-#if defined(CLKPR)
-#define CPU_PRESCALE(n) do { CLKPR = 0x80; CLKPR = (n); } while(0)
-#else
-#define CPU_PRESCALE(n)
-#endif
-
-void cpu_init(void)
-{
- CPU_PRESCALE(0);
-}
-
-#if defined JTD
-void jtag_disable(void)
-{
- uint8_t tempreg;
- __asm __volatile("in %[tempreg], %[mcucr]" "\n\t"
- "ori %[tempreg], %[jtd]" "\n\t"
- "out %[mcucr], %[tempreg]" "\n\t"
- "out %[mcucr], %[tempreg]"
- : [tempreg] "=d" (tempreg)
- : [mcucr] "I" (_SFR_IO_ADDR(MCUCR)), [jtd] "M" (_BV(JTD)));
-}
-#endif
-
-#if defined(__BOARD_teensy1__)
- #define BOOTLOADER_VEC 0x3E00
-#elif defined(__BOARD_teensy2__)
- #define BOOTLOADER_VEC 0x7E00
-#elif defined(__BOARD_teensy1pp__)
- #define BOOTLOADER_VEC 0xFC00
-#elif defined(__BOARD_teensy2pp__)
- #define BOOTLOADER_VEC 0x1FC00
-#elif defined(__BOARD_minimus__)
- #define BOOTLOADER_VEC 0x3000
-#elif defined(__BOARD_minimus32__)
- #define BOOTLOADER_VEC 0x3800
-#elif defined(__BOARD_hhd70dongle__) || defined(__BOARD_rda1846dongle__) || defined(__BOARD_culV3__)
- #define BOOTLOADER_VEC 0x3800
-#elif defined(__BOARD_slowpandongle1__) || defined(__BOARD_slowpandongle2__) || defined(__BOARD_teenstep__)
- #define BOOTLOADER_VEC 0x3800
-#elif defined(__BOARD_rhmixxx__)
- #define BOOTLOADER_VEC 0xF000
-#else
- #define BOOTLOADER_VEC 0x0000
-#endif
-
-typedef void (*f_ptr_type)(void);
-f_ptr_type start_bootloader = (f_ptr_type)BOOTLOADER_VEC;
-
-void reset2bootloader(void)
-{
-#if defined(__BOARD_teensy1__) || defined(__BOARD_teensy1pp__) || defined(__BOARD_teensy2__) || defined(__BOARD_teensy2pp__) || \
- defined(__BOARD_hhd70dongle__) || defined(__BOARD_rda1846dongle__) || defined(__BOARD_culV3__) || \
- defined(__BOARD_slowpandongle1__) || defined(__BOARD_slowpandongle2__) || defined(__BOARD_teenstep__) || \
- defined(__BOARD_rhmixxx__) || defined(__BOARD_minimus__) || defined(__BOARD_minimus32__)
- cli();
- // disable watchdog, if enabled
- // disable all peripherals
- UDCON = 1;
- USBCON = (1<<FRZCLK); // disable USB
- UCSR1B = 0;
- _delay_ms(5);
- #if defined(__BOARD_teensy1__)
- EIMSK = 0; PCICR = 0; SPCR = 0; ACSR = 0; EECR = 0;
- TIMSK0 = 0; TIMSK1 = 0; UCSR1B = 0;
- DDRB = 0; DDRC = 0; DDRD = 0;
- PORTB = 0; PORTC = 0; PORTD = 0;
- #elif defined(__BOARD_teensy2__)
- EIMSK = 0; PCICR = 0; SPCR = 0; ACSR = 0; EECR = 0; ADCSRA = 0;
- TIMSK0 = 0; TIMSK1 = 0; TIMSK3 = 0; TIMSK4 = 0; UCSR1B = 0; TWCR = 0;
- DDRB = 0; DDRC = 0; DDRD = 0; DDRE = 0; DDRF = 0; TWCR = 0;
- PORTB = 0; PORTC = 0; PORTD = 0; PORTE = 0; PORTF = 0;
- #elif defined(__BOARD_teensy1pp__)
- EIMSK = 0; PCICR = 0; SPCR = 0; ACSR = 0; EECR = 0; ADCSRA = 0;
- TIMSK0 = 0; TIMSK1 = 0; TIMSK2 = 0; TIMSK3 = 0; UCSR1B = 0; TWCR = 0;
- DDRA = 0; DDRB = 0; DDRC = 0; DDRD = 0; DDRE = 0; DDRF = 0;
- PORTA = 0; PORTB = 0; PORTC = 0; PORTD = 0; PORTE = 0; PORTF = 0;
- #elif defined(__BOARD_teensy2pp__)
- EIMSK = 0; PCICR = 0; SPCR = 0; ACSR = 0; EECR = 0; ADCSRA = 0;
- TIMSK0 = 0; TIMSK1 = 0; TIMSK2 = 0; TIMSK3 = 0; UCSR1B = 0; TWCR = 0;
- DDRA = 0; DDRB = 0; DDRC = 0; DDRD = 0; DDRE = 0; DDRF = 0;
- PORTA = 0; PORTB = 0; PORTC = 0; PORTD = 0; PORTE = 0; PORTF = 0;
- #elif defined(__BOARD_minimus__) || defined(__BOARD_slowpandongle1__)
- EIMSK = 0; PCICR = 0; SPCR = 0; ACSR = 0; EECR = 0;
- TIMSK0 = 0; TIMSK1 = 0; UCSR1B = 0;
- DDRB = 0; DDRC = 0; DDRD = 0;
- PORTB = 0; PORTC = 0; PORTD = 0;
- #elif defined(__BOARD_minimus32__)
- EIMSK = 0; PCICR = 0; SPCR = 0; ACSR = 0; EECR = 0;
- TIMSK0 = 0; TIMSK1 = 0; UCSR1B = 0;
- DDRB = 0; DDRC = 0; DDRD = 0;
- PORTB = 0; PORTC = 0; PORTD = 0;
- #elif defined(__BOARD_hhd70dongle2__) || defined(__BOARD_hhd70dongle__) || defined(__BOARD_rda1846dongle__) || defined(__BOARD_culV3__) || \
- defined(__BOARD_slowpandongle2__) || defined(__BOARD_teenstep__)
- EIMSK = 0; PCICR = 0; SPCR = 0; ACSR = 0; EECR = 0; ADCSRA = 0;
- TIMSK0 = 0; TIMSK1 = 0; TIMSK3 = 0; TIMSK4 = 0; UCSR1B = 0; TWCR = 0;
- DDRB = 0; DDRC = 0; DDRD = 0; DDRE = 0; DDRF = 0; TWCR = 0;
- PORTB = 0; PORTC = 0; PORTD = 0; PORTE = 0; PORTF = 0;
- #elif defined(__BOARD_rhmixxx__)
- EIMSK = 0; PCICR = 0; SPCR = 0; ACSR = 0; EECR = 0; ADCSRA = 0;
- TIMSK0 = 0; TIMSK1 = 0; TIMSK2 = 0; TIMSK3 = 0; UCSR1B = 0; TWCR = 0;
- DDRA = 0; DDRB = 0; DDRC = 0; DDRD = 0; DDRE = 0; DDRF = 0;
- PORTA = 0; PORTB = 0; PORTC = 0; PORTD = 0; PORTE = 0; PORTF = 0;
- #endif
- start_bootloader();
-#endif
-}
diff --git a/software/lib/util.h b/software/lib/util.h
deleted file mode 100644
index 51c946d..0000000
--- a/software/lib/util.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * spreadspace avr utils
- *
- *
- * Copyright (C) 2013-2014 Christian Pointner <equinox@spreadspace.org>
- *
- * This file is part of spreadspace avr utils.
- *
- * spreadspace avr utils 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 3 of the License, or
- * any later version.
- *
- * spreadspace avr utils 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 spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SPREADAVR_util_h_INCLUDED
-#define SPREADAVR_util_h_INCLUDED
-
-void cpu_init(void);
-#if defined JTD
-void jtag_disable(void);
-#endif
-void reset2bootloader(void);
-
-#endif
diff --git a/software/lufa.mk b/software/lufa.mk
deleted file mode 100644
index b247b87..0000000
--- a/software/lufa.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-##
-## spreadspace avr utils
-##
-##
-## Copyright (C) 2013-2014 Christian Pointner <equinox@spreadspace.org>
-##
-## This file is part of spreadspace avr utils.
-##
-## spreadspace avr utils 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 3 of the License, or
-## any later version.
-##
-## spreadspace avr utils 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 spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>.
-##
-
-include ../defines.mk
-
-include $(LUFA_PATH)/LUFA/makefile
-SRC:=$(foreach COMP,$(LUFA_COMPONENTS),$(LUFA_SRC_$(COMP)))
-
-CFLAGS += -DF_USB=$(F_USB)UL
-CFLAGS += -DBOARD=BOARD_$(LUFA_BOARD)
-CFLAGS += $(LUFA_OPTS)
-
-OBJ = $(SRC:%.c=%.o)
-
-liblufa.a: $(OBJ)
- $(AR) $@ $(OBJ)
-
-%.o: %.c
- $(CC) -c $(CFLAGS) $< -o $@
-
-clean:
- rm -f $(SRC:%.c=%.o)
diff --git a/software/rhmixxx/Makefile b/software/rhmixxx/Makefile
index 47d5e30..6883376 100644
--- a/software/rhmixxx/Makefile
+++ b/software/rhmixxx/Makefile
@@ -24,8 +24,9 @@ BOARD_TYPE := rhmixxx
OBJ := $(NAME).o keypad.o eventqueue.o gpio.o analog.o
LIBS := util led lufa-descriptor-midi
EXTERNAL_LIBS := lufa
+SPREADAVR_PATH := ../../contrib/avr-utils
-LUFA_PATH := ../../contrib/LUFA-120219
+LUFA_PATH := $(SPREADAVR_PATH)/contrib/LUFA-120219
LUFA_OPTS = -D USB_DEVICE_ONLY
LUFA_OPTS += -D DEVICE_STATE_AS_GPIOR=0
LUFA_OPTS += -D ORDERED_EP_CONFIG
@@ -40,4 +41,4 @@ LUFA_OPTS += -D USB_PRODUCT="L\"rhmixxx midi controller\"" -D USB_PRODUCT_LEN=23
LUFA_COMPONENTS := USB USBCLASS
-include ../include.mk
+include $(SPREADAVR_PATH)/include.mk