Библиотека LUFA (раннее название MyUSB) версия 101122
Project Changelog

Версия 101122

Новое:

  • Ядро:
    • Добавлена новая константа SCSI_ASENSE_NOT_READY_TO_READY_CHANGE для драйвера класса Mass Storage, чтобы показать, когда ранее не готовый извлекаемый носитель стал готовым для использования хостом (благодарю Martin Degelsegger)
    • Код, связанный с потоком канала (Pipe) и конечной точки (Endpoint), перенесен в два новых исходных файла ядра USB-библиотеки EndpointStream.c и PipeStream.c
    • Добавлены новые функции USB_Device_GetFrameNumber() и USB_Host_GetFrameNumber() для получения текущего номера фрейма USB
    • Добавлены новые обработчики USB_Host_EnableSOFEvents(), USB_Host_DisableSOFEvents() и EVENT_USB_Host_StartOfFrame(), для обработки программой пользователя событий начала фрейма USB (Start of Frame, SOF) в режиме хоста USB
    • Добавлены новые функции PRNT_Host_BytesReceived(), PRNT_Host_ReceiveByte(), PRNT_Host_SendByte() и PRNT_Host_Flush() в драйвер хоста печати Print Host Class
    • Добавлен специфический для класса дескриптор для альтернативного типа структуры с именованием элементов по стандарту USB-IF
    • Добавлен в библиотеку новый шаблон makefile проекта, и перенесены заглушки драйвера платы в новую папку "CodeTemplates"
    • Добавлен драйвер аппаратуры для поддержки макетной платы Adafruit U4
    • Добавлен драйвер аппаратуры для поддержки макетной платы Arduino Uno
    • Добавлен драйвер аппаратуры для поддержки платы Blackcat USB JTAG (благодарю команду PSGroove)
    • Добавлен драйвер аппаратуры для поддержки платы разработчика Busware BUI
    • Добавлен драйвер аппаратуры для поддержки радиоплаты Busware CUL V3 868MHZ (благодарю Dirk Tostmann)
    • Добавлен драйвер аппаратуры для поддержки платы разработки Kernel Concepts USBFOO
    • Добавлен драйвер аппаратуры для поддержки платы разработки Linnix UDIP
    • Добавлен драйвер аппаратуры для поддержки платы разработки Olimex AVR-USB-162 (благодарю Steve Fawcett)
    • Добавлен драйвер аппаратуры для поддержки платы Maximus (благодарю команду PSGroove)
    • Добавлен драйвер аппаратуры для поддержки макетной платы Microsin AVR-USB162
    • Добавлен драйвер аппаратуры для поддержки платы Minimus (благодарю команду PSGroove)
    • Добавлена новая опция времени компиляции NO_CLASS_DRIVER_AUTOFLUSH для запрета автоматического сброса данных (flush) интерфейсов при вызове задач поддрержки USB каждого из драйверов
    • Добавлены определения сканкодов репорта стандартной клавиатуры HID (благодарю Laszlo Monda)
    • Добавлены новые функции Pipe_GetBusyBanks(), Endpoint_GetBusyBanks() и Endpoint_AbortPendingIN()
  • Программы в библиотеке:
    • Добавлен режим по умолчанию генерации тестового тона в демки режима устройства AudioInput
    • Добавлены новые опции времени компиляции NO_BLOCK_SUPPORT, NO_EEPROM_BYTE_SUPPORT, NO_FLASH_BYTE_SUPPORT и NO_LOCK_BYTE_WRITE_SUPPORT в бутлоадер CDC class
    • Добавлены новая опция времени компиляции XCK_RESCUE_CLOCK_ENABLE в проект клона программатора AVRISP-MKII (благодярю Tom Light)

Изменено:

  • Ядро:
    • Удалена сложная логика функции Endpoint_ConfigureEndpoint() для использования её как встроенную (inline) или вызываемую версию функции в зависимости от указанного размера банка по константе времени компиляции, чтобы компилятор мог лучше оптимизировать основной код
    • Изменена сигнатура функции обратного вызова CALLBACK_USB_GetDescriptor(), так что указатель дескриптора - константа, чтобы устранить дополнительные преобразования внутри callback (благодарю Jonathan Kollasch)
    • Уменьшена в режиме хоста USB задержка HOST_DEVICE_SETTLE_DELAY_MS с 1500 до 1000 мс, для улучшения совместимости устройств USB
    • Удалено событие EVENT_USB_InitFailure(), не указанный корректно режим USB теперь по умолчанию режим выбора UID
    • Переименованы и перемещены общие определения констант, чтобы сделать схему именования более универсальной
    • Перемещены константы режима USB в новое перечисление, чтобы они семантически были связаны друг с другом
    • Переименовано ENDPOINT_DOUBLEBANK_SUPPORTED() в ENDPOINT_BANKS_SUPPORTED() и изменено его максимальное возвращаемое значение поддерживаемых банков для указанной конечной точки
    • Улучшен алгоритм для распаковки и конвертирования внутреннего серийного номера устройства в строковый дескриптор (если он есть)
    • Все классы драйверов USB теперь автоматически подключаются, когда подключен хедер LUFA/Drivers/USB.h is included, и они не должны больше подключаться отдельно
    • Драйвера класса MIDI теперь автоматически сбрасывают данные (flush) интерфейса MIDI, когда вызывается функция USBTask() класса MIDI
    • Переименовано событие EVENT_USB_Device_UnhandledControlRequest() в EVENT_USB_Device_ControlRequest(), так как оно теперь запускается перед запросом обработчиков, не после
  • Программы в библиотеке:
    • Во всех демо для устройств USB используется более ясный алгоритм для конфигурирования конечных точек программы
    • Добавлены пропущенная функция DataflashManager_CheckDataflashOperation() в демо MassStorageKeyboard, удален избыточный файл SCSI_Codes.h, так как его значения являются частью драйвера MassStorage Class
    • Добавлены ошибки времени компиляции в проект AVRISP-MKII, когда он собирается на чипах серии U4, если канал ADC измерения по умолчанию VTARGET не присутствует в этих чипах (благодарю Marco)
    • Изменены все демо LowLevel режима устройства и драйверы класса устройства так, чтобы запрос управления был подтвержден и и любые данные передавались так быстро, как только возможно без любой обработки между секциями, чтобы долгие callback-и или обработчики событий не прерывали коммуникаций с хостом при превышении максимального периода таймаута стадии запроса управления.
    • Изменены все демо, драйвера и внутренние функции для использования текущего номера фрейма, где это возможно, через флаг Start of Frame, чтобы освободить флаг Start of Frame для использования прерывания в приложении пользователя
    • Все makefile проектов теперь корректно очищают промежуточные файлы сборки исходников на ассемблере и C++ (благодарю Daniel Czigany)
    • Изменено значение по умолчанию для параметра полярности сброса в проекте AVRISP-MKII, чтобы по умолчанию активным был нижний уровень
    • Изменен парсер дескриптора конфигурации для всех проектов режима хоста и драйверов класса, чтобы обеспечить лучшую совместимость с устройствами
    • Все демо LowLevel изменены для использования констант и типов, заданных в драйверах классов USB
    • Изменены демо AudioInput и AudioOutput для перезагрузки следующей выборки через прерывание, вместо опроса таймера выборки
    • Такты восстановления AVRISP-MKII перемещены на ножку AVR OCR1A, чтобы такты можно было генерировать всегда
    • Изменены демо драйвера класса MIDI для обработки всех приходящих событий в цикле, пока банк не станет пустым, вместо того, чтобы это делать по одному
    • Изменены демо LowLevel MIDI, чтобы очищать банк приходящего события только один раз как только он станет пустым, чтобы обеспечить поддержку упакованных пакетов событий

Исправлено:

  • Ядро:
    • Исправлена функция USB_GetHIDReportItemInfo(), изменяющая данные указанного элемента репорта, когда элемент не существует внутри поддерживаемого репорта устройства HID с несколькими репортами
    • Исправлена критическая проблема выделения памяти канала/конечной точки, где могло быть незаметное перекрытие адресного пространства банка памяти в контроллере USB, если конечные точки или потоки выделены в любом, отличном от возрастающего, порядке (благодарю Martin Degelsegger)
    • Добавлена функция LEDs_ToggleLEDs() для нескольких драйверов светодиодов платы, где она была пропущена (благодарю Andrei Krainev)
    • Исправлены управляющие запросы SET FEATURE и CLEAR FEATURE, направленные на несконфигурированные конечные точки, что вызывало таймауты запроса
    • Исправлен Fixed USB_Host_ClearPipeStall(), некорректно определяющий направление конечной точки от текущего выбранного канала
    • Исправлены макросы JTAG_DEBUG_POINT() и JTAG_DEBUG_BREAK(), не компилируюшиеся в чистом стандартном режиме C99
    • Исправлен выбор конечной точки в функции обратного вызова CALLBACK_HID_Device_CreateHIDReport(), что вызывает испорченные запросы GET REPORT
    • Исправлено некорректное имя команды для программирования памяти EEPROM в makefile, цель dfu-ee
    • Исправлена функция LEDs_ChangeLEDs() в драйвере светодиодов платы Benito
    • Исправлено некорректное значение USB_DeviceState, когда разконфигурируется устройство без установленного адреса
    • Исправлен драйвер SPI, не устанавливающий явно ножки /SS и MISO как входы при вызове SPI_Init()
    • Исправлена случайная ошибка энумерации в режиме устройства, из-за прерываний, что вызывает превышение максимального времени запроса Set Address
    • Исправлена MIDI_Host_Flush(), не делающая ранний обрыв работы, когда не сконфигурирован указанный интерфейс хоста MIDI
    • Исправлены подпрограммы отправки драйвера класса MIDI, незаметно отбрасывающие пакеты, если конечная точка занята (благодарю Robin Green)
  • Программы в библиотеке:
    • Исправлены все проекты демо, основанные на MassStorage, сбрасывающие значения SCSI sense перед выполнением команды, что приводит к пропуску значений SCSI sense, когда хост запрашивает ключ sense (благодарю Martin Degelsegger)
    • Исправлены проекты USBtoSerial и Benito, в которых вызовы SetLineEncoding вызывали ошибку, если занят USART, из-за задержки RX ISR обработчика управляющего запроса
    • Исправлено демо LowLevel PrinterHost, не отправляющее запросы управления в подключенный принтер с корректным значением wIndex интерфейса принтера
    • Исправлена неверная сигнатура репорта в бутлоадере CDC class для ATMEGA32U2
    • Исправлен проект BootloaderCDC, работающий с ошибкой на некоторых операционных системах из-за удаленной опции Line Encoding (благодарю Alexey Belyaev)
    • Исправлено ошибочное программирование FLASH/EEPROM в проекте клона AVRISP-MKII, когда идет запись не в страничном режиме, и не может быть использован байт опроса
    • Исправлен конфликт определения ISR в мосте XPLAIN между программным UART и модулями AVRISP-MKII ISP
    • Исправлены демо USBtoSerial и XPLAINBridge, отбрасывающие данные от PC, если буфер отправки становится заполненным
    • Исправлен ошибочный ввод в ридере MagStripe из-за некорректного дескриптора репорта HID
    • Исправлены некорректные значения интервалов PollingIntervalMS в дескрипторах конечной точки демо/проекта/бутлоадера (благодарю MCS Electronics)
    • Исправлен проект клона AVRISP-MKII, не запускающий автоматически программирование цели после выхода из режима программирования TPI

Версия 100807

Новое:

  • Добавлена новая функция ADC_DisableChannel() (благодарю Mich Davis)
  • Добавлена новые определения времени выполнения VTARGET_REF_VOLTS и VTARGET_SCALE_FACTOR проекта программатора AVRISP-MKII для установки опорного напряжения VTARGET и фактора масштабирования
  • Добавлен новый макрос pgm_read_ptr() Common.h для чтения указателей из области памяти flash
  • Добавлены новые макросы SWAPENDIAN_16() и SWAPENDIAN_32() Common.h для статически иинициализированных переменных во время компиляции
  • Добавлены новый файл Drivers/USB/LowLevel/Device.c для размещения функций режима устройства, которые более сложные, чем простые макросы
  • Добавлены новые файлы проекта AVRStudio 4 для всех демок, проектов и бутлоадеров библиотеки
  • Добавлена возможность установки скорости последовательного порта через пользовательский терминал в проекте XPLAINBridge
  • Добавлены новые переменные модуля LUFA для различных модулей исходного кода в makefile ядра библиотеки, для упрощения файлов makefile проектов
  • Добавлено начало нового демо класса тестирования и измерения (благодарю Peter Lawrence)
  • Добавлены новые маски SPI_ORDER_* порядка данных в драйвере периферии SPI
  • Добавлена поддержка проекта AVRISP-MKII для скоростей ISP меньших, чем 125 кГц, с помощью нового программного драйвера SPI
  • Добавлена поддержка новых кнопки/светодиода в последнюю модель USBTINY-MKII

