Skip to content

Commit

Permalink
Merge pull request contiki-os#18 from comawill/settings
Browse files Browse the repository at this point in the history
[inga] apps/settings_set: make sure, the settings_set app uses the defin...
  • Loading branch information
Enrico Jorns committed Oct 7, 2014
2 parents 045b4ac + 1290333 commit 7fe704c
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 42 deletions.
17 changes: 6 additions & 11 deletions examples/inga/node-setup/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,23 @@ APPS += settings_set
APPS += settings_delete

# Preset default values
NODE_ID =
PAN_ID =
EUI64 =
PAN_ADDR =
PAN_ID =
RADIO_CHANNEL =
RADIO_TX_POWER =
EUI64 =

setup: SETTINGS_SET_LOAD = 1
setup: SETTINGS_DELETE_LOAD = 0
setup: test $(CONTIKI_PROJECT).upload
setup: test-single $(CONTIKI_PROJECT).upload

setup.jtag: SETTINGS_SET_LOAD = 1
setup.jtag: SETTINGS_DELETE_LOAD = 0
setup.jtag: test $(CONTIKI_PROJECT).jtag
setup.jtag: test-single $(CONTIKI_PROJECT).jtag

setup.bang: SETTINGS_SET_LOAD = 1
setup.bang: SETTINGS_DELETE_LOAD = 0
setup.bang: test $(CONTIKI_PROJECT).bang
setup.bang: test-single $(CONTIKI_PROJECT).bang

delete: SETTINGS_SET_LOAD = 0
delete: SETTINGS_DELETE_LOAD = 1
Expand All @@ -39,11 +39,6 @@ delete.bang: test-single $(CONTIKI_PROJECT).bang
# Note: currently, deleting single items is not fully supported by the settings library!
#delete: #TODO

# tests for var NODE_ID set
test: test-single
@echo NODE_ID is $(NODE_ID)
@test ! -z $(NODE_ID) || (echo "*** You must specify a node id with NODE_ID=<value>" && false)

# tests for single MOTE
test-single: NR_OF_MOTES = $(shell echo $(MOTES) | wc -w)
test-single:
Expand Down
3 changes: 1 addition & 2 deletions examples/inga/node-setup/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,10 @@ Targets:
- setup(default): Setup with given values
- delete: Delete all settings
Options:
- NODE_ID=<value> default=0xABCD
- EUI64=<value> default=none
- PAN_ID=<value> default=0xABCD
- RADIO_CHANNEL=<value> default=26
- RADIO_TX_POWER=<value> default=0
- EUI64=<value> default=none

Example
---
Expand Down
16 changes: 7 additions & 9 deletions platform/inga/apps/settings_set/Makefile.settings_set
Original file line number Diff line number Diff line change
Expand Up @@ -3,32 +3,30 @@ settings_set_src = settings_set.c
# Note: this variable can be modified by setting target-specific variable
SETTINGS_SET_LOAD=1

# NODEID
ifdef NODE_ID
CFLAGS += -DNODE_CONF_ID=$(NODE_ID)
else ifdef PAN_ADDR
CFLAGS += -DNODE_CONF_ID=$(PAN_ADDR)
# PAN_ADDR
ifdef PAN_ADDR
CFLAGS += -DINGA_CONF_PAN_ADDR=$(PAN_ADDR)
endif

# PANID
ifdef PAN_ID
CFLAGS += -DRADIO_CONF_PAN_ID=$(PAN_ID)
CFLAGS += -DINGA_CONF_PAN_ID=$(PAN_ID)
endif

# RADIO CHANNEL
ifdef RADIO_CHANNEL
CFLAGS += -DRADIO_CONF_CHANNEL=$(RADIO_CHANNEL)
CFLAGS += -DINGA_CONF_RADIO_CHANNEL=$(RADIO_CHANNEL)
endif

# RADIO TX POWER
ifdef RADIO_TX_POWER
CFLAGS += -DRADIO_CONF_TX_POWER=$(RADIO_TX_POWER)
CFLAGS += -DINGA_CONF_RADIO_TX_POWER=$(RADIO_TX_POWER)
endif

# EUI64
ifdef EUI64
CONF_EUI64 := $(shell echo $(EUI64) | sed 's/\([0-9a-fA-F]\{2\}\)/0x\1/g' | sed 's/:/,/g')
CFLAGS += -DNODE_CONF_EUI64=$(CONF_EUI64)
CFLAGS += -DINGA_CONF_EUI64=$(CONF_EUI64)
endif

# Inform about loading of app
Expand Down
36 changes: 18 additions & 18 deletions platform/inga/apps/settings_set/settings_set.c
Original file line number Diff line number Diff line change
Expand Up @@ -59,44 +59,44 @@ PROCESS_THREAD(settings_set_process, ev, data)
PROCESS_BEGIN();
#if (APP_SETTINGS_SET == 1)

