FreeBSD kernel usb device Code
usb_template_cdceem.c File Reference
#include <sys/stdint.h>
#include <sys/stddef.h>
#include <sys/param.h>
#include <sys/queue.h>
#include <sys/types.h>
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys/bus.h>
#include <sys/module.h>
#include <sys/lock.h>
#include <sys/mutex.h>
#include <sys/condvar.h>
#include <sys/sysctl.h>
#include <sys/sx.h>
#include <sys/unistd.h>
#include <sys/callout.h>
#include <sys/malloc.h>
#include <sys/priv.h>
#include <dev/usb/usb.h>
#include <dev/usb/usbdi.h>
#include <dev/usb/usb_core.h>
#include <dev/usb/usb_ioctl.h>
#include <dev/usb/usb_util.h>
#include <dev/usb/template/usb_template.h>
Include dependency graph for usb_template_cdceem.c:

Go to the source code of this file.

Macros

#define CDCEEM_DEFAULT_VENDOR_ID   USB_TEMPLATE_VENDOR
 
#define CDCEEM_DEFAULT_PRODUCT_ID   0x27df
 
#define CDCEEM_DEFAULT_INTERFACE   "USB CDC EEM Interface"
 
#define CDCEEM_DEFAULT_CONFIGURATION   "Default Config"
 
#define CDCEEM_DEFAULT_MANUFACTURER   USB_TEMPLATE_MANUFACTURER
 
#define CDCEEM_DEFAULT_PRODUCT   "CDC EEM"
 
#define CDCEEM_DEFAULT_SERIAL_NUMBER   "March 2008"
 

Enumerations

enum  {
  CDCEEM_LANG_INDEX , CDCEEM_INTERFACE_INDEX , CDCEEM_CONFIGURATION_INDEX , CDCEEM_MANUFACTURER_INDEX ,
  CDCEEM_PRODUCT_INDEX , CDCEEM_SERIAL_NUMBER_INDEX , CDCEEM_MAX_INDEX
}
 

Functions

static const void * cdceem_get_string_desc (uint16_t lang_id, uint8_t string_index)
 
static void cdceem_init (void *arg __unused)
 
static void cdceem_uninit (void *arg __unused)
 
 SYSINIT (cdceem_init, SI_SUB_LOCK, SI_ORDER_FIRST, cdceem_init, NULL)
 
 SYSUNINIT (cdceem_uninit, SI_SUB_LOCK, SI_ORDER_FIRST, cdceem_uninit, NULL)
 

Variables

static struct usb_string_descriptor cdceem_interface
 
static struct usb_string_descriptor cdceem_configuration
 
static struct usb_string_descriptor cdceem_manufacturer
 
static struct usb_string_descriptor cdceem_product
 
static struct usb_string_descriptor cdceem_serial_number
 
static struct sysctl_ctx_list cdceem_ctx_list
 
static usb_temp_get_string_desc_t cdceem_get_string_desc
 
static const struct usb_temp_packet_size bulk_mps
 
static const struct usb_temp_endpoint_desc bulk_in_ep
 
static const struct usb_temp_endpoint_desc bulk_out_ep
 
static const struct usb_temp_endpoint_desccdceem_data_endpoints []
 
static const struct usb_temp_interface_desc cdceem_data_interface
 
static const struct usb_temp_interface_desccdceem_interfaces []
 
static const struct usb_temp_config_desc cdceem_config_desc
 
static const struct usb_temp_config_desccdceem_configs []
 
struct usb_temp_device_desc usb_template_cdceem
 

Macro Definition Documentation

◆ CDCEEM_DEFAULT_CONFIGURATION

#define CDCEEM_DEFAULT_CONFIGURATION   "Default Config"

Definition at line 83 of file usb_template_cdceem.c.

◆ CDCEEM_DEFAULT_INTERFACE

#define CDCEEM_DEFAULT_INTERFACE   "USB CDC EEM Interface"

Definition at line 82 of file usb_template_cdceem.c.

◆ CDCEEM_DEFAULT_MANUFACTURER

#define CDCEEM_DEFAULT_MANUFACTURER   USB_TEMPLATE_MANUFACTURER

Definition at line 84 of file usb_template_cdceem.c.

◆ CDCEEM_DEFAULT_PRODUCT

#define CDCEEM_DEFAULT_PRODUCT   "CDC EEM"

Definition at line 85 of file usb_template_cdceem.c.

◆ CDCEEM_DEFAULT_PRODUCT_ID

#define CDCEEM_DEFAULT_PRODUCT_ID   0x27df

Definition at line 81 of file usb_template_cdceem.c.

◆ CDCEEM_DEFAULT_SERIAL_NUMBER

#define CDCEEM_DEFAULT_SERIAL_NUMBER   "March 2008"

Definition at line 86 of file usb_template_cdceem.c.

◆ CDCEEM_DEFAULT_VENDOR_ID

#define CDCEEM_DEFAULT_VENDOR_ID   USB_TEMPLATE_VENDOR

Definition at line 80 of file usb_template_cdceem.c.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
CDCEEM_LANG_INDEX 
CDCEEM_INTERFACE_INDEX 
CDCEEM_CONFIGURATION_INDEX 
CDCEEM_MANUFACTURER_INDEX 
CDCEEM_PRODUCT_INDEX 
CDCEEM_SERIAL_NUMBER_INDEX 
CDCEEM_MAX_INDEX 

Definition at line 70 of file usb_template_cdceem.c.

Function Documentation

◆ cdceem_get_string_desc()

◆ cdceem_init()

◆ cdceem_uninit()

static void cdceem_uninit ( void *arg  __unused)
static

Definition at line 256 of file usb_template_cdceem.c.

References cdceem_ctx_list.

◆ SYSINIT()

SYSINIT ( cdceem_init  ,
SI_SUB_LOCK  ,
SI_ORDER_FIRST  ,
cdceem_init  ,
NULL   
)

◆ SYSUNINIT()

SYSUNINIT ( cdceem_uninit  ,
SI_SUB_LOCK  ,
SI_ORDER_FIRST  ,
cdceem_uninit  ,
NULL   
)

Variable Documentation

◆ bulk_in_ep

const struct usb_temp_endpoint_desc bulk_in_ep
static
Initial value:
= {
.pPacketSize = &bulk_mps,
.bEndpointAddress = UE_DIR_IN,
.bmAttributes = UE_BULK,
}
#define UE_BULK
Definition: usb.h:543
#define UE_DIR_IN
Definition: usb.h:531
static const struct usb_temp_packet_size bulk_mps

Definition at line 105 of file usb_template_cdceem.c.

◆ bulk_mps

const struct usb_temp_packet_size bulk_mps
static
Initial value:
= {
.mps[USB_SPEED_FULL] = 64,
.mps[USB_SPEED_HIGH] = 512,
}
@ USB_SPEED_FULL
Definition: usb.h:754
@ USB_SPEED_HIGH
Definition: usb.h:755

Definition at line 100 of file usb_template_cdceem.c.

◆ bulk_out_ep

const struct usb_temp_endpoint_desc bulk_out_ep
static
Initial value:
= {
.pPacketSize = &bulk_mps,
.bEndpointAddress = UE_DIR_OUT,
.bmAttributes = UE_BULK,
}
#define UE_DIR_OUT
Definition: usb.h:532

Definition at line 115 of file usb_template_cdceem.c.

◆ cdceem_config_desc

const struct usb_temp_config_desc cdceem_config_desc
static
Initial value:
= {
.ppIfaceDesc = cdceem_interfaces,
.bmAttributes = 0,
.bMaxPower = 0,
.iConfiguration = CDCEEM_CONFIGURATION_INDEX,
}
static const struct usb_temp_interface_desc * cdceem_interfaces[]
@ CDCEEM_CONFIGURATION_INDEX

Definition at line 144 of file usb_template_cdceem.c.

◆ cdceem_configs

const struct usb_temp_config_desc* cdceem_configs[]
static
Initial value:
= {
NULL,
}
static const struct usb_temp_config_desc cdceem_config_desc

Definition at line 151 of file usb_template_cdceem.c.

◆ cdceem_configuration

