blob: 7b23f98105f609f9e826a6d4f14ff79611b04f36 [file] [log] [blame]
Harald Welte069d3432020-12-15 23:09:40 +01001#pragma once
2
3/* Header file describing the USB protocol between the icE1usb firmware and the host
4 * software (currently really only osmo-e1d) */
5
6/* Device Requests */
7
8/*! returns a bit-mask of optional device capabilities (see enum e1usb_dev_capability) */
9#define ICE1USB_DEV_GET_CAPABILITIES 0x01
10/*! returns a
11#define ICE1USB_DEV_GET_FW_BUILD 0x02
12
13enum e1usb_dev_capability {
14 /*! Does this board have a GPS-DO */
15 ICE1USB_DEV_CAP_GPSDO,
16};
17
18
19/* Interface Requests */
20
21/*! returns a bit-mask of optional device capabilities (see enum e1usb_intf_capability) */
22#define ICE1USB_INTF_GET_CAPABILITIES 0x01
23#define ICE1USB_INTF_SET_TX_CFG 0x02 /*!< struct ice1usb_tx_config */
24#define ICE1USB_INTF_GET_TX_CFG 0x03 /*!< struct ice1usb_tx_config */
25#define ICE1USB_INTF_SET_RX_CFG 0x04 /*!< struct ice1usb_rx_config */
26#define ICE1USB_INTF_GET_RX_CFG 0x05 /*!< struct ice1usb_rx_config */
27
28//enum e1usb_intf_capability { };
29
30enum ice1usb_tx_mode {
31 ICE1USB_TX_MODE_TRANSP = 0,
32 ICE1USB_TX_MODE_TS0 = 1,
33 ICE1USB_TX_MODE_TS0_CRC4 = 2,
34 ICE1USB_TX_MODE_TS0_CRC4_E = 3,
35};
36
37enum ice1usb_tx_timing {
38 ICE1USB_TX_TIME_SRC_REMOTE = 0,
39 ICE1USB_TX_TIME_SRC_LOCAL = 1,
40};
41
42enum ice1usb_tx_ext_loopback {
43 ICE1USB_TX_EXT_LOOPBACK_OFF = 0,
44 ICE1USB_TX_EXT_LOOPBACK_SAME = 1,
45 ICE1USB_TX_EXT_LOOPBACK_CROSS = 2,
46};
47
48/* ICE1USB_INTF_{GET,SET}_TX_CFG */
49struct ice1usb_tx_config {
50 uint8_t mode; /*!< enum ice1usb_tx_mode */
51 uint8_t timing; /*!< enum ice1usb_tx_timing */
52 uint8_t ext_loopback; /*!< enum ice1usb_tx_ext_loopback */
53 uint8_t alarm; /*!< 1 = transmit alarm; 0 = don't */
54} __attribute__((packed));
55
56
57enum ice1usb_rx_mode {
58 /*! transparent, unaligned bitstream */
59 ICE1USB_RX_MODE_TRANSP = 0,
60 /*! alignment to E1 frame */
61 ICE1USB_RX_MODE_FRAME = 1,
62 /*! alignment to E1 multiframe */
63 ICE1USB_RX_MODE_MULTIFRAME = 2,
64};
65
66/* ICE1USB_INTF_{GET,SET}_RX_CFG */
67struct ice1usb_rx_config {
68 uint8_t mode; /*!< enum ice1usb_rx_mode */
69} __attribute__((packed));