43
43
#define PHY_TASK_PERIOD_MS 200
44
44
45
45
46
- fvp_EMAC::fvp_EMAC ()
47
- {
48
- }
46
+ fvp_EMAC::fvp_EMAC () : _thread(THREAD_PRIORITY,THREAD_STACKSIZE,NULL ," fvp_emac_thread" )
49
47
50
- /* * \brief Create a new thread for TX/RX. */
51
- static osThreadId_t create_new_thread (const char *threadName, void (*thread)(void *arg), void *arg, int stacksize, osPriority_t priority, mbed_rtos_storage_thread_t *_thread_cb)
52
48
{
53
- osThreadAttr_t attr = {0 };
54
- attr.name = threadName;
55
- attr.stack_mem = malloc (stacksize);
56
- attr.cb_mem = _thread_cb;
57
- attr.stack_size = stacksize;
58
- attr.cb_size = sizeof (mbed_rtos_storage_thread_t );
59
- attr.priority = priority;
60
- return osThreadNew (thread, arg, &attr);
61
49
}
62
50
63
51
void fvp_EMAC::ethernet_callback (lan91_event_t event, void *param)
@@ -79,15 +67,13 @@ void fvp_EMAC::ethernet_callback(lan91_event_t event, void *param)
79
67
/* * \brief Ethernet receive interrupt handler */
80
68
void fvp_EMAC::rx_isr ()
81
69
{
82
- if (_thread) {
83
- osThreadFlagsSet (_thread, FLAG_RX);
84
- }
70
+ _thread.flags_set (FLAG_RX);
85
71
}
86
72
87
73
/* * \brief Ethernet transmit interrupt handler */
88
74
void fvp_EMAC::tx_isr ()
89
75
{
90
- osThreadFlagsSet ( _thread, FLAG_TX);
76
+ _thread. flags_set ( FLAG_TX);
91
77
}
92
78
93
79
/* * \brief Low level init of the MAC and PHY. */
@@ -109,7 +95,7 @@ void fvp_EMAC::thread_function(void* pvParameters)
109
95
struct fvp_EMAC *fvp_enet = static_cast <fvp_EMAC *>(pvParameters);
110
96
111
97
for (;;) {
112
- uint32_t flags = osThreadFlagsWait (FLAG_RX|FLAG_TX, osFlagsWaitAny, osWaitForever );
98
+ uint32_t flags = ThisThread::flags_wait_any (FLAG_RX|FLAG_TX);
113
99
if (flags & FLAG_RX) {
114
100
fvp_enet->packet_rx ();
115
101
}
@@ -234,8 +220,8 @@ bool fvp_EMAC::power_up()
234
220
return false ;
235
221
}
236
222
237
- /* ethernet Worker thread */
238
- _thread = create_new_thread ( " FVP_EMAC_thread " , &fvp_EMAC::thread_function, this , THREAD_STACKSIZE, THREAD_PRIORITY, &_thread_cb );
223
+ /* Start ethernet Worker thread */
224
+ _thread. start ( callback ( &fvp_EMAC::thread_function, this ) );
239
225
240
226
/* Trigger thread to deal with any RX packets that arrived before thread was started */
241
227
rx_isr ();
@@ -246,7 +232,7 @@ bool fvp_EMAC::power_up()
246
232
mbed::mbed_event_queue ()->call (mbed::callback (this , &fvp_EMAC::phy_task));
247
233
248
234
/* Allow the PHY task to detect the initial link state and set up the proper flags */
249
- osDelay (10 );
235
+ wait_ms (10 );
250
236
251
237
_phy_task_handle = mbed::mbed_event_queue ()->call_every (PHY_TASK_PERIOD_MS, mbed::callback (this , &fvp_EMAC::phy_task));
252
238
0 commit comments