|
|
|
@ -22,17 +22,17 @@ void printDeviceData(SBNetworkDevice &device){
|
|
|
|
|
Serial.println(); |
|
|
|
|
Serial.print(F("Master MAC = ")); |
|
|
|
|
printAddress(device.MasterMAC.Bytes); |
|
|
|
|
Serial.println(""); |
|
|
|
|
Serial.println(); |
|
|
|
|
Serial.print(F("NetKey = ")); |
|
|
|
|
Serial.print(device.NetworkKey, DEC); |
|
|
|
|
Serial.println(""); |
|
|
|
|
Serial.println(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
SBNetwork::SBNetwork(bool client, uint8_t cePin, uint8_t csPin) : radio(cePin, csPin){ |
|
|
|
|
RunAsClient = client; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void SBNetwork::initialize(SBMacAddress mac){ |
|
|
|
|
int8_t SBNetwork::initialize(SBMacAddress mac){ |
|
|
|
|
Serial.print(F("SBNetwork Version ")); |
|
|
|
|
Serial.println(F(SB_VERSION)); |
|
|
|
|
Serial.println(F("====================")); |
|
|
|
@ -58,7 +58,7 @@ void SBNetwork::initialize(SBMacAddress mac){
|
|
|
|
|
|
|
|
|
|
// Set the PA Level low to prevent power supply related issues since this is a
|
|
|
|
|
// getting_started sketch, and the likelihood of close proximity of the devices. RF24_PA_MAX is default.
|
|
|
|
|
this->radio.setPALevel(RF24_PA_HIGH); |
|
|
|
|
this->radio.setPALevel(RF24_PA_LOW); |
|
|
|
|
this->radio.enableDynamicPayloads(); |
|
|
|
|
|
|
|
|
|
//this->radio.enableDynamicAck();
|
|
|
|
@ -75,15 +75,24 @@ void SBNetwork::initialize(SBMacAddress mac){
|
|
|
|
|
// Start the listening phase
|
|
|
|
|
this->radio.startListening(); |
|
|
|
|
Serial.println(F("Done")); |
|
|
|
|
|
|
|
|
|
unsigned long startConnect = millis(); |
|
|
|
|
|
|
|
|
|
if (this->RunAsClient) { |
|
|
|
|
// Connect to a master
|
|
|
|
|
_Connected = false; |
|
|
|
|
while (!_Connected) { |
|
|
|
|
while (!_Connected && millis() - startConnect <= CONNECT_TIMEOUT) { |
|
|
|
|
_Connected = connectToNetwork(); |
|
|
|
|
delay(500); // This can be an endless loop in case of no connection to master is available
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(!_Connected) { |
|
|
|
|
Serial.println(F("Timeout on connect to network...")); |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void SBNetwork::initializeNetworkDevice(SBNetworkDevice &device, SBMacAddress mac){ |
|
|
|
@ -219,7 +228,9 @@ bool SBNetwork::sendToDeviceInternal(SBNetworkFrame frame) {
|
|
|
|
|
Serial.print(millis()); |
|
|
|
|
Serial.println(F(" Sending physical data")); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
bSuccess = radio.write(buffer, bufferSize); |
|
|
|
|
|
|
|
|
|
radio.openReadingPipe(0, this->NetworkDevice.MAC); |
|
|
|
|
radio.startListening(); |
|
|
|
|
return bSuccess; |
|
|
|
@ -361,7 +372,7 @@ bool SBNetwork::connectToNetwork(){
|
|
|
|
|
unsigned long started_waiting_at = millis(); |
|
|
|
|
boolean timeout = false; |
|
|
|
|
while (!this->receive(&frame)) { |
|
|
|
|
if ((millis() - started_waiting_at) > 1000) { |
|
|
|
|
if ((millis() - started_waiting_at) > 2500) { |
|
|
|
|
timeout = true; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
@ -394,12 +405,13 @@ bool SBNetwork::connectToNetwork(){
|
|
|
|
|
conFrame.Header.PackageId = millis(); |
|
|
|
|
conFrame.Header.ToAddress = frame.Header.FromAddress; |
|
|
|
|
conFrame.MessageSize = 0; |
|
|
|
|
started_waiting_at = millis(); |
|
|
|
|
if (!this->sendToDeviceInternal(conFrame)) { |
|
|
|
|
Serial.println(F("Failed - Sending pairing request")); |
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
while (!this->receive(&frame)) { |
|
|
|
|
if (millis() - started_waiting_at > 1000) { |
|
|
|
|
if (millis() - started_waiting_at > 5000) { |
|
|
|
|
timeout = true; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
@ -686,3 +698,10 @@ uint8_t SBNetwork::removeMac(SBMacAddress mac){
|
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool SBNetwork::shutdown() { |
|
|
|
|
radio.stopListening(); |
|
|
|
|
delay(10); |
|
|
|
|
radio.powerDown(); |
|
|
|
|
return true; |
|
|
|
|
} |