function ttlist = etsi_loopsVDSL(ttlist, goal); %% =========================================================================== %etsi_loopsVDSL - Sets up the experiment description for the ETSI VDSL loops % % Parameter: ttlist Structure describing the traffic and topology % Parameter: goal Structure describing the goals % Returns: ttlist Structure describing the traffic and topology % % Example(s): % gui.ttlist = etsi_loopsVDSL([]); % Set up ETSI loop definitions % % Get a specific ETSI loop: % ex.tt = getList(gui.ttlist,'ETSI M:1 L:1 S:S1 N:A'); % % gui.ttlist = etsi_loops(gui.ttlist); % Add ETSI loops to an existing ttlist % % Reference(s): % ETSI VDSL Part 1 TS 101-270-1 V1.1.6 (1999-08) %% =========================================================================== %% =========================================================================== % Copyright (C): % 1998-2000 by Telia Research AB, Lulea, Sweden; % 2000-2003 by Forschungszentrum Telekommunikation Wien, Austria; % All rights reserved. % Project : FTW's xDSLsimu % Author(s) : Tomas Nordstrom (Tomas.Nordstrom@FTW.at) % : Daniel Bengtsson (Daniel.J.Bengtsson@Telia.se) % % CVS: $Id: etsi_loopsVDSL.m,v 3.3 2003/11/03 12:33:22 tono Exp $ %% =========================================================================== % Change History % 1999-10-25 (ToNo) Reorganized things into etsi,ansi,itu,fsan definitions % 1999-11-05 (ToNo) Made nested loops to generate all possible loops % 2000-04-05 (UvAn) Removed "global ex", goal passed as a parameter % 2000-08-30 (ToNo) Removed "ex" from parameter test, % and fixed BT_dwug naming % 2002-07-24 (ToNo) Port to octave % 2003-03-13 (ToNo) Added example of dblift instead of no of modems % 2003-11-03 (ToNo) Lists now use cell arrays for both Octave and Matlab %% =========================================================================== % Uses goals to set length of scenarios if nargin<2 errmsg = sprintf('etsi_loopsVDSL(ttlist, goal) needs goal.{names,reach} to be defined'); error(errmsg); end; % Uses goals to set length of scenarios if isempty(goal) | isempty(goal.names) | isempty(goal.reach), errmsg = sprintf('etsi_loopsVDSL(ttlist, goal) needs goal.{names,reach} to be defined'); error(errmsg); end; nomodems = 20+1; %dblift = 8; %nomodems = 1+ 10^((dblift/10)/0.6); % Later these might become arguments to this routine MaskSet=[1 2]; LoopSet=[1]; FSANnoiselist=['A','B','C','D','E','F']; for Mask=MaskSet; for Loop=LoopSet; for Noise=1:length(FSANnoiselist), for Service=1:length(goal.rates), dist = goal.reach.M(Mask).L(Loop).SN(Service,Noise); if dist~=0, tt.name=sprintf('ETSI M:%d L:%d S:%s N:%s',... Mask, Loop, goal.names(Service,:), FSANnoiselist(Noise)); switch Loop case 1, cable='BT_dwug'; % TP100 tt.topology={... {0, '', 'CO', ''},... {dist, cable, 'N1', sprintf('%.0f m TP100',dist)}... }; tt.traffic={{1, 2, 'VDSL', nomodems}}; case 2, cable='KPN_L1'; % TP150 tt.topology={... {0, '', 'CO', ''},... {dist, cable, 'N1', sprintf('%.0f m TP150',dist)}... }; tt.traffic={{1, 2, 'VDSL', nomodems}}; case 3, tt.topology={... {0, '', 'CO', ''},... {70, 'KPN_R2', 'E', sprintf('%.0f m TP100x',70)},... {dist-70, 'KPN_L1', 'N1', sprintf('%.0f m TP150',dist-70)}... }; tt.traffic={{1, 3, 'VDSL', nomodems}}; otherwise error(sprintf('Loop %d not implemented',l)); end; ttlist=insertList(ttlist,tt); end; end; end; end; end;