Изменено:

  • Код библиотеки RingBuff заменен в проектах XPLAINBridge, Benito и USBtoSerial с ультралегким кольцевым буфером, чтобы помочь увеличить надежность проектов
  • Функции потока чтения/записи EEPROM теперь используют eeprom_update_byte() вместо eeprom_write_byte(), чтобы записывались только измененные байты EEPROM - это экономит их время жизни
  • Изменены проекты AVRISP-MKII и TemperatureDataLogger для использования eeprom_update_byte() при записи энергонезависимых параметров в EEPROM - это экономит время жизни ячеек EEPROM
  • Удалены неиспользуемые данные кодирования линии и управляющие запросы из кода CDC Bootloader, что позволило съэкономить на размере кода
  • Переименован макос SERIAL_STREAM_ASSERT() на STDOUT_ASSERT()
  • Удалены макросы USB_Device_IsRemoteWakeupSent() и USB_Device_IsUSBSuspended(), они сейчас считаются устаревшими
  • Переписана реализация функций SwapEndian_16() и SwapEndian_32() чтобы они в большинстве случаев уменьшились при компиляции и уменьшили нагрузку без сложных сдвигов
  • Программный UART в проекте XPLAINBridge значительно изменен в попытке улучшить производительность и надежность
  • Проекты USBtoSerial и Benito теперь сбрасывают (flush) принятые данные через таймер flush, так что несколько байт можно передать за один раз
  • Удалена автоматическая проверка имен события в makefile демо, проектов и бутлоадеров из-за нессовместимостей между поведением утилит командной строки, используемых для выполнения проверки на каждой платформе
  • Исходники внутреннего драйвера USB переименованы и перемещены для упрощения возможных портов на другие архитектуры
  • Все внутренние макросы псевдофункций сконвертированы в дейсвительные встраиваемые (inline) функции для безопасности типов и читабельности
  • Изменены маски индикатора LED для проекта AVRISP-MKII, так что теперь определены роли для каждого светодиода
  • Изменены подпрограммы приема байта драйвера класса устройства CDC и класса хоста, так что возврат функцией отрицательного значения показывает на отсутствие данных (благодарю Andreas Paulin)
  • Добавлен автоматический сброс (flush) данных OUT функции USBTask драйвера класса хоста CDC для автоматического сброса данных буфера канала отправки

Исправлено:

  • Исправлена команда LOAD EXTENDED ADDRESS проекта AVRISP для 128KB AVR после программирования или чтения из последней страницы FLASH (благодарю Gerard Sexton)
  • Исправлен проект AVRISP, не отправляющий команду полной команды erase-and-write EEPROM на целях XMEGA, когда записываются EEPROM вместо разделения команды только для записи (благодарю Tim Margush)
  • Исправлено демо RNDISEthernet, зависающее при проверке контрольной сумм для пакетов Ethernet/TCP размером больше чем ~500 байт из-за переполнения в цикле вычисления контрольной суммы (благодарю Kevin Malec)
  • Исправлен проект XPLAINBridge, некорректно читающий напряжение питания XMEGA, когда делается репорт обратно хосту
  • Исправлена некорректная сигнатура для ATMEGA32U2 в бутлоадере DFU (благодарю Axel Rohde)
  • Исправлена недоступность внутреннего серийного номера на ATMEGAXXU2 AVR (благодарю Axel Rohde)
  • Исправлена арифметика указателя void в ConfigDescriptor.h, разбивающая совместимость C++ (благодарю Michael Hennebry)
  • Исправлена неверная функциональность PDI EEPROM Section Erase в проекте AVRISP-MKII
  • Исправлена USB_Device_SendRemoteWakeup(), не работающая, когда заморожены такты USB во время приостановки шины USB (благодарю Brian Dickman)
  • Исправлены случайные зависания проекта AVRISP из-за кода, некорректно расширяющего таймаут в режимах программирования PDI и TPI
  • Исправлен драйвер класса устройства HID, все еще использующий PrevReportINBuffer для запросов управления GetReport, даже когда он установлен в NULL в программе пользователя (благодарю Axel Rohde)
  • Исправлена MIDI_Device_SendEventPacket(), некорректно ожидающая готовности конечной точки (благодарю Robin Green)
  • Исправлены проекты Benito и USBtoSerial для выключения USART перед его реконфигурированием, что ранее могло вызвать некорректное функционирование (благодарю Bob Paddock)
  • Исправлен драйвер периферии последовательного порта, который не выключал USART перед его реконфигурированием, что могло вызвать некорректное функционирование (благодарю Bob Paddock)
  • Исправлена программа ПО хоста при ошибке команды запуска в бутлоадере класса DFU, когда используется dfu-программатор с испорченным адресом старта приложения

Версия 100513

Новое:

  • Добавлен незавершенный проект MIDIToneGenerator
  • Добавлен новый проект платы контроллера реле Relay Controller Board (благодарю OBinou)
  • Добавлен драйвер аппаратуры поддержки Teensy, USBTINY MKII, Benito и JM-DB-U2 линеек макетных плат USB AVR
  • Добавлен новый атрибут ATTR_NO_INIT переменной для глобальных переменных, которые не должны автоматически очищаться при старте
  • Добавлен новый код ошибки ENDPOINT_*_BusSuspended в функцию конечной точки, так что функции потока делают ранний abort, если шина приостановлена - перед или во время передачи
  • Добавлены новое событие EVENT_CDC_Device_BreakSent() и функция CDC_Host_SendBreak() в драйвера устройства и хоста класса CDC
  • Добавлен параметр ReportType в функцию CALLBACK_HID_Device_ProcessHIDReport() драйвера устройства класса HID, чтобы репорты FEATURE от хоста к устройству могли быть корректно обработаны
  • Добавлен параметр ReportType в функцию HID_Host_SendReportByID() драйвера хоста класса HID, чтобы репорты FEATURE могли быть выданы на подключенное устройство

Изменено:

  • Проект программатора AVRISP теперь имеет более производительную систему таймаута
  • Добавлена величина таймаута в функцию TWI_StartTransmission(), в течение которого адресуемое устройство должно ответить
  • Проект Webserver теперь использует светодиоды платы для индикации состояния конфигурации IP
  • Добавлена опция времени компиляции ENABLE_TELNET_SERVER в проект Webserver для запрета, если это нужно, сервера TELNET
  • Увеличена пропускная способность демо USBtoSerial на системах, которые отправляют несколько байтов на пакет (благодарю Opendous Inc.)
  • Двойной банк конечных точек CDC в проекте XPLAIN Bridge, повторно разрешается JTAG, как только опрошена ножка выбора режима.
  • Стандартизирована схема именования указанных элементов дескриптора конфигурации в демках устройств, бутлоадеров и проектов
  • Все демо драйвера класса режима хоста теперь корректно устанавливает светодиоды в состояние READY, как только процесс энумерации завершен
  • Добавлена опция времени компиляции LIBUSB_FILTERDRV_COMPAT в проект AVRISP, чтобы код был совместим со сборками Windows avrdude, в ущерб совместимости с AVRStudio
  • Удалена двухшаговая последовательность очистки и переключения банка конечной точки/канала для получения маленького и быстрого кода
  • Функция USB_Init() больше не вызывает sei() - теперь пользователь отвечает за разрешение прерываний, когда все готово к их разрешению (благодарю Andrei Krainev)
  • Функции Audio_Device_IsSampleReceived() и Audio_Device_IsReadyForNextSample() теперь inline, чтобы снизить нагрузку
  • Удалено преобразование типа в uint16_t при установке скорости в проекте USBtoSerial, так что могут быть выбраны скорости >1M baud (благодарю Steffan Woltjer)
  • Удалена программная эмуляция PDI и TPI из проекта клона AVRISP-MKII, так как там имелись ошибки, и такое решение работало медленно - теперь PDI и TPI должны быть реализованы в отдельных заголовках программы
  • Бутлоадер класса CDC теперь использует при выходе сброс по таймеру watchdog, а не программный сброс - чтобы обеспечить правильный сброс всей аппаратуры чипа в свое состояние по умолчанию
  • Функции обратного вызова драйвера класса режима устройства USB теперь запускаются перед стадией отправки запроса состояния, что предотвращает для хоста таймаут, если немедленно запущен другой запрос, и устройство имеется долгую подпрограмму обратного вызова
  • Бутлоадер TeensyHID удален по запросу Paul из PJRC
  • Опция времени компиляции LIBUSB_FILTERDRV_COMPAT в проектах XPLAINBridge и AVRISP-MKII переименованы в LIBUSB_DRIVER_COMPAT, как это применено ко всем программам всех платформ, использующих драйвер libUSB

Исправлено:

  • Исправлено возможное зависание устройства, когда INTERRUPT_CONTROL_ENDPOINT разрешена и конечная точка управления не выбрана правильно, при завершении ISR
  • Исправлен проект клона AVRISP-MKII, некорректно выдающий команду LOAD EXTENDED ADDRESS, когда расширенный адрес пересекает границу при программировании или обратном чтении (благодарю Gerard Sexton)
  • Исправлены предупреждения, когда собирается проект клона AVRISP-MKII с запрещенной опцией ENABLE_XPROG_PROTOCOL времени компиляции
  • Исправлен реализованный программно режим программирования PDI/TPI в проекте AVRISP, некорректно переключающий ножку тактов
  • Исправлена в TWI_StartTransmission() порча содержимого регистра GPIOR0
  • Исправлен драйвер TWI, не выполняющий abort, когда не было ответа после попытки адресовать устройство на шине
  • Исправлены подпрограммы ADC, некорректно возвращающие последний результат, когда читается несколько каналов
  • Исправлены подпрограммы ADC, ошибающиеся при чтении расширенных (extended) каналов (от 8 до 13, внутренний датчик температуры) на микроконтроллерах USB AVR серии U4
  • Исправлено демо LowLevel MassStorage, не работающее на микроконтроллерах USB AVR серии U2 из-за неподдерживаемых режимов двойного банка
  • Исправлена ошибка компиляции в демках AudioInput, когда задано MICROPHONE_BIASED_TO_HALF_RAIL (благодарю C. Scott Ananian)
  • Исправлено некорректное определение HID_ALIGN_DATA(), вызывающее некорректное выравнивание элемента данных репорта HID
  • Исправлен драйвер хоста Still Image, не сбрасывающий ID транзакции, когда открыта новая сессия, исправленный драйвер не отправляет валидный ID сессии на устройство
  • Удалены из бутлоадеров неправильные цели, связанные с dfu и flip - бутлоадеры могут быть заменены только с внешним программатором
  • Исправлены запросы Set/Clear Feature, направленные на несконфигурированную конечную точку, не возвращающую на хост состояние stall
  • Исправлен драйвер класса устройства HID, не выделяющий временный буфер, когда хост запрашивает репорт через конечную точку управления и пользователь устрановил в NULL элемент конфигурации драйвера PrevReportINBuffer (благодарю Lars Noschinski)
  • Исправлено, что состояние устройства не сбрасывается в DEVICE_STATE_Default, если хост устанавливает адрес устройства 0x00
  • Исправлено, что устройство не останавливает (stall) запросы конфигурации, если адрес устройства не установлен
  • Исправлено, что может портится результат запроса внутренней сигнатуры, если произошло прерывание во время чтения байта сигнатуры (благодарю Andrei Krainev)
  • Исправлено, что состояние устройства не сбрасывается обратно в состояние по умолчанию, если хост устанавливает адрес в 0
  • Исправлено, что запросы Set Configuration не останавливаются (stall), пока хост устанавливает адрес устройства
  • Исправлено, что драйвер режима хоста класса HID не отправлял корректный тип репорта, когда был вызван HID_Host_SendReportByID(), и установлена опция времени компиляции HID_HOST_BOOT_PROTOCOL_ONLY
  • Исправлено, что опция времени компиляции INTERRUPT_CONTROL_ENDPOINT предотвращает запуск других прерываний, когда обрабатывается запрос к конечной точке, что вызвает возможные зависания, если прерывание USB произошло во время передачи
  • Удален некорректный дескриптор, специфичный для класса Abstract Call Management (ACM) из демок CDC, бутлоадеров и проектов

Версия 100219

Новое:

  • Добавлена поддержка программирования TPI для 6-pin устройств ATTINY в проект программатора AVRISP (благодарю Tom Light)
  • Добавлен счетчик таймаута команды в проект программатора AVRISP, так что теперь устройство не замерзает, когда произошло некорректное соединение с программируемым микроконтроллером
  • Добавлено новое приложение TemperatureDataLogger, логгер данных USB, который записывает в память dataflash устройства и это устройство хост видит как стандартное Mass Storage (когда произошло соединение с хостом)
  • Добавлена поддержка упаковки события MIDI в устройство MIDI и драйверы класса режима хоста (Host Mode Class Drivers), что позволяет нескольким событиям MIDI быть отправленными или принятыми путем упаковки в один пакет USB
  • Добавлен новые подпрограммы сброса (flush) буфера отправки MIDI в драйверы класса устройства MIDI и режима хоста (Host Mode Class Drivers), для передачи упакованных событий
  • Добавлен режим мастера в аппаратный драйвер TWI, для простого управления периферией TWI (I2C)
  • Добавлены маски мультиплексора входов ADC MUX для стандартных входных каналов ADC на всех моделях AVR, имеющих ADC, изменены демо для использования этих масок на некоторых моделях, номер канала не идентичен его одиночной (single-ended) маске ADC MUX
  • Говый проект Webserver, RNDIS хост USB web-сервер, использующий стек сети uIP TCP/IP с открытыми исходниками и библиотеку FatFS
  • Новое значение BOARD_NONE опции BOARD (эквивалентно отсутствию опции BOARD), которая удаляет все драйверы аппаратуры платы, удаление которых не влияет отрицательно на работу кода (пока только драйверы светодиодов LED)
  • Добавлены маски модификаторов клавиатуры (HID_KEYBOARD_MODIFER_*) и маски репорта светодиодов (KEYBOARD_LED_*) в драйвер класса HID и демки клавиатур
  • Добавлены такты восстановления 0.5 МГц в проект программатора AVRISP, которые можно применить, когда в режиме программирования ISP неправильно установлены перемычки (фьюзы, fuses) программируемого микроконтроллера

