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?