File: unicorn.h

package info (click to toggle)
unicorn 0.8.7-1.1
  • links: PTS
  • area: non-free
  • in suites: sarge
  • size: 3,984 kB
  • ctags: 3,428
  • sloc: ansic: 20,028; cpp: 1,265; sh: 1,033; makefile: 710; yacc: 316; sed: 16
file content (137 lines) | stat: -rw-r--r-- 3,789 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#ifndef __unicorn_h__
#define __unicorn_h__

#define MAX_DEVICES 1

#define UNICORN_ATM_NAME "atm0"
#define UNICORN_ETH_NAME "dsl0"

#define ATM_MSW_CTL _IOW('a',ATMIOC_PHYPRV+0,struct atmif_sioc)
#define ETH_MSW_CTL SIOCDEVPRIVATE


typedef struct {
	unsigned long code;
	unsigned long subcode;
	unsigned long retcode;
	void *buffer;
	unsigned long length;
} T_MswCtrl;

typedef struct {
	unsigned long State;
	unsigned long Report;
	unsigned long Failure;
	unsigned long TimeCnctd;
} T_StateInfo;

#define ATM_OAM_F4	0xF4
#define ATM_OAM_F5	0xF5 

typedef struct {
	int type;
	int vpi;
	int vci;
} T_atm_channel;

typedef struct {
	unsigned long tx_LB;
	unsigned long rx_AIS;
	unsigned long rx_RDI;
	unsigned long rx_CC;
	unsigned long rx_ne_LB;
	unsigned long rx_fe_LB;
} T_oam_stats;

// holds the global ADSL status returned to the ATM driver
typedef enum {
	ADSL_STATUS_NOHARDWARE,		// No hardware detected
	ADSL_STATUS_NOLINK,		// Hardware detected / No link
	ADSL_STATUS_ATMREADY		// Hardware detected / On line
} ADSL_STATUS;

// code 0-31 for MSW
#define	MSW_CTL_INIT		0	// For msw_init()
#define	MSW_CTL_EXIT		1	// For msw_exit()
#define	MSW_CTL_START		2	// For msw_start()
#define	MSW_CTL_STOP		3	// For msw_stop()
#define	MSW_CTL_SET_CONFIG	4	// For AMSW_ANT_getModemConfiguration()
#define	MSW_CTL_GET_CONFIG	5	// For AMSW_ANT_setModemConfiguration()
#define	MSW_CTL_REQ_CHANGE	6	// For AMSW_ANT_requestModemStateChange
#define	MSW_CTL_GET_DATA	7	// For AMSW_ANT_getData()
#define	MSW_CTL_GET_STATE	8	// For AMSW_ANT_getModemState()
#define	MSW_CTL_DYING_GASP	9	// For AMSW_ANT_dyingGasp()
#define	MSW_CTL_WAIT_EVENT	10	// Wait for MSW event
#define	MSW_CTL_CANCEL_WAIT	11	// Cancel wait event ioctl
#define	MSW_CTL_VERSION_INFO	12	// Get the driver version
#define	MSW_CTL_STATE_INFO	13	// Get last status information from MSW
#define	MSW_CTL_SPY			14 // Execute a SPY command
#define MSW_CTL_SETCARRIERCONSTELLATION 15 // to select the Constellation to re

#define MSW_CTL_SET_DEBUG_LEVEL  16      // set DebugLevel
#define MSW_CTL_SET_MSW_DEBUG_LEVEL  17      // set MswDebugLevel

// code 32-63 for NET
#define NET_CTL_SET_VPI_VCI      32
#define NET_CTL_GET_VPI_VCI      33
#define NET_CTL_TX_OAM_CELL      34
#define NET_CTL_GET_OAM_STATS    35
#define NET_CTL_RESET_OAM_STATS  36

struct unicorn_dev;

/*
  Called by ATM driver to get a pointer to the next cell to transmit or receive.
*/
typedef unsigned char * (*unicorn_getcell_t)(struct unicorn_dev *dev);

/*
  Called by ATM driver start transmitting cells.
*/
typedef int (*unicorn_start_transmit_t)(struct unicorn_dev *dev);

/* 
   Called by ATM driver for MSW ioctl's. 
*/
typedef int (*unicorn_msw_control_t)(struct unicorn_dev *dev,T_MswCtrl *ctrl);

/* 
   Called by ATM driver to get the ADSL status 
*/
typedef ADSL_STATUS (*unicorn_get_adsl_status_t)(struct unicorn_dev *dev);

/* 
   Called by ATM driver to get the ADSL link speed in Kbits/sec
*/
typedef int (*unicorn_get_adsl_linkspeed_t)(struct unicorn_dev *dev,
					    unsigned long *us_rate,unsigned long *ds_rate);

/*
  Entrypoints for the USB/PCI driver
*/
typedef struct unicorn_entrypoints {
	struct unicorn_dev *dev; /* Private data for USB/PCI driver */
	unicorn_getcell_t snd_getcell;
	unicorn_getcell_t rcv_getcell;
	unicorn_start_transmit_t start_transmit;
	unicorn_msw_control_t msw_control;
	unicorn_get_adsl_status_t get_adsl_status;
	unicorn_get_adsl_linkspeed_t get_adsl_linkspeed;
} unicorn_entrypoints_t;

/* 
   Called by BUS driver when driver loaded (attached)
*/
extern int unicorn_attach(struct unicorn_entrypoints *entrypoints); 

/* 
   Called by BUS driver when driver unloaded (detached)
*/
extern int unicorn_detach(void);

/* 
   Called by BUS driver when HW timer expires
*/
extern int unicorn_timer(void);

#endif