Commit graph

346 commits

Author SHA1 Message Date
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
joxe 3a2eec2b1a fixed ext-sensor for jcreate 2010-02-13 11:20:48 +00:00
adamdunkels 6414bf3a55 Enabled sicslowpan fragmentation and reassembly by default on the sky platform 2010-02-08 22:12:29 +00:00
nifi 978d383395 Corrected include path 2010-02-08 00:02:39 +00:00
joxe 1da7c3eccd convert registers upto 9 instead of upto 4 2010-02-06 18:28:26 +00:00
adamdunkels 3717c39431 Updated the ext-sensor to use the new sensor API; patch by Jesper Karlsson 2010-02-06 14:41:24 +00:00
adamdunkels aaab082f27 Correctly print out the aaaa: address, if enabled 2010-02-06 10:00:49 +00:00
adamdunkels 37f7770bd8 Made it possible to override the SICSLOWPAN_CONF_FRAG option. Increased the default uIP buffer size on IPv6 to provide some room for fragmented packets 2010-02-06 10:00:25 +00:00
nifi 18f5ef71f0 added missing include 2010-02-03 20:30:07 +00:00
adamdunkels a9c742402c Use cxmac for IP, xmac for non-IP. Increased uIP buffer size for IPv6 to accomodate ICMP packets 2010-02-03 16:48:04 +00:00
adamdunkels f9e991c0dd Turning of the MAC protocol in the IPv4-over-mesh actually made performance worse due to broadcasts being received multiple times, which interfered with SLIP I/O 2010-02-03 01:20:47 +00:00
joxe 09c3ba2753 minor cleanup 2010-02-02 21:17:44 +00:00
joxe fd4aebdf7f refactored some ADC code into sky-sensors and made it possible to turn off sensors to save energy 2010-02-02 20:59:45 +00:00
adamdunkels 88fb1c80c9 Do not activate the sensors by default: sensors should be activated by the applications that need them 2010-02-02 16:25:30 +00:00
adamdunkels d0d52638b8 Disable (debugging-) initialiation of aaaa:: address; add CSMA MAC for IPv6/6lowpan 2010-02-01 11:55:04 +00:00
adamdunkels f63f6a7a88 Added default configuration options for the cxmac driver 2010-01-31 18:48:41 +00:00
adamdunkels ba2c445676 Reduce the TCP MSS so that it runs nicely over IPv6/802.15.4 2010-01-28 13:38:40 +00:00
adamdunkels 5922402b3e Added the CSMA MAC mechanism on top of the default duty cycling
mechanism X-MAC. The CSMA is configurable with a MAC_CSMA define, just
like the MAC protocol is configurable with the MAC_DRIVER define.
2010-01-25 11:48:16 +00:00
adamdunkels 11362d0489 Remove the default list of sensors from the main() file to save space - those apps that need them can use them directly in any case 2010-01-21 11:17:08 +00:00
nifi c9a48aa752 Updated to match the new sensors API 2010-01-15 21:37:15 +00:00
nifi 467df8ad4c reverted accidental commit 2010-01-14 22:26:38 +00:00
nvt-se d2655eac7a make watchdog management slightly more abstract to simplify porting 2010-01-14 21:16:58 +00:00
adamdunkels 46753473fa Added constants for light sensor values 2010-01-14 20:23:02 +00:00
adamdunkels 9ae29c3be5 Added light, sht11, battery sensors; restored light and battery activation since rtimers don't work without them (at present) 2010-01-14 20:18:23 +00:00
adamdunkels bb63085f60 Added SHT11 sensor API for Tmote Sky 2010-01-14 20:16:52 +00:00
nifi dbe56e4666 Updated to match the new sensors API 2010-01-14 20:01:18 +00:00
joxe 3c0dcb45c7 fixed for updated sensors API 2010-01-14 15:50:13 +00:00
joxe 31ea888b75 fixed Sky platform for new sensor APIs 2010-01-14 14:00:38 +00:00
joxe 4a3953204f changed sky sensors to new api 2010-01-14 13:53:06 +00:00
adamdunkels e3fed27f4a Broke out the CC2420 SFD interrupt into a separate file to allow easier overloading with project-specific files 2009-12-05 19:42:56 +00:00
nifi bb0ffe0478 moved rime initialization into rime router so it is easier to switch IPv6 routing module 2009-11-18 13:51:55 +00:00
adamdunkels d3131e1811 Print link-local IPv6 address when booting the node 2009-10-29 22:10:59 +00:00
adamdunkels f03caa357e Allow reprogramming invidual nodes with 'make file.upload MOTE=x' where x is the mote number just like with make login 2009-10-29 22:10:21 +00:00
fros4943 99a540fd0d macro renamed to SPI_IS_ENABLED() to avoid confusions 2009-10-27 15:33:24 +00:00
fros4943 6b36cd9de9 added macro for checking whether SPI is ENABLED 2009-10-27 15:25:02 +00:00
adamdunkels 29e8dae88c Added X-MAC support for IPv6/SICSlowpan nodes, added 802.15.4 default framing to X-MAC 2009-10-19 20:55:52 +00:00
adamdunkels 79d7c366a3 Rime polite announcements should be used when IPv6 is enabled, and not used otherwise 2009-10-18 07:15:33 +00:00
nifi d4b619bcc5 Renamed SPI_WAITFOREOTxBUF to SPI_WAITFORTxREADY for clarity and generalized SPI transmission status checks to work with both AVR and MSP430 2009-09-07 11:31:26 +00:00
nifi 3a8ee769cb Changed to monitor the UART transmitter buffer ready flag instead of the UART transmitter empty flag. This almost doubles the speed of transmitting data to CC2420. Patch by James Brown. 2009-08-31 12:06:34 +00:00
nvt-se ebd91b9f9d Removed deprecated dir cache macro. 2009-08-30 20:36:32 +00:00
adamdunkels b71faae330 ext-sensor: new driver for external sensors (e.g. Phidgets) on the Sentilla JCreate, developed by Marcus Lunden 2009-08-25 16:24:49 +00:00
nvt-se b0431cc688 removed obsolete offset type definitions. 2009-07-13 20:02:16 +00:00
nvt-se 1e0ca9ceac Made the use of micro logs configurable to make file modifications
more efficient on storage types that support inline updates.

