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")); } }
//=========================================== 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); }