#######################################################################################
#MRBTS: MNL17_Macro_1610_008/0.1
#NIDD_VER: MNL17_1610_008_00, FL17_00
#Migration from FL16A to FL17
#02.02.2017/ v0.1 /draft for new CUTool /R.Biedka
#
#######################################################################################
#######################################################################################

define "operation" "create"
define "version" "MNL17_1610_008"
define "adaptation" "com.nokia.srbts.mnl"

for_objects "MRBTS"
begin
	define "flRoot" $current_dist_name
	if not ( get_version flRoot ) == "FL16A"
	abort_file
end	

if ( objects_count "MRBTS/BTSSCL" ) == 0 abort_file
	
#######################################################################################
#######################################################################################
for_objects "MRBTS"
	begin
		define "mnlDn" "MRBTS-" JOIN $current_MRBTS JOIN "/MNL-1"
		add_object mnlDn
		set_operation mnlDn operation
		set_version mnlDn version
		set_adaptation mnlDn adaptation
		
		if ( param_exist $current_dist_name "cmSyncCheckPeriod" ) add_param mnlDn "cmSyncCheckPeriod" get_param $current_dist_name "cmSyncCheckPeriod"
		if ( param_exist $current_dist_name "validatePlanAgainstDetectedHW" ) add_param mnlDn "validatePlanAgainstDetectedHW" get_param $current_dist_name "validatePlanAgainstDetectedHW"
			else add_param mnlDn "validatePlanAgainstDetectedHW" "false"
	end
	
define "mnlentDn" mnlDn JOIN "/MNLENT-1"
add_object mnlentDn
set_operation mnlentDn operation
set_version mnlentDn version
set_adaptation mnlentDn adaptation

define "bbadmDn" mnlentDn JOIN "/BBADM-1"
add_object bbadmDn
set_operation bbadmDn operation
set_version bbadmDn version
set_adaptation bbadmDn adaptation

#for_objects "MRBTS/BBPOOL"
#begin
#	define "bbpoolDn" bbadmDn JOIN "/BBPOOL-" JOIN $current_BBPOOL
#	add_object bbpoolDn
#	set_operation bbpoolDn operation
#	set_version bbpoolDn version
#	set_adaptation bbpoolDn adaptation
#	if ( param_exist $current_dist_name "bbPoolCellsList"  ) copy_list $current_dist_name "bbPoolCellsList" bbpoolDn "bbPoolCellsList"  
#	if ( param_exist $current_dist_name "bbPwrGroupIdList"  ) copy_list $current_dist_name "bbPwrGroupIdList" bbpoolDn "bbPwrGroupDNList"
#	if ( param_exist $current_dist_name "operationalState "  ) add_param bbpoolDn "operationalState" get_param $current_dist_name "operationalState"
#end

define "capadmDn" mnlentDn JOIN "/CAPADM-1"
add_object capadmDn
set_operation capadmDn operation
set_version capadmDn version
set_adaptation capadmDn adaptation

for_objects "MRBTS/CAPCFG"
begin
	define "capcfgDn" capadmDn JOIN "/CAPCFG-1"
	copy_object $current_dist_name capcfgDn
#	add_object capcfgDn
#	set_operation capcfgDn operation
#	set_version capcfgDn version
#	set_adaptation capcfgDn adaptation	
end

for_objects "MRBTS/LNBTS/CAPLIML"
begin
	define "caplimDn" capadmDn JOIN "/CAPLIM-1"
	copy_object $current_dist_name caplimDn
#	add_object caplimDn
#	set_operation caplimDn operation
#	set_version caplimDn version
#	set_adaptation caplimDn adaptation	
end

define "cellMappingDn" mnlentDn JOIN "/CELLMAPPING-1"
add_object cellMappingDn
set_operation cellMappingDn operation
set_version cellMappingDn version
set_adaptation cellMappingDn adaptation

for_objects "MRBTS/BTSSCL/LCELL"
begin
	define "lcellDN" cellMappingDn JOIN "/LCELL-" JOIN $current_LCELL	
	add_object lcellDN
	set_operation lcellDN operation
	set_version lcellDN version
	set_adaptation lcellDN adaptation
	
	for_list $current_dist_name "resourceList"
			begin
				define "chgrId" 1
				if param_exist $current_dist_name "resourceList." JOIN $current_index JOIN ".subCellId"
					define "chgrId" get_param $current_dist_name "resourceList." JOIN $current_index JOIN ".subCellId"
				define "chgrDn" lcellDN JOIN "/CHANNELGROUP-" JOIN chgrId
				define "chgrOn" objects_count chgrDn
				if chgrOn < 1
					begin
						add_object chgrDn
						set_operation chgrDn operation
					end
				define "chOn" objects_count chgrDn JOIN "/CHANNEL"
				define "chId" chOn + 1
				define "chDn" chgrDn JOIN "/CHANNEL-" JOIN chId
				add_object chDn
				set_operation chDn operation
				add_param chDn "antlId" get_param $current_dist_name "resourceList." JOIN $current_index JOIN ".antlId"
				define "txRxUsage" get_param $current_dist_name "resourceList." JOIN $current_index JOIN ".txRxUsage"
				if txRxUsage == "TXRX"
					define "usage" "TX"
				else
					define "usage" txRxUsage
				add_param chDn "direction" usage
				if txRxUsage == "TXRX"
					begin
						define "chId" chId + 1
						define "chDn" chgrDn JOIN "/CHANNEL-" JOIN chId
						add_object chDn
						set_operation chDn operation
						add_param chDn "antlId" get_param $current_dist_name "resourceList." JOIN $current_index JOIN ".antlId"
						add_param chDn "direction" "RX"
					end
			end

	
end

for_objects "MRBTS/MNL/MNLENT/CELLMAPPING/LCELL/CHANNELGROUP/CHANNEL"
	begin
		define "chDn" $current_dist_name
		for_objects "MRBTS/EQM/APEQM/RMOD/ANTL"
			if $current_ANTL == get_param chDn "antlId"
				add_param chDn "antlDN" $current_dist_name
		del_param chDn "antlId"
		for_objects "LOGLINK"
			if ( get_param chDn "antlDN" ) == ( get_param $current_dist_name "firstEndpointDN" ) && ( replace get_param $current_dist_name "secondEndpointDN" "MRBTS-\d+/EQM-\d+/APEQM-\d+/PHYANT-\d+/PHYANTU-\d+" "" flags "g" ) == ""
				add_param chDn "phyAntUDN" get_param $current_dist_name "secondEndpointDN"
	end
	
define "featcadmDN" flRoot JOIN "/MNL-1/MNLENT-1/FEATCADM-1"
add_object featcadmDN
set_operation featcadmDN "create"

for_objects "MRBTS"
	begin
		if ( param_exist $current_dist_name "actAldSwUpdate" ) add_param featcadmDN "actAldSwUpdate" get_param $current_dist_name "actAldSwUpdate"
		else add_param featcadmDN "actAldSwUpdate" "false"
		if ( param_exist $current_dist_name "actRemoteRfDiag" ) add_param featcadmDN "actRemoteRfDiag" get_param $current_dist_name "actRemoteRfDiag"
		else add_param featcadmDN "actRemoteRfDiag" "false"
		if ( param_exist $current_dist_name "actTransportConfigFallback" ) add_param featcadmDN "actTransportConfigFallback" get_param $current_dist_name "actTransportConfigFallback"
		else add_param featcadmDN "actTransportConfigFallback" "false"
		if ( param_exist $current_dist_name "actMhaAutoConfig" ) add_param featcadmDN "actMhaAutoConfig" get_param $current_dist_name "actMhaAutoConfig"
		else add_param featcadmDN "actMhaAutoConfig" "false"
	end
	