The sky platform uses logs, and the native platform uses no logs.
2009-06-29 13:30:16 +00:00
nifi 05d4bc4532 allow UIP_CONF_ROUTER to be set as compilation flag 2009-06-29 09:54:39 +00:00
joxe 1cc33ac451 configured routing to off for sky-IPv6 2009-06-26 12:01:23 +00:00
joxe e16d4b0f06 fixed IPV6 flags for sky 2009-06-26 12:00:49 +00:00
nvt-se b912a41ea3 use polite announcements when running Rime over UDP. 2009-06-24 16:44:26 +00:00
nifi 912aba7280 added init function in MAC driver for easier configuration 2009-06-22 11:14:11 +00:00
fros4943 d54176205c decreased default elfloader memory usage for sky platform 2009-05-18 10:32:56 +00:00
adamdunkels bc6c9410cc Print out the gateway's IP address more prominently 2009-05-12 17:32:49 +00:00
nvt-se 74e9bc8789 Added flash reads and writes to energest. 2009-05-11 15:26:24 +00:00
adamdunkels 900480959b Increased the default number of queue buffers: there usually is plenty of RAM left, so we should be able to afford it 2009-05-10 21:15:16 +00:00
joxe 6a7bc4c3a5 added mcu-chip temperature to accelerometer sensor - value 3 2009-05-08 16:03:50 +00:00
adamdunkels e6215712ca When a node is configured as an IP gateway, we switch off the power-saving MAC protocolto improve performance and to avoid problems with the serial communication that X-MACs use of rtimers can cause 2009-04-29 11:46:20 +00:00
adamdunkels 064f4488d4 Increase default CPU speed from 2.4576 MHz to 3.9 MHz. Communication works better, at a low power cost 2009-04-29 11:43:48 +00:00
adamdunkels bbab7ba55c When the tmote-bsl binary is found, program only one mote at once (parallel programming with tmote-bsl doesn't seem to work) 2009-04-29 11:42:56 +00:00
fros4943 bc6704079c cc2420 checksums temporarily disabled, due to timing problems with the x-mac unicast optimization 2009-04-16 14:34:51 +00:00
adamdunkels 2e37fca49f Check for tmote-bsl-linux binary under linux, and use it is available 2009-04-10 07:43:29 +00:00
adamdunkels 2545fd9069 Hack to make DS2411 ID useable as an Ethernet MAC address (remove multicast bit) 2009-04-10 00:40:08 +00:00
adamdunkels 3415ff26bd Added CC2420 checksums to non-ipv6 packets. Set a conservative TCP MSS 2009-04-10 00:39:19 +00:00
nifi b41b79e3a9 Disable timestamp when using 802.15.4 frames (CC2420_CONF_TIMESTAMPS adds timestamp to radio packets). 2009-04-06 17:18:20 +00:00
nifi 900d8d8e17 changed to use HC01 compression for uip6 2009-04-06 16:01:11 +00:00
nifi 8b41f3a6a8 set rime addr size to 8 for uip6, restored clock resolution 2009-04-06 14:59:49 +00:00
nifi 76b7bf43d0 added setup for uip6 with 802.15.4 frames and routing using Rime 2009-04-06 14:12:58 +00:00
nifi a36e529df1 added configuration for panid 2009-04-06 13:31:00 +00:00
nvt-se f53560f6a5 enabled multihop routing, increased uip buffer size. 2009-04-06 13:23:14 +00:00
nifi c1d490b6a7 added workaround for memcpy/memset bug in mspgcc 2009-04-06 13:07:37 +00:00
adamdunkels 58331e6802 Made tick resultion more fine-grained to support a shorter LPP listen time 2009-04-03 11:46:48 +00:00
fros4943 b730fb329d changed upload rules due to problems on linux platforms 2009-04-02 11:15:30 +00:00
nifi c6b15c289e * show radio channel at startup
* only initialize timesynch when timesynch is enabled
2009-03-31 13:25:50 +00:00
fros4943 ac22ad5081 changed the Makefile rules for uploading to sky-nodes.
the earlier approach caused problems sometimes, resulting in command succeeding without all nodes being reprogrammed
2009-03-26 13:29:44 +00:00
adamdunkels 0076bfe8a5 Changed the name of the 'serial' module to 'serial-line' to signify that the module is about lines of data from the serial port, not individual bytes, and to make sdcc happy 2009-03-17 15:56:32 +00:00
adamdunkels 65eb5fd4e8 Renamed the rimebuf module to packetbuf to signal that the module is used outside of a pure Rime context (e.g., the sicslowpan code uses it). 2009-03-12 21:58:20 +00:00
julienabeille 0395ff5f39 sicslowpan Typo 2009-03-09 08:19:07 +00:00
adamdunkels e3043b1be2 Enable communication power accounting for xmac by default 2009-03-01 20:43:37 +00:00
adamdunkels ac9ab9c582 #include lib/random.h 2009-03-01 20:42:10 +00:00
nvt-se 47d70f2ae3 Switched name to CFS_CONF_OFFSET_TYPE to emphasize that it is a configurable option. 2009-03-01 12:00:00 +00:00
nvt-se b47221672a switched cfs offset type to signed long to allow backward movements with cfs_seek. 2009-02-28 13:41:16 +00:00
nvt-se 9f8f773b43 use unsigned long as cfs offset type. 2009-02-27 14:53:15 +00:00
adamdunkels d761dfebd1 Bugfix: reduced the size of the uIP buffer to account for MAC header space 2009-02-25 10:23:03 +00:00
adamdunkels 7781bbea58 Enabled X-MAC announcements by default, disabled polite broadcast announcements by default 2009-02-14 22:52:24 +00:00
adamdunkels 585620c102 Reverted the recent change from random_rand() to rand(). It turned out that
since libc rand() returns a signed int, there were frequently problems with
timer values wrapping. By reverting to random_rand(), we can provide a
random generator that returns an unsigned and the timer problems are solved.
2009-02-11 11:08:53 +00:00
fros4943 f1fc4c879f cfs_coffee_get_fd_set() was renamed 2009-02-09 10:09:13 +00:00
nvt-se d0a546b049 A long refactoring session yielded the following.
Technical changes:

* Factored out file specific information from the file descriptor
  structure into a new file structure.

  - Useful file metadata can be stored after the file is closed.
  - File descriptors become much smaller.
  - Significantly reduces the need to scan for the file end.

* Use correct types in all function signatures.
* Removed the directory cache.

Results:

* Enormous speed increase when opening cached files (10x-20x.)
* Multiple fd:s pointing to the same file have the correct semantics.
* About 100 bytes smaller ROM size.
* Slightly smaller static RAM size.
2009-02-08 17:08:13 +00:00
adamdunkels 440899e4cb Seed rand() with the node ID + MAC address 2009-02-07 16:49:36 +00:00
adamdunkels 5cf0c25ca6 A few more minor fixes 2009-02-04 20:58:05 +00:00
adamdunkels 96882c402a Fixed conformance to Contiki code style :) 2009-02-04 20:55:41 +00:00
joxe 9689a579be added DCO/CPU speed re-synch each 30 seconds 2009-02-04 19:32:20 +00:00
fros4943 c16921f108 checkpointing library implemented for the sky platform (cfs interface is currently not optimized) 2009-02-04 17:51:49 +00:00
joxe e5f0d786a8 fixed sky platform to use the new uart1_active api to avoid messing up last chars transmitted 2009-01-31 12:45:03 +00:00
fros4943 603740b13b removed compiler warning by returning 0 at undefined value 2009-01-23 17:08:17 +00:00
fros4943 ebcaf8eec8 removed compilation warning due to unused is_gateway variable (outside uIP mode) 2009-01-19 13:44:04 +00:00
adamdunkels e70b45c102 Updated to make use of the tmote-bsl instead of msp430-bsl (needed for the Sentilla JCreate) if it exists 2009-01-15 22:12:46 +00:00
adamdunkels 29fe3d8741 Added acc-sensor.c, dDriver for the acceleromenter sensors on the Sentilla JCreate board 2009-01-15 21:07:03 +00:00
adamdunkels 9f0006fde0 Driver for the acceleromenter sensors on the JCreate board 2009-01-15 21:06:02 +00:00
fros4943 5f3c1a0e12 elfloader executing loaded programs from ram (not rom) by default on msp430 platforms. 2009-01-15 09:04:04 +00:00
joxe 55280131fc added printout of MAC protocol name 2008-11-24 14:31:08 +00:00
fros4943 720357bc60 added log_message() implementation 2008-11-21 10:35:46 +00:00
adamdunkels 83155d48f9 Moved the network gateway logic to the uip-over-mesh module. 2008-11-09 12:22:04 +00:00
nvt-se 0c4f7bed8f temporary fix to get sicslowpan.c working on the Sky platform:
conventional MAC implementations require a call to the MAC driver's
read function.
2008-11-06 20:45:06 +00:00
nvt-se 21e4b4be80 map rime address to mac address for ipv6 2008-11-06 15:14:24 +00:00
nvt-se c5d9795f92 added initialization for uip6 2008-11-05 15:34:04 +00:00
nvt-se d1d09ea1fd added IPV6 configuration. 2008-11-05 14:31:06 +00:00
nvt-se aff141f56e reduced default sizes 2008-10-09 14:56:53 +00:00
nvt-se 10639bc982 use abstract types for offsets and pages so that we can easily port it to
very large or small memories.
2008-10-03 19:27:28 +00:00
joxe 1a1ddd0bd5 removed energest-arch from sky and esb platforms 2008-09-29 12:38:18 +00:00
joxe 5b1c229754 fixed battery sensor for sky platform 2008-09-18 21:29:06 +00:00
joxe 5d860b1df2 changed sleep to go into LPM3 2008-09-18 17:58:21 +00:00
joxe 8aa8e26c54 removed redundant sensor initialization, added comment 2008-09-14 20:47:30 +00:00
nvt-se 2b68f88e77 moved platform independent definitions 2008-07-11 21:39:26 +00:00
nvt-se e8a85b3726 moved platform independent code to the right place 2008-07-11 21:35:10 +00:00
adamdunkels 8e5d255b5b Moved initialization of the SHT11 until after other initialization: this seems to fix a bug where the SHT11 temperature and humidity values started varying wildly. 2008-07-08 08:23:24 +00:00
adamdunkels 84e4bf7a15 Changed order of initialization to make light sensors work again: a previous change to irq.c seems to have conflicted with light sensor initialization 2008-07-07 23:44:58 +00:00
adamdunkels 64b6663b11 moved energest from lib/ to sys/ 2008-07-03 23:59:20 +00:00
adamdunkels 51f4ab8b2c Changed type from off_t (that potentially conflicts with existing types.h typedefs) to unsigned long 2008-07-03 23:12:10 +00:00
adamdunkels 28331191b3 Changed name of simple-cc2420 to cc2420 2008-07-02 09:38:06 +00:00
adamdunkels 66876625d4 Changed name of the simple-cc2420 module to cc2420: changed all function names and variable names from simple_cc2420_* to cc2420_*. 2008-07-02 09:05:40 +00:00
adamdunkels dafa1d89a2 Added cc2420-aes.c (functions for interfacing the build-in AES support of the CC2420) 2008-07-02 08:47:05 +00:00
adamdunkels 1586d8f36f Changed filename of the CC2420 driver from simple-cc2420 to cc2420. 2008-07-01 21:02:51 +00:00
adamdunkels d134a1fcb1 Moved sky-specific make targets from the tools/sky/Makefile to the more natural platform/sky/Makefile.sky. Added a number of convenient targets for accessing the serial port. 2008-05-29 20:15:49 +00:00
adamdunkels 1263eb8455 Moved old unused files to backyard 2008-05-27 13:16:34 +00:00
adamdunkels 8b4179cf45 Moved ctimer_init() so that MAC protocols can use ctimers in their initialization code 2008-05-19 12:07:49 +00:00
adamdunkels 31ea41d8db Changed the name of UIP_CONF_TCP_FORWARD to UIP_CONF_IP_FORWARD since forwarding is done at the IP level 2008-05-14 19:19:28 +00:00
nvt-se 776f377a69 Configuration for the Sky platform. 2008-04-28 10:34:33 +00:00
adamdunkels c38d43c387 Change order of initialization so that Rime is initialized before uIP-over-Rime. Send out a new gateway command if a spurious (erroneous) gateway command is received. (Note for the future: this will cause a ping-pong problem with two correct gateways in the network; need to come up with a better solution for this.) 2008-03-03 20:23:53 +00:00
fros4943 3b5fa2d8e5 added 5 second delay before actually burning the node id (may otherwise cause problems with the .upload script) 2008-02-25 16:34:56 +00:00
adamdunkels 412facb831 This is an initial commit of an implementation of the Chameleon
architecture for the Rime stack for Contiki. The Chameleon
architecture separates the header processing from the Rime protocol
logic. Instead of having each protocol create its own part of the
packet header, protocols use packet attributes. Before sending a
packet, a special Chameleon header processing module creates a packet
header from the packet attributes. The same Chameleon module parses
incoming packets and creates packet attributes from the header.