Изменено:

  • Замедлена работа программного USART, переносящего данные программирования PDI в проекте AVRISP для предотвращения ошибок передачи
  • Переименована папка проекта AVRISP в AVRISP-MKII, чтобы точнее соответствовать проекту
  • Переименованы токены RESET_LINE_* файла makefile в проекте AVRISP MKII в AUX_LINE_*, потому что они не всегда используются для сброса программируемого микроконтроллера
  • Изменен драйвер класса демо MassStorageKeyboard для использования событий Start of Frame в отличие от отслеживания таймера для отсчета прошедших милисекунд
  • Сделаны встроенными (inline) неиспользующиеся (но стандартизированные) сейчас функции обслуживания в драйверах класса устройства и хоста для экономии памяти кода
  • Проект XPLAINBridge теперь при запуске выбирает режим между мостом USB <--> Serial и программатором PDI, путем чтения ножки TDI порта JTAG, чтобы определить, какой режим использовать
  • Удален код примера потока из демок Low Level VirtualSerial, так как там были ошибки, и его обслуживание только мешало

Исправлено:

  • Исправлен проект AVRISP, который не мог зайти в режим программирования при использовании протокола ISP
  • Исправлено состояние состязания AVRISP PDI, где время защиты между изменениями направления могло быть интерпретировано как стартовый бит
  • Исправлена Fixed ADC_IsReadingComplete(), возвращающая инвертированный результат
  • Исправлено блокирование потоков CDC, не прерывающихся, когда отсоединяется хост
  • Исправлен Dataflash драйвер платы XPLAIN, ошибающийся при некорректных командах препроцессора
  • Исправлено инвертирование выхода драйвера LED XPLAIN (светодиод включался, когда он предполагался выключенным, и наоборот)
  • Исправлены номера интерфейса структуры драйвера класса в демках KeyboardMouse и VirtualSerialMouse (благодарю Renaud Cerrato)
  • Исправлены неверные прескалеры PLL контроллера USB в микроконтроллерах ATMEGAxxU2
  • Исправлен недостаток поддержки ATMEGA32U2 в бутлоадерах DFU и класса CDC
  • Исправлен проект Benito, не сбрасывающий автоматически программируемый AVR, когда программирование завершено
  • Исправлено прогаммирование бутлоадера DFU, не отбрасывающее корректное количество заполняющих байт от хоста, когда указаны невыровненные диапазоны программирования (благодарю Thomas Bleeker)
  • Исправлены демки хоста CDC и RNDIS и драйвера классов - двунаправленные конечные точки должны использовать два отдельных канала, а не один полудуплексный канал
  • Исправлена Fixed Pipe_IsEndpointBound(), не учитывающая направление конечной точки
  • Исправлено программирование EEPROM и FLASH ISP в проекте AVRISP
  • Исправлены некорректные значения токенов USB_CONFIG_ATTR_SELFPOWERED и USB_CONFIG_ATTR_REMOTEWAKEUP (благодарю Claus Christensen)
  • Исправлен драйвер SerialStream, блокирующийся при ожидании приема символов вместо возврата EOF
  • Исправлен драйвер SerialStream, не устанавливающий stdin в созданном последовательном потоке (благодарю Mike Alexander)
  • Исправлена Fixed USB_GetHIDReportSize(), возвращающая количество бит в указанном репорте вместо количества байт
  • Исправлен проект AVRISP, не расширяющий задержку команды после каждого успешного программирования страницы/слова/байта
  • Исправлена точность макросов SERIAL_UBBRVAL() и SERIAL_2X_UBBRVAL() для высоких скоростей baud rate (благодарю Renaud Cerrato)

Версия 091223

Новое:

  • Добавлены новые индикаторы активности LED в проект AVRISP, чтобы показать, когда устройство занято обработкой команды
  • Токены семейства цели USB и допустимых режимов USB теперь public и задокументированы (USB_CAN_BE_*, USB_SERIES_*_AVR)
  • Добавлен новый проект XPLAIN USB моста Serial (благодарю John Steggall за стартовую концепцию, David Prentice и Peter Danneger за ревизию кода программного USART)
  • Добавлено новое демо RNDIS Ethernet Host LowLevel
  • Добавлен новый драйвер класса RNDIS Ethernet Host Class
  • Добавлено новое демо RNDIS Ethernet Host ClassDriver
  • Добавлена функция CDC_Host_Flush() для драйвера класса хоста CDC, чтобы сбрасывать (flush) отправляемые данные на подключенное устройство
  • Добавлена поддержка PDI программирования для устройств XMEGA в проект программатора AVRISP (благодарю Justin Mattair)
  • Добавлена поддержка Dataflash платы XPLAIN, с новой целью платы XPLAIN_REV1 для разных используемых dataflash в платах первой ревизии, в сравнении со смонтированными на последующих ревизиях
  • Добавлен новый макрос HID_ALIGN_DATA() для возврата в предварительно запрошенное значение элемента репорта, выровненное влево по указанному типу данных
  • Добавлено новый элемент PreviousValue в структуру парсера репорта HID, для простого мониторинга значения элемента предыдущего репорта
  • Добавлена новая целевая плата EVK527
  • Добавлена новая функция удобства USB_Host_GetDeviceStringDescriptor()
  • Добавлен в библиотеку новый проект LEDNotification, чтобы предоставить от хоста визуальное оповещение светодиодами новых событий
  • Добавлены новые опции времени компиляции NO_DEVICE_REMOTE_WAKEUP и NO_DEVICE_SELF_POWER

Изменено:

  • Удален код из демок Keyboard для отправки нулевых репортов между двумя репортами с различным числом кодов кнопок, так как это было основано на нестандартном поведении драйвера OS для повтора групп кнопок
  • Определения типов SCSI_Request_Sense_Response_t и SCSI_Inquiry_Response_t теперь часть общих определений драйвера Mass Storage Class, в отличие от их определения только в секции драйвера класса режима хоста (Host Mode Class Drivers)
  • Токен USB_MODE_HOST теперь задан все равно, даже когда режим хоста недоступен
  • Функция обратного вызова CALLBACK_HID_Device_CreateHIDReport() драйвера класса устройства HID теперь имеет новый параметр ReportType для указания типа генерируемого репорта
  • Все драйвера классов теперь возвращают false или код ошибки "DeviceDisconnected" из их соответствующих перечислений ошибки, когда функция вызывается при отсутствии соединения с хостом/устройством
  • Значение перечисления HOST_SENDCONTROL_DeviceDisconnect переименовано в HOST_SENDCONTROL_DeviceDisconnected, чтобы соответствовать остальной части кодов ошибки библиотеки
  • Демки MIDI устройства теперь тоже выключают светодиоды платы, если отправляются события включения ноты MIDI Note On с ускорением (velocity) 0, которые используются на некоторых устройствах вместо сообщений выключения ноты Note Off (благодарю Robin Green)
  • Демки CDC теперь называются "VirtualSerial", чтобы показать функцию этих демо в отличие от их реализации как класса USB, чтобы они соответствовали остальным демкам LUFA
  • Функции SImage_Host_SendBlockHeader() и SImage_Host_ReceiveBlockHeader() драйвера класса хоста Still Image теперь стали public

Исправлено:

  • Добавлен код пропущенной функции CDC_Host_CreateBlockingStream() в драйвер CDC Host Class
  • Исправлены некорректные значения REPORT_ITEM_TYPE_* перечисления, что вызывало порчу данных в парсере хоста HID
  • Исправлены неправильные имена функций SI_Host_USBTask() и SI_Host_ConfigurePipes()
  • Исправлена ошибка функции USB_GetNextDescriptor(), вызывающая дескриптор перепрыгивать вперед вдвое от ожидаемого количества
  • Исправлена Pipe_IsEndpointBound(), не маскирующая указанный адрес конечной точки значением PIPE_EPNUM_MASK
  • Исправлена машина состояния хоста, не разрешающая режим Auto VBUS, когда HOST_DEVICE_SETTLE_DELAY_MS установлена в ноль
  • Исправлено неправильное имя макроса Pipe_SetPipeToken() для установки направления канала
  • Исправлено падение CDCHost на устройствах с двунаправленными конечными точками
  • Исправлен драйвер USB, который не мог задать маску прескалера PLL для ATMEGA8U2 и ATMEGA16U2
  • Исправлен парсер HID, не распространяющий значения Usage Min и Usage Max через массив элементов репорта
  • Исправлен драйвер класса хоста Mass Storage и демо Low Level, не очищающие событие ошибки, если подключенное устройство возвращает STALL на запрос GET MAX LUN (благодарю Martin Luxen)
  • Исправлен бутлоадер TeensyHID, неправильно отключающий интерфейс USB для переключения в режим отсоединеня от хоста перед выполнением сброса
  • Исправлено демо драйвера класса MassStorageHost, не имеющее правильно установленную опцию времени компиляции USB_STREAM_TIMEOUT_MS, чтобы предотвратить таймаут каналов данных на медленных устройствах
  • Исправлено определение макроса Endpoint_BytesInEndpoint() для серии U4 микроконтроллеров AVR
  • Исправлена подпрограмма MIDI_Host_SendEventPacket() драйвера класса хоста MIDI, неправильно проверяющая готовность канала перед записью
  • Исправлено использование устаревших инициализаторов структуры, удалены предупреждения библиотеки неиспользуемых параметров с разрешенной оцией компиляции -Wextra
  • Исправлен драйвер хоста Still Image, обрезающий код ответа PIMA (благодарю Daniel Seibert)
  • Исправлено несбрасывание USB_CurrentMode в значение USB_MODE_NONE, когда выключается интерфейс USB и могут быть использованы оба режима и хоста, и устройства (благодарю Daniel Levy)
  • Исправлено, что бутлоадер TeensyHID не проходит корректно энумерацию хостом (благодарю Clint Fisher)
  • Исправлено отсутсвие проверки таймаутов проекта AVRISP на корректный период времени (благодарю Carl Ott)
  • Исправлено использование некорректного битового сдвига в драйвере Dataflash STK525 для адресов Dataflash (благодарю Tim Mitchell)

Версия 091122

Новое:

  • Добавлено новое демо с двойной ролью Keyboard/Mouse
  • Добавлен новый токен времени компиляции HID_HOST_BOOT_PROTOCOL_ONLY для уменьшения размера драйвера класса хоста HID, когда не нужен протокол репорта
  • Добавлено новое демо MIDI LowLevel и ClassDriver Host, добавлен новый драйвер MIDI Host Class
  • Добавлено новое демо CDC/Mouse ClassDriver
  • Добавлены новые демо Joystick Host ClassDriver и LowLevel
  • Добавлен новый драйвер Printer Class режима хоста
  • Добавлен новый драйвер Printer Class режима хоста demo
  • Добавлена опциональная поддержка для конечных точек с двумя банками и каналов в драйверах класса режима устройства и режима хоста
  • Добавлена новая функция создания потока для драйверов класса CDC, для простого создания стандартных потоков ввода/вывода из экземпляров драйвера класса CDC

Изменено:

  • Удалено часто бесполезное демо "TestApp", так как оно нужно только для проверок синтаксических ошибок в библиотеке
  • Демки устройства MIDI теперь принимают события MIDI от хоста и отображают сообщения включения ноты светодиодами макетной платы
  • Подчистка подрограмм SCSI демо режима устройства Mass Storage
  • Изменены функции чтения/записи выборки драйвера Audio Class на inline, для уменьшения количества циклов, необходимых для передачи выборок в устройство и от устройства (что оставляет больше времени для обрабоки выборки и вывода)
  • Демки режима устройства класса Audio теперь работают и на 16, и на 8 МГц, раньше можно было только на 8 МГц
  • Предыдущее демо USBtoSerial перенесено в папку проектов, просто как модифицированное демо CDC
  • Функции конечной точки/потока теперь используют константу квалификатора на входном буфере
  • Изменена функция обратного вызова CALLBACK_HIDParser_FilterHIDReportItem() для передачи HID_ReportItem_t, а не просто текущие атрибуты элемента, для предоставления большей информации об элементе (включая его тип, путь коллекции и проч.)
  • Изменены демки MouseHostWithParser для проверки, что элементы репорта имеют коллекцию Mouse usage (использование мыши) как родительскую на некоторой точке, чтобы предотвратить энумерацию джойстиков для этого демо
  • Подправлено неправильное имя функции USB_GetDeviceConfigDescriptor(), теперь она называется USB_Host_GetDeviceConfigDescriptor()
  • Демки Keyboard LowLevel/ClassDriver теперь поддерживают одновременное нажатие нескольких кнопок (до 6) в одном репорте

Исправлено:

  • Исправлено демо, возвращающее неправильные данные ID устройства, когда подключенное устройство не имеет ID устройства (благодарю Andrei Krainev)
  • Изменено определение LUFA_VERSION_INTEGER для использования значений BCD, чтобы упростить сравнения
  • Исправлена проблема в подпрограмме HID_Host_SendReportByID() драйвера класса хоста HID, которая использовала некорректный режим (управление/канал) для отправки репорта в подключенное устройство
  • Исправлено демо устройства ClassDriver AudioOutput, не выбирающее режим вывода звука
  • Исправлено некорректное значение SampleFrequencyType в дескрипторах демок AudioInput и AudioOutput ClassDriver
  • Исправлено некорректное имя правила события в файлах makefile демок/проектов/бутлоадеров
  • Исправлено, что драйвер класса устойства HID не выбирает заново правильную конечную точку, когда вызваются подпрограммы callback пользователя
  • Подправлен дескриптор HID в демках устройства джойстика - кнопки должны быть размещены вне коллекции указателей
  • Исправлены неправильные пути коллекции репорта HID из-за неправильно поставленной точки с запятой в элементе свободного пути цикла поиска
  • Исправлена ошибка отправляемого/принимаемого репорта класса хоста HID, когда репорт выдавался через канал управления
  • Исправлено, что опция времени компиляции HOST_STATE_AS_GPIOR игнорировалась в режиме работы как хост (благодарю David Lyons)
  • Исправлено, что демо LowLevel Keyboard не сохраняло выданный репорт только после того, как он был отправлен хостом
  • Исправлено, что функции Endpoint_Write_Control_Stream_* не отправляли заваршающее IN, когда указанная длина данных Length равна 0

