Detailed Description
зависимости для исходного кода модуля
Следующие файлы должны быть скомпилированы с любым проектом, который использует этот модуль:
- LUFA/Drivers/USB/Class/Device/CDC.c (Имя модуля исходного кода для makefile: LUFA_SRC_USBCLASS)
 
модуля
Фреймворк-интерфейс драйвера класса USB режима устройства, для драйвера CDC USB Class.
- Note:
 - У стандартного USB-класса CDC-ACM есть несколько главных недостатков, однако он очень стандартизирован, и обычно доступен как встроенный драйвер на большинстве платформ, поэтому является лучшим выбором в сравнении с собственным классом serial.
 
Главная проблема с CDC-ACM - то, что требуется два дескриптора интерфейса, которые нарушат работу большинства узлов, когда CDC являются частью многофункционального "Составного" USB-устройства, поскольку каждый интерфейс будет загружен в отдельный экземпляр драйвера. Чтобы победить это, Вы должны использовать дополнение "Interface Association Descriptor" (дескриптор связи интерфейсов) стандарта USB, которые доступны на многих операционных системах (когда Вы создаете композитные USB-устройства).
Другое большое упущение - нет никакого механизма для хоста сообщить устройству, что хост готов принять данные. Это означает, что устройство может пытаться отправить данные, когда хост их не слушает, что вызовет длинные таймауты блокировки в подпрограммах передачи. Чтобы бороться с этим, рекомендуется использовать виртуальную линию DTR (Data Terminal Ready) где только это возможно, чтобы определить, готово ли приложение хоста к данным. 
Function Documentation
Определяет количество байт, принятых интерфейсом CDC от хоста, которые ожидают чтения. Показывает количество байт только в банке конечной точки OUT, и таким образом количество вызовов CDC_Device_ReceiveByte(), которые гарантированно будут успешно завершены. Если принимаются несколько байт, они должны быть забуферизированы в приложении пользователя, так как банк конечной точки не освободится для контроллера USB, пока все байты не будут считаны.
- Precondition:
 - Эта функция должна быть вызвана только когда машина состояния устройства находится в состоянии DEVICE_STATE_Configured, иначе вызов будет ошибочен.
 
- Parameters:
 - 
  
    | [in,out] | CDCInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние CDC Class. | 
  
   
- Returns:
 - общее количество забуферизированных байт, принятых от хоста. 
 
 
 
Конфигурирует конечные точки на указанном интерфейсе CDC готовыми для использования. Функция должна быть связана с событием библиотеки EVENT_USB_Device_ConfigurationChanged(), чтобы конечные точки конфигурировались, когда выбрана конфигурация, содержащая указанный интерфейс CDC.
- Note:
 - Индексные номера конечной точки, как указано в структуре конфигурации интерфейса, не должны наложиться ни с каким другим интерфейсом, иначе произойдет повреждение банка конечной точки. Разрывы в номерах конечных точек или непоследовательные индексы в пределах единственного интерфейса допустимы, но никакие два интерфейса любого типа не должны иметь чередования индексов конечной точки.
 
- Parameters:
 - 
  
    | [in,out] | CDCInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние CDC Class. | 
  
   
- Returns:
 - двоичное true, если конечные точки успешно сконфигурированы, иначе false. 
 
 
 
Идентично CDC_Device_CreateStream(), за исключением того, что чтение блокирует выполнение программы, пока вызываемая функция потока не прервет передачу. Во время блокировки задачи обслуживания USB и CDC продолжают постоянно вызываться, чтобы поддержать коммуникации USB.
- Parameters:
 - 
  
    | [in,out] | CDCInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние CDC Class.  | 
    | [in,out] | Stream | указатель на структуру FILE, где должен быть размещен создаваемый поток.  | 
  
   
 
 
Создает стандартный символьный поток для указанного экземпляра CDC Device, после чего его можно использовать со всеми стандартными функциями библиотеки avr-libc <stdio.h>, которые принимают поток FILE в качестве точки назначения (например fprintf). Созданный поток является двунаправленным, и может использоваться и для функций ввода, и для функций вывода.
Чтение данных из этого потока не блокирующее, например во многих случаях вся строка целиком не может быть прочитана одичной выборкой, поскольку конечная точка может быть не готова в некоторой точке передачи, что прервет процесс переноса данных. Однако поток может быть использован, когда данные обрабатываются байт за байтом, или когда приложение пользователя реализовало отдельную буферизацию принимаемой строки.
- Note:
 - Созданный поток, если нужно, может быть предоставлен как stdout для направления стандартного вывода из всех функций <stdio.h> в указанный интерфейс CDC.
 
- Parameters:
 - 
  
    | [in,out] | CDCInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние CDC Class.  | 
    | [in,out] | Stream | указатель на структуру FILE, где должен быть размещен создаваемый поток.  | 
  
   
 
 
Сбрасывает все данные, ожидающие отправки, что обеспечивает очистку буфера отправки.
- Precondition:
 - Эта функция должна быть вызвана только когда машина состояния устройства находится в состоянии DEVICE_STATE_Configured, иначе вызов будет ошибочен.
 
- Parameters:
 - 
  
    | [in,out] | CDCInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние CDC Class. | 
  
   
- Returns:
 - значение из перечисления Endpoint_WaitUntilReady_ErrorCodes_t. 
 
 
 
Обрабатывает приходящие запросы управления от хоста, направленные на указанный интерфейс класса CDC. Это должно быть слинковано с событием EVENT_USB_Device_ControlRequest() библиотеки.
- Parameters:
 - 
  
    | [in,out] | CDCInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние CDC Class.  | 
  
   
 
 
Читает байт данных от хоста. Если нет ожидающих данных для чтения или хост USB не подключен, то функция вернет отрицательное значение. Функция CDC_Device_BytesReceived() может быть вызвана заранее, чтобы определить, сколько байт сейчас забуферизировано в банке данных приемной конечной точки интерфейса CDC, и, таким образом, сколько можно сделать гарантированных успешных вызовов функции чтения.
- Precondition:
 - Эта функция должна быть вызвана только когда машина состояния устройства находится в состоянии DEVICE_STATE_Configured, иначе вызов будет ошибочен.
 
- Parameters:
 - 
  
    | [in,out] | CDCInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние CDC Class. | 
  
   
- Returns:
 - следующий принятый от хоста байт, или отрицательное значение, если данные не приняты. 
 
 
 
Передает указанный байт к подключенному хосту USB, если имеется соединение. Если хост не подключен при вызове функции, то байт игнорируется. Байты будут помещены в очередь передачи к хосту, пока конечная точка не станет заполненной, либо не будет вызвана функция CDC_Device_Flush() для сброса ожидающих данных на хост. Это позволяет некоторому количеству байт быть упакованными в один пакет конечной точки, что увеличивает пропускную способность для данных.
- Precondition:
 - Эта функция должна быть вызвана только когда машина состояния устройства находится в состоянии DEVICE_STATE_Configured, иначе вызов будет ошибочен.
 
- Parameters:
 - 
  
    | [in,out] | CDCInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние CDC Class.  | 
    | [in] | Data | байт данных для отправки к хосту. | 
  
   
- Returns:
 - значение из перечисления Endpoint_WaitUntilReady_ErrorCodes_t. 
 
 
 
Отправляет на хост оповещение об изменении состояния линии управления. Должна быть вызвана, когда виртуальные линии управления (DCD, DSR, и проч.) изменили состояние, или для предоставления хосту оповещений BREAK. Состояния линии сохраняются, пока они не будут очищены через второе оповещение. Эта функция должна быть вызвана каждый раз, когда у драйвера класса CDC обновляется значение ControlLineStates.DeviceToHost, для проталкивания нового состояния хосту USB.
- Precondition:
 - Эта функция должна быть вызвана только когда машина состояния устройства находится в состоянии DEVICE_STATE_Configured, иначе вызов будет ошибочен.
 
- Parameters:
 - 
  
    | [in,out] | CDCInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние CDC Class.  | 
  
   
 
 
      
        
          | uint8_t CDC_Device_SendString  | 
          ( | 
          USB_ClassInfo_CDC_Device_t *const  | 
          CDCInterfaceInfo,  | 
        
        
           | 
           | 
          const char *const  | 
          Data,  | 
        
        
           | 
           | 
          const uint16_t  | 
          Length  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
Отправляет указанную строку на подключенный хост USB, если соединение имеется. Если хост не присоединен, когда фунция вызвана, то строка игнорируется. Байты будут помещены в очередь передачи к хосту, пока конечная точка не станет заполненной, либо не будет вызвана функция CDC_Device_Flush() для сброса ожидающих данных на хост. Это позволяет некоторому количеству байт быть упакованными в один пакет конечной точки, что увеличивает пропускную способность для данных.
- Precondition:
 - Эта функция должна быть вызвана только когда машина состояния устройства находится в состоянии DEVICE_STATE_Configured, иначе вызов будет ошибочен.
 
- Parameters:
 - 
  
    | [in,out] | CDCInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние CDC Class.  | 
    | [in] | Data | указатель на строку, отправляемую к хосту.  | 
    | [in] | Length | размер в байтах строки, отправляемой к хосту. | 
  
   
- Returns:
 - значение из перечисления Endpoint_Stream_RW_ErrorCodes_t. 
 
 
 
Главная задача указанного интерфейса класса CDC, требуемая для корректной работы интерфейса. Должна часто вызываться в главном цикле программы, перед главной задачей поддержки USB USB_USBTask().
- Parameters:
 - 
  
    | [in,out] | CDCInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние CDC Class.  | 
  
   
 
 
Событие драйвера CDC class для отправки запроса break (прерывание операции) от хоста к устройству. Обычно используется, чтобы отделить данные или показать специальное состояние принимающему устройству.
- Parameters:
 - 
  
    | [in,out] | CDCInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние CDC Class.  | 
    | [in] | Duration | длительность перерыва (break), отправляемого хостом, в милисекундах.  | 
  
   
 
 
Событие драйвера класса CDC для изменения состояния линии управления на интерфейсе CDC. Это событие срабатывает, когда хост запрашивает изменение состояния линии управления (содержащее состояния линии управления, как например DTR) и может быть обратотано в firmware пользователя путем создания функции с таким же именем и параметрами. Новое состояние линии управления доступно в значении ControlLineStates.HostToDevice внутри структуры интерфейса CDC, переданной в качестве параметра, в виде набора масок CDC_CONTROL_LINE_OUT_*.
- Parameters:
 - 
  
    | [in,out] | CDCInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние CDC Class.  | 
  
   
 
 
Событие драйвера CDC class для смены кодирования линии на интерфейсе CDC. Это событие срабатывает всякий раз, когда хост запрашивает изменения кодирования на линии (содержащее четность, скорость и другую информацию конфигурации), это событие может отслеживаться в программе firmware пользователя путем создания функции обработчика с тем же именем и перечисленными здесь параметрами. Новые установки кодирования линии доступны в структуре LineEncoding внутри структуры интерфейса CDC, переданной в качестве параметра.
- Parameters:
 - 
  
    | [in,out] | CDCInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние CDC Class.  |