//Check WiFi Status boolean WiFlyRNXV::CheckWiFiStatus(){ if(inCommandMode){ ExitCommandMode(); delay(1000); } if(checkBufferResponse("Associated!",TIMEOUT_TIME)) wifiStatus=true; else wifiStatus=false; return wifiStatus; }
boolean WiFlyRNXV::setHostIP(){ String hostIP; boolean getBool=getDataType(hostIP,GET_DEVID); if(getBool){ EnterCommandMode(); delay(500); String finalString="set ip host "+hostIP; Serial.println(finalString); uart.println(finalString); delay(500); uart.println("save"); delay(500); ExitCommandMode(); return true; }else{ return false; } }
boolean WiFlyRNXV::getDataType(String& fillBuff,int action){ initializeString(fillBuff,SHORT_STRING); if(!inCommandMode) EnterCommandMode(); String delimit; if(action==GET_IP){ delimit="IP="; uart.println("get ip"); }else if(action==GET_DEVID){ delimit="d="; uart.println("show deviceid"); } boolean bufRead = true; //Finish Reading boolean ipReadMode = false; //Ready to write in IP boolean ipReadOver = false; //Finished writing IP int bufpos = 0; //Buffer position char chResponse = 'A'; //Initial character response boolean compareSuccess=false; //Compare Success int timeout=5000; //Timeout value fixed //Fill the buffer unsigned long startTime = millis(); while(bufRead){ //Start getting values if(uart.available()){ chResponse = uart.read(); //Serial.print(chResponse); //Stop at character : if(chResponse==':'){ ipReadOver=true; break; } if(ipReadMode==false){ responseBuffer[bufpos]=chResponse; }else{ fillBuff[bufpos]=chResponse; } bufpos++; } //Check for existence of the comparison string, or if timeout stop if(checkForString(delimit,responseBuffer) && ipReadMode==false){ ipReadMode=true; bufpos=0; }else if((millis()-startTime)>timeout){ compareSuccess=false; bufRead=false; } } if(ipReadOver==true){ //ipValue.trim(); ipValue.replace(" ",""); Serial.print("IPVAL:"); Serial.println(fillBuff); compareSuccess=true; delay(200); ExitCommandMode(); } uart.flush(); return compareSuccess; }
// Callback handler for AT command management void ATCommand(U8 commandNumber) { U8 retVal,bo; UU32 val128[4]; U32 val32; tOpenRFInitializer ini; switch(commandNumber) { case kGetMACAddressCommand: WriteU32ToUart(_macAddress); break; case kGetSetNetworkAddressCommand: bo = IsATBufferNotEmpty(); if(!bo) { WriteU32ToUart(_networkId); } else { retVal = ReadU32FromUart(&_networkId.U32); if(retVal) { ini.AckRetries = _ackRetries; ini.AckTimeout = _ackTimeout; ini.ChannelCount = 25; ini.DataRate = _radioDataRate; ini.EncryptionKey = _encryptionKey; ini.GfskModifier = 1; ini.HopTable = _hopTable; ini.MacAddress = _macAddress; ini.NetworkId = _networkId; ini.StartChannel = 0; OpenRFInitialize(ini); } } break; case kGetSetDestinationMACAddressCommand: bo = IsATBufferNotEmpty(); if(!bo) { WriteU32ToUart(_destinationAddress); } else { retVal = ReadU32FromUart(&val32); if(retVal) _destinationAddress.U32 = val32; } break; case kExitCommandMode: ExitCommandMode(); break; case kResetToFactoryCommand: break; case kGetSetRadioRate: bo = IsATBufferNotEmpty(); if(!bo) { WriteCharUART1(_radioDataRate+'0'); } else { retVal = ReadU8FromUart(&_radioDataRate); if(retVal) { ini.AckRetries = _ackRetries; ini.AckTimeout = _ackTimeout; ini.ChannelCount = 25; ini.DataRate = _radioDataRate; ini.EncryptionKey = _encryptionKey; ini.GfskModifier = 1; ini.HopTable = _hopTable; ini.MacAddress = _macAddress; ini.NetworkId = _networkId; ini.StartChannel = 0; OpenRFInitialize(ini); } } break; case kGetSetEncryptionKeyCommand: bo = IsATBufferNotEmpty(); if(!bo) { WriteU32ToUart(_encryptionKey.UU32[0]); WriteU32ToUart(_encryptionKey.UU32[1]); WriteU32ToUart(_encryptionKey.UU32[2]); WriteU32ToUart(_encryptionKey.UU32[3]); } else { retVal = ReadU32FromUart(&val32); if(retVal) _encryptionKey.UU32[0].U32 = val32; retVal &= ReadU32FromUart(&val32); if(retVal) _encryptionKey.UU32[1].U32 = val32; retVal &= ReadU32FromUart(&val32); if(retVal) _encryptionKey.UU32[2].U32 = val32; retVal &= ReadU32FromUart(&val32); if(retVal) _encryptionKey.UU32[3].U32 = val32; if(retVal) { ini.AckRetries = _ackRetries; ini.AckTimeout = _ackTimeout; ini.ChannelCount = 25; ini.DataRate = _radioDataRate; ini.EncryptionKey = _encryptionKey; ini.GfskModifier = 1; ini.HopTable = _hopTable; ini.MacAddress = _macAddress; ini.NetworkId = _networkId; ini.StartChannel = 0; OpenRFInitialize(ini); } } break; case kGetSetDataRateCommand: bo = IsATBufferNotEmpty(); if(!bo) { WriteCharUART1(GetUART1BaudRate()+'0'); } else { if(ReadU8FromUart(&_uartBaudRate)) SetUART1BaudRate(_uartBaudRate); } break; case kGetSetParityCommand: break; case kGetSetStopBitsCommand: break; case kGetRSSICommand: WriteCharToUart(RadioReadRSSIValue()>>4); WriteCharToUart(RadioReadRSSIValue()&0xff); break; case kGetTemperatureCommand: WriteCharToUart(RadioGetTemperature()>>4); WriteCharToUart(RadioGetTemperature()&0xff); break; case kGetPowerSupplyCommand: break; case kGetFirmwareVersion: WriteCharUART1(kMajorSoftwareVersion+'0'); WriteCharUART1(kMinorSoftwareVersion+'0'); break; case kWriteSettings: ErasePersistentArea(); WritePersistentValue(0,_networkId.U8,4); WritePersistentValue(4,&_destinationAddress.U8[0],4); WritePersistentValue(8,&_encryptionKey.U8[0],16); WritePersistentValue(24,&_operatingMode,1); bo=GetUART1BaudRate(); WritePersistentValue(25,&bo,1); WritePersistentValue(26,&_transmitTriggerLevel,1); WritePersistentValue(27,(U8*)(&_transmitTriggerTimeout),1); // mark the persistent memory as initialized so it will be read on the next reset bo=0x55; WritePersistentValue(254,&bo,1); break; case kGetSetPacketType: bo = IsATBufferNotEmpty(); if(!bo) { WriteCharUART1(_packetType+'0'); } else { ReadU8FromUart(&_packetType); } break; case kGetSetTriggerLevel: bo = IsATBufferNotEmpty(); if(!bo) { WriteCharToUart(_transmitTriggerLevel>>4); WriteCharToUart(_transmitTriggerLevel&0x0f); } else {