struct usb_string_descriptor cdceem_configuration
static

Definition at line 89 of file usb_template_cdceem.c.

Referenced by cdceem_get_string_desc(), and cdceem_init().

◆ cdceem_ctx_list

struct sysctl_ctx_list cdceem_ctx_list
static

Definition at line 94 of file usb_template_cdceem.c.

Referenced by cdceem_init(), and cdceem_uninit().

◆ cdceem_data_endpoints

const struct usb_temp_endpoint_desc* cdceem_data_endpoints[]
static
Initial value:
= {
NULL,
}
static const struct usb_temp_endpoint_desc bulk_out_ep
static const struct usb_temp_endpoint_desc bulk_in_ep

Definition at line 125 of file usb_template_cdceem.c.

◆ cdceem_data_interface

const struct usb_temp_interface_desc cdceem_data_interface
static
Initial value:
= {
.ppEndpoints = cdceem_data_endpoints,
.bInterfaceClass = UICLASS_CDC,
.bInterfaceSubClass = UISUBCLASS_ETHERNET_EMULATION_MODEL,
.bInterfaceProtocol = UIPROTO_CDC_EEM,
.iInterface = CDCEEM_INTERFACE_INDEX,
}
#define UIPROTO_CDC_EEM
Definition: usb.h:451
#define UISUBCLASS_ETHERNET_EMULATION_MODEL
Definition: usb.h:446
#define UICLASS_CDC
Definition: usb.h:434
@ CDCEEM_INTERFACE_INDEX
static const struct usb_temp_endpoint_desc * cdceem_data_endpoints[]

Definition at line 131 of file usb_template_cdceem.c.

◆ cdceem_get_string_desc

usb_temp_get_string_desc_t cdceem_get_string_desc
static

Definition at line 98 of file usb_template_cdceem.c.

◆ cdceem_interface

struct usb_string_descriptor cdceem_interface
static

Definition at line 88 of file usb_template_cdceem.c.

Referenced by cdceem_get_string_desc(), and cdceem_init().

◆ cdceem_interfaces

const struct usb_temp_interface_desc* cdceem_interfaces[]
static
Initial value:
= {
NULL,
}
static const struct usb_temp_interface_desc cdceem_data_interface

Definition at line 139 of file usb_template_cdceem.c.

◆ cdceem_manufacturer

struct usb_string_descriptor cdceem_manufacturer
static

Definition at line 90 of file usb_template_cdceem.c.

Referenced by cdceem_get_string_desc(), and cdceem_init().

◆ cdceem_product

struct usb_string_descriptor cdceem_product
static

Definition at line 91 of file usb_template_cdceem.c.

Referenced by cdceem_get_string_desc(), and cdceem_init().

◆ cdceem_serial_number

struct usb_string_descriptor cdceem_serial_number
static

Definition at line 92 of file usb_template_cdceem.c.

Referenced by cdceem_get_string_desc(), and cdceem_init().

◆ usb_template_cdceem

struct usb_temp_device_desc usb_template_cdceem
Initial value:
= {
.getStringDesc = &cdceem_get_string_desc,
.ppConfigDesc = cdceem_configs,
.bcdDevice = 0x0100,
.bDeviceClass = UDCLASS_COMM,
.bDeviceSubClass = 0,
.bDeviceProtocol = 0,
.iManufacturer = CDCEEM_MANUFACTURER_INDEX,
.iProduct = CDCEEM_PRODUCT_INDEX,
.iSerialNumber = CDCEEM_SERIAL_NUMBER_INDEX,
}
#define UDCLASS_COMM
Definition: usb.h:372
#define CDCEEM_DEFAULT_VENDOR_ID
#define CDCEEM_DEFAULT_PRODUCT_ID
static usb_temp_get_string_desc_t cdceem_get_string_desc
@ CDCEEM_SERIAL_NUMBER_INDEX
@ CDCEEM_PRODUCT_INDEX
@ CDCEEM_MANUFACTURER_INDEX
static const struct usb_temp_config_desc * cdceem_configs[]

Definition at line 156 of file usb_template_cdceem.c.

Referenced by cdceem_init(), and usb_temp_setup_by_index().