reduced memory usage, removed procinit, general cleanup of initialization, enabled watchdog

This commit is contained in:
nifi 2008-03-07 17:54:22 +00:00
parent a500f2dd73
commit 79cb912f7c
2 changed files with 68 additions and 62 deletions

View file

@ -1,11 +1,25 @@
#ifndef __CONTIKI_CONF_H__
#define __CONTIKI_CONF_H__
#define RIMEBUF_CONF_ATTRS_INLINE 1
#define QUEUEBUF_CONF_NUM 1
#define QUEUEBUF_CONF_REF_NUM 1
#define ROUTE_CONF_ENTRIES 4
#define SERIAL_CONF_BUFSIZE 60
#define TIMESYNCH_CONF_ENABLED 0
#define PROFILE_CONF_ON 0
#define ENERGEST_CONF_ON 1
#define HAVE_STDINT_H
#include <msp430def.h>
#define QUEUEBUF_CONF_NUM 2
#define ENERGEST_CONF_ON 1
#define PROCESS_CONF_NUMEVENTS 8
#define PROCESS_CONF_STATS 0
/* CPU target speed in Hz */
#define F_CPU 2457600uL
#define IRQ_PORT1_VECTOR 1
@ -29,15 +43,11 @@
typedef unsigned short clock_time_t;
#define CLOCK_CONF_SECOND 100
void clock_delay(unsigned int us2);
void clock_wait(int ms10);
void clock_set_seconds(unsigned long s);
unsigned long clock_seconds(void);
#include "ctk/ctk-vncarch.h"
#define LOG_CONF_ENABLED 0
/**

View file

@ -28,7 +28,7 @@
*
* This file is part of the Contiki operating system.
*
* @(#)$Id: contiki-esb-main.c,v 1.13 2008/02/10 22:42:07 oliverschmidt Exp $
* @(#)$Id: contiki-esb-main.c,v 1.14 2008/03/07 17:54:22 nifi Exp $
*/
#include <io.h>
@ -36,7 +36,9 @@
#include <stdio.h>
#include <string.h>
#include "sys/procinit.h"
#include "contiki.h"
#include "dev/watchdog.h"
#include "sys/autostart.h"
#include "contiki-esb.h"
@ -44,13 +46,9 @@ SENSORS(&button_sensor, &sound_sensor, &vib_sensor,
&pir_sensor, &radio_sensor, &battery_sensor, &ctsrts_sensor,
&temperature_sensor);
PROCINIT(&sensors_process, /*&ir_process,*/
&etimer_process);
PROCESS(contiki_esb_main_init_process, "Contiki ESB init process");
/*---------------------------------------------------------------------------*/
static void
print_processes(struct process **processes)
print_processes(struct process * const processes[])
{
printf("Starting");
while(*processes != NULL) {
@ -59,35 +57,6 @@ print_processes(struct process **processes)
}
printf("\n");
}
PROCESS_THREAD(contiki_esb_main_init_process, ev, data)
{
PROCESS_BEGIN();
procinit_init();
PROCESS_PAUSE();
init_net();
PROCESS_PAUSE();
init_apps();
PROCESS_PAUSE();
print_processes((struct process **) autostart_processes);
autostart_start(autostart_processes);
beep_spinup();
leds_on(LEDS_RED);
clock_delay(100);
leds_off(LEDS_RED);
energest_init();
PROCESS_END();
}
/*---------------------------------------------------------------------------*/
static void init_ports_toberemoved() {
////////// Port 1 ////
@ -144,13 +113,12 @@ main(void)
node_id_restore();
process_start(&contiki_esb_main_init_process, NULL);
process_start(&etimer_process, NULL);
process_start(&sensors_process, NULL);
ctimer_init();
/* watchdog_init();*/
/* beep();*/
init_net();
printf(CONTIKI_VERSION_STRING " started. ");
if(node_id > 0) {
@ -159,13 +127,41 @@ main(void)
printf("Node id is not set.\n");
}
beep_spinup();
leds_on(LEDS_RED);
clock_delay(100);
leds_off(LEDS_RED);
#if PROFILE_CONF_ON
profile_init();
#endif /* PROFILE_CONF_ON */
#if ENERGEST_CONF_ON
energest_init();
ENERGEST_ON(ENERGEST_TYPE_CPU);
#endif /* ENERGEST_CONF_ON */
init_apps();
print_processes(autostart_processes);
autostart_start(autostart_processes);
/*
* This is the scheduler loop.
*/
watchdog_start();
while (1) {
static unsigned long irq_energest = 0;
int r;
#if PROFILE_CONF_ON
profile_episode_start();
#endif /* PROFILE_CONF_ON */
do {
/* Reset watchdog. */
} while(process_run() > 0);
watchdog_periodic();
r = process_run();
} while(r > 0);
#if PROFILE_CONF_ON
profile_episode_end();
#endif /* PROFILE_CONF_ON */
/*
* Idle processing.
@ -174,6 +170,8 @@ main(void)
if(process_nevents() != 0) {
eint();
} else {
#if ENERGEST_CONF_ON
static unsigned long irq_energest = 0;
/* Re-enable interrupts and go to sleep atomically. */
ENERGEST_OFF(ENERGEST_TYPE_CPU);
ENERGEST_ON(ENERGEST_TYPE_LPM);
@ -182,33 +180,31 @@ main(void)
are asleep, so we discard the processing time done when we
were awake. */
energest_type_set(ENERGEST_TYPE_IRQ, irq_energest);
#endif /* ENERGEST_CONF_ON */
watchdog_stop();
_BIS_SR(GIE | SCG0 | CPUOFF); /* LPM1 sleep. */
#if ENERGEST_CONF_ON
/* We get the current processing time for interrupts that was
done during the LPM and store it for next time around. */
dint();
irq_energest = energest_type_time(ENERGEST_TYPE_IRQ);
eint();
ENERGEST_OFF(ENERGEST_TYPE_LPM);
ENERGEST_ON(ENERGEST_TYPE_CPU);
}
}
#endif /* ENERGEST_CONF_ON */
while(1) {
/* watchdog_restart();*/
while(process_run() > 0);
LPM_SLEEP();
watchdog_start();
}
}
return 0;
}
/*---------------------------------------------------------------------------*/
char *arg_alloc(char size) {return NULL;}
void arg_init(void) {}
void arg_free(char *arg) {}
/* char *arg_alloc(char size) {return NULL;} */
/* void arg_init(void) {} */
/* void arg_free(char *arg) {} */
/*---------------------------------------------------------------------------*/
void