/// <summary> /// Process the symbol, marking it's blocks as 'transfered' or not /// </summary> /// <param name="symbol"></param> public static Symbol ProcessSymbol(Symbol symbol) { var idx = 0; foreach(var block in symbol.Blocks) { // @TODO: REPLACE // FAUX RANDOMIZATION if (block.Used) { block.Transmitted = MathExtender.Random() > block.Modulation.Probability(ChannelQuality[idx]); // update statistics FlowSimulation.StatTotalBlocks++; if (block.Transmitted) { FlowSimulation.StatTransmittedBlocks++; block.Flow.ProcessTransmittedBlock(block); } block.Flow.Data.Offset = 0; } idx++; } return symbol; }
/// <summary> /// The planner action /// </summary> public abstract Symbol Action(Flow[] flows, Symbol lastSymbol);