From 404b789c04a54d364c9c528866803ad97fd4aef6 Mon Sep 17 00:00:00 2001 From: schneider Date: Sat, 23 Jul 2011 19:17:14 +0200 Subject: [PATCH] openbeacon: use chip id --- firmware/applications/funk.c | 2 +- firmware/basic/uuid.c | 14 ++++++++++++-- firmware/basic/uuid.h | 8 ++++++++ firmware/funk/openbeacon.c | 5 +++-- 4 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 firmware/basic/uuid.h diff --git a/firmware/applications/funk.c b/firmware/applications/funk.c index 0160188..d592dbe 100644 --- a/firmware/applications/funk.c +++ b/firmware/applications/funk.c @@ -227,7 +227,7 @@ void main_funk(void) { backlightInit(); font=&Font_7x8; - openbeaconSetup(0x5ec); + openbeaconSetup(); while (1) { lcdFill(0); // clear display buffer lcdDisplay(); diff --git a/firmware/basic/uuid.c b/firmware/basic/uuid.c index 1758ddc..0b28f5d 100644 --- a/firmware/basic/uuid.c +++ b/firmware/basic/uuid.c @@ -1,14 +1,24 @@ #include "lpc134x.h" #include "sysdefs.h" #include "basic.h" +#include "xxtea.h" #include "core/iap/iap.h" uint32_t GetUUID32(void){ IAP_return_t iap_return; iap_return = iapReadSerialNumber(); - - return iap_return.Result[1]; + if (iap_return.ReturnCode == 0){ + uint32_t block[4]; + uint32_t k[4] = {1,2,3,4}; + block[0] = iap_return.Result[0]; + block[1] = iap_return.Result[1]; + block[2] = iap_return.Result[2]; + block[3] = iap_return.Result[3]; + xxtea_encode_words(block, 4, k); + return block[0]; + } + return 0; }; // What OpenBeacon used. Do we want this? diff --git a/firmware/basic/uuid.h b/firmware/basic/uuid.h new file mode 100644 index 0000000..d64d92b --- /dev/null +++ b/firmware/basic/uuid.h @@ -0,0 +1,8 @@ +#ifndef _UUID_H_ +#define _UUID_H_ +#include + +uint32_t GetUUID32(void); + +#endif + diff --git a/firmware/funk/openbeacon.c b/firmware/funk/openbeacon.c index 2b919bf..ab90436 100644 --- a/firmware/funk/openbeacon.c +++ b/firmware/funk/openbeacon.c @@ -4,6 +4,7 @@ #include "basic/byteorder.h" #include "sysdefs.h" #include "filesystem/ff.h" +#include "basic/uuid.h" //const uint32_t key[4] = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}; const uint32_t openbeaconkey[4] = { 0xB4595344,0xD3E119B6,0xA814D0EC,0xEFF5A24E }; @@ -59,9 +60,9 @@ void openbeaconRead() } -void openbeaconSetup(uint32_t id) +void openbeaconSetup(void) { - oid = id; + oid = GetUUID32(); strength = 0; openbeaconRead(); openbeaconSaveBlock();