/*---------------------------------------------------------------------------*/ static void set_rf_params(void) { uint16_t short_addr; uint8_t ext_addr[8]; radio_value_t val = 0; ieee_addr_cpy_to(ext_addr, 8); short_addr = ext_addr[7]; short_addr |= ext_addr[6] << 8; /* Populate linkaddr_node_addr. Maintain endianness */ memcpy(&linkaddr_node_addr, &ext_addr[8 - LINKADDR_SIZE], LINKADDR_SIZE); NETSTACK_RADIO.set_value(RADIO_PARAM_PAN_ID, IEEE802154_PANID); NETSTACK_RADIO.set_value(RADIO_PARAM_16BIT_ADDR, short_addr); NETSTACK_RADIO.set_value(RADIO_PARAM_CHANNEL, RF_CORE_CHANNEL); NETSTACK_RADIO.set_object(RADIO_PARAM_64BIT_ADDR, ext_addr, 8); NETSTACK_RADIO.get_value(RADIO_PARAM_CHANNEL, &val); printf(" RF: Channel %d\n\r", val); #if STARTUP_CONF_VERBOSE { int i; printf(" Link layer addr: "); for(i = 0; i < LINKADDR_SIZE - 1; i++) { printf("%02x:", linkaddr_node_addr.u8[i]); } printf("%02x\n", linkaddr_node_addr.u8[i]); } #endif }
/*---------------------------------------------------------------------------*/ static void set_rf_params(void) { uint16_t short_addr; uint8_t ext_addr[8]; ieee_addr_cpy_to(ext_addr, 8); short_addr = ext_addr[7]; short_addr |= ext_addr[6] << 8; /* Populate linkaddr_node_addr. Maintain endianness */ memcpy(&linkaddr_node_addr, &ext_addr[8 - LINKADDR_SIZE], LINKADDR_SIZE); #if STARTUP_CONF_VERBOSE { int i; printf("Rime configured with address "); for(i = 0; i < LINKADDR_SIZE - 1; i++) { printf("%02x:", linkaddr_node_addr.u8[i]); } printf("%02x\n", linkaddr_node_addr.u8[i]); } #endif NETSTACK_RADIO.set_value(RADIO_PARAM_PAN_ID, IEEE802154_PANID); NETSTACK_RADIO.set_value(RADIO_PARAM_16BIT_ADDR, short_addr); NETSTACK_RADIO.set_value(RADIO_PARAM_CHANNEL, CC2538_RF_CHANNEL); NETSTACK_RADIO.set_object(RADIO_PARAM_64BIT_ADDR, ext_addr, 8); }
/*---------------------------------------------------------------------------*/ static void set_rime_addr() { ieee_addr_cpy_to(&rimeaddr_node_addr.u8[0], RIMEADDR_SIZE); #if STARTUP_CONF_VERBOSE { int i; printf("Rime configured with address "); for(i = 0; i < RIMEADDR_SIZE - 1; i++) { printf("%02x:", rimeaddr_node_addr.u8[i]); } printf("%02x\n", rimeaddr_node_addr.u8[i]); } #endif }
/*---------------------------------------------------------------------------*/ static void set_serial_number(void) { uint8_t i; uint8_t ieee[8]; uint8_t lown, highn; uint8_t c; ieee_addr_cpy_to(ieee, 8); for(i = 0; i < 8; i++) { lown = ieee[i] & 0x0F; highn = ieee[i] >> 4; c = lown > 9 ? 'A' + lown - 0xA : lown + '0'; serial_nr.string[i * 2 + 1] = c; c = highn > 9 ? 'A' + highn - 0xA : highn + '0'; serial_nr.string[i * 2] = c; } }