#ifdef NODE_CONF_ID
if (settings_set_uint16(SETTINGS_KEY_PAN_ADDR, (uint16_t) NODE_ID) == SETTINGS_STATUS_OK) {
uint16_t settings_nodeid = settings_get_uint16(SETTINGS_KEY_PAN_ADDR, 0);
PRINTF("[APP.settings_set] New PAN Addr: 0x%04X\n", settings_nodeid);
#ifdef INGA_CONF_PAN_ADDR
if (settings_set_uint16(SETTINGS_KEY_PAN_ADDR, (uint16_t) INGA_PAN_ADDR) == SETTINGS_STATUS_OK) {
uint16_t settings_panaddr = settings_get_uint16(SETTINGS_KEY_PAN_ADDR, 0);
PRINTF("[APP.settings_set] New PAN Addr: 0x%04X\n", settings_panaddr);
} else {
PRINTD("[APP.settings_set] Error: Failed writing NodeID to EEPROM\n");
PRINTD("[APP.settings_set] Error: Failed writing PAN Addr to EEPROM\n");
}
#endif /* NODE_CONF_ID */
#endif /* INGA_CONF_PAN_ADDR */

#ifdef RADIO_CONF_PAN_ID
if (settings_set_uint16(SETTINGS_KEY_PAN_ID, (uint16_t) RADIO_PAN_ID) == SETTINGS_STATUS_OK) {
#ifdef INGA_CONF_PAN_ID
if (settings_set_uint16(SETTINGS_KEY_PAN_ID, (uint16_t) INGA_PAN_ID) == SETTINGS_STATUS_OK) {
uint16_t settings_panid = settings_get_uint16(SETTINGS_KEY_PAN_ID, 0);
PRINTF("[APP.settings_set] New PAN ID: 0x%04X\n", settings_panid);
} else {
PRINTD("[APP.settings_set] Error: Failed writing PanID to EEPROM\n");
}
#endif /* RADIO_CONF_PAN_ID */
#endif /* INGA_CONF_PAN_ID */

#ifdef RADIO_CONF_CHANNEL
if (settings_set_uint8(SETTINGS_KEY_CHANNEL, (uint8_t) RADIO_CHANNEL) == SETTINGS_STATUS_OK) {
#ifdef INGA_CONF_RADIO_CHANNEL
if (settings_set_uint8(SETTINGS_KEY_CHANNEL, (uint8_t) INGA_RADIO_CHANNEL) == SETTINGS_STATUS_OK) {
uint8_t settings_channel = settings_get_uint8(SETTINGS_KEY_CHANNEL, 0);
PRINTF("[APP.settings_set] New channel: 0x%02X\n", settings_channel);
} else {
PRINTD("[APP.settings_set] Error: Failed writing channel to EEPROM\n");
}
#endif /* RADIO_CONF_CHANNEL */
#endif /* INGA_CONF_RADIO_CHANNEL */

#ifdef RADIO_CONF_TX_POWER
if (settings_set_uint8(SETTINGS_KEY_TXPOWER, (uint8_t) RADIO_TX_POWER) == SETTINGS_STATUS_OK) {
#ifdef INGA_CONF_RADIO_TX_POWER
if (settings_set_uint8(SETTINGS_KEY_TXPOWER, (uint8_t) INGA_RADIO_TX_POWER) == SETTINGS_STATUS_OK) {
uint8_t settings_txpower = settings_get_uint8(SETTINGS_KEY_TXPOWER, 0);
PRINTF("[APP.settings_set] New TX power: 0x%02X\n", settings_txpower);
} else {
PRINTD("[APP.settings_set] Error: Failed writing TX power to EEPROM\n");
}
#endif /* RADIO_CONF_TX_POWER */
#endif /* INGA_CONF_RADIO_TX_POWER */

#ifdef NODE_CONF_EUI64
uint8_t settings_eui64[8] = {NODE_CONF_EUI64};
#ifdef INGA_CONF_EUI64
uint8_t settings_eui64[8] = {INGA_EUI64};
if (settings_set(SETTINGS_KEY_EUI64, settings_eui64, 8) == SETTINGS_STATUS_OK) {
settings_get(SETTINGS_KEY_EUI64, 0, settings_eui64, sizeof (settings_eui64));
PRINTF("[APP.settings_set] New EUI64: %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n\r",
Expand All @@ -111,7 +111,7 @@ PROCESS_THREAD(settings_set_process, ev, data)
} else {
PRINTD("[APP.settings_set] Error: Failed writing EUI64 to EEPROM\n");
}
#endif /* NODE_CONF_EUI64 */
#endif /* INGA_CONF_EUI64 */

#endif /* (SETTINGS_SET_LOAD == 1) */

Expand Down
6 changes: 4 additions & 2 deletions platform/inga/contiki-inga-main.c
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,7 @@ load_config(void)

/* Overwrite with node id if set */
if (node_id > 0) {
PRINTD("Using Node ID (0x%04x) to overwrite address settings!\n", node_id);
#if UIP_CONF_IPV6
memset(inga_cfg.eui64_addr, 0, sizeof(inga_cfg.eui64_addr));
inga_cfg.eui64_addr[0] |= 0x02; // set U/L bit to 1 (local!)
Expand All @@ -334,7 +335,8 @@ load_config(void)
memset(inga_cfg.eui64_addr, 0, sizeof(inga_cfg.eui64_addr));
}
#else /* !INGA_CONF_EUI64 */
inga_cfg.eui64_addr = {INGA_EUI64};
uint8_t tmp_eui64[8] = {INGA_EUI64};
memcpy(inga_cfg.eui64_addr, tmp_eui64, 8);
#endif /* !INGA_CONF_EUI64 */

/* PAN Addr */
Expand All @@ -345,7 +347,7 @@ load_config(void)
inga_cfg.pan_addr = INGA_PAN_ADDR;
}
#else /* !INGA_CONF_PAN_ADDR */
inga_cfg.pan_adr = INGA_PAN_ADDR;
inga_cfg.pan_addr = INGA_PAN_ADDR;
#endif /* !INGA_CONF_PAN_ADDR */


Expand Down

0 comments on commit 7fe704c

Please sign in to comment.