36#include "dev/button-sensor.h"
42#include "dev/watchdog.h"
50#if NETSTACK_CONF_WITH_IPV6
54#include "node-id-z1.h"
58extern unsigned char node_mac[8];
60#if DCOSYNCH_CONF_ENABLED
61static struct timer mgt_timer;
63extern int msp430_dco_required;
65#define UIP_OVER_MESH_CHANNEL 8
66#if NETSTACK_CONF_WITH_IPV4
67static uint8_t is_gateway;
70#ifdef EXPERIMENT_SETUP
71#include "experiment-setup.h"
77#define LOG_MODULE "Z1"
78#define LOG_LEVEL LOG_LEVEL_MAIN
80#ifdef UART0_CONF_BAUD_RATE
81#define UART0_BAUD_RATE UART0_CONF_BAUD_RATE
83#define UART0_BAUD_RATE 115200
88force_float_inclusion()
91 extern int __floatsisf;
95 return __fixsfsi + __floatsisf + __mulsf3 + __subsf3;
101force_inclusion(
int d1,
int d2)
103 snprintf(NULL, 0,
"%d", d1 % d2);
112 memset(&
addr, 0,
sizeof(linkaddr_t));
113#if NETSTACK_CONF_WITH_IPV6
114 memcpy(
addr.u8, node_mac,
sizeof(
addr.u8));
118 for(i = 0; i <
sizeof(linkaddr_t); ++i) {
119 addr.u8[i] = node_mac[7 - i];
122 addr.u8[0] = node_id & 0xff;
123 addr.u8[1] = node_id >> 8;
156 node_id_z1_restore();
159 if(!(node_mac[0] | node_mac[1] | node_mac[2] | node_mac[3] |
160 node_mac[4] | node_mac[5] | node_mac[6] | node_mac[7])) {
164 LOG_INFO(
"Node id is not set, using Z1 product ID\n");
177 node_mac[6] = node_id >> 8;
178 node_mac[7] = node_id & 0xff;
183#warning "***** CHANGING DEFAULT MAC *****"
193 node_mac[6] = MACID >> 8;
194 node_mac[7] = MACID & 0xff;
197#ifdef IEEE_802154_MAC_ADDRESS
200 uint8_t ieee[] = IEEE_802154_MAC_ADDRESS;
201 memcpy(node_mac, ieee,
sizeof(
uip_lladdr.addr));
202 node_mac[7] = node_id & 0xff;
216 SENSORS_ACTIVATE(adxl345);
230 memset(longaddr, 0,
sizeof(longaddr));
233 cc2420_set_pan_addr(IEEE802154_PANID, shortaddr, longaddr);
235 LOG_INFO(
"CC2420 CCA threshold %i\n", CC2420_CONF_CCA_THRESH);
237#if DCOSYNCH_CONF_ENABLED
253#if DCOSYNCH_CONF_ENABLED
259#if CC2420_CONF_SFD_TIMESTAMPS
260 cc2420_arch_sfd_init();
266 ENERGEST_SWITCH(ENERGEST_TYPE_CPU, ENERGEST_TYPE_LPM);
269 if (msp430_dco_required) {
270 _BIS_SR(GIE | CPUOFF);
272 _BIS_SR(GIE | SCG0 | SCG1 | CPUOFF);
280 ENERGEST_SWITCH(ENERGEST_TYPE_LPM, ENERGEST_TYPE_CPU);
Device drivers header file for adxl345 accelerometer in Zolertia Z1.
CC2420 driver header file.
Header for the Coffee file system.
Header file for the energy estimation mechanism.
802.15.4 frame creation and parsing functions
void clock_wait(clock_time_t i)
Wait for a given number of ticks.
void watchdog_start(void)
Starts the WDT in watchdog mode if enabled by user configuration, maximum interval.
void watchdog_periodic(void)
Writes the WDT clear sequence.
void platform_init_stage_three()
Final stage of platform driver initialisation.
void platform_init_stage_one(void)
Basic (Stage 1) platform driver initialisation.
void platform_idle()
The platform's idle/sleep function.
void platform_init_stage_two()
Stage 2 of platform driver initialisation.
void watchdog_stop(void)
Stops the WDT such that it won't timeout and cause MCU reset.
#define CLOCK_SECOND
A second, measured in system clock time.
#define LEDS_ALL
The OR mask representation of all device LEDs.
void leds_init(void)
Initialise the LED HAL.
linkaddr_t linkaddr_node_addr
The link-layer address of the node.
void linkaddr_copy(linkaddr_t *dest, const linkaddr_t *src)
Copy a link-layer address.
static void linkaddr_set_node_addr(linkaddr_t *addr)
Set the address of the current node.
void process_start(struct process *p, process_data_t data)
Start a process.
process_num_events_t process_nevents(void)
Number of events waiting to be processed.
void timer_set(struct timer *t, clock_time_t interval)
Set a timer.
bool timer_expired(struct timer *t)
Check if a timer has expired.
void timer_reset(struct timer *t)
Reset the timer with the same interval.
uip_lladdr_t uip_lladdr
Host L2 address.
void xmem_init(void)
Initialize the external memory.
Header file for the LED HAL.
Header file for the logging system.
void uart0_init(unsigned long ubr)
Initalize the RS232 port.
Include file for the Contiki low-layer network stack (NETSTACK)
Generic serial I/O process header filer.
Header file for IPv6-related data structures.
static uip_ds6_addr_t * addr
Pointer to a nbr cache entry.
Header file to the external flash memory (XMem) API.