[board config]

* made config optional
dev/timer
Oliver Hahm 13 years ago
parent 2a1a10bd74
commit e7372b21a9

@ -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) ;

@ -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 ;

@ -44,9 +44,6 @@ and the mailinglist (subscription via web site)
#include <lpc23xx.h>
#include <VIC.h>
#include <cpu.h>
#include <config.h>
#include <string.h>
#include <flashrom.h>
#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();
}
}

@ -2,6 +2,16 @@
#include <config.h>
#include <flashrom.h>
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)));

@ -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");
}

@ -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;
}

@ -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);

@ -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
}
}

Loading…
Cancel
Save