The details are in our SenSys 2007 paper:

Adam Dunkels, Fredrik Osterlind, Zhitao He. An Adaptive Communication
Architecture for Wireless Sensor Networks. In Proceedings of the Fifth
ACM Conference on Networked Embedded Sensor Systems (SenSys 2007),
Sydney, Australia, November 2007.

http://www.sics.se/~adam/dunkels07adaptive.pdf

This is a rewrite of the code that was developed for the paper.
2008-02-25 02:14:34 +00:00
adamdunkels 9c57e5e272 Moved old Makefile (non-working) from platform/sky to backyard/platform/sky 2008-02-24 22:22:17 +00:00
adamdunkels 307fc41646 Detect if node is attached to a SLIP line to set node to become the network's gateway 2008-02-24 21:13:03 +00:00
adamdunkels 5bcd0ab60b Reduced uIP buffer size to allow for TCP data over Rime mesh routing protocol 2008-02-24 21:11:35 +00:00
adamdunkels 6740d95bfa Initialize serial line with 115200 bps for SLIP 2008-02-11 10:44:12 +00:00
adamdunkels fbcf9b6fcf Disable watchdog while burning node ID 2008-02-11 10:43:47 +00:00
adamdunkels 8058a49d21 Code style fix 2008-02-11 10:43:31 +00:00
adamdunkels cb6bc45350 Added code for routing IP packets over low-power radios using the Rime mesh module 2008-02-03 21:03:19 +00:00
adamdunkels dc43a9713d Added uIP destimation unreachable message, removed defailt XMAC timer definitions (for now), turned profiling off(for now), added process event number configuration, reduced data memory size for the ELF loader 2008-02-03 21:01:36 +00:00
adamdunkels 68523814c5 Moved from examples/sky into generic platform/sky/apps so that all examples can use it 2008-01-23 20:34:37 +00:00
adamdunkels c2ef303c24 Updated for the new simple_cc2420 API 2008-01-23 14:58:01 +00:00
nvt-se 6005437b27 Disable the watchdog during the whole erase operation. 2008-01-21 10:40:26 +00:00
nvt-se bed0963769 Call watchdog_periodic before erasing each sector, because this operation
takes approximately 1s.
2008-01-21 10:28:44 +00:00
adamdunkels 685de41feb Fixed buggy build 2008-01-19 06:57:44 +00:00
adamdunkels 34bd11905c Rewrote the timesynch code to use the Rime sniffer interface instead of the kludge of running timesynch as a MAC layer 2008-01-14 14:50:01 +00:00
adamdunkels 02ee418313 Moving timesynch.[ch] from sys/ to core/net/rime as they have more to do with Rime than with the kernel 2008-01-14 14:22:16 +00:00
adamdunkels f935be10c9 Added initalization of the serial library. Changed LPM3 to LPM2 since the current serial driver does not work with LPM3 yet (we need to add start edge detection interrupt support to fix that). 2008-01-08 08:21:03 +00:00
adamdunkels 690805ebe7 Added configuration for upcoming shell improvements, removed PROCESS_CONF_FASTPOLL 2008-01-08 08:19:56 +00:00
adamdunkels 959c4f3ee2 Removed ENERGEST_CONF_ON which is present in contiki-conf.h anyway 2008-01-08 08:18:00 +00:00
oliverschmidt 00d75c8d16 Made use of uip_ipaddr_to_quad(). 2008-01-04 23:28:33 +00:00
nvt-se 692da8fd47 swapped the currents for lpm and cpu. 2007-12-17 18:47:17 +00:00
adamdunkels 381f5dc4cc Initialize Rime address from hardware MAC address if no node ID has been configured. Be more explicit on how Rime address is assigned from node ID. Set time synch authority level from Rime address rather than node ID. Fix bug that put CPU in LPM2 instead of LPM3. 2007-12-17 12:35:23 +00:00
adamdunkels 2b4f33a4dd Enabled support for CC2420 timestamps 2007-12-16 15:05:04 +00:00
adamdunkels d13648292e Added initialization of the time synchronization module 2007-12-16 15:03:35 +00:00