Версия 090924

Новое:

  • Добавлены в библиотеку новые драйверы класса режима хоста и соответствующие демки - для быстрой разработки прилоожений
  • Добавлен флаг в парсер репорта HID для указания, что устройство имеет несколько репортов
  • Добавлено новое событие EVENT_USB_Device_StartOfFrame(), управляемое новым USB_Device_EnableSOFEvents() и макрос USB_Device_DisableSOFEvents() для получения милисекундных прерываний, синхронизированных с шиной, когда идет работа в режиме устройства USB
  • Добавлено новый макрос Endpoint_SetEndpointDirection() для двунаправленных конечных точек
  • Добавлен новый проект AVRISP, клон программатора Atmel AVRISP-MKII, выполненный на библиотеке LUFA
  • Добавлены функции ShutDown() во все драйвера аппаратной периферии, чтобы периферия могла быть выключена после использования
  • Добавлена новая команда CDC_Device_Flush() в драйвер CDC Class режима устройства для сброса данных устройство --> хост
  • Добавлены новые маски в драйвер SPI, изменен SPI_Init(), так что может быть установлена полярность тактов и режимы выборки
  • Добавлены новый callback в парсер репорта HID, так что приложение пользователя может фильтровать только интересующие элементы, которые нужно сохранить в структуру HIDReportInfo - для экономии пространства в RAM
  • Добавлена поддержка для официально рекомендованной разводки периферии платы BUMBLEB (благодарю Dave Fletcher)
  • Добавлен новый макрос Pipe_IsFrozen(), чтобы определить, заморожен ли выбранный канал
  • Добавлена новая функция USB_GetHIDReportSize() в парсер репорта HID, чтобы запросить размер указанного репорта по его ID
  • Добавлено новое комбинированное демо Mass Storage и Keyboard (благодарю Matthias Hullin)

Изменено:

  • Запросы SetIdle на драйвер устройства HID с периодом ожидания 0 (отправка только изменений) теперь влияют только на запрашиваемый интерфейс HID внутри устройства, не все интерфейсы HID
  • Добавлены явные маски атрибутов в дескрипторы демок режима устройства
  • Добавлены возвращаемые значения в функции передачи драйвера класса CDC и MIDI
  • Оптимизированы макросы Endpoint_Read_Word_* и Pipe_Read_Word_* для уменьшения скомпилированного размера кода
  • Added non-null function parameter pointer restrictions to USB Class drivers to improve user code reliability
  • Added new "Common" section to the class drivers, to hold all mode-independent definitions for clarity
  • Moved SCSI command/sense constants into the Mass Storage Class driver, instead of the user-code
  • Изменены команды SCSI в демо хоста LowLevel Mass Storage для экономии места на FLASH путем уменьшения вызовов функции
  • Изменены параметры и поведение функции USB_GetDeviceConfigDescriptor(), так что она теперь выполняет проверку размера и правильности данных внутри себя, чтобы упростить код пользователя
  • Изменен HIDParser, чтобы только обнулить важные значения элемента анализируемой информмационной структуры репорта HID, чтобы уменьшить загрузку процессора
  • Парсер репорта HID теперь всегда обрабатывает элементы FEATURE - токен HID_ENABLE_FEATURE_PROCESSING теперь не действует
  • Парсер репорта HID теперь всегда игнорирует элементы данных констант, токен HID_INCLUDE_CONSTANT_DATA_ITEMS теперь не действует
  • Проект прорамматора Benito теперь имеет свою собственную пару VID/PID, из безвозмездно выделенного компанией Atmel пула LUFA VID/PID
  • Add in new invalid event hook check targets to project makefiles to produce compilation errors when invalid event names are used in a project
  • Парсер репорта HID теперь предоставляет информацию о полной длине каждого репорта в пределах интерфейса HID
  • Удален токен времени компиляции USE_NONSTANDARD_DESCRIPTOR_NAMES - теперь это отдельный USB_Descriptor_* и могут использоваться структуры USB_StdDescriptor_* в обоих методах именования - LUFA и стандартизованном именовании элементов

Исправлено:

  • Исправлены возможные зависания в драйвере класса устройства CDC, когда хост отправляет данные с несколькими банками конечной точки
  • Исправлено, что переставлялись местами параметры в вызове копирования памяти состояния HID при обработке элемента HID PUSH в парсере репорта HID
  • Исправлена порча памяти в парсере репорта HID, когда обрабатывается слишком много элементов COLLECTION или PUSH
  • Исправлено, что парсер репорта HID не сбрасывает счетчик элементов FEATURE, когда встретился элемент REPORT ID
  • Исправлено, что демки USBtoSerial не читали в UDR1, когда USART принял данные, но интерфейс USB не прошел энумерацию, что вызывало продолжительные прерывания приема USART
  • Исправлено неправильное имя события в драйвере класса демо USBtoSerial, что вызывало неправильное функционирование
  • Исправлено, что возвращались неверные данные, когда запрос GetStatus выдавался в режиме устройства с неподдерживаемым получателем данных
  • Добавлено прерывание приема в аппаратный USART и программное буферизирование в проекте Benito, чтобы убедиться, что принятые данные не будут потеряны или испорчены
  • Исправлено, что драйвер класса режима устройства HID всегда отправлял пакеты IN, даже если нечего было передавать в репорте
  • Исправлено, что драйвер класса режима устройства HID не инициализировал явно параметр ReportSize в ноль перед вызовом функции обратного вызова, чтобы игнорируемые функции обратного вызова не вызывали отправку некорректных данных
  • Исправлен StillImageHost, некорректно замораживающий и размораживающий каналы данных при ожидании заголовка блока ответа
  • Исправлена ошибка в демо PrinterHost, из за чего не было полной отправеи данных страницы в подключенное устройство (благодарю John Andrews)
  • Исправлены демки, основанные на CDC, и драйверные файлы INF 64-битных версий Windows (благодарю Ronny Hanson, Thomas Bleeker)
  • Заново добавлены цели flip, flip-ee, dfu и dfu-ee в файлы makefile проектов (благодарю Opendous Inc.)
  • Исправлены комментарии допустимых значений F_CPU в файлы makefile проектов, чтобы аккуратнее отражать допустимые значения для USB AVR
  • Исправлены бутлоадеры DFU и класса CDC на устройствах USB AVR серии 2, скорректированы неправильные сигнатуры, добавлена поддержка новых вариантов AVR ATMEGAxx2 серии 2 в бутлоадер DFU
  • Исправлено демо Low Level USBtoSerial, не сохраняющее принятые символы (благодарю Michael Cooper)
  • Исправлен драйвер класса устройства MIDI, не отправляющий и не принимающий пакеты MIDI корректного размера (благодарю Thomas Bleeker)

Версия 090810

Новое:

  • Добавлены в библиотеку новые драйверы класса устройств и соответствующие демо для быстрой разработки приложений
  • Добавлено новое демо PrinterHost (благодарю John Andrews)
  • Добавлен проект USB Missile Launcher (запускалка ракеты), предоставленный Dave Fletcher
  • Добавлен новый проект программатора Benito Arduino
  • Добавлены неполные демки устройства и хоста для дальнейшего расширения возможностей
  • Обновлены подпрограммы блоковой записи устройства MassStorage для использования ping-pong буферирования Dataflash, чтобы увеличить пропускную способность примерно на 30%
  • Во всех демках и проектах светодиодами статуса показывается, когда конфигурация конечной точки не может завершиться из-за ошибки
  • Добавлена для удобства новая функция USB_Host_SetDeviceConfiguration(), чтобы просто выбирать конфигурацию устройств в режиме хоста USB
  • Добавлена для удобства новая функция USB_Host_ClearPipeStall(), чтобы можно было очистить состояние stall на всех конечных точках подключенного устройства
  • Добавлена для удобства новая функция USB_Host_GetDeviceDescriptor(), чтобы запросить дескриптор устройства
  • Добавлена для удобства новая функция Endpoint_ClearStatusStage(), чтобы помочь на стадиях статуса управляющих передач
  • Добавлено новое определение USE_INTERNAL_SERIAL для использования уникальных серийных номеров в некоторых моделях AVR в качестве серийного номера устройства USB, добавлена опция времени компиляции NO_INTERNAL_SERIAL для отключения нового кода чтения серийного номера
  • Добавлен новый макрос DATAFLASH_CHIP_MASK() в драйвер Dataflash, который возвращает маску выбора Dataflash для чипа с указанным индексом
  • Добавлено новое состояние машины хоста HOST_STATE_WaitForDeviceRemoval для неблокирующего запрета коммуникаций устройства, пока оно не будет удалено (для использования при возникновении ошибки или при завершении коммуникаций с устройством)
  • Добавлена новая опция времени компиляции FAST_STREAM_TRANSFERS для ускорения потоковых передач с помощью копирования нескольких байт на цикл потока
  • Добавлено новое демо кода потока в демки устройств CDC, чтобы показать, как создать стандартные потоки вывода виртуальных последовательных портов
  • Добавлены новые версии буфера EEPROM и FLASH в функции потока конечной точки и канала
  • Добавлены новые опции времени компиляции USE_FLASH_DESCRIPTORS и FIXED_NUM_CONFIGURATIONS
  • Добавлена поддержка новых моделей AVR ATMEGA32U2, ATMEGA16U2 и ATMEGA8U2
  • Добавлена новая переменная USB_DeviceState для отслеживания текущего состояния режима устройства USB
  • Добавлена новая функция LEDs_ToggleLEDs() в драйвер светодиодов
  • Добавлены новые функции Pipe_BoundEndpointNumber() и Pipe_IsEndpointBound()
  • Добавлены новые опции времени компиляции DEVICE_STATE_AS_GPIOR и HOST_STATE_AS_GPIOR
  • Добавлена индикация ошибок 404 Not Found в WEB-сервер демки RNDIS, чтобы указать на неправильный URL

Изменено:

  • Устарел псевдо-шедулер и удален из библиотеки выделитель динамической памяти (так как не нужен и не используется)
  • Функция режима устройства CALLBACK_USB_GetDescriptor() теперь имеет дополнительные параметры, так можно указать объем памяти запрашиваемого дескриптора. Это означает, что дескрипторы теперь могут быть размещены в нескольких областях памяти внутри устройства
  • Удалена непонятно для чего нужная глобальная переменная USB_IsConnected - проверяйте USB_DeviceState или USB_HostState для получения той же функциональности
  • Удалена глобальная переменная USB_DeviceState - вместо этого проверяйте USB_DeviceState на состояние DEVICE_STATE_Suspended
  • Усовершенствована подпрограмма USB_GetDeviceConfigDescriptor() - теперь она требует номер конфигурации для выбора в пределах устройства
  • Dataflash_WaitWhileBusy() теперь всегда сразу после возврата удостоверяется, что dataflash готова к следующей команде, не нужно вызывать впоследствии Dataflash_ToggleSelectedChipCS()
  • Low level API демо устройства MIDI больше не блокируется, если событие изменения ноты отправлено, когда конечная точка не готова
  • Pipe_GetErrorFlags() теперь возвращает дополнительные флаги ошибки для переполнения (overflow) и недополнения (underflow)
  • Функции потока канала теперь автоматически устанавливают токен канала, так что можно использовать двунаправленные каналы
  • Pipe_ConfigurePipe() теперь автоматически настраивает по умолчанию каналы IN так, что они принимают бесконечно запросы IN, это можно поменять вызовом имеющейся функции Pipe_SetFiniteINRequests()
  • Изменены записи F_CLOCK в файлах makefile, так что они ссылаются по умолчанию на F_CPU, как и есть в большинстве случаев
  • Демки режима хоста теперь используют нормальные esc-коды терминала, так что текст всегда остается читаемым и вывод событий/программы визуально отличается от других используемых цветов переднего плана
  • Внутренняя обработка условий на-устройство изменена к сериям на-устройство, а не на группу обработки на-контроллер, для более точного внутреннего управления
  • В режиме устройства прерывания больше не запрещаются во время обработки запросов управления на конечной точке по умолчанию (с адресом 0)
  • Демки AudioOutput теперь всегда выводят информацию на светодиоды платы, независимо от режима вывода (удалена опция проекта AUDIO_OUT_LEDS)
  • Удалена опция времени компиляции SINGLE_DEVICE_CONFIGURATION для того, чтобы работала новая опция FIXED_NUM_CONFIGURATIONS, так что точное количество конфигураций можно задать статически
  • Удалены события VBUS, потому что они и так представлены приложению пользователя через обычные события соединения и отключения устройства
  • Переименованы и изменены существующие события для правильного разделения событий режимов хоста и устройства
  • Все демки переключены из режима стандарта GNU99 в режим C99, чтобы уменьшить зависимости от расширений языка "только GCC"

Исправлено:

  • Изменены бутлоадеры для использования FLASHEND, а не существующее RAMPZ, чтобы определить, если из-за дальних указателей FLASH нуждаются в исправлении бутлоадеры на некоторых микроконтроллерах USB AVR, где avr-libc неправильно задает RAMPZ
  • Изменен MassStorageHost для лучшей совместимости устройств (увеличен таймаут команды, изменено MassStore_WaitForDataReceived() только чтобы разморозить и проверить канал данных за один раз), чтобы предотвратить некорректные энумерации устройств и заморозки при передаче данных
  • Сделайте маскирование Pipe_ConfigurePipe() указанного номера конечной точки значением PIPE_EPNUM_MASK, чтобы убедиться, что бит направления конечной точки IN очищен для предотвращения порчи типа конечной точки
  • Исправлена проблема открытия портов CDC-ACM на хостах, где устройство CDC пытается отправить данные перед тем, как хост установит метод линейного кодирования
  • Исправлен, что опция USB_OPT_MANUAL_PLL игнорировалась во время отключений устройства на некоторых моделях (благодарю Brian Dickman)
  • Исправлено упоминание в документации функции Pipe_GetCurrentToken(), тогда как правильное имя функции - Pipe_GetPipeToken()
  • Исправлен драйвер ADC для ATMEGA32U4 и ATMEGA16U4 (благодарю Opendous Inc.)
  • Исправлено демо CDCHost, размораживающее каналы в точке конфигрурации, а не использования
  • Исправлено демо MassStorage, не очищающее флаг сброса, когда выдается Mass Storage Reset при необработанной команде
  • Исправлена USB_Host_SendControlRequest(), не приостанавливающая заново (re-suspending) шину USB, когда устройство первоначально делает ошибку при ожидании готовности
  • Исправлен регулятор напряжения USB Pad, не запрещаемый на некоторых моделях AVR, когда используется опция USB_OPT_REG_DISABLED
  • Исправлено, что изменение режим хоста на режим устройства UID не вызывало событие рассоединения USB Disconnect, когда было подключено устройство
  • Исправлены демки Mouse/Keyboard, не выполняющие корректное вычисление периода ожидания на правильные времена (благодарю Brian Dickman)
  • Исправлен GenericHID, ошибающийся на проверке класса HID из-за некорректних значений логического минимума и логического максимума (благодарю Sшren Greiner)
  • Исправлены некорректные маски PIPE_EPNUM_MASK, вызывающие ошибки каналов на устройствах с адресами конечной точки 8 и выще (благодарю John Andrews)
  • Исправлены проблемы выравнивания данных репорта в демо MouseHostWithParser, когда размер данных перемещения X и Y не кратен 8 битам
  • Исправлен парсер дескриптора репорта HID, некорректно сбрасывающий внутренние состояния, когда встретился элемент REPORT ID
  • Исправлен некорректный BUTTONS_BUTTON1 для цели STK526
  • Исправлены демки RNDIS, замораживавшиеся при попытке открытия более чем одного содинения одновременно, что вызывало порчу памяти
  • Исправлено демо USBtoSerial, принимающее шум от USART, когда верхние нагрузочные резисторы (pull-up) не были разрешены

Версия 090605

  • Исправлен баг в демках RNDISEthernet и DualCDC, не использующих правильную структуру USB_ControlRequest для данных запроса управления
  • Исправлена документация, неправильно показывающая режимы USB в списке поддерживаемых AVR
  • Исправлен RNDISEthernet, не работающий в Linux, потому что Linux требовал "необязательного" запроса RNDIS, который не обрабатывался
  • Исправлены демки Mouse и Keyboard, не работающие в соответствии со спецификацией HID для периода ожидания (благодарю Brian Dickman)
  • Удалена поддержка неуправляющих прерываний конечной точки/канала; они не работали так, как ожидали пользователи и имели много тонких проблем
  • Исправлен режим устройства, не обрабатывающий запросы части 9 - Set Feature и Clear Feature, которые адресовались устройству (благодарю Brian Dickman)
  • Перемещена обработка прерываний управляющей конечной точки в саму библиотеку, разрешение этого через новый токен INTERRUPT_CONTROL_ENDPOINT token
  • Исправлен CDCHost, не очищающий сконфигурированные каналы и сбрасывающий маску сконфигурироанных каналов, когда пропускается неполностью энумерованный, неверный интерфейс CDC
  • Выяснен размер токенов библиотеки, которые принимали значния типа integer на странице токенов времени компиляции (Compile Time Tokens), значения теперь имеют внутри библиотеки самый маленький тип, который только возможен для удержания заданных значений - для экономии памяти
  • Удален макрос DESCRIPTOR_ADDRESS(), поскольку он был лишним и поддерживался только для запутывания кода
  • Переписана система событий для удаления всех макросов, чтобы сделать код пользователя более ясным
  • Исправлена неправильная маска ENDPOINT_EPNUM_MASK, которая не давала выбрать конечные точки свыше EP3 (благодарю Jonathan Oakley)
  • Удален макрос STREAM_CALLBACK() - функции обратного вызова callback теперь используют обычные определения функций, чтобы сделать код пользователя понятнее
  • Удален макрос DESCRIPTOR_COMPARATOR() - компараторы должны теперь использовать обычные определения функций, чтобы сделать код пользователя понятнее
  • USB_IsConnected теперь очищается перед запуском события USB_Disconnect(), в ответ на удаление VBUS
  • Исправлено некорректное значение PID, используемое в проекте USBtoSerial (благодарю Phill)
  • Удален StdDescriptors.c, переименованы USB_GetDescriptor() в CALLBACK_USB_GetDescriptor, перенесен ConfigDescriptor.c/.h из папки LUFA/Drivers/USB/Class/ в LUFA/Drivers/USB/HighLevel/ - чтобы подготовиться к новому USB class API
  • Перемещены файлы, несущие функционал библиотеки, из каждого демо (например, библиотека кольцевого буфера) в папки /Lib для улучшения структуры директорий
  • Удалено Tx прерывание из демо USBtoSerial; теперь символы отправляются по опросу, чтобы выделить больше времени прерыванию Rx
  • Исправлены ошибки энумерации из повторяющихся циклов, из которых иногда нельзя было выйти, если соединение USB было разорвано перед тем, как условие выхода (exit condition) станет true

Версия 090510

  • Добавлено новое демо GenericHIDHost
  • Исправления в обработке каналов демок KeyboardHost и MouseHost, для замораживания и размораживания каналов данных в точке использования
  • Демки KeyboardHost, MouseHost и GenericHIDHost теперь сохраняют и восстанавливают текущий выбранный канал внутри ISR канала
  • Изменено демо устройства GenericHID для использования шедулера LUFA, добавлены опции времени компиляции INTERRUPT_DATA_ENDPOINT и INTERRUPT_CONTROL_ENDPOINT
  • Все комментарии в билиотеке, бутлоадерах, демках и проектах теперь проверены на орфографические ошибки и опечатки
  • Добавлено новое определение PIMA_DATA_SIZE() в демо Still Image Host
  • Добавлен вызов MassStore_WaitForDataReceived() в MassStore_GetReturnedStatus(), чтобы убедиться в приеме CSW в течение расширенного таймаута MSC - перед тем как продолжить, для предотвращения длительных задержек обработки, которые вызвают ранний обрыв работы MassStore_GetReturnedStatus() (благодарю Dmitry Maksimov)
  • Перемещены StdRequestType.h, StreamCallbacks.h, USBMode.h из папки драйвера LowLevel USB в папку драйвера HighLevel USB, где более подходящее для них место
  • Удалены все двоичные константы и заменены на десятичные или шестнадцатеричные, чтобы непропатченные компиляторы GCC все еще могли скомпилировать для себя пропатченный и рекомпилированный код
  • Добавлены препроцессорные проверки и документация в бутлоадеры, предоставляющие информацию о пропущенных определениях SIGNATURE_x из-за устаревших версий avr-libc
  • Добавлена в CDCHost поддержка устройств с несколькими интерфейсами CDC, у которых нет корректного типа ACM, предшествующего желаемому интерфейсу ACM CDC
  • Исправлено демо GenericHID, не запускающее поддержку USB и HID, когда используются режимы без участия прерываний (благодарю Carl Kjeldsen)
  • Исправлено демо RNDISEthenet, проверяющее некорректрное поле сообщения для ограничений размера пакета (благодарю Jonathan Oakley)
  • Исправлен код WriteNextReport в демо GenericHIDHost, использующий некорректный тип параметра и не выбирающий корректную конечную точку
  • Подстроены вычисления таймера выборки CTC в демках AudioOutput и AudioInput для соответствия вычислениям CTC в даташите AVR, и исправлены экземпляры, где округление вызывало недополнение (underflow) конечной точки (благодарю Robin Theunis)
  • Функция USB_Host_SendControlRequest() больше не выбирает автоматически канал управления Control (канал 0), так что можно использовать другие каналы типа управления с этой функцией
  • Задача поддержки хоста USB теперь сохраняет и восстанавливает текущий выбранный канал до и после выполнения задачи
  • Исправлена подпрограмма записи репорта демо GenericHIDHost, некорректно работающая для запросов управляющего типа (благодарю Andrei Krainev)
  • Удалены Endpoint_ClearCurrentBank() и Pipe_ClearCurrentBank() для новых макросов Endpoint_ClearIN(), Endpoint_ClearOUT(), Pipe_ClearIN() и Pipe_ClearOUT() macros (сделано для того, чтобы позволить детектирование пакетов нулевой длины)
  • Переименованы макросы *_ReadWriteAllowed() в *_IsReadWriteAllowed(), чтобы оставалась целостной остальная часть LUFA API
  • Макрос Endpoint_IsSetupReceived() переименован в Endpoint_IsSETUPReceived(), макрос Endpoint_ClearSetupReceived() переименован в Endpoint_ClearSETUP(), макрос Pipe_IsSetupSent() переименован в Pipe_IsSETUPSent() и макрос Pipe_ClearSetupSent() больше не доступен и должен быть удален - изменения сделаны для совместимости с новым управляющим API поддержки банков конечной точки и канала
  • Обновлены все демо, бутлоадеры и проекты для использования нового API поддержки конечных точек и каналов (благодарю Roman Thiel из Curetis AG)
  • Обновлена документация doxygen библиотеки, добавлены группы, изменены макро-функции на реальные функции - для ясности
  • Удалены старые алиасы на подпрограммы чтения/записи/отбрасывания конечной точки и канала, которые не имели явного указания порядка байт
  • Удален файл заголовка ButtLoadTag.h, поскольку его никто не использовал по назначению
  • Переименована главная папка Drivers/AT90USBXXX в Drivers/Peripheral, переименован драйвер Serial_Stream в SerialStream
  • Исправлено замерзание в демках CDC и USBtoSerial, где буферы заполнялись при все еще идущих передаче или приеме (благодарю Peter Hand)
  • Удалена секция "Host_" в именах функций файла ConfigDescriptor.h, так как большинство подпрограмм теперь можно использовать в режиме устройства на дескрипторе устройства
  • Переименованы функции в парсере HID, чтобы они имели префикс "USB_" и акроним "HID" в имени
  • Исправлены некорректные значения класса и подкласса интерфейса HID в демках Mouse и KeyboardMouse (благодарю Brian Dickman)
  • Капитализированы префиксы "Descriptor_Search" и "Descriptor_Search_Comp" значений в перечислениях DSearch_Return_ErrorCodes_t и DSearch_Comp_Return_ErrorCodes_t
  • Удалено "ERROR" из имен в перечислениях кодов ошибок конечной точки и канала
  • Переименовано перечисление USB_PowerOnErrorCodes_t в USB_InitErrorCodes_t, переименовано значение POWERON_ERROR_NoUSBModeSpecified перечисления в USB_INITERROR_NoUSBModeSpecified
  • Переименовано событие USB_PowerOnFail в USB_InitFailure
  • Переименованы функции заголовка OTG.h для большего соответствия остальному API библиотеки
  • Изменены все устаревшие инициализаторы тегов структур GCC в стандартизованный формат C99 (благодрю Mike Alexander)
  • Переименован USB_HostRequest в USB_ControlRequest, весь заголовок управляющего запроса теперь читается в USB_ControlRequest режима устройства в отличие от передачи библиотекой в приложение только частично прочитанных данных заголовка
  • В событии USB_UnhandledControlPacket удалены его параметры в пользу доступа к новой структуре USB_ControlRequest
  • Функции управления конечной точкой потока теперь корректно отправляют ZLP (пакет нулевой длины) к хосту, когда имеется меньше данных, чем запрошено
  • Исправлено, что флаг USB_RemoteWakeupEnabled никогда не устанавливается (запрос REMOTE WAKEUP Set Feature не обрабатывался)
  • Переименован токен времени компиляции FEATURELESS_CONTROL_ONLY_DEVICE в CONTROL_ONLY_DEVICE
  • Конфигурация конечной точки теперь очищена для получения лучшего вывода, когда все конфигурации имеют статические входы - удален бесполезный теперь токен времени компиляции STATIC_ENDPOINT_CONFIGURATION
  • Исправлена функция инициализации драйвера SPI, не очищающая бит SPI2X, когда он не нужен
  • Исправлена команда PREVENT ALLOW MEDIUM REMOVAL, выдаваемая в демо MassStorageHost, использоующая некорректные параметры (благодарю Mike Alex)
  • Исправлено демо MassStorageHost, где была ошибка в неправильной проверке оператора if подпрограммы MassStore_GetReturnedStatus()
  • Исправлен обратный порядок байт сигнатуры в бутлоадере CDC (благодарю Johannes Raschke)
  • Изменен PIPE_CONTROLPIPE_DEFAULT_SIZE с 8 на 64 в попытке устранить проблемы с ошибкой устройств, которые не соответствуют указанному значению wLength, когда читается дескриптор устройства
  • Исправлен пропуск точки с запятой в ATAVRUSBRF01 кода драйвера светодиода платы (благодарю Morten Lund)
  • Изменен код драйвера светодиода платы для определения пустых масок LED четырех светодиодов платы, так что код может быть скомпилирован без модификаций кода для плат, у которых светодиодов меньше четырех (благодарю Morten Lund)
  • Изменен драйвер HWB платы в драйвер Buttons, чтобы разрешить поддержку будущих плат с количеством кнопок GPIO больше одной
  • Драйвер последовательного порта теперь корректно вычисляет значение регистра скорости в режиме двойной скорости
  • Функция Init драйвера последовательного порта теперь static inline, чтобы создавать код меньшего размера для общего случая статических значений инициализации

