git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@7458 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
parent
bfb9a08f46
commit
a5454ca785
|
@ -175,10 +175,10 @@ static void mac_lld_set_address(const uint8_t *p) {
|
||||||
/* Driver interrupt handlers. */
|
/* Driver interrupt handlers. */
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
||||||
CH_IRQ_HANDLER(ETH_IRQHandler) {
|
OSAL_IRQ_HANDLER(ETH_IRQHandler) {
|
||||||
uint32_t dmasr;
|
uint32_t dmasr;
|
||||||
|
|
||||||
CH_IRQ_PROLOGUE();
|
OSAL_IRQ_PROLOGUE();
|
||||||
|
|
||||||
dmasr = ETH->DMASR;
|
dmasr = ETH->DMASR;
|
||||||
ETH->DMASR = dmasr; /* Clear status bits.*/
|
ETH->DMASR = dmasr; /* Clear status bits.*/
|
||||||
|
@ -186,9 +186,9 @@ CH_IRQ_HANDLER(ETH_IRQHandler) {
|
||||||
if (dmasr & ETH_DMASR_RS) {
|
if (dmasr & ETH_DMASR_RS) {
|
||||||
/* Data Received.*/
|
/* Data Received.*/
|
||||||
osalSysLockFromISR();
|
osalSysLockFromISR();
|
||||||
chSemResetI(ÐD1.rdsem, 0);
|
osalThreadDequeueAllI(ÐD1.rdqueue, MSG_RESET);
|
||||||
#if MAC_USE_EVENTS
|
#if MAC_USE_EVENTS
|
||||||
chEvtBroadcastI(ÐD1.rdevent);
|
osalEventBroadcastFlagsI(ÐD1.rdevent, 0);
|
||||||
#endif
|
#endif
|
||||||
osalSysUnlockFromISR();
|
osalSysUnlockFromISR();
|
||||||
}
|
}
|
||||||
|
@ -196,11 +196,11 @@ CH_IRQ_HANDLER(ETH_IRQHandler) {
|
||||||
if (dmasr & ETH_DMASR_TS) {
|
if (dmasr & ETH_DMASR_TS) {
|
||||||
/* Data Transmitted.*/
|
/* Data Transmitted.*/
|
||||||
osalSysLockFromISR();
|
osalSysLockFromISR();
|
||||||
chSemResetI(ÐD1.tdsem, 0);
|
osalThreadDequeueAllI(ÐD1.tdqueue, MSG_RESET);
|
||||||
osalSysUnlockFromISR();
|
osalSysUnlockFromISR();
|
||||||
}
|
}
|
||||||
|
|
||||||
CH_IRQ_EPILOGUE();
|
OSAL_IRQ_EPILOGUE();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
|
@ -245,11 +245,11 @@ struct MACDriver {
|
||||||
/**
|
/**
|
||||||
* @brief Transmit semaphore.
|
* @brief Transmit semaphore.
|
||||||
*/
|
*/
|
||||||
semaphore_t tdsem;
|
threads_queue_t tdqueue;
|
||||||
/**
|
/**
|
||||||
* @brief Receive semaphore.
|
* @brief Receive semaphore.
|
||||||
*/
|
*/
|
||||||
semaphore_t rdsem;
|
threads_queue_t rdqueue;
|
||||||
#if MAC_USE_EVENTS || defined(__DOXYGEN__)
|
#if MAC_USE_EVENTS || defined(__DOXYGEN__)
|
||||||
/**
|
/**
|
||||||
* @brief Receive event.
|
* @brief Receive event.
|
||||||
|
|
|
@ -81,10 +81,10 @@ void macObjectInit(MACDriver *macp) {
|
||||||
|
|
||||||
macp->state = MAC_STOP;
|
macp->state = MAC_STOP;
|
||||||
macp->config = NULL;
|
macp->config = NULL;
|
||||||
chSemObjectInit(&macp->tdsem, 0);
|
osalThreadQueueObjectInit(&macp->tdqueue);
|
||||||
chSemObjectInit(&macp->rdsem, 0);
|
osalThreadQueueObjectInit(&macp->rdqueue);
|
||||||
#if MAC_USE_EVENTS
|
#if MAC_USE_EVENTS
|
||||||
chEvtObjectInit(&macp->rdevent);
|
osalEventObjectInit(&macp->rdevent);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -160,7 +160,8 @@ msg_t macWaitTransmitDescriptor(MACDriver *macp,
|
||||||
(time > 0)) {
|
(time > 0)) {
|
||||||
osalSysLock();
|
osalSysLock();
|
||||||
now = osalOsGetSystemTimeX();
|
now = osalOsGetSystemTimeX();
|
||||||
if ((msg = chSemWaitTimeoutS(&macp->tdsem, time)) == MSG_TIMEOUT) {
|
msg = osalThreadEnqueueTimeoutS(&macp->tdqueue, time);
|
||||||
|
if (msg == MSG_TIMEOUT) {
|
||||||
osalSysUnlock();
|
osalSysUnlock();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -218,7 +219,8 @@ msg_t macWaitReceiveDescriptor(MACDriver *macp,
|
||||||
(time > 0)) {
|
(time > 0)) {
|
||||||
osalSysLock();
|
osalSysLock();
|
||||||
now = osalOsGetSystemTimeX();
|
now = osalOsGetSystemTimeX();
|
||||||
if ((msg = chSemWaitTimeoutS(&macp->rdsem, time)) == MSG_TIMEOUT) {
|
msg = osalThreadEnqueueTimeoutS(&macp->rdqueue, time);
|
||||||
|
if (msg == MSG_TIMEOUT) {
|
||||||
osalSysUnlock();
|
osalSysUnlock();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue