Ejemplo n.º 1
0
//Check WiFi Status
boolean WiFlyRNXV::CheckWiFiStatus(){
	
	if(inCommandMode){
		ExitCommandMode();
		delay(1000);
	}
	
	if(checkBufferResponse("Associated!",TIMEOUT_TIME))
	wifiStatus=true;
	else
	wifiStatus=false;
	
	
	return wifiStatus;
}
Ejemplo n.º 2
0
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;
	}
}
Ejemplo n.º 3
0
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;	
}
Ejemplo n.º 4
0
// 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
				{