38#ifdef USB_GLOBAL_INCLUDE_FILE
39#include USB_GLOBAL_INCLUDE_FILE
41#include <sys/stdint.h>
42#include <sys/stddef.h>
47#include <sys/kernel.h>
49#include <sys/module.h>
52#include <sys/condvar.h>
53#include <sys/sysctl.h>
55#include <sys/unistd.h>
56#include <sys/callout.h>
57#include <sys/malloc.h>
79#define MODEM_DEFAULT_VENDOR_ID USB_TEMPLATE_VENDOR
80#define MODEM_DEFAULT_PRODUCT_ID 0x27dd
81#define MODEM_DEFAULT_INTERFACE "Virtual serial port"
82#define MODEM_DEFAULT_MANUFACTURER USB_TEMPLATE_MANUFACTURER
83#define MODEM_DEFAULT_PRODUCT "Virtual serial port"
90#define MODEM_DEFAULT_SERIAL_NUMBER "FreeBSD1"
99#define MODEM_IFACE_0 0
100#define MODEM_IFACE_1 1
153 0x05, 0x24, 0x00, 0x10, 0x01
165 0x04, 0x24, 0x02, 0x07
222 .bDeviceSubClass = 0,
223 .bDeviceProtocol = 0,
260 if (string_index == 0) {
263 if (lang_id != 0x0409) {
267 return (ptr[string_index]);
275 struct sysctl_oid *parent;
291 SYSCTL_STATIC_CHILDREN(_hw_usb_templates), OID_AUTO,
292 parent_name, CTLFLAG_RW | CTLFLAG_MPSAFE,
293 0,
"Virtual serial port device side template");
294 SYSCTL_ADD_U16(&
modem_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
295 "vendor_id", CTLFLAG_RWTUN,
297 SYSCTL_ADD_U16(&
modem_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
298 "product_id", CTLFLAG_RWTUN,
301 SYSCTL_ADD_PROC(&
modem_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
302 "keyboard", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
304 "A",
"Interface string");
306 SYSCTL_ADD_PROC(&
modem_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
307 "manufacturer", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
309 "A",
"Manufacturer string");
310 SYSCTL_ADD_PROC(&
modem_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
311 "product", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
313 "A",
"Product string");
314 SYSCTL_ADD_PROC(&
modem_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
315 "serial_number", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
317 "A",
"Serial number string");
const struct usb_temp_interface_desc ** ppIfaceDesc
usb_temp_get_string_desc_t * getStringDesc
const struct usb_temp_packet_size * pPacketSize
const struct usb_temp_endpoint_desc ** ppEndpoints
uint8_t bInterval[USB_SPEED_MAX]
uint16_t mps[USB_SPEED_MAX]
#define UISUBCLASS_ABSTRACT_CONTROL_MODEL
const struct usb_string_lang usb_string_lang_en
int usb_temp_sysctl(SYSCTL_HANDLER_ARGS)
const void *() usb_temp_get_vendor_desc_t(const struct usb_device_request *req, uint16_t *plen)
const void *() usb_temp_get_string_desc_t(uint16_t lang_id, uint8_t string_index)
static const struct usb_temp_interface_desc modem_iface_1
#define MODEM_DEFAULT_PRODUCT_ID
@ MODEM_MANUFACTURER_INDEX
@ MODEM_SERIAL_NUMBER_INDEX
SYSINIT(modem_init, SI_SUB_LOCK, SI_ORDER_FIRST, modem_init, NULL)
static struct usb_string_descriptor modem_serial_number
#define MODEM_DEFAULT_VENDOR_ID
#define MODEM_DEFAULT_MANUFACTURER
struct usb_temp_device_desc usb_template_modem
#define MODEM_DEFAULT_INTERFACE
static const struct usb_temp_config_desc * modem_configs[]
static const uint8_t modem_raw_desc_0[]
static const struct usb_temp_interval modem_intr_interval
static void modem_init(void *arg __unused)
static struct usb_string_descriptor modem_interface
SYSUNINIT(modem_uninit, SI_SUB_LOCK, SI_ORDER_FIRST, modem_uninit, NULL)
static const struct usb_temp_packet_size modem_intr_mps
static const struct usb_temp_packet_size modem_bulk_mps
#define MODEM_DEFAULT_SERIAL_NUMBER
static usb_temp_get_string_desc_t modem_get_string_desc
static usb_temp_get_vendor_desc_t modem_get_vendor_desc
static const struct usb_temp_interface_desc * modem_interfaces[]
static const uint8_t modem_raw_desc_1[]
static const struct usb_temp_endpoint_desc modem_ep_0
static void modem_uninit(void *arg __unused)
static const uint8_t modem_raw_desc_3[]
#define MODEM_DEFAULT_PRODUCT
static const struct usb_temp_endpoint_desc * modem_iface_0_ep[]
static const struct usb_temp_endpoint_desc * modem_iface_1_ep[]
static const void * modem_iface_0_desc[]
static struct usb_string_descriptor modem_manufacturer
static const struct usb_temp_endpoint_desc modem_ep_1
static const struct usb_temp_config_desc modem_config_desc
static const struct usb_temp_interface_desc modem_iface_0
static struct sysctl_ctx_list modem_ctx_list
static struct usb_string_descriptor modem_product
static const uint8_t modem_raw_desc_2[]
static const struct usb_temp_endpoint_desc modem_ep_2
uint8_t usb_make_str_desc(void *ptr, uint16_t max_len, const char *s)