From 10f4015583b7abab0a90f70220cac44fe93e9ad7 Mon Sep 17 00:00:00 2001 From: schneider Date: Mon, 2 Apr 2012 13:41:48 +0200 Subject: [PATCH] uuid: cache uuid to improve stability and performance --- firmware/basic/uuid.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/firmware/basic/uuid.c b/firmware/basic/uuid.c index d537f75..8b903ee 100644 --- a/firmware/basic/uuid.c +++ b/firmware/basic/uuid.c @@ -6,18 +6,21 @@ #include "core/iap/iap.h" uint32_t GetUUID32(void){ - IAP_return_t iap_return; - iap_return = iapReadSerialNumber(); - if (iap_return.ReturnCode == 0){ - uint32_t block[4]; - uint32_t k[4] = {0,0,0,0}; - int i; - for(i=0; i<4; i++) - block[i] = iap_return.Result[i]; - xxtea_encode_words(block, 4, k); - return block[0]; + static uint32_t uuid = 0; + if( uuid == 0){ + IAP_return_t iap_return; + iap_return = iapReadSerialNumber(); + if (iap_return.ReturnCode == 0){ + uint32_t block[4]; + uint32_t k[4] = {0,0,0,0}; + int i; + for(i=0; i<4; i++) + block[i] = iap_return.Result[i]; + xxtea_encode_words(block, 4, k); + uuid = block[0]; + } } - return 0; + return uuid; }; // What OpenBeacon used. Do we want this?