changed simulated mac protocol;

waiting for both hw and ether at the same time
This commit is contained in:
fros4943 2006-10-11 09:06:41 +00:00
parent be942b531b
commit b1afe2257b

View file

@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: radio-arch.c,v 1.8 2006/10/09 14:42:25 fros4943 Exp $
* $Id: radio-arch.c,v 1.9 2006/10/11 09:06:41 fros4943 Exp $
*/
#include "dev/radio-arch.h"
@ -44,7 +44,7 @@
#include "sys/log.h"
#define MAX_RETRIES 50
#define MAX_RETRIES 100
#define SS_INTERFERENCE -150
const struct simInterface radio_interface;
@ -151,18 +151,21 @@ simDoSend(void)
memcpy(&simOutDataBuffer[0], &uip_buf[UIP_LLH_LEN], uip_len);
simOutSize = uip_len;
// Busy-wait while we are receiving
if (simReceiving && !simNoYield) {
cooja_mt_yield();
}
// Busy-wait until ether is ready, or die (MAC imitation)
// Busy-wait until both radio HW and ether is ready
int retries=0;
while (retries < MAX_RETRIES && simSignalStrength > SS_INTERFERENCE && !simNoYield) {
while (retries < MAX_RETRIES && !simNoYield &&
(simSignalStrength > SS_INTERFERENCE || simReceiving))
{
retries++;
cooja_mt_yield();
if (!(simSignalStrength > SS_INTERFERENCE || simReceiving))
{
// Wait one extra tick before transmission starts
cooja_mt_yield();
}
}
if (simSignalStrength > SS_INTERFERENCE) {
if (simSignalStrength > SS_INTERFERENCE || simReceiving) {
return UIP_FW_DROPPED;
}