?? wcdmaphlayerinitmask.m
字號(hào):
function varargout = WcdmaPhLayerInitMask(block, action, varargin)
s = 'WcdmaPhLayerInitMask';
%**************************************************************************
% --- Action switch -- Determines which of the callback functions is called
%**************************************************************************
switch(action)
%*********************************************************************
% Function Name: init
% Description: Main initialization code
%********************************************************************
case 'init'
% --- Set Init Values
eStr = setInitValues(block);
% --- Return without error
varargout{1} = eStr;
%*********************************************************************
% Function Name: cbShowTrCh
% Description:
%********************************************************************
case 'cbShowTrCh'
% -- Get variables from mask
En = get_param(block, 'MaskEnables');
Vis = get_param(block, 'MaskVisibilities');
Vals = get_param(block, 'MaskValues');
% -- Set Index to Mask parameters
setfieldindexnumbers(block);
% -- Set Visibilities
switch(Vals{idxShowTrCh})
case 'on' %User Defined : All options enable and visible
if(strcmp(Vals{idxMeasurChannel},'User Defined'))
idxOn = [idxMeasurChannel idxTrBlkSetSize idxTrBlkSize idxTti idxCrcSize idxErrorCorr ...
idxRMAttribute idxPosTrChMask idxNumPhCH idxSlotFormat];
[En{idxOn}, Vis{idxOn}] = deal('on');
else % Predefined Cases : All options are visible but only Measurement channel is enable
idxEnOff = [idxTrBlkSetSize idxTrBlkSize idxTti idxCrcSize idxErrorCorr ...
idxRMAttribute idxPosTrChMask idxNumPhCH idxSlotFormat];
idxVisOn = [idxMeasurChannel idxEnOff];
[En{idxMeasurChannel}, Vis{idxVisOn}] = deal('on');
[En{idxEnOff}] = deal('off');
end
case 'off'
idxOff = [idxMeasurChannel idxTrBlkSetSize idxTrBlkSize idxTti idxCrcSize idxErrorCorr ...
idxRMAttribute idxPosTrChMask idxNumPhCH idxSlotFormat];
[En{idxOff}, Vis{idxOff}] = deal('off');
end
% --- Update parameters
set_param(block,'MaskVisibilities', Vis, 'MaskEnables', En);
%*********************************************************************
% Function Name: cbMeasurChannel
% Description: Depending on the variable measurChannel,
% preloads variables according to the 3GPP TS 25.101 specs.
% Return Values: None
%********************************************************************
case 'cbMeasurChannel'
% -- Get variables from mask
Vals = get_param(block, 'maskvalues');
En = get_param(block, 'MaskEnables');
Vis = get_param(block, 'MaskVisibilities');
% -- Set Index to Mask parameters
setfieldindexnumbers(block);
% -- Set visibilities
idxEn = [idxTrBlkSetSize idxTrBlkSize idxTti idxCrcSize idxErrorCorr ...
idxRMAttribute idxPosTrChMask idxNumPhCH idxSlotFormat];
[En{idxEn}] = deal('off');
% -- Preload parameters
switch(Vals{idxMeasurChannel})
case '12.2 Kbps'
Vals{idxTrBlkSetSize} = '[244 100]';
Vals{idxTrBlkSize} = '[244 100]';
Vals{idxTti} = '[20 40]';
Vals{idxCrcSize} = '[16 12]';
Vals{idxErrorCorr} = '[2 2]';
Vals{idxRMAttribute} = '[256 256]';
Vals{idxPosTrChMask} = 'Fixed';
Vals{idxNumPhCH} = '1';
Vals{idxSlotFormat} = '11';
Vals{idxDpchCode} = '127';
case '64 Kbps'
Vals{idxTrBlkSetSize} = '[1280 100]';
Vals{idxTrBlkSize} = '[1280 100]';
Vals{idxTti} = '[20 40]';
Vals{idxCrcSize} = '[16 12]';
Vals{idxErrorCorr} = '[3 2]';
Vals{idxRMAttribute} = '[256 256]';
Vals{idxPosTrChMask} = 'Fixed';
Vals{idxNumPhCH} = '1';
Vals{idxSlotFormat} = '13';
Vals{idxDpchCode} = '31';
case '144 Kbps'
Vals{idxTrBlkSetSize} = '[2880 100]';
Vals{idxTrBlkSize} = '[2880 100]';
Vals{idxTti} = '[20 40]';
Vals{idxCrcSize} = '[16 12]';
Vals{idxErrorCorr} = '[3 2]';
Vals{idxRMAttribute} = '[256 256]';
Vals{idxPosTrChMask} = 'Fixed';
Vals{idxNumPhCH} = '1';
Vals{idxSlotFormat} = '14';
Vals{idxDpchCode} = '15';
case '384 Kbps'
Vals{idxTrBlkSetSize} = '[3840 100]';
Vals{idxTrBlkSize} = '[3840 100]';
Vals{idxTti} = '[10 40]';
Vals{idxCrcSize} = '[16 12]';
Vals{idxErrorCorr} = '[3 2]';
Vals{idxRMAttribute} = '[256 256]';
Vals{idxPosTrChMask} = 'Fixed';
Vals{idxNumPhCH} = '1';
Vals{idxSlotFormat} = '15';
Vals{idxDpchCode} = '7';
case 'User Defined'
% -- Update the Mask Parameters
[En{idxEn}] = deal('on');
end
set_param(block,'MaskValues',Vals,'MaskVisibilities', Vis, 'MaskEnables', En);
%*********************************************************************
% Function Name: cbShowAntenna
% Description:
%********************************************************************
case 'cbShowAntenna'
% -- Get variables from mask
En = get_param(block, 'MaskEnables');
Vis = get_param(block, 'MaskVisibilities');
Vals = get_param(block, 'MaskValues');
% -- Set Index to Mask parameters
setfieldindexnumbers(block);
% -- Set Visibilities
switch(Vals{idxShowAntenna})
case 'on'
idxOn = [idxDpchCode idxScrCode idxNumTapsRRC idxNumTapsChEst idxOverSampling];
[En{idxOn}, Vis{idxOn}] = deal('on');
case 'off'
idxOff = [idxDpchCode idxScrCode idxNumTapsRRC idxNumTapsChEst idxOverSampling];
[En{idxOff}, Vis{idxOff}] = deal('off');
end
% --- Update parameters
set_param(block,'MaskVisibilities', Vis, 'MaskEnables', En);
%*********************************************************************
% Function Name: cbShowChModel
% Description:
%********************************************************************
case 'cbShowChModel'
% -- Get variables from mask
En = get_param(block, 'MaskEnables');
Vis = get_param(block, 'MaskVisibilities');
Vals = get_param(block, 'MaskValues');
% -- Set Index to Mask parameters
setfieldindexnumbers(block);
% -- Set Visibilities
switch(Vals{idxShowChModel})
case 'on'
if(strcmp(Vals{idxPropConditions},'No Channel'))
% All options are visible but disable
idx = [idxFingerPhases idxFingerPowers idxFingerEnables idxSpeed idxSnrdB];
[Vis{[idx idxPropConditions]}, En{idxPropConditions}] = deal('on');
[En{idx}] = deal('off');
elseif(strcmp(Vals{idxPropConditions},'User Defined'))
% All options are visible and enable
idxOn = [idxPropConditions idxFingerPhases idxFingerPowers idxFingerEnables idxSpeed idxSnrdB];
[En{idxOn}, Vis{idxOn}] = deal('on');
else
% All options are visible but only idxPropConditions and snrdB is enable
idx = [idxFingerPhases idxFingerPowers idxFingerEnables idxSpeed];
[En{[idxPropConditions idxSnrdB]}, Vis{[idxPropConditions idxSnrdB idx]}] = deal('on');
[En{idx}] = deal('off');
end
case 'off'
idxOff = [idxPropConditions idxFingerPhases idxFingerPowers idxFingerEnables idxSpeed idxSnrdB];
[En{idxOff}, Vis{idxOff}] = deal('off');
end
% --- Update parameters
set_param(block,'MaskVisibilities', Vis, 'MaskEnables', En);
%************************************************************************
% Function Name: cbPropConditions
% Description: Sets Multipath Profiles according to specifications
%************************************************************************
case 'cbPropConditions'
% -- Get variables from mask
Vals = get_param(block, 'maskvalues');
En = get_param(block, 'MaskEnables');
Vis = get_param(block, 'MaskVisibilities');
% -- Set Index to Mask parameters
setfieldindexnumbers(block);
% -- Set Visibilities
idx = [idxFingerPhases idxFingerPowers idxFingerEnables idxSpeed];
% -- Update the Mask Parameters
[En{idx}] = deal('off');
nameBlk = find_system(gcs,'Regexp','on','Name','\<Channel Models\>');
if(~isempty(nameBlk))
if(strcmp(Vals{idxPropConditions},'No Channel')) % No Channel
set_param([gcs '/WCDMA Channel Models'],'BlockChoice','No Channel');
elseif(strcmp(Vals{idxPropConditions},'Static - AWGN')) % Static Case
set_param([gcs '/WCDMA Channel Models'],'BlockChoice','AWGN');
else % Multipath Case
set_param([gcs '/WCDMA Channel Models'],'BlockChoice','Multipath+AWGN');
end
end
% -- Preload Parameters
switch(Vals{idxPropConditions})
case 'No Channel'
Vals{idxFingerPhases} = '0';
Vals{idxFingerPowers} = '0';
Vals{idxFingerEnables} = '1';
Vals{idxSpeed} = '0';
Vals{idxSnrdB} = 'Inf';
% Disable Snr parameter
[En{idxSnrdB}] = deal('off');
case 'Static - AWGN'
Vals{idxFingerPhases} = '0';
Vals{idxFingerPowers} = '0';
Vals{idxFingerEnables} = '1';
Vals{idxSpeed} = '0';
if(strcmp(Vals{idxSnrdB},'Inf'))
Vals{idxSnrdB} = '-1';
end
% Enable Snr parameter
[En{idxSnrdB}] = deal('on');
case 'Multipath Profile - Case 1'
Vals{idxFingerPhases} = '[0 976e-9]';
Vals{idxFingerPowers} = '[0 -10]';
Vals{idxFingerEnables} = '2';
Vals{idxSpeed} = '3';
if(strcmp(Vals{idxSnrdB},'Inf'))
Vals{idxSnrdB} = '9';
end
% Enable Snr parameter
[En{idxSnrdB}] = deal('on');
case 'Multipath Profile - Case 2'
Vals{idxFingerPhases} = '[0 976e-9 20000e-9]';
Vals{idxFingerPowers} = '[0 0 0]';
Vals{idxFingerEnables} = '3';
Vals{idxSpeed} = '3';
if(strcmp(Vals{idxSnrdB},'Inf'))
Vals{idxSnrdB} = '-3';
end
% Enable Snr parameter
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -