summaryrefslogtreecommitdiff
path: root/CMSIS/Driver/DriverTemplates/Driver_ETH_MAC.c
blob: 4fdb494379a3b85255b58dd9e4f29c7cbee3560f (plain)
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
#include "Driver_ETH_MAC.h"

#define ARM_ETH_MAC_DRV_VERSION    ARM_DRIVER_VERSION_MAJOR_MINOR(2, 0) /* driver version */

/* Driver Version */
static const ARM_DRIVER_VERSION DriverVersion = {
    ARM_ETH_MAC_API_VERSION,
    ARM_ETH_MAC_DRV_VERSION
};

/* Driver Capabilities */
static const ARM_ETH_MAC_CAPABILITIES DriverCapabilities = {
    0, /* 1 = IPv4 header checksum verified on receive */
    0, /* 1 = IPv6 checksum verification supported on receive */
    0, /* 1 = UDP payload checksum verified on receive */
    0, /* 1 = TCP payload checksum verified on receive */
    0, /* 1 = ICMP payload checksum verified on receive */
    0, /* 1 = IPv4 header checksum generated on transmit */
    0, /* 1 = IPv6 checksum generation supported on transmit */
    0, /* 1 = UDP payload checksum generated on transmit */
    0, /* 1 = TCP payload checksum generated on transmit */
    0, /* 1 = ICMP payload checksum generated on transmit */
    0, /* Ethernet Media Interface type */
    0, /* 1 = driver provides initial valid MAC address */
    0, /* 1 = callback event \ref ARM_ETH_MAC_EVENT_RX_FRAME generated */
    0, /* 1 = callback event \ref ARM_ETH_MAC_EVENT_TX_FRAME generated */
    0, /* 1 = wakeup event \ref ARM_ETH_MAC_EVENT_WAKEUP generated */
    0  /* 1 = Precision Timer supported */
};

//
//  Functions
//

ARM_DRIVER_VERSION ARM_ETH_MAC_GetVersion(void)
{
}

ARM_ETH_MAC_CAPABILITIES ARM_ETH_MAC_GetCapabilities(void)
{
}

int32_t ARM_ETH_MAC_Initialize(ARM_ETH_MAC_SignalEvent_t cb_event)
{
}

int32_t ARM_ETH_MAC_Uninitialize(void)
{
}

int32_t ARM_ETH_MAC_PowerControl(ARM_POWER_STATE state)
{
    switch (state)
    {
    case ARM_POWER_OFF:
        break;

    case ARM_POWER_LOW:
        break;

    case ARM_POWER_FULL:
        break;

    default:
        return ARM_DRIVER_ERROR_UNSUPPORTED;
    }
}

int32_t ARM_ETH_MAC_GetMacAddress(ARM_ETH_MAC_ADDR *ptr_addr)
{
}

int32_t ARM_ETH_MAC_SetMacAddress(const ARM_ETH_MAC_ADDR *ptr_addr)
{
}

int32_t ARM_ETH_MAC_SetAddressFilter(const ARM_ETH_MAC_ADDR *ptr_addr, uint32_t num_addr)
{
}

int32_t ARM_ETH_MAC_SendFrame(const uint8_t *frame, uint32_t len, uint32_t flags)
{
}

int32_t ARM_ETH_MAC_ReadFrame(uint8_t *frame, uint32_t len)
{
}

uint32_t ARM_ETH_MAC_GetRxFrameSize(void)
{
}

int32_t ARM_ETH_MAC_GetRxFrameTime(ARM_ETH_MAC_TIME *time)
{
}

int32_t ARM_ETH_MAC_GetTxFrameTime(ARM_ETH_MAC_TIME *time)
{
}

int32_t ARM_ETH_MAC_Control(uint32_t control, uint32_t arg)
{
    switch (control)
    {
    case ARM_ETH_MAC_CONFIGURE:

        switch (arg & ARM_ETH_MAC_SPEED_Msk)
        {
        case ARM_ETH_MAC_SPEED_10M:
            break;
        case ARM_ETH_SPEED_100M:
            break;
        default:
            return ARM_DRIVER_ERROR_UNSUPPORTED;
        }

        switch (arg & ARM_ETH_MAC_DUPLEX_Msk)
        {
        case ARM_ETH_MAC_DUPLEX_FULL:
            break;
        }

        if (arg & ARM_ETH_MAC_LOOPBACK)
        {
        }

        if ((arg & ARM_ETH_MAC_CHECKSUM_OFFLOAD_RX) ||
            (arg & ARM_ETH_MAC_CHECKSUM_OFFLOAD_TX))
        {
            return ARM_DRIVER_ERROR_UNSUPPORTED;
        }

        if (!(arg & ARM_ETH_MAC_ADDRESS_BROADCAST))
        {
        }

        if (arg & ARM_ETH_MAC_ADDRESS_MULTICAST)
        {
        }

        if (arg & ARM_ETH_MAC_ADDRESS_ALL)
        {
        }

        break;

    case ARM_ETH_MAC_CONTROL_TX:
        break;

    case ARM_ETH_MAC_CONTROL_RX:
        break;

    case ARM_ETH_MAC_FLUSH:
        if (arg & ARM_ETH_MAC_FLUSH_RX)
        {
        }
        if (arg & ARM_ETH_MAC_FLUSH_TX)
        {
        }
        break;

    case ARM_ETH_MAC_SLEEP:
        break;

    case ARM_ETH_MAC_VLAN_FILTER:
        break;

    default:
        return ARM_DRIVER_ERROR_UNSUPPORTED;
    }
}

int32_t ARM_ETH_MAC_ControlTimer(uint32_t control, ARM_ETH_MAC_TIME *time)
{
}

int32_t ARM_ETH_MAC_PHY_Read(uint8_t phy_addr, uint8_t reg_addr, uint16_t *data)
{
}

int32_t ARM_ETH_MAC_PHY_Write(uint8_t phy_addr, uint8_t reg_addr, uint16_t data)
{
}

void ARM_ETH_MAC_SignalEvent(uint32_t event)
{
}

// End ETH MAC Interface

ARM_DRIVER_ETH_MAC Driver_ETH_MAC =
{
    ARM_ETH_MAC_GetVersion,
    ARM_ETH_MAC_GetCapabilities,
    ARM_ETH_MAC_Initialize,
    ARM_ETH_MAC_Uninitialize,
    ARM_ETH_MAC_PowerControl,
    ARM_ETH_MAC_GetMacAddress,
    ARM_ETH_MAC_SetMacAddress,
    ARM_ETH_MAC_SetAddressFilter,
    ARM_ETH_MAC_SendFrame,
    ARM_ETH_MAC_ReadFrame,
    ARM_ETH_MAC_GetRxFrameSize,
    ARM_ETH_MAC_GetRxFrameTime,
    ARM_ETH_MAC_GetTxFrameTime,
    ARM_ETH_MAC_ControlTimer,
    ARM_ETH_MAC_Control,
    ARM_ETH_MAC_PHY_Read,
    ARM_ETH_MAC_PHY_Write
};