observe fixes

Dependencies:   nsdl_lib Nanostack_lib

Fork of mbedEndpointNetwork by Michael Koster

Files at this revision

API Documentation at this revision

Comitter:
ansond
Date:
Tue Feb 03 05:16:21 2015 +0000
Parent:
2:dc79359db8f1
Child:
4:2c8eeaf31699
Commit message:
added mac address randomization

Changed in this revision

network_stubs/network_stubs.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/network_stubs/network_stubs.cpp	Tue Feb 03 01:48:01 2015 +0000
+++ b/network_stubs/network_stubs.cpp	Tue Feb 03 05:16:21 2015 +0000
@@ -27,12 +27,34 @@
 // Tasklet ID..    
 int main_tasklet_id = -1;
 
+// randomize the MAC address
+void randomize_mac_address()
+{
+    // just extern it for now
+    extern uint8_t app_MAC_address[NODE_MAC_ADDRESS_LENGTH];
+    extern uint8_t endpoint_name[NODE_NAME_LENGTH];
+    
+    // seed (weak)
+    srand(time(NULL));
+    
+    // rand() with some added variance from endpoint name
+    for(int i=0;i<NODE_MAC_ADDRESS_LENGTH;++i) app_MAC_address[i] = (rand()*endpoint_name[i])%256;
+    
+    // display
+    std::printf("MAC Address: 0x%.2x::0x%.2x::0x%.2x::0x%.2x::0x%.2x::0x%.2x::0x%.2x::0x%.2x\r\n",
+                app_MAC_address[0],app_MAC_address[1],app_MAC_address[2],app_MAC_address[3],
+                app_MAC_address[4],app_MAC_address[5],app_MAC_address[6],app_MAC_address[7]);
+}
+
 // Nanostack_6LowPAN tasklet main handler function...
 extern "C" void tasklet_main(void);
 
 // plumb out the network
 void net_stubs_plumb_network(bool canActAsRouterNode) 
 {
+    // randomize the MAC address
+    randomize_mac_address();
+    
     // call init_network()
     init_network(canActAsRouterNode);
 }