Commit graph

1283 commits

Author SHA1 Message Date
nifi 55e0fec37e * Changed to write keys to CC2420 RAM big-endian order
* Fixed cc2420_aes_cipher() to wait for encryption to finish before reading result
2010-03-15 23:04:54 +00:00
nifi e834562455 * Fixed FASTSPI_READ_RAM_LE to wait for tx end before reading
* Added FASTSPI_WRITE_RAM_BE to write to RAM (big-endian order)
2010-03-15 23:01:37 +00:00
nvt-se 7f687b99e6 Debug off by default 2010-03-15 19:22:29 +00:00
nifi 3f8b346c29 replaced obsolete netif include with new ds6 2010-03-15 16:54:35 +00:00
joxe fd3d6c44d0 integration of new uip6 code from Mathilde and Julien - adds routing and improved interface handling 2010-03-15 16:41:24 +00:00
joxe 7d5e3fbfde added function to retrieve elapsed time 2010-03-15 15:53:57 +00:00
adamdunkels a9bad71fbd Increased the number of bits that repressent the MAX_RETRANSMITS attribute to allow for more than 7 hop-by-hop retransmissions 2010-03-14 23:01:12 +00:00
adamdunkels 7bab9316da 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.
2010-03-14 22:59:23 +00:00
adamdunkels 0035a70537 Reworked the locking code, which seems to fix a few bugs caused by the interaction with contikimac. Contikimac performs a CCA check in a preempting rtimer, which requires underlying code to properly call the GET_LOCK() macro. This fix seems to solve most problems, but there may be others left. 2010-03-14 22:45:20 +00:00
oliverschmidt def540e6c0 Avoid newlines in macro expansions as cc65 doesn't support them between the macro name and the open parenthesis of the arguments.
There were btw other even longer lines with expansions of the same macro already present.
2010-03-14 12:13:54 +00:00
joxe e8bd53cfd8 added typedef of icmp6_error 2010-03-13 09:25:24 +00:00
dak664 0236c6e725 Leave compiler warning for 16 bit timers 2010-03-12 17:51:07 +00:00
joxe 4c2daf9886 started integration of Mathildes and Juliens new uip6 code + made some ND timers configurable 2010-03-12 16:19:19 +00:00
dak664 7c5eed6bda Add includes needed by AVR-gcc, fix compiler warning 2010-03-12 15:23:57 +00:00
dak664 52c9f4bde3 Remove compiler warning 2010-03-12 15:21:14 +00:00
nifi 2cf0fb9cce Changed to use short address mode with short rime addresses 2010-03-12 14:49:21 +00:00
nvt-se 6be0bac1a1 minor include fix + added documentation 2010-03-12 13:40:13 +00:00
nvt-se 881fac7f50 fixed comment 2010-03-12 13:25:14 +00:00
nvt-se 6ce15b14c9 prepend net/ to include paths 2010-03-12 13:23:50 +00:00
nvt-se c316fc2fa9 Make it possible to provide feedback to the neighbor modules 2010-03-12 13:20:13 +00:00
nvt-se 814dd8bf59 Added generic modules for neighbor information. 2010-03-12 13:19:45 +00:00
joxe d75ec2da53 fixed so that uip6 sends icmp6 errors from correct source when acting as router - improves support for tracert, etc. 2010-03-11 18:07:37 +00:00
nifi 58c55340ed fixed to work with IPv6 2010-03-10 22:30:39 +00:00
adamdunkels 90bb63a383 Set the (correct) packet attribute to let the MAC layer perform retransmissions 2010-03-09 20:40:50 +00:00
adamdunkels 4b60301727 Don't set the ack flag for broadcast packets 2010-03-09 20:40:11 +00:00
adamdunkels 17f6b3a324 Simplified the structure of the code 2010-03-09 20:38:55 +00:00
adamdunkels d0e6436a20 Don't call up the netstack if the transmission was deferred 2010-03-09 20:37:02 +00:00
c_oflynn dc3e6c1877 Fix TC/FL errors in hc-06. Need to verify further 2010-03-09 16:19:44 +00:00
joxe 48a9bff889 added support for dropping packets if hop limit is reached 2010-03-09 15:50:15 +00:00
joxe 1214b1fa40 made cc2420 panid and short address not dependent on endianness 2010-03-09 15:45:29 +00:00
c_oflynn 1d483a5da4 Fix UDP compression to work per hc-06. More commits to come to fix Traffic Class stuff... 2010-03-09 15:18:03 +00:00
nvt-se bf2e85a57f supply an argument of the same type as the print format 2010-03-09 14:14:36 +00:00
adamdunkels edda6dd86c Minor bugfix: don't subtract collisions and deferrals from the number of transmissions 2010-03-09 13:23:58 +00:00
adamdunkels 5a6fc2ade0 Bugfix: set up rtmetric before starting to announce it. Set the number of MAC layer retransmissions correctly 2010-03-09 13:21:28 +00:00
adamdunkels 2c3d3e3d73 Bugfix: handle deferred transmissions correctly (don't count them) 2010-03-09 13:20:08 +00:00
adamdunkels 79722b4247 Rework of the timing conditions of ContikiMAC: the old timing did not work well on real hardware, the new one seems to work better 2010-03-09 13:19:05 +00:00
adamdunkels cc7d3ae142 Reset CCA mode to default. Make sure that the radio gto switched on when reading RSSI; otherwise node will reboot because of watchdog 2010-03-09 13:18:16 +00:00
nvt-se 96eb20d235 forward arguments even if REXMIT is not set 2010-03-04 14:17:43 +00:00
dak664 c65e09ceb2 Remove compiler warnings 2010-03-02 15:41:23 +00:00
nifi 5e43a6998b Replaced old framer (framer_get/framer_set) with new NETSTACK style configuration. Added nullrdc-framer that is a nullrdc with framer support. 2010-03-01 13:30:21 +00:00
nifi 0c084b8c68 added random init of sequence number 2010-03-01 13:17:01 +00:00
adamdunkels 524625dfd2 Removed debug string names of packet attribtues 2010-02-28 20:20:19 +00:00
adamdunkels 410d860a93 Improved handling of neighbor phase estimation: instead of busy-waiting while waiting for neighbor's phase, the new code schedules a timer just before neighbor wakes up 2010-02-28 20:19:47 +00:00
adamdunkels e6fceb7200 Added MAC-layer return value to indicate that a packet transmission was deferred 2010-02-28 20:18:30 +00:00
adamdunkels ec928a2a19 Make max queueing time depend on retransmission timeout 2010-02-28 14:15:58 +00:00
adamdunkels e06acc4525 Prod the watchdog if waiting for along time 2010-02-28 14:15:16 +00:00
adamdunkels 74da90a06b Don't count collisions as transmissions 2010-02-28 10:07:17 +00:00
adamdunkels f95a6cce85 Added function for obtaining packet queue length 2010-02-28 09:20:32 +00:00
adamdunkels 8fe15f7b45 New packet attribute for specifiying MAC layer retransmissions; reorder and commented packet attributes 2010-02-28 09:19:43 +00:00
adamdunkels 970a9eb9c7 Increased neighbor lifetime to allow for longer neighbor announcement intervals 2010-02-28 09:19:04 +00:00
adamdunkels 7165a3866f Significant rework of the Contiki data collection protocol:
* the new version makes use of MAC-layer feedback so that bad paths
  can be identified quicker and then avoided.

* the new code uses transport layer ACKs that contain feedback from
  the collect protocol: when a packet cannot be forwarded due to lack
  of resources, the ACK contains a flag that indicates that the packet
  could not be forwarded. ACKs also contain the routing metric of the
  sender, which improves agility in face of rapid path changes.

* loop detection and management has been improved: with higher path
  metric agility, the system is more prone to short-lived routing
  loops. Instead of dropping looping packets, the new version adjusts
  the routing metric for the routes that exhibit loops so that the
  risk for future loops is reduced.

* make use of packet attributes to inform the MAC layer of how many
  times packets should be retransmitted.
2010-02-28 09:18:01 +00:00
adamdunkels b6b4941871 Made the number of MAC-layer retransmissions configurable on a per-packet basis, via a packet attribute 2010-02-28 08:35:16 +00:00
adamdunkels ed88f487c8 Improved detection of link-layer ACKs; increased the time ContikiMAC waits when it has detected a link-layer ACK; increased the number of silence periods required to detect a CCA false positive 2010-02-28 08:33:21 +00:00
adamdunkels fa1a96636e Bugfix: the compile-time check for UIP_LLADDR_LEN previously generated a run-time error, when it should have generated a compile-time error 2010-02-28 08:30:39 +00:00
adamdunkels ba0e50a7b7 Set the default number of MAC layer retransmissions for IPv6 packets to 2 2010-02-28 08:29:42 +00:00
adamdunkels b9827d2b36 Bugfix: didn't correctly reset the pending flag when a packet was read from the radio 2010-02-25 16:06:44 +00:00
joxe 0ab2bc9a31 upgraded sicslowpan to hc-06 - no 48 bit multicast compression support yet 2010-02-25 15:50:58 +00:00
nifi b50d47fb80 added missing function in sicslowmac_driver 2010-02-23 22:45:11 +00:00
nifi 1cfcc8a73a Removed the combined name of CSMA and NETSTACK_RDC. The name of NETSTACK_RDC can be accessed separately if needed. 2010-02-23 20:42:45 +00:00
nifi c20047f657 Changed the network stack to use different structures for the different layers (network_driver, mac_driver, rdc_driver, radio_driver). This helps to avoid incorrect configuration. 2010-02-23 20:09:11 +00:00
adamdunkels bb62749de7 Made debug printfs optional 2010-02-23 18:49:58 +00:00
adamdunkels 0ab2ba433f Bugfix: the wrong callback pointer was passed to higher layers. 2010-02-23 18:49:45 +00:00
adamdunkels ed52586e18 Rework of parts of the ContikiMAC code based on input from experimental results. When channel check is triggered because of a false positive, the new version checks the radio several times to make sure that there really is an incoming packet. Otherwise, the radio is switched off. Cleaned up and removed old unused code. Added a few temporary debugging mechanisms and functions. 2010-02-23 18:49:05 +00:00
adamdunkels 50e1452564 Ugly workaround for internal error in mspgcc when applying the >= operator to two 32-bit values 2010-02-23 18:40:08 +00:00
adamdunkels 0c4c88ae66 Improved per-packet power profiling: if a packet is retransmitted, the new energy is added to the old energy so that it is possible to measure the full energy for all transmissions of the packet 2010-02-23 18:39:00 +00:00
adamdunkels ca0417a923 Added the MAC layer callback functionality so that the Rime network layer gets information from the MAC about the status of sent packets: were they successfully transmitted, or was there a collisions? How many retries were there? 2010-02-23 18:38:05 +00:00
adamdunkels f10eedab3e Added debug printout 2010-02-23 18:37:15 +00:00
adamdunkels 2d13fecea7 Improved backoff management: timer is now doubled on every transmission, until the using module calls the neighbor_discovery_start() function again. Don't cancel the transmission even if a lower value arrives (this fixes a problem with multi-hop ETX propagaion). 2010-02-23 18:36:50 +00:00
adamdunkels 0eade2886c Better loop handling: when a loop is detected, the neighbor to which the packet was originally sent gets an inflated ETX; made sure that collect without announcments work; increased timeouts, to work nicer in larger networks 2010-02-23 18:35:23 +00:00
adamdunkels a4d9d6651b Added the option to specify the old value to observers so that they can determine if the announcement should be sent out quicklier than otherwise 2010-02-23 18:32:44 +00:00
adamdunkels b746b7fc06 Reworked the Rime/Chameleon interface so that packets now always hit Rime before Chameleon. Chameleon is now only called by Rime. This makes packet sniffing easier, and allows for sniffing packets after their header has been processed by Chameleon, thereby making per-packet power profiling much easier to implement 2010-02-23 18:29:53 +00:00
adamdunkels d8cce42d28 Set the default radio driver to nullradio 2010-02-23 18:28:04 +00:00
adamdunkels 47578806b5 Removed semicolon from #define to allow the semicolon to be placed naturally after the macro is used 2010-02-23 18:27:04 +00:00
adamdunkels 4b04fdd328 Minor style fix 2010-02-23 18:26:26 +00:00
adamdunkels 1ee32c3074 Removed non-functional time synchronization code; added some experimental code for CCA checks (enabled CCA mode 1, a temporary development function for setting the CCA threshold); enable the possibility to switch off radio even if a packet is currently arriving 2010-02-23 18:24:49 +00:00
adamdunkels 5292005962 A null radio driver that does not do anything - useful in the native port and as a template for new radio drivers 2010-02-23 18:18:53 +00:00
adamdunkels 0b2b7bcdba Removed inadvertedly left-over include file 2010-02-18 23:52:34 +00:00
adamdunkels 5cf3b83733 Common initialization code for the netstack 2010-02-18 23:15:26 +00:00
adamdunkels a2664054c5 Always include netstack.h 2010-02-18 23:09:30 +00:00
adamdunkels f49ebfe1c4 Temporarily disabled rime route udp because it breaks with newest MAC interfaces 2010-02-18 21:53:08 +00:00
adamdunkels e34eb54960 A work-in-progress rework of the Contiki MAC and radio layers. The
main ideas are:

* Separates the Contiki low-layer network stack into four layers:
  network (e.g. sicslowpan / rime), Medium Access Control MAC
  (e.g. CSMA), Radio Duty Cycling RDC (e.g. ContikiMAC, X-MAC), and
  radio (e.g. cc2420).
* Introduces a new way to configure the network stack. Four #defines
  that specify what mechanism/protocol/driver to use at the four
  layers: NETSTACK_CONF_NETWORK, NETSTACK_CONF_MAC, NETSTACK_CONF_RDC,
  NETSTACK_CONF_RADIO.
* Adds a callback mechanism to inform the MAC and network layers about
  the fate of a transmitted packet: if the packet was not possible to
  transmit, the cause of the failure is reported, and if the packets
  was successfully transmitted, the number of tries before it was
  finally transmitted is reported.
* NULL-protocols at both the MAC and RDC layers: nullmac and nullrdc,
  which can be used when MAC and RDC functionality is not needed.
* Extends the radio API with three new functions that enable more
  efficient radio duty cycling protocols: channel check, pending
  packet, and receiving packet.
* New initialization mechanism, which takes advantage of the NETSTACK
  #defines.
2010-02-18 21:48:39 +00:00
adamdunkels f8c804e28b ntikiMAC: a new radio duty cycling mechanism that uses a combination
of link-layer and MAC-layer mechanisms to achieve a very low power
consumption: during idle listening the radio is switched off between
99.2% and 99.6% of the time. One unicast transmission typically adds
between 0.07% and 1.2% additional radio time, depending on packet
size.

ContikiMAC uses the standard IEEE 802.15.4 message format and adds no
additional headers.

ContikiMAC is simple: it uses periodic two-shot channel sampling
during idle listening to keep the radio on-time down. Transmissions
are done with repeated transmissions until a link-layer ACK is
received.
2010-02-18 21:26:15 +00:00
adamdunkels f5c48751b5 Reworked 802.15.4 header creation and parsing so that it works regardless of the size of the rimeaddr_t typedef 2010-02-18 21:00:28 +00:00
adamdunkels 2fbf21b2b3 Refactored the phase optimization functionality into a separate module 2010-02-18 20:58:59 +00:00
adamdunkels 515a391ee4 Removed left-over debug printfs 2010-02-15 23:31:05 +00:00
dak664 bb9afb4fb1 Remove compiler warning 2010-02-15 20:49:38 +00:00
adamdunkels 4bb0375251 Buffer name definition bugfix 2010-02-15 19:23:54 +00:00
adamdunkels 9bb149ca13 Bugfix by Raimondas Sasnauskas: TCP SYN duplicate receptions in the SYN_RCVD state was not correctly handled 2010-02-15 18:03:07 +00:00
adamdunkels d67d1f7340 Major bugfix, found by Raimondas Sasnauskas: the TCP periodic timer was not started when a new connection request arrived. If there were no other active TCP connections, this means that the SYNACK would never be retransmitted, potentially leading to a forever stale TCP connection. 2010-02-09 12:58:53 +00:00
adamdunkels 4a522c96dd Added debugging statements for packet drops 2010-02-08 21:59:49 +00:00
adamdunkels 2b6a651233 Added missing include, made debug statement more explicit 2010-02-08 21:59:21 +00:00
adamdunkels 2eba08e8f6 Made queuebuf statistics configurable, and off by default 2010-02-08 21:10:32 +00:00
nvt-se f4d19560fc Fixed a performance problem by not allowing GC while doing merges of files and micro logs. 2010-02-08 14:08:14 +00:00
oliverschmidt c284092a53 - Set cursor in ctk_draw_init() to top left corner as it is called for re-initialization on Contiki exit. 2010-02-07 21:43:03 +00:00
oliverschmidt 1d1f3a23af - No need for textcolor() before cclear().
- Set textcolor() in ctk_draw_init() to some reasonable value as it is called for re-initialization on Contiki exit.
2010-02-07 21:38:01 +00:00
adamdunkels b98f7d891f Bugfix: added missing queuebuf allocation 2010-02-06 20:50:24 +00:00
adamdunkels 671216c558 No need to clear the headers now that we explicitly save a queuebuf when sending fragments 2010-02-06 17:07:43 +00:00
adamdunkels b6647b5630 Turns out that with cxmac, clearing the header after sending a packet is not enough to make fragmentation work. Instead, we allocate a queuebuf and restore the packet after from the queuebuf after sending it. 2010-02-06 09:42:49 +00:00
adamdunkels 494e692d0b Bugfix: clear the header after sending a packet solves a problem with fragmentation; also prod the watchdog since fragment transmissions can take a long time with some low-power MAC protocol 2010-02-06 07:49:58 +00:00
adamdunkels a68b4c40c4 Added a function to clear only the header part of the packetbuf 2010-02-06 07:48:52 +00:00