uint16_t RF24Mesh::renewAddress(uint32_t timeout) {

    if(radio.available()) {
        return 0;
    }
    uint8_t reqCounter = 0;
    uint8_t totalReqs = 0;
    radio.stopListening();

    network.networkFlags |= 2;
    delay(10);

    network.begin(MESH_DEFAULT_ADDRESS);
    mesh_address = MESH_DEFAULT_ADDRESS;

    uint32_t start = millis();
    while(!requestAddress(reqCounter)) {
        if(millis()-start > timeout) {
            return 0;
        }
        delay(50 + ( (totalReqs+1)*(reqCounter+1)) * 2);
        (++reqCounter) = reqCounter%4;
        (++totalReqs) = totalReqs%10;

    }
    network.networkFlags &= ~2;
    return mesh_address;
}
uint16_t RF24Mesh::renewAddress(){
  static const uint16_t requestDelay = 150;
  uint8_t reqCounter = 0;
  network.begin(MESH_DEFAULT_ADDRESS);
  mesh_address = MESH_DEFAULT_ADDRESS;

  while(!requestAddress(reqCounter)){
    uint8_t small = millis() & ~7;
    delay(requestDelay+(small*8));   
    (++reqCounter) = reqCounter%4;
  }
  return mesh_address;
}