Simplified timeout handling in MAC driver.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@10935 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
parent
981e11216a
commit
b2b05acab3
|
@ -151,7 +151,6 @@ msg_t macWaitTransmitDescriptor(MACDriver *macp,
|
||||||
MACTransmitDescriptor *tdp,
|
MACTransmitDescriptor *tdp,
|
||||||
sysinterval_t timeout) {
|
sysinterval_t timeout) {
|
||||||
msg_t msg;
|
msg_t msg;
|
||||||
systime_t now;
|
|
||||||
|
|
||||||
osalDbgCheck((macp != NULL) && (tdp != NULL));
|
osalDbgCheck((macp != NULL) && (tdp != NULL));
|
||||||
osalDbgAssert(macp->state == MAC_ACTIVE, "not active");
|
osalDbgAssert(macp->state == MAC_ACTIVE, "not active");
|
||||||
|
@ -159,15 +158,11 @@ msg_t macWaitTransmitDescriptor(MACDriver *macp,
|
||||||
while (((msg = mac_lld_get_transmit_descriptor(macp, tdp)) != MSG_OK) &&
|
while (((msg = mac_lld_get_transmit_descriptor(macp, tdp)) != MSG_OK) &&
|
||||||
(timeout > (sysinterval_t)0)) {
|
(timeout > (sysinterval_t)0)) {
|
||||||
osalSysLock();
|
osalSysLock();
|
||||||
now = osalOsGetSystemTimeX();
|
|
||||||
msg = osalThreadEnqueueTimeoutS(&macp->tdqueue, timeout);
|
msg = osalThreadEnqueueTimeoutS(&macp->tdqueue, timeout);
|
||||||
if (msg == MSG_TIMEOUT) {
|
if (msg == MSG_TIMEOUT) {
|
||||||
osalSysUnlock();
|
osalSysUnlock();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (timeout != TIME_INFINITE) {
|
|
||||||
timeout -= (osalOsGetSystemTimeX() - now);
|
|
||||||
}
|
|
||||||
osalSysUnlock();
|
osalSysUnlock();
|
||||||
}
|
}
|
||||||
return msg;
|
return msg;
|
||||||
|
@ -211,23 +206,17 @@ msg_t macWaitReceiveDescriptor(MACDriver *macp,
|
||||||
MACReceiveDescriptor *rdp,
|
MACReceiveDescriptor *rdp,
|
||||||
sysinterval_t timeout) {
|
sysinterval_t timeout) {
|
||||||
msg_t msg;
|
msg_t msg;
|
||||||
systime_t now;
|
|
||||||
|
|
||||||
osalDbgCheck((macp != NULL) && (rdp != NULL));
|
osalDbgCheck((macp != NULL) && (rdp != NULL));
|
||||||
osalDbgAssert(macp->state == MAC_ACTIVE, "not active");
|
osalDbgAssert(macp->state == MAC_ACTIVE, "not active");
|
||||||
|
|
||||||
while (((msg = mac_lld_get_receive_descriptor(macp, rdp)) != MSG_OK) &&
|
while (((msg = mac_lld_get_receive_descriptor(macp, rdp)) != MSG_OK)) {
|
||||||
(timeout > (sysinterval_t)0)) {
|
|
||||||
osalSysLock();
|
osalSysLock();
|
||||||
now = osalOsGetSystemTimeX();
|
|
||||||
msg = osalThreadEnqueueTimeoutS(&macp->rdqueue, timeout);
|
msg = osalThreadEnqueueTimeoutS(&macp->rdqueue, timeout);
|
||||||
if (msg == MSG_TIMEOUT) {
|
if (msg == MSG_TIMEOUT) {
|
||||||
osalSysUnlock();
|
osalSysUnlock();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (timeout != TIME_INFINITE) {
|
|
||||||
timeout -= (osalOsGetSystemTimeX() - now);
|
|
||||||
}
|
|
||||||
osalSysUnlock();
|
osalSysUnlock();
|
||||||
}
|
}
|
||||||
return msg;
|
return msg;
|
||||||
|
|
Loading…
Reference in New Issue