From e7372b21a9c69024627aa1385a8560f51373b604 Mon Sep 17 00:00:00 2001 From: Oliver Hahm Date: Mon, 6 Dec 2010 13:19:31 +0100 Subject: [PATCH] [board config] * made config optional --- board/msb-430-common/Jamfile | 3 ++- board/msba2/Jamfile | 3 ++- board/msba2/board_init.c | 13 ------------- board/msba2/config.c | 10 ++++++++++ cpu/arm_common/bootloader.c | 3 --- drivers/cc110x_ng/cc1100.c | 16 +++++++++++++--- drivers/cc110x_ng/cc1100_ng.h | 2 ++ sys/shell/id.c | 2 ++ 8 files changed, 31 insertions(+), 21 deletions(-) diff --git a/board/msb-430-common/Jamfile b/board/msb-430-common/Jamfile index 6cc5f8f1e..29cd73df0 100644 --- a/board/msb-430-common/Jamfile +++ b/board/msb-430-common/Jamfile @@ -27,7 +27,8 @@ SubDir TOP board msb-430-common ; -Module board : board_init.c debug_uart.c config.c ; +Module board : board_init.c debug_uart.c ; +Module config : config.c ; UseModule board ; SubInclude TOP cpu $(CPU) ; diff --git a/board/msba2/Jamfile b/board/msba2/Jamfile index 4bef1bd29..468b45306 100644 --- a/board/msba2/Jamfile +++ b/board/msba2/Jamfile @@ -27,7 +27,8 @@ SubDir TOP board msba2 ; -Module board : board_init.c config.c ; +Module board : board_init.c ; +Module config : config.c ; UseModule board ; UseModule board_common ; diff --git a/board/msba2/board_init.c b/board/msba2/board_init.c index de730c33b..469c8fe7c 100644 --- a/board/msba2/board_init.c +++ b/board/msba2/board_init.c @@ -44,9 +44,6 @@ and the mailinglist (subscription via web site) #include #include #include -#include -#include -#include #define PCRTC BIT9 #define CL_CPU_DIV 4 @@ -156,13 +153,3 @@ void bl_blink(void) { LED_RED_OFF; LED_GREEN_OFF; } - -void bl_config_init(void) { - extern char configmem[]; - if (*((uint16_t*) configmem) == CONFIG_KEY) { - memcpy(&sysconfig, (configmem + sizeof(CONFIG_KEY)), sizeof(sysconfig)); - } - else { - config_save(); - } -} diff --git a/board/msba2/config.c b/board/msba2/config.c index 0ca717665..1910f0b7f 100644 --- a/board/msba2/config.c +++ b/board/msba2/config.c @@ -2,6 +2,16 @@ #include #include +void config_load(void) { + extern char configmem[]; + if (*((uint16_t*) configmem) == CONFIG_KEY) { + memcpy(&sysconfig, (configmem + sizeof(CONFIG_KEY)), sizeof(sysconfig)); + } + else { + config_save(); + } +} + uint8_t config_save(void) { configmem_t mem = { CONFIG_KEY, sysconfig }; return (flashrom_erase((uint8_t*) &configmem) && flashrom_write((uint8_t*) &configmem, (char*) &mem, sizeof(mem))); diff --git a/cpu/arm_common/bootloader.c b/cpu/arm_common/bootloader.c index 5560fb413..568eebf13 100644 --- a/cpu/arm_common/bootloader.c +++ b/cpu/arm_common/bootloader.c @@ -178,9 +178,6 @@ void bootloader(void) { /* board specific setup of UART */ bl_uart_init(); - /* initialize board configuration */ - bl_config_init(); - printf("Board initialized.\n"); } diff --git a/drivers/cc110x_ng/cc1100.c b/drivers/cc110x_ng/cc1100.c index dab1600bf..e16150d29 100644 --- a/drivers/cc110x_ng/cc1100.c +++ b/drivers/cc110x_ng/cc1100.c @@ -108,10 +108,15 @@ radio_address_t cc1100_set_address(radio_address_t address) { } sysconfig.radio_address = id; - config_save(); return sysconfig.radio_address; } +radio_address_t cc1100_set_config_address(radio_address_t address) { + radio_address_t a = cc1100_set_address(address); + config_save(); + return a; +} + void cc1100_set_monitor(uint8_t mode) { if (mode) { write_register(CC1100_PKTCTRL1, (0x04)); @@ -222,14 +227,19 @@ void cc1100_switch_to_pwd(void) { int16_t cc1100_set_channel(uint8_t channr) { uint8_t state = cc1100_read_status(CC1100_MARCSTATE) & MARC_STATE; if ((state != 1) && (channr > MAX_CHANNR)) { - return 0; + return -1; } write_register(CC1100_CHANNR, channr*10); sysconfig.radio_channel = channr; - config_save(); return sysconfig.radio_channel; } +int16_t cc1100_set_config_channel(uint8_t channr) { + int16_t c = cc1100_set_channel(channr); + config_save(); + return c; +} + int16_t cc1100_get_channel(void) { return sysconfig.radio_channel; } diff --git a/drivers/cc110x_ng/cc1100_ng.h b/drivers/cc110x_ng/cc1100_ng.h index 7e901d0d6..0cf11f63a 100644 --- a/drivers/cc110x_ng/cc1100_ng.h +++ b/drivers/cc110x_ng/cc1100_ng.h @@ -109,10 +109,12 @@ void cc1100_wakeup_from_rx(void); void cc1100_switch_to_pwd(void); void cc1100_disable_interrupts(void); +int16_t cc1100_set_config_channel(uint8_t channr); int16_t cc1100_set_channel(uint8_t channr); int16_t cc1100_get_channel(void); radio_address_t cc1100_set_address(radio_address_t addr); +radio_address_t cc1100_set_config_address(radio_address_t addr); radio_address_t cc1100_get_address(void); void cc1100_set_monitor(uint8_t mode); diff --git a/sys/shell/id.c b/sys/shell/id.c index af8516d6b..f77778553 100644 --- a/sys/shell/id.c +++ b/sys/shell/id.c @@ -13,8 +13,10 @@ void _id_handler(char *id) { else { printf("Setting new id %lu\n", newid); sysconfig.id = newid; +#ifdef MODULE_CONFIG if (!config_save()) { puts("ERROR setting new id"); } +#endif } }