Версия 090401

  • Исправлен проект MagStripe, где в дескрипторе конфигурации содержался неиспользуемый (пустой) дескриптор конечной точки
  • Объединены в makefile изменения от Denver Gingerich, чтобы сохранить совместимость с другими (не WinAVR) установками AVR-GCC
  • Исправлены цели makefile для программирования данных EEPROM, которые также программировали дополнительно и данные FLASH
  • Устройства LUFA теперь корректно энумеруются хостами LUFA
  • Исправлена подпрограмма поиска дескриптора конфигурации, зависающая, когда компаратор делает возврат с ошибкой
  • Удален элемент serial dump репорта HID в MouseHostWithParser и KeyboardHostWithParser - он был полезен только для отладки, и слишком сильно замедлял энумерацию устройств HID
  • Увеличено до 8192 количество бит на трек, которые можно прочитать в проекте MagStripe, когда он компилируется для чипа AT90USBXXX6/7
  • Исправлено демо KeyboardMouse, отбрасывающее значение wIndex в запросе REQ_GetReport
  • Демо USBtoSerial теперь отбрасывает все принятые Rx данные, когда нет подключения к хосту USB, а не буферизирует символы для передачи их при подключении к хосту
  • Добавлена новая константа времени компиляции F_CLOCK в библиотеку и файлы makefile, для предоставления сырых входных тактов (используемых для подачи на PLL перед тем, как делается любой прескалинг тактов), так что можно определить маску прескалера PLL
  • Изменен счетчик таймаута ожидания потока на 16 бит, так что можно установить очень долгие периоды таймаута для корректных коммуникаций с плохо спроектированными хостами или устройствами, которые значительно превышают лимиты спецификации USB
  • Демо хоста Mass Storage теперь использует USB_STREAM_TIMEOUT_MS в две секунды для сохранения совместимости с плохо спроектированными устройствами
  • Атрибут функции ATTR_ALWAYSINLINE переименован в ATTR_ALWAYS_INLINE для совпадения с системой именования других макросов атрибутов функций
  • Добавлен атрибут ATTR_ALWAYS_INLINE к нескольким inline компонентам библиотеки нескольких ключей, чтобы гарантировать, что они встроены inline при всех обстоятельствах
  • Удален макрос SetSystemClockPrescaler(), макрос clock_prescale_set() avr-libc скорректирован в недавних версиях avr-libc
  • Исправлены неправильные/пропущенные стадии статуса передач в демках, бутлоадерах и приложениях (благодарю Nate Lawson)
  • Токен времени компиляции NO_CLEARSET_FEATURE_REQUEST переименован в FEATURELESS_CONTROL_ONLY_DEVICE, и эта функция расширена для удаления запросов Get Status части 9 для дальнейшего уменьшения размера кода
  • Обновлен makefile для включения вывода, выдающего выбранное в настоящий момент значение параметра BOARD
  • Драйвер Dataflash теперь позволяет применять микросхемы dataflash, которые используют разные сдвиги для установки текущего адреса страницы/байта (благодарю Kenneth Clubb)
  • Добавлены функции DataflashManager_WriteBlocks_RAM() и DataflashManager_ReadBlocks_RAM() в демо MassStorage, чтобы позволить реализацию простого интерфейса с библиотекой FAT уровня доступа файлов dataflash
  • Скорректирован бутлоадер класса CDC для исправления некоторых багов, изменен счетчик адреса сохранения x2 адресов - для удобства
  • Исправлены опечатки в масках SPI-драйвера SPI_SPEED_FCPU_DIV_64 и SPI_SPEED_FCPU_DIV_128 (благодарю Markus Zocholl)
  • Демки устройств Keyboard и Mouse (обычные, с прерываниями по данным, и полностью работающая по прерываниям) объединены в унифицированные демки клавиатуры и мыши
  • Демки хоста Keyboard и Mouse (обычные и с обработкой данных по прерываениям) скомбинированы в унифицированные демки клавиатуры и мыши
  • Удален проект AVRISP_Programmer из-за проблем с качеством кода
  • Исправлено демо CDC, не отправляющее пустой пакет после каждой передачи, чтобы предотвратить буферизирование хостом приходящих данных
  • Исправлены опечатки в докумендации и препроцессорных проверках, связанные с неправильным интерпретированием токена USE_RAM_DESCRIPTORS (благодарю Ian Gregg)
  • Исправлен USBTask.h, не включающий по условию HostChapter9.h только когда задан USB_CAN_BE_HOST (благодарю Ian Gregg)
  • Исправлена некорректная манипуляция с регистром инициализации в драйвере ADC (благодарю Tobias)
  • Добавлено новое демонстрационное приложение устройства GenericHID
  • Исправлена функция SImage_SendData() хоста Still Image, не очищающая банк канала после чтения данных

Версия 090209

  • Режим таймера PWM в демо AudioOut изменен на Fast PWM для скорости
  • Обновлен проект Magstripe для работы с последней ревизией аппаратуры
  • Исправлено, что библиотека не отвечает корректно на флаг BCERRI в режиме хоста, что приводило к зависанию устройства
  • Исправлена обработка библиотекой запросов Get Descriptor (получение дескриптора), когда они не адресуются к устройству или интерфейсу (благодарю Nate Lawson)
  • Исправлена серьезная проблема порчи данных демо MassStorage, в подпрограмме записи dataflash
  • Добавлен новый токен времени компиляции NO_CLEARSET_FEATURE_REQUEST
  • Задача USB теперь после своего выполнения восстанавливает предыдущее состояние глобальных прерываний, вместо принудительного разрешения глобальных прерываний
  • Исправлено, что событие USB_DeviceEnumerationComplete запускается после каждого изменения конфигурации, в отличие от срабатывания при первоначальной конфигурации
  • Добавлен макрос ENDPOINT_DOUBLEBANK_SUPPORTED() в Endpoint.h, изменен ENDPOINT_MAX_SIZE(), чтобы позволить пользователю указать конечную точку
  • ENDPOINT_MAX_ENDPOINTS изменен в ENDPOINT_TOTAL_ENDPOINTS, PIPE_MAX_PIPES изменен в PIPE_TOTAL_PIPES
  • Функции конечной точки и канала неуправляющего потока теперь перед чтением или записью удостоверяются в готовности конечной точки или канала
  • Изменен бутлоадер Teensy для использования сброса по watchdog для выхода, в отличие от программного перехода
  • Исправлена целочисленная ошибка продвижения в демках MassStorage и MassStorageHost, вызывающая порчу передач чтения/записи
  • SPI_SendByte теперь SPI_TransferByte, добавлены новые функции SPI_SendByte и SPI_ReceiveByte для быстрой односторонней передачи
  • Демо MassStorage изменено для использования быстрых односторонних передач SPI для увеличения пропускной способности
  • Улучшена поддержка запроса класса Mass Storage Reset в демо MassStorage
  • Изменен код чтения блока демо MassStorage для скорости
  • Добавлен глобальный флаг USB_IsSuspended
  • Упрощен внутренний код библиотеки USB для двойного режима (Dual Mode OTG) для уменьшения размера кода
  • Увеличен период таймаута потока с 50 мс до 100 мс
  • Команды демо хоста Mass Storage теперь всегда возвращают код ошибки из перечисления Pipe_Stream_RW_ErrorCodes_t
  • Добавлен параметр SubErrorCode в событие USB_DeviceEnumerationFailed
  • Прерывние падения напряжения VBUS теперь запрещено во время перадачи с ручного на авто VBUS handoff
  • Упрощена поддержка нижнего уровня, так что режимы устройства и хоста используют тот же самый код инициализации
  • Добавлен обход проблемы устройств Mass Storage, которыые не реализуют требуемый запрос GET_MAX_LUN
  • Удалено из-за ошибок приложение Telnet из демо RNDIS
  • Перенесены запросы класса Mass Storage демо хоста Mass Storage в функции обертки MassStoreCommands.c
  • Исправлен некорректное значение размера команды SCSI в команде Request Sense, файл MassStoreCommands.c
  • Добавлен запрос SetProtocol в класс HID демо без парсера Mouse и Keyboard, для принуждения устройств использовать корректный протокол загрузки (Boot Protocol)
  • Добавлены новые цели программирования "dfu" и "flip" в файлы makefile проектов
  • Скорректирована опечатка элемента перечисления HID_PARSE_Sucessful, исправлено на HID_PARSE_Successful
  • Изменен элемент структур COLLECTION в парсере дескриптора HID, чтобы включить значение коллекции Usage Page
  • Драйвер последовательного порта теперь устаналивает линию Tx как выход, разрешает нагрузочный резистор pull-up на линии Rx
  • Исправлено на младших USB AVR возникновение нескольких событий соединений и разъединений, когда запрещен NO_LIMITED_CONTROLLER_CONNECT
  • Добавлена HOST_DEVICE_SETTLE_DELAY_MS чтобы дать хосту задержку между подключением устройства и его энумерацией
  • Исправлено демо KeyboardHostWithParser, линковавшееся с неверными глобальными переменными
  • Завершена документация doxygen библиотеки, для оставшейся части бутлоадеров, демок и проектов
  • Исправлен некорректный адрес старта в бутлоадере TeensyHID
  • Добавлено, что кнопка HWB делает ASCII дамп всего диска в демо MassStoreHost
  • Заменены вызовы printf_P(PSTR("%c"), {Variable}) на putchar(<Variable>) для скорости и экономии места
  • Драйвер последовательного порта теперь принимает скорости размера свыше 16 бит с добавлением флага опции двойной скорости
  • Исправлена некорректная величина возврата callback abort в файле Pipe.c
  • Добавлены новые цели flip-ee и dfu-ee для файлов makefile (с любезности Opendous Inc.)
  • Удален из бутлоадера TeensyHID код перезагрузки при разъединении, что вызывало проблемы на некоторых системах
  • Исправлены демки AudioOutput и AudioInput, зацикливающиеся на данных конечной точки, вместо того, чтобы обработать выборку за один раз и сделать возврат каждый раз, когда задача запускается, чтобы позволить другим задачам быть выполнеными
  • Добавлена поддержка для платы Atmel ATAVRUSBRF01
  • Добавлен проект программатора AVRISP, по любезности Opendous Inc.
  • Исправлено демо хоста CDC, не делающее поиск конечных точек через и оба интерфейса CDC
  • Исправлена некорректная длина строкового дескриптора продукта в бутлоадере класса DFU

