From 5e1db8b6fa7f2e39a48bfde47f9cec02b854a084 Mon Sep 17 00:00:00 2001 From: kasunch Date: Thu, 24 Sep 2009 06:51:22 +0000 Subject: [PATCH] Added node id restoring and burning functions. --- platform/micaz/node-id.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/platform/micaz/node-id.c b/platform/micaz/node-id.c index 26998c416..dffa514bd 100644 --- a/platform/micaz/node-id.c +++ b/platform/micaz/node-id.c @@ -39,12 +39,25 @@ uint16_t node_id = 0; void node_id_restore(void) { + uint16_t newid[2]; + uint8_t volatile sreg; + sreg = SREG; /* Save status register before disabling interrupts. */ + cli(); /* Disable interrupts. */ + eeprom_read(EEPROM_NODE_ID_START, (unsigned char *)newid, sizeof(newid)); + node_id = (newid[0] == 0xdead) ? newid[1] : 0; + SREG = sreg; /* Enable interrupts. */ } /*---------------------------------------------------------------------------*/ void node_id_burn(uint16_t id) { + uint16_t buffer[2] = { 0xdead, id }; + uint8_t volatile sreg; + sreg = SREG; /* Save status register before disabling interrupts. */ + cli(); /* Disable interrupts. */ + eeprom_write(EEPROM_NODE_ID_START, (unsigned char *)buffer, sizeof(buffer)); + SREG = sreg; /* Enable interrupts. */ } /*---------------------------------------------------------------------------*/