@@ -99,6 +99,8 @@ extern void (*fhss_bc_switch)(void);
99
99
#define CS_SELECT () {rf->CS = 0 ;}
100
100
#define CS_RELEASE () {rf->CS = 1 ;}
101
101
102
+ extern const uint8_t ADDR_UNSPECIFIED[16 ];
103
+
102
104
typedef enum {
103
105
RF_MODE_NORMAL = 0 ,
104
106
RF_MODE_SNIFFER = 1
@@ -530,6 +532,7 @@ static void rf_init_registers(void)
530
532
rf_write_register_field (PCKTCTRL1, PCKT_WHITENING_FIELD, PCKT_WHITENING_ENABLED);
531
533
rf_write_register_field (PCKTCTRL2, PCKT_FIXVARLEN_FIELD, PCKT_VARIABLE_LEN);
532
534
rf_write_register_field (PCKTCTRL3, PCKT_RXMODE_FIELD, PCKT_RXMODE_NORMAL);
535
+ rf_write_register_field (PCKTCTRL3, PCKT_BYTE_SWAP_FIELD, PCKT_BYTE_SWAP_LSB);
533
536
rf_write_register (PCKTCTRL5, PCKT_PREAMBLE_LEN);
534
537
rf_write_register_field (PCKTCTRL6, PCKT_SYNCLEN_FIELD, PCKT_SYNCLEN);
535
538
rf_write_register_field (QI, PQI_TH_FIELD, PQI_TH);
@@ -1154,7 +1157,16 @@ int8_t NanostackRfPhys2lp::rf_register()
1154
1157
error (" Multiple registrations of NanostackRfPhyAtmel not supported" );
1155
1158
return -1 ;
1156
1159
}
1160
+ if (memcmp (_mac_addr, ADDR_UNSPECIFIED, 8 ) == 0 ) {
1161
+ randLIB_seed_random ();
1162
+ randLIB_get_n_bytes_random (s2lp_MAC, 8 );
1163
+ s2lp_MAC[0 ] |= 2 ; // Set Local Bit
1164
+ s2lp_MAC[0 ] &= ~1 ; // Clear multicast bit
1165
+ tr_info (" Generated random MAC %s" , trace_array (s2lp_MAC,8 ));
1166
+ set_mac_address (s2lp_MAC);
1167
+ }
1157
1168
rf = _rf;
1169
+
1158
1170
int8_t radio_id = rf_device_register (_mac_addr);
1159
1171
if (radio_id < 0 ) {
1160
1172
rf = NULL ;
0 commit comments