Two major changes:

* Low-power streaming. Experimental support for a low-power mode which
  allows rapid exchange of packets with a 16% duty cycle. Does not
  seem to function correctly yet though.

* Phase locking. When the phase of a neighbor has been detected, the
  sender assumes that the neighbor will keeps it phase and does not
  send more strobes than necessary to hit the receiver's channel
  check - even if the receiver does not acknowledge the reception of
  the strobes when it should have been awake. Instead, the sender
  stops strobing and tries again at a later time.
This commit is contained in:
adamdunkels 2010-03-14 22:59:23 +00:00
parent 0035a70537
commit 7bab9316da
3 changed files with 214 additions and 202 deletions

View file

@ -28,7 +28,7 @@
*
* This file is part of the Contiki operating system.
*
* $Id: phase.h,v 1.2 2010/02/28 20:19:47 adamdunkels Exp $
* $Id: phase.h,v 1.3 2010/03/14 22:59:23 adamdunkels Exp $
*/
/**
@ -51,6 +51,7 @@ struct phase {
struct phase *next;
rimeaddr_t neighbor;
rtimer_clock_t time;
uint8_t noacks;
};
struct phase_list {
@ -59,6 +60,7 @@ struct phase_list {
};
typedef enum {
PHASE_UNKNOWN,
PHASE_SEND_NOW,
PHASE_DEFERRED,
} phase_status_t;
@ -72,8 +74,8 @@ void phase_init(struct phase_list *list);
phase_status_t phase_wait(struct phase_list *list, const rimeaddr_t *neighbor,
rtimer_clock_t cycle_time, rtimer_clock_t wait_before,
mac_callback_t mac_callback, void *mac_callback_ptr);
void phase_register(const struct phase_list *list, const rimeaddr_t * neighbor,
rtimer_clock_t time);
void phase_update(const struct phase_list *list, const rimeaddr_t * neighbor,
rtimer_clock_t time, int mac_status);
#endif /* PHASE_H */