for_objects "MRBTS/BTSSCL"
	begin
			if ( param_exist $current_dist_name "actPowerMeter" ) add_param featcadmDN "actPowerMeter" get_param $current_dist_name "actPowerMeter"
			else add_param featcadmDN "actPowerMeter" "false"
			if ( param_exist $current_dist_name "rfSharingEnabled" ) add_param featcadmDN "rfSharingEnabled" get_param $current_dist_name "rfSharingEnabled"
			else add_param featcadmDN "rfSharingEnabled" "false"
			if ( param_exist $current_dist_name "actDtPim" ) add_param featcadmDN "actDtPim" get_param $current_dist_name "actDtPim"
			else add_param featcadmDN "actDtPim" "false"
			if ( param_exist $current_dist_name "actPimTesting" ) add_param featcadmDN "actPimTesting" get_param $current_dist_name "actPimTesting"
			else add_param featcadmDN "actPimTesting" "false"	
			if ( param_exist $current_dist_name "actRfiTesting" ) add_param featcadmDN "actRfiTesting" get_param $current_dist_name "actRfiTesting"
			else add_param featcadmDN "actRfiTesting" "false"
			if ( param_exist $current_dist_name "actRxMonitoring" ) add_param featcadmDN "actRxMonitoring" get_param $current_dist_name "actRxMonitoring"
			else add_param featcadmDN "actRxMonitoring" "true"	
	end
	
for_objects "MRBTS/LNBTS/FTM/SYNC"
	begin
		if ( param_exist $current_dist_name "actHybridSynch" ) add_param featcadmDN "actHybridSynch" get_param $current_dist_name "actHybridSynch"
	end

add_param featcadmDN "delayCompPerEnbEnabled" "false"

#create FMCADM object MNL/MNLENT/FMCADM


define "fmcadmDN" flRoot JOIN "/MNL-1/MNLENT-1/FMCADM-1"
add_object fmcadmDN
set_operation fmcadmDN "create"

for_objects "MRBTS/BTSSCL"
	begin
		if ( param_exist $current_dist_name "alToggSuppList" ) copy_list $current_dist_name "alToggSuppList"  fmcadmDN "alToggSuppList"
	end

#Create PMCADM MO and populate with parameters

define "pmcadmDN" flRoot JOIN "/MNL-1/MNLENT-1/PMCADM-1"
for_objects "MRBTS/PMCADM"
begin
	copy_object $current_dist_name pmcadmDN
end


define "secadmDN" flRoot JOIN "/MNL-1/MNLENT-1/SECADM-1"
for_objects "MRBTS/SECADM"
begin
	copy_object $current_dist_name secadmDN
end

add_param secadmDN "ethernetPortSecurityEnabled" "true"
if ( param_exist secadmDN "idleSessionTimeWebUI" ) del_param secadmDN "idleSessionTimeWebUI"
if ( param_exist secadmDN "passwdHistoryLength" ) del_param secadmDN "passwdHistoryLength" 

for_objects "MRBTS"
begin
	if ( param_exist $current_dist_name "actEthernetSec" ) add_param secadmDN "ethernetPortSecurityEnabled" get_param $current_dist_name "actEthernetSec"
end

#######################################################################################
#######################################################################################
#Create SYNC MO and populate with parameters


define "syncDn" flRoot JOIN "/MNL-1/MNLENT-1/SYNC-1"
define "previousSyncDN" flRoot JOIN "/BTSSCL-1"
add_object syncDn
set_operation syncDn operation

add_param syncDn "btsSyncMode" get_param previousSyncDN "btsSyncMode"
add_param syncDn "manualFrameTimingAdjustment"  "0"

for_objects "MRBTS/LNBTS/FTM/SYNC"
	begin
		if ( param_exist $current_dist_name "actHybridSynch" ) add_param syncDn "actHybridSynch" get_param $current_dist_name "actHybridSynch"
	end

#######################################################################################
#######################################################################################
#Create CLOCK MO and populate with parameters

for_objects "MRBTS/SMOD"
begin
	define "clockDn" flRoot JOIN "/MNL-1/MNLENT-1/SYNC-1/CLOCK-" JOIN $current_SMOD
	define "previousClockDN" flRoot JOIN "/BTSSCL-1"
	add_object clockDn
	set_operation clockDn operation
	add_param clockDn "holdOverModeUsed" get_param previousClockDN "holdOverModeUsed"
	add_param clockDn "sModDN"  flRoot JOIN "/EQM-1/APEQM-1/CABINET-" JOIN $current_SMOD JOIN "/SMOD-1"
	if ( param_exist flRoot JOIN "/SMOD-" JOIN $current_SMOD "coreModuleSyncInputList" ) copy_list flRoot JOIN "/SMOD-" JOIN $current_SMOD "coreModuleSyncInputList" clockDn "syncInputList"
    if ( param_exist $current_dist_name "totalDelayFromSHM" )
        begin
            define "totalDelayFromSHM" get_param $current_dist_name "totalDelayFromSHM"
            add_param clockDn "totalDelayFromSHM" totalDelayFromSHM
        end
	
end

for_objects "MRBTS/MNL/MNLENT/SYNC/CLOCK"
	begin
		if ( param_exist $current_dist_name "syncInputList" )
			begin
				for_list $current_dist_name "syncInputList"
					begin
						if ( get_param $current_dist_name "syncInputList." JOIN $current_index JOIN ".syncInputType" ) == "transport reference source"
							add_param $current_dist_name "syncInputList." JOIN $current_index JOIN ".syncInputType" "TRS"
						if ( get_param $current_dist_name "syncInputList." JOIN $current_index JOIN ".syncInputType" ) == "fronthaul interface"
							add_param $current_dist_name "syncInputList." JOIN $current_index JOIN ".syncInputType" "PDH-1"
					end
			end
	end

define "outputConfiguration2M048" "Disabled"
define "outputConfiguration1Pps" "Disabled"

for_objects "MRBTS/BTSSCL"
    begin
        if ( param_exist $current_dist_name "holdOverModeUsed" )
            define "holdOverModeUsed" get_param $current_dist_name "holdOverModeUsed"
        else    
            define "holdOverModeUsed" "false"

        if ( param_exist $current_dist_name "ext1ppsClkOutOn" )
            begin
                define "ext1ppsClkOutOn" get_param $current_dist_name "ext1ppsClkOutOn"
                if ( ext1ppsClkOutOn ) == "true"
                    begin
                        if ( holdOverModeUsed ) == "true"
                            define "outputConfiguration1Pps" "EnabledWithoutBtsInputReference"
                        else
                            define "outputConfiguration1Pps" "EnabledWithBtsInputReference"
                    end
            end

        if ( param_exist $current_dist_name "ext2M048ClkOutOn" )
            begin
                define "ext2M048ClkOutOn" get_param $current_dist_name "ext2M048ClkOutOn"
                if ( ext2M048ClkOutOn ) == "true"
                    begin
                        if ( holdOverModeUsed ) == "true"
                            define "outputConfiguration2M048" "EnabledWithoutBtsInputReference"
                        else
                            define "outputConfiguration2M048" "EnabledWithBtsInputReference"
                    end
            end
    end

for_objects "MRBTS/MNL/MNLENT/SYNC/CLOCK"
    begin
        add_param $current_dist_name "outputConfiguration2M048" outputConfiguration2M048
        add_param $current_dist_name "outputConfiguration1Pps" outputConfiguration1Pps
    end

#Create CLOCK_FDD if FDD LTE is in configuration

for_objects "MRBTS/MNL/MNLENT/SYNC/CLOCK"
	begin
		define "clockfddDN" $current_dist_name JOIN "/CLOCK_FDD-1"
		add_object clockfddDN
		set_operation clockfddDN operation
		if ( param_exist clockfddDN "syncMaster" ) add_param clockfddDN "syncMaster" get_param flRoot JOIN "/SMOD-1" "syncMaster"
		else add_param clockfddDN "syncMaster" "true"
	end

#######################################################################################
#######################################################################################
#Create GNSSE MO and populate with parameters
if ( objects_count "MRBTS/SMOD/GNSSE" ) != 0
begin
for_objects "MRBTS/MNL/MNLENT/SYNC/CLOCK"
	begin
		define "gnsseDN" $current_dist_name JOIN "/GNSSE-1"
		define "previousGnsseDN" flRoot JOIN "/SMOD-" JOIN $current_CLOCK JOIN "/GNSSE-1"
		copy_object previousGnsseDN gnsseDN
#		add_object gnsseDN
#		set_operation gnsseDN operation
#		set_version gnsseDN version
#		set_adaptation gnsseDN adaptation	

		if ( param_exist gnsseDN "gnssConstellationMode" ) del_param gnsseDN "gnssConstellationMode"
		if ( param_exist gnsseDN "gnssUnitName" ) del_param gnsseDN "gnssUnitName"		
	end
end	

#######################################################################################
#######################################################################################
#Create GNSSI MO and populate with parameters
if ( objects_count "MRBTS/SMOD/GNSSI" ) != 0
begin
for_objects "MRBTS/MNL/MNLENT/SYNC/CLOCK"
	begin
		define "gnssiDN" $current_dist_name JOIN "/GNSSI-1"
		define "previousGnssiDN" flRoot JOIN "/SMOD-" JOIN $current_CLOCK JOIN "/GNSSI-1"
		copy_object previousGnssiDN gnssiDN
#		add_object gnssiDN
#		set_operation gnssiDN operation
#		set_version gnssiDN version
#		set_adaptation gnssiDN adaptation	

		if ( param_exist gnssiDN "gnssConstellationMode" ) del_param gnssiDN "gnssConstellationMode"
		if ( param_exist gnssiDN "gnssUnitName" ) del_param gnssiDN "gnssUnitName"		
	end
end	

#######################################################################################
#######################################################################################
#Create TIME MO and populate with parameters

define "timeDN" flRoot JOIN "/MNL-1/MNLENT-1/SYNC-1/TIME-1"
add_object timeDN
set_operation timeDN "create"
set_version timeDN version
set_adaptation timeDN adaptation

add_param timeDN "timeZone" get_param flRoot "timeZone"

for_objects "MRBTS/BTSSCL"
	begin
		if ( param_exist $current_dist_name "glonassLeapSecondDate" ) add_param timeDN "changeDate" get_param $current_dist_name "glonassLeapSecondDate"
		if ( param_exist $current_dist_name "glonassOffsetAfter" ) add_param timeDN "offsetAfter" get_param $current_dist_name "glonassOffsetAfter"
		if ( param_exist $current_dist_name "glonassOffsetBefore" ) add_param timeDN "offsetBefore" get_param $current_dist_name "glonassOffsetBefore"
	end

#######################################################################################
#######################################################################################
#Create TEST MO and populate with parameters
if ( objects_count "MRBTS/TEST" ) != 0
begin
	define "testDN" flRoot JOIN "/MNL-1/MNLENT-1/TEST-1"
	add_object testDN
	set_operation testDN "create"
	set_version testDN version
	set_adaptation testDN adaptation
end

#######################################################################################
#######################################################################################
#Create TEST/RFREQ MO and populate with parameters
#for_objects ( "MRBTS/TEST" )
#begin
#	define "rfReqDN" flRoot JOIN "/MNL-1/MNLENT-1/TEST-1/RFREQ-" JOIN $current_TEST
#	add_object rfReqDN
#	set_operation rfReqDN "create"
#	set_version rfReqDN version
#	set_adaptation rfReqDN adaptation
	
#	if ( param_exist $current_dist_name "targetId" ) add_param rfReqDN "targetLnCelId" get_param $current_dist_name "targetId"
#end