Версия 081224

  • Старое название библиотеки MyUSB изменено на LUFA, "Lightweight USB Framework for AVRs" (облегченный фреймворк USB для AVR)
  • Исправлена задержка MassStore_SendCommand() в некорректном месте демо хоста Mass Storage
  • Исправлено демо USBtoSerial, не вызывающее ReconfigureUSART() после изменения кодирования в линии
  • Исправлен бесконечный цикл в режиме хоста при передаче управляющих данных от хоста к устройству на стадии данных
  • Парсер репорта HID теперь поддерживает устройства с несколькими репортами в одном интерфейсе через идентификаторы ID репорта
  • Исправлен некорректный порядок определений макросов драйвера светодиода платы RZUSBSTICK, вызывающий проблемы компиляции
  • Вызов USB_Init(), когда интерфейс USB уже сконфигурирован, теперь вызывает полный сброс интерфейса и энумерацию заново - это исправляет, что булоадер MyUSB DFU не переключается корректно в режим кода приложения, когда импользуется программный сброс
  • Исправлено предупреждение "No newline at end of file", когда разрешены функции обратного вызова потока
  • Бутлоадер DFU теперь использует фиксированные байты сигнатуры на устройство, в отличие от чтения их динамически для размера
  • Добавлены новые переключатели FIXED_CONTROL_ENDPOINT_SIZE и USE_SINGLE_DEVICE_CONFIGURATION для статического определения основных значений и уменьшения скомпилированного двоичного размера кода
  • Добавлен новый переключатель NO_LIMITED_CONTROLLER_CONNECT для предотвращения библиотеки от попыток определить состояния соединения шины из событий приостановки (suspension) и пробуждения (wake up) на младших моделях USB AVR
  • В документацию добавлены общие токены времени компиляции всей библиотеки
  • В документацию добавлен обзор шедулера (планировщика) LUFA
  • Удален токен времени компиляции MANUAL_PLL_CONTROL, замененный маской для параметра Options USB_Init()
  • Бутлоадер CDC теперь использует корректные не дальние (non-far) или дальние (far) версии функций pgm_* в зависимости от того, задана ли RAMPZ
  • Документация Doxygen теперь содержит документацию по всем проектам, бутлоадерам и большинству демок, включенных в библиотеку
  • Бутлоадер CDC теперь запускает приложение пользователя, когда отключается USB, а не ожидает аппаратного сброса
  • MouseHostWithParser и KeyboardHostWithParser теперь поддерживают устройства с несколькими репортами
  • Демо RNDIS может теперь закрыть корректно соединения, используя новый макрос TCP_APP_CLOSECONNECTION() - используется в Webserver
  • Исправлен бутлоадер DFU, больше не зависающий, когда основной файл программируется в AVR, ускорены чтение/запись
  • Исправлено реверсирование вверх/вниз мыши/джойстика - координаты HID мыши X/Y используют выровненную влево систему координат, а не нормальную выровненную вправо систему координат
  • Добавлен код заглушки в демки CDC и USBtoSerial, показывающий, как читать и устанавливать линии RS-232 handshake - в настоящий момент не использующийся в коде примеров, но вместо этого определенный в коде примера
  • Прерывения теперь запрещаются, когда обрабатываются запрос управления в режиме устройства, чтобы избежать превышения строгих требований ограничения времени управляющего запроса
  • Все демки теперь используют центральную функцию StatusUpdate(), а не прямой вызов функций светодиодов платы, так что демки могут быть просто изменены, чтобы показать разные комбинации LED (или вообще делать что-то другое), как только меняется состояние демо
  • Удалены команды LED из бутлоадера CDC, не используемые большинством управляющего программного обеспечения AVR910
  • Исправлены запросы ICMP ping в демо RNDIS, возвращающие назад некорректные данные
  • Добавлен код сервера DHCP в демо RNDIS, что позволяет автоматически конфигурировать hands-free на любом PC
  • Исправлено значение PID бутлоадера DFU для ATMEGA16U4 AVR
  • Функции конфигурирования конечных точек и каналов теперь возвращают код ошибки, показывающий успех или ошибку
  • USB Reset в режиме устройства теперь сбрасывает и запрещает все конечные точки устройства
  • Добавлены промежуточные состояния в машину хоста, уменьшено время блокирования задачи USB более чем на 1 мс на явный вызов, в режиме работы как хост
  • Добавлена поддержка микроконтроллера ATMEGA32U6
  • Добавлена опция времени компиляции STATIC_ENDPOINT_CONFIGURATION, разрешенная в бутлоадерах для минимизирования размера кода
  • Удален избыточный код из GetStatus() устройства USB, часть 9 подпрограммы обработки
  • Добавлен новый бутлоадер TeensyHID, совместимый с протоколом Teensy HID (http://www.pjrc.com/teensy/)
  • Версии теперь нумеруются по дате релиза, в отличие от произвольных номеров ревизии major/minor
  • USB_RemoteWakeupEnabled теперь корректно устанавливается и очищается запросами от хоста SetFeature и ClearFeature
  • Изменен прототип GetDescriptor, так что он теперь возвращает размер дескриптора (или ноль, если дескриптор не существует), в отличие от передачи обратно вызывающему коду размера через параметр, и возврата значения boolean

Версия 1.5.3 - вышла 2 октября 2008

  • Исправлено, что CDC бутлоадер неуместно использует марос pgmspace для некоторых дескрипторов
  • Обновлены все демки устройств Mouse и Keyboard для включения поддержки протокола загрузки (boot protocol) - теперь устройство работает в BIOS
  • Переименованы папки бутлоадера для удаления пробелов, которые вызывали проблемы сборки на некоторых операционных системах
  • Удалены строки серийного номера из всех примеров, кроме демо MassStore, где он нужен - пользователи не модифицируют код, чтобы либо пропустить дескриптор, либо использовать уникальный серийный номер на устройство, что вызывало проблемы, когда одновременно подключены несколько одинаковых устройств
  • Демки AudioOutput и AudioInput теперь корректно глушат конечные точки, когда они не разрешены хостом
  • Добавлено демо KeyboardMouse (функционал клавиатуры и мыши, скомбинированный в одном демо)
  • Добавлена папка DriverStubs в домашние шаблоны драйвера уровня платы, чтобы проще делать совместимые с MyUSB пользовательские драйвера платы
  • Расширено демо MassStorage для поддержки нескольких LUN, 2 по умолчанию
  • Исправлена некорректная маска адреса устройства, что не позволяло устройствам пройти энумерацию, если адреса превышали 63
  • Исправлена некорректная маска направления данных в стандартном запросе GetStatus, что не позволяло его обработать
  • Исправлен некорректный стандартный запрос GetStatus для конечных точек, теперь корректно возвращается статус STALL конечной точки
  • Добавлены новые флаги USB_RemoteWakeupEnabled и USB_CurrentlySelfPowered, в отличие от использования фиксированных значений
  • Добавлено демо DualCDC для демонстрации использования дескрипторов связи интерфейсов (Interface Association Descriptor)
  • Добавлено API детектирования и очистки NAK канала
  • Добавлено API прерывания изменения статуса канала (NAK, STALL, и т. п.)
  • Исправлено демо MassStorageHost, которое больше не замерзает случайным образом, когда выдается несколько команд в строке
  • Подпрограммы дескриптора конфигурации демок теперь возвращают уникальный код ошибки, когда возвращаемые данные не имеют правильный заголовок дескриптора конфигурации
  • Добавлены функции Endpoint_WaitUntilReady() и Pipe_WaitUntilReady()
  • Функции потока теперь имеют программные таймауты, период таймаута можно установить токеном USB_STREAM_TIMEOUT_MS
  • Все демки теперь проходят автоматический тест USB.org часть 9 на совместимость устройств
  • Все демки HID теперь проходят автоматический тест USB.org часть 9 на совместимость HID
  • В демках, основанных на CDC, интервал опроса конечных точек прерывания изменен на 0xFF для исправления проблемы с системами Linux
  • Изменены функции потока, чтобы принять новую функцию обратного вызова, которая использует NO_STREAM_CALLBACKS, чтобы запретить все функции обратного вызова
  • Изменены подпрограммы поддержки dataflash в демо Mass Storage для использования функций потока конечной точки
  • Добавлены файлы проекта AVRStudio к каждому демо в дополнение к существующему главному файлу проекта Programmer's Notepad
  • Заново добавлен вызов ReconfigureUSART() в запрос SetLineCoding проекта USBtoSerial, чтобы изменения скорости отражались в аппаратуре (ранее изменения терялись)

Версия 1.5.2 - вышла 31 июля 2008

  • Исправлена функция SwapEndian_32() в Common.h, так что она теперь работает корректно (была ошибка в типах параметра)
  • Обновлено демо RNDIS - конечная точка оповещения больше не блокируется, так что работает с ошибочными реализациями Linux RNDIS (где конечная точка оповещения игнорируется в пользу опроса конечной точки управления)
  • Исправлено некорректно возвращаемое значение строки дескриптора вендора в демо RNDIS для OID токена OID_GEN_VENDOR_DESCRIPTION
  • Добавлены очень простые стек TCP/IP и сервера HTTP/TELNET в демо RNDIS
  • Исправлен выход из бутлоадера DFU, который ранее вызывал сообщение об ошибке записи в программе поддержки программирования
  • Исправлен бутлоадер DFU, который в режиме программирования EEPROM стирал первую страничку памяти flash
  • Исправлен код обработки стандартного запроса устройства Clear/Set Feature (в процессе исправления демо MassStorage)
  • Добавлена поддержка микроконтроллера ATMEGA16U4 AVR
  • Лицензия библиотеки изменена с LGPLv3 на MIT

Версия 1.5.1 - вышла 31 июля 2008

  • Изменены демки хоста для разрешения задаче функционирования хоста запускать событие USB_DeviceEnumerationComplete, а не событие USB_DeviceAttached
  • Стек использования HID (HID Usage Stack) теперь принудительно очищается после полной обработки элемента IN/OUT/FEATURE, чтобы полностью удалить любые упоминаемые по ссылке, но не созданные usage (применения)
  • Изменены USB_INT_DisableAllInterrupts() и USB_INT_ClearAllInterrupts(), USB_Host_GetNextDescriptorOfType(), USB_Host_GetNextDescriptorOfTypeBefore(), USB_Host_GetNextDescriptorOfTypeAfter() в нормальные функции (раньше они были inline)
  • Исправлено демо USBtoSerial, которое не отправляло данные, только принимало
  • Исправлен главный файл makefile чтобы он по умолчанию собирал все, исправлен регистр имени папки MagStripe для предотвращения проблем с путями
  • Функции ConfigDescriptor сделаны нормальными, вместо static inline
  • Функции канала/конечной точки *_Ignore_* изменены на *_Discard_*, старые имена все еще присутствуют в качестве ссылок
  • Исправлено определение ENDPOINT_MAX_SIZE, чтобы оно было корректным для контроллеров USB AVR, на которых есть ограничения
  • Изменены подпрограммы трансляции размера конечной точки и канала для использования предыдущего каскадного кода IF/ELSE IF, новый арифметический подход был с ошибками и вызывал проблемы
  • Бутлоадеры теперь компилируются с опцией "маленькие функции без inline" для уменьшения размера кода
  • Аудио демки теперь используют корректные размеры конечной точки для полного и ограниченного контроллера USB AVR, двойной банк теперь используется в соответствии со спецификацией (изохронные конечные точки ДОЛЖНЫ быть с двойным банком)
  • Добавлен дескриптор связи интерфейсов (Interface Association descriptor) в StdDescriptors.h, основываясь на соответствующем USB2.0 ECN
  • Исправлено демо MIDI, скоректирован дескриптор аудиопотока (Audio Streaming descriptor), чтобы следовать MIDI-специфичной структуре AS
  • Исправлены дескрипторы демо класса HID, так что протокол интерфейса HID является 0x00 (требуется для устройств HID, не поддерживающих протокол boot) для предотвращения проблем на хостах, ожидающих поддержки протокола boot
  • Добавлены функции чтения/записи потока управления в Endpoint.h
  • Исправлено демо AudioOut, не устанавливающее правильно ножки порта как входы при отсоединении USB
  • Добавлено демо приложение RNDISEthernet

Версия 1.5.0 - вышла 10 июня 2008

  • Исправлено демо MIDI, теперь корректно ожидающее готовности конечной точки между несколькими сообщениями ноты
  • Добавлено демо приложение хоста CDC Host
  • Добавлено демо приложение KeyboardFullInt
  • Подпрограммы создания конечной точки и канала теперь маскируют размер конечной точки/канала маской размера, бит размера транзакции, не требуемых для подпрограмм (увеличивает совместимость с устройствами)
  • Исправлено демо AudioInput - теперь корректно отправляет оцифрованное аудио к хосту PC
  • Исправлено демо AudioOutput еще раз - очевидно, что Windows требует пакеты конечной точки >=192 байт
  • Уменьшен код шедулера алгоритма round-robbin путем использования указателей структуры, в отличие от индексов массива
  • Исправлена ошибка диапазона (off-by-one error) парсера репорта HID при определении - полон ли стек использования (Usage Stack)
  • Переименован Magstripe.h в MagstripeHW.h и драйвер перенесен из библиотеки и помещен в папку демо MagStripe
  • Добавлены препроцессорные проверки для разрешения линкования C компонентов библиотеки, когда используется компилятор C++
  • Добавлено демо приложение хоста Still Image
  • Задача устройства USB теперь восстанавливает ранее выбранную конечную точку, что позволяет прозрачно обработать запросы управления через прерывания, когда другие конечные точки обрабатываются путем опроса
  • Исправлен бутлоадер CDC, что сигнатуры устройства отправлялись в обратном порядке
  • Демки хоста теперь имеют раздельные файлы ConfigDescriptor.c/.h для обработки дескриптора конфигурации
  • Демки HostWithParser теперь имеют раздельные файлы HIDReport.c/.h для обработки и вывода дампа репорта HID
  • Удалены необязательные команды их демо MassStorage для экономии места под код, исправлено значение SENSE ResponseCode
  • Демки CDC теперь отправляют пустые пакеты после отправки заполненного, для предотвращения проблем буферизирования на хосте
  • Обновлены демо-дескрипторы для использования значений VID/PID, бесплатно предоставленных Atmel
  • Добавлена документация DoxyGen в файлы исходного кода
  • Исправлено определение Serial_IsCharReceived(), которое было ранее инвертированным
  • Удален отдельный дескриптор USB_Descriptor_Language_t, вместо этого используется USB_Descriptor_String_t
  • Удалена неиспользуемая структура дескриптора квалификатора устройства (Device Qualifier)
  • Переименовано событие USB_CreateEndpoints на более подходящее USB_ConfigurationChanged
  • Исправлено демо MassStorageHost, читающее данные блока наборот
  • Удалены устаревшие определения типов в StdRequestType.h, замененные макро-масками
  • Скорректированный OTG.h теперь подключается, когда AVR поддерживает режимы и хоста, и устройства, для создания проектов с поддержкой OTG
  • Событие USB_DeviceEnumerationComplete теперь также запускается в режиме работы устройства USB, и хост завершает его энумерацию
  • Демки, работающие под управлением прерываний, теперь правильно восстанавливают ранее выбранную конечную точку, когда ISR выполнен
  • Значение USB_HOST_TIMEOUT_MS может теперь быть заменено в makefile проекта пользователя на фиксированное ручное значение таймаута
  • Переименованы макросы USB_Host_SOFGeneration_* на более дружественные USB_Host_SuspendBus(), USB_Host_ResumeBus() и USB_Host_IsBusSuspended()
  • Переименованы макросы *_*_Is* в *_Is* для того, чтобы сделать полной проверку макросов, Pipe_SetInterruptFreq() теперь стал именоваться Pipe_SetInterruptPeriod() для использования корректной терминологии
  • Член UnicodeString структуры USB_Descriptor_String_t изменен на простой массив int, так что можно использовать строки юникода GCC (с префиксом L перед открывающей кавычкой) вместо явно заданных массивов символов ASCII
  • Исправлено, что конечные точки/каналы конфигурировались некорректно, если максимальный размер конечной точки/канала для выбранной модели USB AVR был указан как размер банка
  • Демки устройства HID теперь используют реально сырой массив для дескриптора репорта HID, в отличие от массива, обернутого в структуру
  • Добавлен макрос VERSION_BCD(), исправлены сообщаемые номера версия HID и USB в дескрипторах демо
  • Подчищена функция обработчика устройства части 9 GetDescriptor
  • Добавлен специфичный для класса запрос GET_REPORT в демки HID, чтобы сделать его совместимым с классом HID
  • Подчищена установка значений USB_IsInitialized и USB_IsConnected, это делается только когда необходимо
  • Удалены Atomic.c и ISRMacro.h; библиотека уже была совместима с только с недавней версией avr-lib-c по другим причинам
  • Все демки и функции библиотеки теперь используют USB-стандартизрованные имена для данных USB (bRequest, wLength, и т. п.)
  • Добавлен токен USE_NONSTANDARD_DESCRIPTOR_NAMES для переключения назад к нестандартным именам элементов дескриптора

Версия 1.4.1 - вышла 5 мая 2008

  • Усовершенствовано демо KeyboardWithParser, теперь печатаются нажатые цифробуквенные символы как в стандартном демо
  • Исправлено демо MassStorage, теперь корректно работают чтение/запись, использующие команды не "mode-10"
  • Скоректирован номер версии в Version.h

Версия 1.4.0 - вышла 5 мая 2008

  • Добавлено в библиотеку API парсера репорта HID
  • Добавлены демо-приложения Mouse и Keyboard, используя новый механизм парсера репорта HID
  • Добавлено демо MouseFullInt, демонстрирующее устройство мыши, которое работает полностью по прерываниям (включая запросы управления)
  • Исправлено некорректное значение длины в дескрипторе управления аудио демок AudioOutput и AudioInput
  • Добавлено в библиотеку демо-приложение устройства MIDI
  • Исправлена проблема, которая не давала устройствам USB возобновить работу при выходе из состояния приостановки (suspended)
  • Добавлен в библиотеку новый бутлоадер класса CDC, основанный на протоколе бутлоадера AVR109
  • Добавлен заголовок в каждое демо-приложение, показывающий режим, класс, подкласс, используемые стандарты и поддерживаемые скорости
  • Функции, подразумеваемых номеров конечных точек/каналов больше не маскируются автоматически масками ENDPOINT_EPNUM_MASK или PIPE_PIPENUM_MASK - это должно быть добавлено вручную в код, где необходимо
  • Исправлен бутлоадер класса DFU - скорректирована частота записей страницы flash, что значительно уменьшает время программирования
  • Переименован AVR_HOST_GetDeviceConfigDescriptor() в USB_Host_GetDeviceConfigDescriptor() и AVR_HOST_GetNextDescriptor() в USB_Host_GetNextDescriptor()
  • Добавлены новые подпрограммы USB_Host_GetNextDescriptorOfTypeBefore() и USB_Host_GetNextDescriptorOfTypeAfter()
  • Подпрограммы дескриптора конфигурации перенесены в MyUSB/Drivers/USB/Class/, в новый сопровождающий файл ConfigDescriptors.c
  • Добавлено новое API компаратора дескриптора для улучшенного парсинга дескриптора, обновлены демки хоста для использования нового API компаратора
  • Исправлен вывод емкости демо MassStorageHost, и изменен для устройств SCSI режим записи/чтения данных с little-endian в корректный big-endian
  • Исправлено противоречивое именование макросов/функций; USB_HOST теперь USB_Host, USB_DEV теперь USB_Device
  • Добавлены улучшенные сообщения об ошибках в демки хоста
  • Добавлена задерка в 10 микросекунд после адресации устройств в режиме хоста, для предотвращения перевода запросов управления в состояние stall

Версия 1.3.2 - вышла 1 апреля 2008

  • Добавлен вызов ReconfigureUSART() в запрос SetLineCoding демо USBtoSerial, так что изменения скорости отражаются в настройке аппаратуры
  • Исправлены демки CDC и USBtoSerial - команды потока не работают с конечными точками управления, и запрос GetLineCoding имел некорректную маску RequestType, что не позволяло обработать запрос
  • Улучшена надежность демо USBtoSerial, добавлено ожидание при занятости, когда буфер полон
  • Размер управляющей конечной точки теперь определяется из дескрипторов устройства, а не так как раньше - размер был фиксирован
  • Отделен код SPI в новый драйвер SPI в папке драйвера AT90USBXXX
  • Бутлоадер теперь возвращает корректный PID для выбранной модели USB AVR, а не просто AT90USB128X PID
  • Добавлена поддержка платы RZUSBSTICK
  • Драйвер Bicolour удален в пользу обычного драйвера LED светодиодов
  • Добавлена поддержка ATMEGA32U4 AVR
  • Добавлена опция времени компиляции MANUAL_PLL_CONTROL, чтобы предотвратить манипуляцию с PLL в коде библиотеки USB

Версия 1.3.1 - вышла 19 марта 2008

  • Исправлено демо USB <--> Serial - значение класса в дескрипторах было некорректным
  • Размер конечной точки управления изменен с 64 байт на 8 байт, чтобы уменьшить затраты RAM на USB FIFO и позволить правильную энумерацию для низкоскоростных устройств
  • Конечные точки данных демо USB <--> Serial изменены на двухбанковые 16-байтовые, чтобы позволить демо работать на USB AVR в ограниченным размером USB FIFO RAM
  • Изменены номера конечных точек для использования конечных точек 3 и 4 для двойного банка, чтобы позволить корректно работать устройствам USB на AVR с урезанным контроллером USB (AT90USB162, AT90USB82)
  • Обновлено демо Audio Out для использования таймера 1 для AVR, у которых нет таймера 3 для вывода PWM
  • Исправлена некорректная запись USB_DEV_OPT_HIGHSPEED в makefile демо-устройства Mass Storage
  • Исправлено демо Mass Storage для маленьких дополнительных скоростей передачи
  • Добавлены индикаторы LED в демо клавиатуры для Caps Lock, Num Lock и Scroll Lock
  • Добавлены функции Added Endpoint_Read_Stream, Endpoint_Write_Stream, Pipe_Read_Stream и Pipe_Write_Stream (включая варианты Big и Little Endian)
  • Функции Dataflash сделаны inline для скорости, удален пустой теперь файл драйвера Dataflash.c
  • Добавлен новый макрос SetSystemClockPrescaler() (благодарю Joerg Wunsch)
  • Исправлена Endpoint_ClearStall() для корректной работы на полнофункциональных контроллерах USB AVR (AT90USBXXX6/7)
  • Endpoint_Setup_In_Clear() и Endpoint_Setup_Out_Clear() больше не устанавливают FIFOCON, в соответствии с указаниями в даташите
  • Исправлены определения для прескалера PLL всех моделей AVR и всех частот
  • Исправлены определения ENDPOINT_INT_IN и ENDPOINT_INT_OUT
  • Добавлены демки устройств USB клавиатуры и мыши, работающие под управлением прерываний
  • Скомбинированы запросы USB_Device_ClearFeature и USB_Device_SetFeature в одну подпрограмму для экономии в размере кода
  • Добавлен в Pipe.h пропущенный макрос Pipe_GetCurrentPipe()

Версия 1.3.0 - вышла 7 марта 2008

  • Из режима устройства удалена ненужная конфигурация конечной точки
  • Исправлен интерпретатор стандартного запроса устройства, случайным образом обрабатывающий некоторые специфические для класса запросы
  • Добавлены опции времени компиляции USE_RAM_DESCRIPTORS и USE_EEPROM_DESCRIPTORS для указания библиотеке использовать дескрипторы, сохраненные в RAM или EEPROM, а не в памяти flash
  • Во всех демках теперь при сбросе запрещается watchdog для случая, если он был разрешен перемычками (fuse) или бутлоадером - опция USB_DEV_OPT_LOWSPEED теперь работает корректно
  • Добавлена возможность установить опции USB статически для уменьшения размера бинарного кода, с помощью определения времени компиляции USE_STATIC_OPTIONS
  • USB_Init больше не получает параметр Mode, если скомпилировано для устройства USB без опции режима хоста, или если принудительно включен частный режим через опции времени компиляции USB_HOST_ONLY или USB_DEVICE_ONLY
  • USB_Init больше не получает параметр Options, если опции статически сконфигурированы через USE_STATIC_OPTIONS
  • Endpoint_Ignore_* и Pipe_Ignore_* сделаны меньше размером путем создания пустой dummy переменной не volatile, так что компилятор может скомпилировать код более эффективно
  • Добавлено необязательное значение GroupID в каждую запись (задание?) шедулера, так что группы задач могли быть снова управляемыми через новую подпрограмму Scheduler_SetGroupTaskMode()
  • Добавлена поддержка моделей AVR микроконтроллеров AT90USB162 и AT90USB82
  • Добавлена поддержка плат STK525 и STK526
  • Добавлена поддержка Added пользовательких драйверов плат, такой драйвер выбирается по типу платы BOARD_USER, при этом драйвера платы помещаются в папку {Application Directory}/Board/
  • PLL теперь останавливается и такты USB замораживаются, когда происходит отсоединение от хоста в режиме устройства USB, с целью экономии питания
  • Определения проекта Joystick теперь засинхронизированы со схемами - ориентация изменена для USBKEY
  • Исправлен USB_DEV_IsUSBSuspended() - теперь проверяется корректный регистр
  • Исправлены передачи данных на устройство в режиме работы как хост
  • Переменованы USB_DEV_OPT_HIGHSPEED в USB_DEV_OPT_FULLSPEED и USB_HOST_IsDeviceHighSpeed() в USB_HOST_IsDeviceFullSpeed() для приведения в соответствие с официальным именам скоростей USB (чтобы избежать недопонимания насчет реального режима high speed, который недоступен на USB AVR)

Версия 1.2.0 - вышла 4 февраля 2008

  • Добавлено событие USB_DeviceEnumerationComplete в режим хоста
  • Добавлена новая подпрограмма Scheduler_Init для подготовки шедулера, чтобы задачи могли быть запущены и остановлены перед тем, как запускается шедулер (через Scheduler_Start)
  • События соединения и в режиме устройства, и в режиме хоста теперь работают по прерыванию, что позволяет остановить задачу поддержки USB, когда USB не подключена в режиме хоста или устройства
  • Все демки обновлены для остановки задачи USB, когда она не используется соответствующими событиями USB
  • Демо-приложение хоста Mass Storage обновлено для корректного функционирования со всеми flash-дисками USB
  • Демо-приложение хоста Mass Storage теперь выводит емкость и количество LUN на подключенном устройстве, и печатает первый блок в виде шестнадцатеричных чисел, а не как символы ASCII
  • Подпрограммы очистки конечной точки и канала теперь очищают флаги прерывания и статуса конечной точки/канала
  • Код обработки ошибки в перечислении машины состояния хоста сдвинут в один блок, для уменьшения сложности кода
  • Добавлены макросы DESCRIPTOR_TYPE, DESCRIPTOR_SIZE и DESCRIPTOR_CAST, чтобы яснее сделать обработку дескритора конфигурации в хостах USB и DESCRIPTOR_ADDRESS для удобства в устройствах USB
  • Добавлен макрос alloca в файл common.h, в случае, если пользователь использует старую версию avr-lib-c, в которой отсутствует этот макрос

Версия 1.3.0 - вышла 7 марта 2008

  • Исправлено прерывание DCONNI, которое случайным образом разрешается после сброса USB (событие USB reset)
  • Исправлено прерывание DDISCI, которое не запрещается, когда устройство не подключено
  • Добавлен обходной путь решения для pull-up устройств без собственного питания, в которых возникают ошибочные прерывания разъединения
  • Добавлено событие USB_DeviceEnumerationFailed в режим хоста
  • Подпрограмма AVR_HOST_GetDeviceConfigDescriptor больше не модифицирует ConfigSizePtr, если передается верный указатель на буфер
  • Добавлен ALLOCABLE_BYTES в DynAlloc, и добавлен код для того, чтобы сделать зависимым размер ключевого хранилища переменных от размера параметров памяти, передаваемых через makefile проекта пользователя
  • Исправлена некорректная подпрограмма сброса устройства, которая вызывается в USBTask
  • Теперь поддерживаются устройства, не подключающиеся в течение стандартной задержки 300 мс
  • Удален некорректный ATTR_PURE из Scheduler_SetTaskMode(), который не давал задачам запускаться/останавливаться, также как и USB_InitTaskPointer(), который повреждал двойные проекты USB устройство/хост
  • Изменен шедулер для использования имени задачи, а не идентификаторов ID для установки режима задачи, что устраняет необходимость иметь список ID задач
  • Прерывание перехода ID теперь генерирует соответствующее событие разъединения устройства/хоста, если устройство подключено
  • Исправлено двойное событие изменения VBUS (и VBUS -), когда происходит отключение в режиме устройства
  • Добавлена возможность запретить коды терминала ANSI путем задания DISABLE_TERMINAL_CODES в makefile
  • Удален возврат из функций ConfigurePipe и ConfigureEndpoint - используйте Pipe_IsConfigured() и Endpoint_IsConfigured() после вызова функций конфигурирования, чтобы определить успех результата
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines