void 
DiameterEapServerStateMachine::SendDEA()
{
  DiameterMsg msg;

  deaData.AuthApplicationId = EapApplicationId;

  DEA_Parser parser;
  parser.setAppData(&session.deaData);
  parser.setRawData(&msg);

  try {
    parser.parseAppToRaw();
  }
  catch (DiameterParserError) {
    AAA_LOG((LM_ERROR, "[%N] Parsing error.\n"));
    return;
  }

  AAAMessageControl msgControl(session.Self());
  if (msgControl.Send(msg) != AAA_ERR_SUCCESS) {
    AAA_LOG((LM_ERROR, "Failed sending message.\n"));
  }
  else {
    AAA_LOG((LM_DEBUG, "Sent DEA Message.\n"));
  }
}
Пример #2
0
//===========================================
void TIM6_IRQHandler(void)
{	
	if(fRcvUSART1 && (uart_timeout<0xFFFF))
	{
		uart_timeout ++;
		// Check data received		
		if(uart_timeout>=10)
		{
			u32 i = 0;
			u16 index = 0;
			u16 count_temp = 0;
			u8* ptr;
			u8 crc = 0;
			
			count_temp = rcvCount;
			fRcvUSART1 = false;
			uart_timeout = 0;	
//			TIM_Cmd(TIM6,DISABLE);
			// Decrypt data
			if(rcvData[0] != ETHERNET_TAG)
			{				
				if(networkStatus == NETWORK_GPRS)
				{					
					ptr = (u8*)strstr(rcvData,"+RECEIVE");
					if(ptr!=NULL)
					{
						while(*ptr != 0x0A)
							ptr++;
						ptr++;
						index = ptr - rcvData;	
						for(i = index;i<rcvCount;i++)
						{
							rcvData[i] ^= 0xAB;
						}		
						/*
						crc = ComputeChecksum(&rcvData[index],rcvCount-index-1);
						if(rcvData[rcvCount - 1] != crc)
						{
							sendResponse(CMD_INVALID,_ERROR);
						}
						else
							msgControl(&rcvData[index],rcvCount-index);	
						*/
						msgControl(&rcvData[index],rcvCount-index);	
					}			
				}
				else if(networkStatus == NETWORK_ETHERNET)
				{			
					for(i = 0;i<rcvCount;i++)
					{
						rcvData[i] ^= 0xAB;
					}	
					/*
					crc = ComputeChecksum(rcvData,rcvCount-1);
					if(rcvData[rcvCount - 1] != crc)
					{
						sendResponse(CMD_INVALID,_ERROR);
					}
					else
						msgControl(rcvData,rcvCount);	
					*/
					msgControl(rcvData,rcvCount);	
				}				
			}
			else
				EthMsgControl(rcvData);
			
			if(fSendRes)
			{				
				fSendRes = false;
				sendResponse(cmd,res_value);
				cmd = CMD_INVALID;
				res_value = _SUCCESS;				
			}					
			// Clear global variables							
			for(i = 0;i<count_temp;i++)
				rcvData[i] = 0;
			if(rcvCount > count_temp)
			{
				index = rcvCount-count_temp;
				for(i = 0;i<index;i++)
				{
					rcvData[i] = rcvData[count_temp+i];				
					rcvData[count_temp+i] = 0;
				}
			}
			rcvCount -=count_temp;	
		}		
	}
	TIM_ClearFlag(TIM6,TIM_FLAG_Update);
}