#######################################################################################
#######################################################################################
#Create TEST/RFREQ/RFRES MO and populate with parameters
#for_objects ( "MRBTS/MNL/MNLENT/TEST/RFREQ" )
#begin
#	define "rfResDN" flRoot JOIN "/MNL-1/MNLENT-1/TEST-1/RFREQ-" JOIN $current_TEST JOIN "/RFRES-1" 
#	add_object rfResDN
#	set_operation rfResDN "create"
#	set_version rfResDN version
#	set_adaptation rfResDN adaptation
	
#	copy_object flRoot JOIN "/TEST-1/RFRST-" JOIN $current_RFREQ rfResDN
	
#end

#######################################################################################
#######################################################################################
#Create TEST/RFTHLD MO and populate with parameters

for_objects "MRBTS/TEST-1/RFTHLD"
begin
	define "rfthldDN" flRoot JOIN "/MNL-1/MNLENT-1/TEST-1/RFTHLD-" JOIN $current_RFTHLD 
#	add_object rfthldDN
#	set_operation rfthldDN "create"
#	set_version rfthldDN version
#	set_adaptation rfthldDN adaptation
	
#	copy_object flRoot JOIN "/TEST-1/RFTHLD-" JOIN $current_RFTHLD rfthldDN
	copy_object $current_dist_name rfthldDN
	set_version rfthldDN version
	set_adaptation rfthldDN adaptation
end

#######################################################################################
#######################################################################################

#######################################################################################
#######################################################################################
#Create TEST/RFTHLD MO and populate with parameters

for_objects "MRBTS/TRBLCADM"
begin
	define "trblcadmDN" flRoot JOIN "/MNL-1/MNLENT-1/TRBLCADM-1" 
	#add_object trblcadmDN

	
	copy_object flRoot JOIN "/TRBLCADM-1" trblcadmDN
	set_operation trblcadmDN "create"
	set_version trblcadmDN version
	set_adaptation trblcadmDN adaptation
	if ( param_exist trblcadmDN "remoteSyslogTransmissionStatus" ) del_param trblcadmDN "remoteSyslogTransmissionStatus"
	if ( param_exist trblcadmDN "syslogSubstringTrigger " ) del_param trblcadmDN "syslogSubstringTrigger "	
end

for_objects "MRBTS/LNBTS/LNCEL/LNCEL_FDD"
    begin
        if ( param_exist $current_dist_name "actRepeaterMode" )
            begin
                define "actRepeaterMode" get_param $current_dist_name "actRepeaterMode"
                if ( actRepeaterMode ) == "Coupled" || ( actRepeaterMode ) == "Dedicated"
                    begin
                        define "lncelDn" "MRBTS-" JOIN $current_MRBTS JOIN "/LNBTS-" JOIN $current_LNBTS JOIN "/LNCEL-" JOIN $current_LNCEL
                        if ( param_exist lncelDn "lcrId" )
                            begin
                                define "lcrId" get_param lncelDn "lcrId"
                                for_objects "MRBTS/MNL/MNLENT/CELLMAPPING/LCELL/CHANNELGROUP/CHANNEL"
                                    begin
                                        define "channelDn" $current_dist_name

                                        if ( $current_LCELL ) == lcrId
                                            begin
                                                for_objects "MRBTS/BTSSCL/LCELL"
                                                    begin
                                                        if ( $current_LCELL ) == lcrId
                                                            begin
                                                                if ( param_exist $current_dist_name "repeaterDelay" )
                                                                    begin
                                                                        define "repeaterDelay" get_param $current_dist_name "repeaterDelay"

                                                                        if ( param_exist channelDn "antlDN" )
                                                                            begin
                                                                                define "antlDN" get_param channelDn "antlDN"
                                                                                add_param antlDN "repeaterDelay" repeaterDelay
                                                                            end
                                                                    end
                                                            end
                                                    end
                                            end
                                    end
                            end
                    end
            end
    end

for_objects "MRBTS"
	set_version $current_dist_name "FL17"

for_branch "MRBTS/MNL"
	set_version $current_dist_name version

