Oemsetnt.inf Driver File Contents (pci_Win98.zip)

;***********************************************************************
;																									 
;  Module Name: OEMSETNT.INF
;  Author: Huntsville Development Center
;  $Archive: /Projects/Tigris and Derivatives Branches/Branch099/Reference Designs/Tigris/Install Files/INF/WAN/NT4/Oemsetnt.inf $
;  $Date: 12/18/01 12:34p $
;
;  Copyright © Conexant Systems Inc. 1999 - 2001.  All rights reserved
;
;  Module Description: 
;     WinNT4 installation file for the 
;     Conexant AccessRunner PCI ADSL WAN Adapter
;
;***********************************************************************

;***********************************************************************
; OPTION TYPE
; -----------
; This identifies the Option type we are dealing with.  The different
; possible types are:
;
; COMPUTER, DISPLAY, MOUSE, KEYBOARD, LAYOUT, SCSI, PRINTER, ...
;
;  Types specific to networking:
;
; NetAdapter,        a netcard / adapter combination or just a netcard
; NetDriver,         just a netcard driver
; NetTransport,      a complete NDIS-compliant TDI transport stack
; NetService,        an NT networking service
; NetWork,           a complete network ensemble.
; NetProvider        a complete network which supports NT MPR protocol
;***********************************************************************

[Identification]
	OptionType = NetAdapter

;***********************************************************************
; PlatformsSupported
; ------------------
; This identifies the platforms supported by the adapter card.
; Possible types are:
;
; ISA, EISA, MCA, and PCI
;***********************************************************************

[PlatformsSupported]
	PCI

;***********************************************************************
; OPTION LIST
; -----------
; This section lists the OEM Option key names.  These keys are locale
; independent and used to represent the option in a locale independent
; manner.
;
;***********************************************************************
[Options]
	Conexant_PCI_ADSL_WAN_Driver

;***********************************************************************
;
;***********************************************************************
;ToDo  Add new registry entry default values here
							
[FileConstants]
; LED/Relay Enable.  
; Set LED_RELAY_ENABLE = LED_HW if hardware supports LEDs.  
; Otherwise set LED_RELAY_ENABLE = RELAY_HW

	RELAY_HW		 			= 0 
	LED_HW			 			= 1 
	LED_RELAY_ENABLE 			= $(RELAY_HW)

	InfName                 	= "Conexant_PCI_ADSL_WAN_Driver.INF"
	UtilityInf              	= "UTILITY.INF"
	ParamInf                	= "NCPARAM.INF"
	subroutineinf           	= "SUBROUTN.INF"
	SoftwareType            	= "driver"
	Exit_Code               	= 0
	NetEventDLL             	= "%SystemRoot%\System32\netevent.dll"
	IoLogMsgDLL             	= "%SystemRoot%\System32\IoLogMsg.dll"
	Manufacturer            	= "Conexant"
	ProductCode   				= "4"
	HardwareCode   		 		= "1"
	ProductMajorVersion     	= "2"
	ProductMinorVersion     	= "099"
	ProductVersion          	= $(ProductCode)"."$(HardwareCode)"."$(ProductMajorVersion)"."$(ProductMinorVersion)
	
	; This description is displayed in the "Add RAS Device" dialog box as a "Ras Capable Device"
	ProductSoftwareName     	= "CnxTgN"
	ProductSoftwareImagePath 	= "\SystemRoot\System32\drivers\CnxTgN.sys"
	NetRuleSoftwareType     	= "Conexant_PCI_ADSL_WAN_DriverSys Conexant_PCI_ADSL_WAN_DriverDriver"
	NetRuleSoftwareUse      	= $(SoftwareType)
	NetRuleSoftwareBindForm 	= """Conexant_PCI_ADSL_WAN_DriverSys"" yes no container"
	NetRuleSoftwareClass    	= {"Conexant_PCI_ADSL_WAN_DriverDriver basic"}
	NetRuleSoftwareBindable 	= {"Conexant_PCI_ADSL_WAN_DriverDriver Conexant_PCI_ADSL_WAN_DriverAdapter non exclusive 100"}
	NetRuleHardwareBindForm 	= " yes yes container"
	NetRuleHardwareType 		= "Conexant_PCI_ADSL_WAN_Driver Conexant_PCI_ADSL_WAN_DriverAdapter"
	NetRuleHardwareClass 		= {"Conexant_PCI_ADSL_WAN_DriverAdapter basic"}
	DeviceMap               	= "HARDWARE\DEVICEMAP"
	TapiDevices             	= "TAPI DEVICES"
	TapiDeviceKey           	= $(ProductHardwareName)
	TapiMediaType           	= "ADSL"
	ProductKeyName          	= $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductSoftwareName)"\CurrentVersion"
	DeviceKeyName				= "Device"
	CurrentControlSet 	    	= "SYSTEM\CurrentControlSet"
	ServicesBaseName   	    	= $(CurrentControlSet)"\Services"

; Microsoft Run Key
	MicrosoftRunKey         	= $(!NTN_SoftwareBase)"\Microsoft\Windows\CurrentVersion\Run"

; TCP/IP Parameters Key
;  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
	TcpWindowSizeKey         	= $(ServicesBaseName)"\Tcpip\Parameters"
	TcpWindowSizeValue		= 40800

;Product Software Registry Key for Applications
	CompanySoftwareSubkey		= "Conexant"           ; Do not modify this string
	ProductSoftwareSubkey		= "AccessRunner ADSL"  ; Do not modify this string
	CompanySoftwareKey         	= $(!NTN_SoftwareBase)"\"$(CompanySoftwareSubkey)
	ProductSoftwareKey         	= $(!NTN_SoftwareBase)"\"$(CompanySoftwareSubkey)"\"$(ProductSoftwareSubkey)

	ProductId			= "10"               ; 0x00000010

; Product Connectoids Registry Key
	ConnectoidsSubkey		="Connectoids"
	Instance0000Subkey		="0000"
	ProductConnectoidsKey         	= $(!NTN_SoftwareBase)"\"$(CompanySoftwareSubkey)"\"$(ProductSoftwareSubkey)"\"$(ConnectoidsSubkey)
	ProductConnectoidInstance0000Key = $(ProductConnectoidsKey)"\"$(Instance0000Subkey)

; Product Connectoids RASENTRY Registry Values
	ConnectoidRasEntryOptions	= "2218"            ; Bitmask of RASEO_xxx flags in hexadecimal
	ConnectoidRasEntryNetProtocols	= "7"               ; Bitmask of RASNP_xxx flags in hexadecimal

; Product Shortcuts Registry Key
	ProductShortcutsSubkey          = "Shortcuts"
	ProductShortcutsKey            	= $(!NTN_SoftwareBase)"\"$(CompanySoftwareSubkey)"\"$(ProductSoftwareSubkey)"\"$(ProductShortcutsSubkey)

; Shortcuts
	ConnectoidShortcutIconIndex 	= "0"               ; Zero-based icon index in decimal
	ConnectoidShortcutLocations 	= "18"              ; Bitmask of shortcut locations in hexadecimal
	AutologShortcutLocations 	= "8"               ; Bitmask of shortcut locations in hexadecimal
	ControlPanelAppletShortcutLocations = "18"          ; Bitmask of shortcut locations in hexadecimal
	HelpShortcutLocations 	 	= "8"               ; Bitmask of shortcut locations in hexadecimal
	TaskBarAppShortcutLocations 	= "8"               ; Bitmask of shortcut locations in hexadecimal
	UninstallShortcutLocations 	= "8"               ; Bitmask of shortcut locations in hexadecimal

;Product Run Registry Value
	CnxDslTaskBar			= "CnxDslTb.exe"
	ADSLNet				= "dslnet.exe" ;

;Library Driver
	LibraryDriverName	  		= "CnxTgS"
								;SYSTEM\CurrentControlSet\Services\CnxTgS
	LibraryServicesKey			= $(ServicesBaseName)"\"$(LibraryDriverName)



;Arbitrator 0 Driver
	Arbitrator0DriverName		= "CnxTgR"
	Arbitrator0SubKeyName		= $(Arbitrator0DriverName)"0"
 								;SYSTEM\CurrentControlSet\Services\CnxTgR
	Arbitrator0ServicesKey	 	= $(ServicesBaseName)"\"$(Arbitrator0DriverName)
								;SYSTEM\CurrentControlSet\Services\CnxTgR\Device\CnxTgR0
	Arbitrator0ServicesSubKey	= $(Arbitrator0ServicesKey)"\"$(DeviceKeyName)"\"$(Arbitrator0SubKeyName)



;Arbitrator 1 Driver
	Arbitrator1DriverName		= "CnxTgR"
	Arbitrator1SubKeyName		= $(Arbitrator1DriverName)"1"
 								;SYSTEM\CurrentControlSet\Services\CnxTgR
	Arbitrator1ServicesKey	 	= $(Arbitrator0ServicesKey)
								;SYSTEM\CurrentControlSet\Services\CnxTgR\Device\CnxTgR0
	Arbitrator1ServicesSubKey	= $(Arbitrator1ServicesKey)"\"$(DeviceKeyName)"\"$(Arbitrator1SubKeyName)



;Pump Controller Driver
	PumpControllerDriverName  	= "CnxTgP"
	PumpControllerSubKeyName 	= $(PumpControllerDriverName)"0"
 								;SYSTEM\CurrentControlSet\Services\CnxTgP
	PumpControllerServicesKey	= $(ServicesBaseName)"\"$(PumpControllerDriverName)
								;SYSTEM\CurrentControlSet\Services\CnxTgP\Device\CnxTgP0
	PumpControllerServicesSubKey= $(PumpControllerServicesKey)"\"$(DeviceKeyName)"\"$(PumpControllerSubKeyName)



;ADSL Driver

	AdslDriverName	  	  		= "CnxTgN"




; Services Defaults
; Library
	ProductTgSGroup				= "PNP_TDI"  
	ProductTgSStart				=  1			;SERVICE_SYSTEM_START
	ProductTgSTag				=  1	
	ProductTgSType				=  1			;SERVICE_KERNEL_DRIVER
	ProductTgSErrorControl		=  1

; Arbitrator
	ProductTgRGroup				= "NDIS"  
	ProductTgRStart				=  1			;SERVICE_SYSTEM_START
	ProductTgRTag				=  1	
	ProductTgRType				=  1			;SERVICE_KERNEL_DRIVER
	ProductTgRErrorControl		=  1

; Pump Controller
	ProductTgPGroup				= "NDIS"  
	ProductTgPStart				=  1			;SERVICE_SYSTEM_START
	ProductTgPTag				=  2	
	ProductTgPType				=  1			;SERVICE_KERNEL_DRIVER
	ProductTgPErrorControl		=  1


; Services SubKey Defaults
	ProductFirmWare				= "CnxTgF.hex"
	ProductFunctionIdentifier0	= 0
	ProductFunctionIdentifier1	= 1
	ProductFunctionIdentifier2	= 2
	ProductFunctionIdentifier3	= 3
	ProductGpioDirectionMask	= 383			;0x17F	 
	ProductGpioEdgeMask			= 0				
	ProductGpioADSLFunctionMask	= 383			;0x17F	
	ProductGpioARMFunctionMask	= 256			;0x100	
	ProductHwDebugFlag			= 0
	ProductHwIdArb0				= 351344144 	;0x14f11610
	ProductHwIdArb1				= 351344145		;0x14f11611
	ProductNumberOfChildren		= 0
	ProductPhysicalDriverType	= 1


; Network Device Parameter Defaults

	ProductAddressList				= "1 0 0*1 1 0*"
	ProductAdvancedKeys				= 85
	ProductAdvancedMode				= 0
	ProductAdvancedTabs				= 32768
	ProductAdvancedTabsA				= 11856
	ProductAdvancedTabsC				= 33088
	ProductAdvancedTabsE				= 999423
	ProductAdvancedTabsP				= 540497
	ProductAdslHeadEnd				= 0
	ProductAdslHeadEndEnvironment	= 0
	ProductAdslTelcoId				= 0
	ProductAdslOption1				= 0
	ProductAdslOption2				= 0
	ProductAdslOption3				= 10
	ProductAdslOption4				= 12
	ProductAdslOption5				= 2
	ProductAdslOption6				= 3
	ProductAdslOption7				= 0
	ProductAdslOption8				= 0
	ProductAdslOption9				= 0
	ProductAdslOption10				= 0
	ProductAdslOption11				= 0
	ProductAdslOption12				= 0
	ProductAdslOption13				= 0
	ProductAdslOption14				= 0
	ProductAdslOption15				= 0
	ProductAdslOption16				= 0
	ProductAdslOption17				= 0
	ProductAdslOption18				= 0
	ProductAdslOption19				= 0
	ProductAdslOption20				= 0
	ProductAutoSenseInitialTimeout 			= 0
	ProductAdslCRCIncrementFar 			= 0
	ProductAdslCRCRetrainThresholdFar 		= 0
	ProductAdslCRCThresholdFar 			= 0
	ProductAdslCRCThresholdNear  			= 14
	ProductAdslSESRetrainThresholdNear 		= 5
	ProductAdslSNRMarRetrainThresholdNear 		= 0
	ProductAdslSNRMarThresholdNear 			= 0
	ProductASHandshakeMode			= 0
	ProductASWiringMode 			= 0
	ProductASWiringSelection		= 1
	ProductASWiringComboGPIO		= {03,03,03,03,05,05,05,05,00,00,00,00,00,00,00,00}
	ProductASWiringRelayDelay		= 200
	ProductASWiringRelayEnergized	= 1
	ProductASWiringOrder			= {01,02,00,00}
	ProductDebugFlag				= 0
	ProductDisplayExtPhysLayerStats		= 0
	ProductEncapsulationMode		= 0
	ProductHardwareName     		= "CnxTgN"
	ProductHwIdPumpController		= 351344144		;0x14f11610
	ProductHwIdDSL					= 351344145		;0x14f11611
	ProductMaxTransmit				= 50
	ProductOAMFaultManagementControl	= "3"
	ProductPciVendorId				= "14F1"
	ProductPciDeviceId				= "1611"
	ProductPersistentAutodialEnableOnInstall = "0"
	ProductRxMaxFrameSize			= 1500
	ProductRxBufAllocLimit			= 50
	ProductSoundKeyName				= "ConexantADSL"        ; Do not modify this string
	ProductTxMaxFrameSize			= 1500
	ProductVcDisconnectDelay		= 30000
	ProductVcList					= "0 64 0 8 2B 0 "
	ProductVendorDescription		= "Conexant Systems, Inc."
	ProductVendorId        			= "ROK"
	ProductWanAddress				= "ROKID0"
	DiskName						= "Conexant AccessRunner Installation Disk"

; LED Option Parameter Defaults
	ProductLedASWiringNumCombos		= 0
	ProductLedLinkStatusEnable		= 1
	ProductLedDataTrafficEnable		= 1

; Relay Option Parameter Defaults
	ProductRelayASWiringNumCombos 	= 2
	ProductRelayLinkStatusEnable	= 0
	ProductRelayDataTrafficEnable  	= 0

; ADSL Parameter Defaults


;***********************************************************************
;
;***********************************************************************
[GeneralConstants]
	from                    	= ""
	to                      	= ""
	ExitCodeOk              	= 0
	ExitCodeCancel          	= 1
	ExitCodeFatal           	= 2
	KeyNull                 	= ""
	MAXIMUM_ALLOWED         	= 33554432
	RegistryErrorIndex      	= NO_ERROR
	KeyProduct              	= ""
	KeyParameters           	= ""
	LibraryKeyParameters		= ""
	Arb0KeyParameters 			= ""
	Arb1KeyParameters 			= ""
	PumpControllerKeyParameters = ""
	ServicesKeyParameters 		= ""
	TRUE                    	= 1
	FALSE                   	= 0
	NoTitle                 	= 0
	ExitState               	= "Active"
	OldVersionExisted       	= $(FALSE)
	DriverPath              	= $(!STF_NTPATH)\drivers

;***********************************************************************
;
;***********************************************************************
[Date]
	Now                     = {} ? $(!LIBHANDLE) GetSystemDate

;***********************************************************************
;
;***********************************************************************
[Identify]
	Read-Syms Identification
	Set Status      = STATUS_SUCCESSFUL
	Set Identifier  = $(OptionType)
	Set Media       = #("Source Media Descriptions", 1, 1)
	Return $(Status) $(Identifier) $(Media)

;***********************************************************************
;
;***********************************************************************
[ReturnOptions]
	Set Status          = STATUS_FAILED
	Set OptionList      = {}
	Set OptionTextList  = {}
	Set LanguageList    = ^(LanguagesSupported, 1)

	IfContains(i) $($0) in $(LanguageList)
		IfStr(i) $($1) == ""
			GoTo SetOptions
		EndIf
		Set PlatformList = ^(PlatformsSupported, 1)
		IfContains(i) $($1) in $(PlatformList)
			GoTo SetOptions
		Else
			Set Status = STATUS_NOTSUPPORTED
			GoTo ExitReturnOptions
		EndIf
	Else
		Set Status = STATUS_NOLANGUAGE
		GoTo ExitReturnOptions
	EndIf

SetOptions = +
	Set OptionList     = ^(Options, 1)
	Set OptionTextList = ^(OptionsText$($0), 1)
	Set Status         = STATUS_SUCCESSFUL

ExitReturnOptions = +
	Return $(Status) $(OptionList) $(OptionTextList)

;***********************************************************************
;
;***********************************************************************
[InstallOption]
	Set Status   = STATUS_FAILED

; Setup passes the following parameters to the [InstallOption] section:

	Set Option   			= $($1)		; OptionID to install
	Set SourceDirectory   	= $($2)		; SourceDirectory	Set RasDir   = $($2)
	Set RasDir   			= $($2)		; AddCopy  (YES | NO)
	Set AddCopy  			= $($3)		; DoCopy  (YES | NO)
	Set DoCopy   			= $($4)		; DoConfig  (YES | NO)
	Set DoConfig 			= $($5)
	Set LanguageList 		= ^(LanguagesSupported, 1)

	IfContains(i) $($0) NOT-IN $(LanguageList)
		Return STATUS_NOLANGUAGE
	EndIf

	Set OldDebugControl = $(!DebugOutputControl)
	Set !DebugOutputControl = 1

	Set-Subst LF = "\n"

	Read-Syms GeneralConstants
	Read-Syms FileConstants
	Read-Syms DialogConstants$(!STF_LANGUAGE)

	IfStr(i) $(!NTN_Origination) == "NCPA"
		Set Continue = $(OK)
	EndIf

	Read-Syms FileConstants$(!STF_LANGUAGE)
	Detect Date
	Set-Title  $(FunctionTitle)

	Set to   = Begin
	Set from = Begin
	Set CommonStatus = STATUS_SUCCESSFUL

	EndWait

;***********************************************************************
;
;***********************************************************************
Begin = +
	Debug-Output $(InfName)": 173 Begin."
	Set ActivateDetection = FALSE
	IfStr(i) $(!NTN_InstallMode) == deinstall
		Set StartLabel = RemoveAdapter
	Else-IfStr(i) $(!NTN_InstallMode) == Update
		Set StartLabel = UpgradeSoftware
	Else-IfStr(i) $(!NTN_InstallMode) == bind
		Set StartLabel = BindingAdapter
	Else-IfStr(i) $(!NTN_InstallMode) == configure
		Set StartLabel = ConfigureAdapter
	Set ActivateDetection = TRUE
	Set CommonStatus = STATUS_REBOOT
	IfStr(i) $(ProductKeyName) == $(!NTN_RegBase)
		Shell $(UtilityInf),RegistryErrorString,CANNOT_CONFIGURE_SOFTWARE
		IfInt $($ShellCode) != $(!SHELL_CODE_OK)
			Debug-Output $(InfName)": ShellCode error: cannot get an error string."
			GoTo ShellCodeError
		EndIf
		Set Error = $($R0)
		Set from = end
		Set to = end
		GoTo NonFatalInfo
	EndIf
	Else
		Set StartLabel = InstallAdapter
		Set ActivateDetection = TRUE
		Set OEM_ABANDON_OPTIONS = {}
		Set OEM_ABANDON_SOFTWARE = FALSE
		Set OEM_ABANDON_ON = TRUE
	EndIf

	Set DetectedCard = FALSE
	IfStr(i) $(ActivateDetection) != TRUE
		Debug-Output $(InfName)": Setting DetectedCard to FALSE ."
		GoTo $(StartLabel)
	EndIf
	
	IfStr(i) $(!STF_NCDETECT) == YES
		IfStr(i) $(!STF_NCOPTION) == $(Option)
			Set DetectedCard = TRUE
			Debug-Output $(InfName)": Setting DetectedCard to TRUE"
		EndIf
	EndIf

; (THD) 12.9.
;	Shell "" DebugConfiguration "After parameter querying"
	Set from = FatalError
	Set to = FatalError
	GoTo $(StartLabel)

;***********************************************************************
;
;***********************************************************************
InstallAdapter = +
	Debug-Output $(InfName)": 228 InstallAdapter"
	OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
	IfStr $(KeyProduct) != $(KeyNull)
		CloseRegKey $(KeyProduct)
		IfStr(i) !(NTN_RegBase) == $(ProductKeyName)
			Debug-Output $(InfName)": 233 ProductKeyName exists"
			Shell $(UtilityInf), VerExistedDlg, $(ProductSoftwareTitle),+
				$(ProductVersion)
			IfInt $($ShellCode) != $(!SHELL_CODE_OK)
				Debug-Output $(InfName)": ShellCode error: cannot get an error string."
				GoTo ShellCodeError
			EndIf
			GoTo end
		Else
			Shell $(UtilityInf), CardExistedDlg
			IfInt $($ShellCode) != $(!SHELL_CODE_OK)
				Debug-Output $(InfName)": ShellCode error: cannot get an error string."
				GoTo ShellCodeError
			EndIf
			IfStr(i) $($R1) != "OK"
				Set CommonStatus = STATUS_USERCANCEL
				GoTo end
			EndIf
			Set OldVersionExisted = $(TRUE)
		EndIf
	EndIf

	Set CurrParamSettings = {}
	Debug-Output $(InfName)": 256 Set Current Parameter Settings."
	GoTo AdapterSetup
	EndIf

	StartWait
	Shell $(ParamInf) Param_QueryCard $(!STF_NCDETCARD)
	EndWait

	IfStr(i) $($R0) != STATUS_SUCCESSFUL
		GoTo AdapterSetup
	EndIf

	Set DetectedParams = $($R1)
	Debug-Output $(InfName)": Calling Param_SetDefaults to merge detected params"
	Shell $(ParamInf) Param_SetDefaults $(DetectedParams)
	GoTo AdapterSetup

;***********************************************************************
;
;***********************************************************************
ConfigureAdapter = +
	Debug-Output $(InfName)": 277 Configure Adapter."
	IfStr $(KeyProduct) == $(KeyNull)
		OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) KeyProduct
		IfStr $(KeyProduct) == $(KeyNull)
			Set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
			Debug-Output $(InfName)": Cannot find component product key"
			GoTo FatalRegistry
		EndIf
	EndIf

	Debug-Output $(InfName)": Shelling to FindService"
	Shell $(UtilityInf) FindService, $(KeyProduct)
	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output $(InfName)": FindService shell failure"
		GoTo ShellCodeError
	EndIf
	IfStr(i) $($R0) != NO_ERROR
		Debug-Output $(InfName)": FindService Shell error: "$($R0)
		GoTo FatalRegistry
	EndIf

	Set KeyParameters = $($R2)
	CloseRegKey $($R1)
	IfStr $(KeyParameters) == $(KeyNull)
		Set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
		Debug-Output $(InfName)": Cannot find component service"
		GoTo FatalRegistry
	EndIf

	Set OldVersionExisted = $(TRUE)
	Set ValueName = ""
	Set ValueData = ""
	Set ValueStr  = ""
	Set ValueList = {}
	EnumRegValue $(KeyParameters) ValueList
	ForListDo $(ValueList)
		Set ValueItem = $($)
		Set ValueName = *($(ValueItem),1)
		Set ValueData = *($(ValueItem),4)
		Debug-Output $(InfName)": "$(ValueName)"="$(ValueData)
; (THD)
		IfStr(i) $(ValueName) == "BusNumber"
			Debug-Output $(InfName)": 319 Set BusNumber."
			set BusNumber = $(ValueData)
		Else-IfStr(i) $(ValueName) == "BusType"
			Debug-Output $(InfName)": 322 Set BusType."
			set BusType = $(ValueData)
		Else-IfStr(i) $(ValueName) == "AddressList"
			Debug-Output $(InfName)": 335 Set TapiAddressList."
			set TapiAddressList = $(ValueData)
		EndIf
	EndForListDo
	Shell $(ParamInf) Param_SaveValues
	Set CurrParamSettings = $($R0)

;***********************************************************************
;
;***********************************************************************
AdapterSetup = +
; (THD) 12.9.
;	Shell "" DebugConfiguration "before displaying dialog"
	Set from = AdapterOptions

	Shell $(ParamInf) Param_ParameterConfidence
	IfStr(i) $($R0) != STATUS_SUCCESSFUL
		Debug-Output $(InfName)": parameter confidence too low to bypass configuration"
		GoTo AdapterOptions
	EndIf
	IfStr(i) $(DetectedCard) == TRUE
		IfStr(i) $(!STF_INSTALL_MODE) != CUSTOM
			GoTo AdapterVerify
		EndIf
	EndIf

;***********************************************************************
;
;***********************************************************************
AdapterOptions = +

	;
	; 5 -> PCI Bus
	;
	Set BusType = 5

	;
	; VendorID is decimal for 0x14F1 (PCI Vendor ID)
	; DeviceID is decimal for 0x1610 (PCI Device ID)
	;

	Set VendorID = 5361
	Set DeviceID = 5648

	Shell $(UtilityInf), GetPCIInformation, $(VendorID) $(DeviceID)
	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Set ShellErrorLoc = S08
		GoTo ShellCodeError
	EndIf

	 ; Check to see if found any cards
	IfStr(i) $($R0) == {}
		set Error = $(NoHardwareFound)
		set CommonStatus = USER_CANCEL
		set from = end
		Goto NonFatalInfo
	EndIf

	ForListDo $(AdapterList)
		Set BusNumber = *($($),1)
		Set DeviceNumber = *($($),2)
		Set FunctionNumber = *($($),3)
	EndForListDo



;***********************************************************************
;
;***********************************************************************
AdapterVerify = +
; (THD) 12.9.
;	Shell "" DebugConfiguration "after running dialog"
	Debug-Output $(InfName)": 377 Adapter Verify."
	IfStr(i) $(DetectedCard) != TRUE
		Shell $(ParamInf) Param_SaveValues
		Set NewParamSettings = $($R0)
		IfStr(i) $(CurrParamSettings) == {}
			Set DiffParamSettings = $(NewParamSettings)
		Else
			Shell $(ParamInf) Param_DiffValues $(CurrParamSettings)
			Set DiffParamSettings = $($R0)
	EndIf
	Debug-Output $(InfName)": Calling Param_VerifyResources"
	Shell $(ParamInf) Param_VerifyResources $(DiffParamSettings)
	IfStr(i) $($R0) == STATUS_SUCCESSFUL
		Debug-Output $(InfName)": Param_VerifyResources succeeded"
		GoTo SkipOptions
	EndIf
	Else
		Set CardVerifyIndex = $(!STF_NCDETCARD)
		Debug-Output $(InfName)": Calling Param_VerifyCard"
		Shell $(ParamInf) Param_VerifyCard $(!STF_NCDETCARD)
		IfStr(i) $($R0) == STATUS_SUCCESSFUL
			Debug-Output $(InfName)": Param_VerifyCard succeeded"
			GoTo SkipOptions
		EndIf
	EndIf

	Set from = AdapterOptions
	Set to = SkipOptions
	Shell $(UtilityInf),RegistryErrorString,VERIFY_WARNING
	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output $(InfName)": ShellCode error: cannot get an error string."
		GoTo ShellCodeError
	EndIf
	Set Error = $($R0)
	GoTo WarningMsg

;***********************************************************************
;
;***********************************************************************
SkipOptions =+
	Debug-Output $(InfName)": 417 Skip Options "
	IfInt $(OldVersionExisted) == $(TRUE)
		IfStr(i) $(!NTN_InstallMode) == configure
			Debug-Output $(InfName)": 420 NTN_InstallMode == configure "
			GoTo WriteParameters
		EndIf
	EndIf
	StartWait
	IfInt $(OldVersionExisted) == $(FALSE)
		IfStr(i) $(!NTN_InstallMode) == "install"
			IfStr(i) $(DoCopy) == "YES"
				Debug-Output $(InfName)": 428 DoCopy == YES "
				Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SourceDirectory) YES
				IfInt $($ShellCode) != $(!SHELL_CODE_OK)
					GoTo ShellCodeError
				Else-IfStr(i) $($R0) == STATUS_FAILED
					Shell $(UtilityInf) RegistryErrorString "ASK_SOURCE_FAIL"
				IfInt $($ShellCode) != $(!SHELL_CODE_OK)
					GoTo ShellCodeError
				EndIf
				Set Error = $($R0)
				GoTo FatalError
			Else-IfStr(i) $($R0) == STATUS_USERCANCEL
				GoTo SuccessfulOption
		EndIf
		Set SourceDirectory = $($R1)
	EndIf

	Install "Install-Option"
	IfStr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
		Shell $(UtilityInf) RegistryErrorString "UNABLE_COPY_FILE"
		IfInt $($ShellCode) != $(!SHELL_CODE_OK)
			GoTo ShellCodeError
		EndIf
		Set Error = $($R0)
		GoTo FatalError
	EndIf
	EndIf

;***********************************************************************
;
; Create Product Software Keys and SubKeys for Applications
;
;***********************************************************************
Debug-Output $(InfName)": Create Product Software Keys"

OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_SoftwareBase) $(!REG_KEY_CREATE_SUB_KEY) hSoftwareKey

IfStr $(hSoftwareKey) != ""
	Debug-Output $(InfName)": Add Company Software subkey."
EndIf

;	Create Company Registry Subkey

	CreateRegKey $(hSoftwareKey) 		{$(CompanySoftwareSubkey), 	  	0, GenericClass} "" $(!REG_KEY_CREATE_SUB_KEY) "" hCompanyKey
	Debug-Output $(InfName)": "$(!NTN_SoftwareBase)"\"$(CompanySoftwareSubkey)
	Debug-Output $(InfName)$(hCompanyKey)

	IfInt $(RegLastError) != 0
		Debug-Output $(InfName)": RegLastError = "$(RegLastError)

;		Open the Company subkey

		OpenRegKey $(!REG_H_LOCAL) "" $(CompanySoftwareKey) $(!REG_KEY_CREATE_SUB_KEY) hCompanyKey
		Debug-Output $(InfName)": Open Company Software subkey: "$(CompanySoftwareKey)
		Debug-Output $(InfName)$(hCompanyKey)

		IfInt $(RegLastError) != 0
			Debug-Output $(InfName)": RegLastError = "$(RegLastError)
		EndIf
	EndIf
  
IfStr $(hCompanyKey) != ""
	Debug-Output $(InfName)": Add Company Product subkey."
EndIf

;	Create Product Registry Subkey

	CreateRegKey $(hCompanyKey) 	{$(ProductSoftwareSubkey),		0, GenericClass} "" $(!REG_KEY_CREATE_SUB_KEY) "" hProductKey
	Debug-Output $(InfName)": "$(!NTN_SoftwareBase)"\"$(CompanySoftwareSubkey)"\"$(ProductSoftwareSubkey)
	Debug-Output $(InfName)$(hProductKey)

	IfInt $(RegLastError) != 0
		Debug-Output $(InfName)": RegLastError = "$(RegLastError)
	EndIf


IfStr $(hProductKey) != ""
	Debug-Output $(InfName)": Company Product subkey created"
EndIf


;	Create Connectoids Registry Subkey

	CreateRegKey $(hProductKey) 	{$(ConnectoidsSubkey),		0, GenericClass} "" $(!REG_KEY_CREATE_SUB_KEY) "" hConnectoidsKey
	Debug-Output $(InfName)": "$(!NTN_SoftwareBase)"\"$(CompanySoftwareSubkey)"\"$(ProductSoftwareSubkey)"\"$(ConnectoidsSubkey)
	Debug-Output $(InfName)$(hConnectoidsKey)

	IfInt $(RegLastError) != 0
		Debug-Output $(InfName)": RegLastError = "$(RegLastError)
	EndIf

IfStr $(hConnectoidsKey) != ""
	Debug-Output $(InfName)": Connectoids subkey created"
EndIf


;	Create Connectoid Instance 0000 Subkey

	CreateRegKey $(hConnectoidsKey) 	{$(Instance0000Subkey),		0, GenericClass} "" $(!REG_KEY_CREATE_SUB_KEY) "" hConnectoidInstanceKey
	Debug-Output $(InfName)": "$(ProductConnectoidsKey)"\"$(Instance0000Subkey)
	Debug-Output $(InfName)$(hConnectoidInstanceKey)

	IfInt $(RegLastError) != 0
		Debug-Output $(InfName)": RegLastError = "$(RegLastError)
	EndIf

IfStr $(hConnectoidInstanceKey) != ""
	Debug-Output $(InfName)": Connectoid Instance 0000 subkey created"
EndIf


;	Create Product Shortcuts Registry Subkey

	CreateRegKey $(hProductKey) 	{$(ProductShortcutsSubkey),		0, GenericClass} "" $(!REG_KEY_CREATE_SUB_KEY) "" hProductShortcutsKey
	Debug-Output $(InfName)": "$(!NTN_SoftwareBase)"\"$(CompanySoftwareSubkey)"\"$(ProductSoftwareSubkey)"\"$(ProductShortcutsSubkey)
	Debug-Output $(InfName)$(hProductShortcutsKey)

	IfInt $(RegLastError) != 0
		Debug-Output $(InfName)": RegLastError = "$(RegLastError)
	EndIf

IfStr $(hProductShortcutsKey) != ""
	Debug-Output $(InfName)": Product Shortcuts subkey created"
EndIf

CloseRegKey $(hProductsShortcutsKey)
CloseRegKey $(hConnectoidInstanceKey)
CloseRegKey $(hConnectoidsKey)
CloseRegKey $(hProductKey)
CloseRegKey $(hCompanyKey)
CloseRegKey $(hSoftwareKey)

OpenRegKey $(!REG_H_LOCAL) "" $(ProductSoftwareKey)	 $(!REG_KEY_SET_VALUE) hProductKey

;ToDo  Add Product Software Key registry values here
;*********************************************************************************************************
;		REGISTRY VALUE NAME				DATA TYPE			DEFAULT VALUE
;*********************************************************************************************************
	Set NewProductSoftwareValueList = {+
		{CompanyName,			$(NoTitle),		$(!REG_VT_SZ),		$(CompanyName)			},+
		{DeviceName,			$(NoTitle),		$(!REG_VT_SZ),		$(ProductHardwareTitle)		},+
		{ProductId,			$(NoTitle),		$(!REG_VT_SZ),		$(ProductId)			},+
		{ProductName,			$(NoTitle),		$(!REG_VT_SZ),		$(ProductName)			},+
		{ShortProductName,		$(NoTitle),		$(!REG_VT_SZ),		$(ShortProductName)		},+
		{TaskbarAppTitle,		$(NoTitle),		$(!REG_VT_SZ),		$(TaskbarAppTitle)		}+
		{CustomerVersion,		$(NoTitle),		$(!REG_VT_SZ),		$(CustomerVersion)		}+
 	}

	Debug-Output $(InfName)": Add Registry Values to Product Software Key."
	Set ProductSoftwareKeyParameters = $(hProductKey)

	Shell  $(UtilityInf), AddValueList, $(ProductSoftwareKeyParameters), $(NewProductSoftwareValueList)

	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output $(InfName)": ShellCode error."
		GoTo ShellCodeError
	EndIf
	Set RegistryErrorIndex = $($R0)
	IfStr(i) $(RegistryErrorIndex) != NO_ERROR
		Debug-Output $(InfName)": Registry error: Add Product Software Key registry value list"
		Shell $(subroutineinf), SetupMessage $(!STF_LANGUAGE) WARNING +
			"Could not Add Product Software Key registry values"
		GoTo FatalRegistry
	EndIf

	CloseRegKey $(hProductKey)

;***********************************************************************
;
; Create Connectoid Instance 0000 registry values
;
;***********************************************************************

Debug-Output $(InfName)": Create Connectoid Instance 0000 registry values"

OpenRegKey $(!REG_H_LOCAL) "" $(ProductConnectoidInstance0000Key)	 $(!REG_KEY_SET_VALUE) hConnectoidInstanceKey

;ToDo  Add Connectoid Instance 0000 Key registry values here
;*********************************************************************************************************
;		REGISTRY VALUE NAME				DATA TYPE			DEFAULT VALUE
;*********************************************************************************************************
	Set NewConnectoidInstanceValueList = {+
		{ConnectoidName,		$(NoTitle),		$(!REG_VT_SZ),		$(ConnectoidName)			},+
		{ShortcutDescription,		$(NoTitle),		$(!REG_VT_SZ),		$(ConnectoidShortcutDescription)			},+
		{ShortcutFolderName,		$(NoTitle),		$(!REG_VT_SZ),		$(ShortcutFolderName)			},+
		{ShortcutIconFilePath,		$(NoTitle),		$(!REG_VT_SZ),		$(ConnectoidShortcutIconFile)			},+
		{ShortcutIconIndex,		$(NoTitle),		$(!REG_VT_SZ),		$(ConnectoidShortcutIconIndex)			},+
		{ShortcutLocations,		$(NoTitle),		$(!REG_VT_SZ),		$(ConnectoidShortcutLocations)			},+
		{RasEntryOptions,		$(NoTitle),		$(!REG_VT_SZ),		$(ConnectoidRasEntryOptions)			},+
		{RasEntryNetProtocols,		$(NoTitle),		$(!REG_VT_SZ),		$(ConnectoidRasEntryNetProtocols)		}+
 	}

	Debug-Output $(InfName)": Add Registry Values to Connectoid Instance 0000 Key."
	Set ConnectoidInstanceKeyParameters = $(hConnectoidInstanceKey)

	Shell  $(UtilityInf), AddValueList, $(ConnectoidInstanceKeyParameters), $(NewConnectoidInstanceValueList)

	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output $(InfName)": ShellCode error."
		GoTo ShellCodeError
	EndIf
	Set RegistryErrorIndex = $($R0)
	IfStr(i) $(RegistryErrorIndex) != NO_ERROR
		Debug-Output $(InfName)": Registry error: Add Connectoid Instance Key registry value list"
		Shell $(subroutineinf), SetupMessage $(!STF_LANGUAGE) WARNING +
			"Could not Add Connectoid Instance Key registry values"
		GoTo FatalRegistry
	EndIf

	CloseRegKey $(hConnectoidInstanceKey)


;***********************************************************************
;
; Create Product Shortcuts registry values
;
;***********************************************************************

Debug-Output $(InfName)": Create Product Shortcuts registry values"

OpenRegKey $(!REG_H_LOCAL) "" $(ProductShortcutsKey)	 $(!REG_KEY_SET_VALUE) hProductShortcutsKey

;ToDo  Add Product Shortcuts Key registry values here
;*********************************************************************************************************
;		REGISTRY VALUE NAME					DATA TYPE	DEFAULT VALUE
;*********************************************************************************************************
	Set NewProductShortcutsValueList = {+
		{ShortcutFolderName,			$(NoTitle),	$(!REG_VT_SZ),	$(ShortcutFolderName)				},+
		{AutologShortcutDescription,		$(NoTitle),	$(!REG_VT_SZ),	$(AutologShortcutDescription)			},+
		{AutologShortcutLocations,		$(NoTitle),	$(!REG_VT_SZ),	$(AutologShortcutLocations)			},+
		{ControlPanelAppletShortcutDescription,	$(NoTitle),	$(!REG_VT_SZ),	$(ControlPanelAppletShortcutDescription)	},+
		{ControlPanelAppletShortcutLocations,	$(NoTitle),	$(!REG_VT_SZ),	$(ControlPanelAppletShortcutLocations)		},+
;		{HelpShortcutDescription,		$(NoTitle),	$(!REG_VT_SZ),	$(HelpShortcutDescription)			},+ ; uncomment this line if installing help
;		{HelpShortcutLocations,			$(NoTitle),	$(!REG_VT_SZ),	$(HelpShortcutLocations)			},+ ; uncomment this line if installing help
		{TaskBarAppShortcutDescription,		$(NoTitle),	$(!REG_VT_SZ),	$(TaskBarAppShortcutDescription)		},+
		{TaskBarAppShortcutLocations,		$(NoTitle),	$(!REG_VT_SZ),	$(TaskBarAppShortcutLocations)			},+
		{UninstallShortcutDescription,		$(NoTitle),	$(!REG_VT_SZ),	$(UninstallShortcutDescription)			},+
		{UninstallShortcutLocations,		$(NoTitle),	$(!REG_VT_SZ),	$(UninstallShortcutLocations)			}+
 	}

	Debug-Output $(InfName)": Add Registry Values to Product Shortcuts Key."
	Set ProductShortcutsKeyParameters = $(hProductShortcutsKey)

	Shell  $(UtilityInf), AddValueList, $(ProductShortcutsKeyParameters), $(NewProductShortcutsValueList)

	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output $(InfName)": ShellCode error."
		GoTo ShellCodeError
	EndIf
	Set RegistryErrorIndex = $($R0)
	IfStr(i) $(RegistryErrorIndex) != NO_ERROR
		Debug-Output $(InfName)": Registry error: Add Product Shortcuts Key registry value list"
		Shell $(subroutineinf), SetupMessage $(!STF_LANGUAGE) WARNING +
			"Could not Add Product Shortcuts Key registry values"
		GoTo FatalRegistry
	EndIf

	CloseRegKey $(hProductShortcutsKey)


;***********************************************************************
;
; Create Run registry entries
;
;***********************************************************************
Debug-Output $(InfName)": Create Run registry entries"

OpenRegKey $(!REG_H_LOCAL) "" $(MicrosoftRunKey) $(!REG_KEY_SET_VALUE) hRunKey

IfStr $(hRunKey) != ""
	Debug-Output $(InfName)": Add Run value"
EndIf


;ToDo  Add Run Key registry values here
;*********************************************************************************************************
;		REGISTRY VALUE NAME				DATA TYPE			DEFAULT VALUE
;*********************************************************************************************************
	Set NewRunValueList = {+
		{CnxDslTaskBar,			$(NoTitle),		$(!REG_VT_SZ),		$(CnxDslTaskBar)		}+
 	}

        Set NewRunValueList1 = {+
		{ADSLNet,			$(NoTitle),		$(!REG_VT_SZ),		$(ADSLNet)		}+
 	}

	Debug-Output $(InfName)": Add Registry Values to Microsoft Run Key."
	Set RunKeyParameters = $(hRunKey)

	Shell  $(UtilityInf), AddValueList, $(RunKeyParameters), $(NewRunValueList) 
        Shell  $(UtilityInf), AddValueList, $(RunKeyParameters), $(NewRunValueList1);

	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output $(InfName)": ShellCode error."
		GoTo ShellCodeError
	EndIf
	Set RegistryErrorIndex = $($R0)
	IfStr(i) $(RegistryErrorIndex) != NO_ERROR
		Debug-Output $(InfName)": Registry error: Add Microsoft Run Key registry value list"
		Shell $(subroutineinf), SetupMessage $(!STF_LANGUAGE) WARNING +
			"Could not Add Microsoft Run Key registry values"
		GoTo FatalRegistry
	EndIf


CloseRegKey $(hRunKey)


;***********************************************************************
;
; Create TCP/IP Parameter entries
;
;***********************************************************************
Debug-Output $(InfName)": Create TCPIP Parameter entries"

OpenRegKey $(!REG_H_LOCAL) "" $(TcpWindowSizeKey) $(!REG_KEY_SET_VALUE) hTcpKey

IfStr $(hTcpKey) != ""
	Debug-Output $(InfName)": Add TcpWindowSize value"
EndIf


;ToDo  Add TCP/IP Configuration registry values here
;*********************************************************************************************************
;		REGISTRY VALUE NAME				DATA TYPE			DEFAULT VALUE
;*********************************************************************************************************
	Set NewTCPIPValueList = {+
		{TcpWindowSize,			$(NoTitle),		$(!REG_VT_DWORD),		$(TcpWindowSizeValue)		}+
 	}

	Debug-Output $(InfName)": Add Registry Values to TCPIP Parameter Key."
	Set TcpParameters = $(hTcpKey)

	Shell  $(UtilityInf), AddValueList, $(TcpParameters), $(NewTCPIPValueList) 

	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output $(InfName)": ShellCode error."
		GoTo ShellCodeError
	EndIf
	Set RegistryErrorIndex = $($R0)
	IfStr(i) $(RegistryErrorIndex) != NO_ERROR
		Debug-Output $(InfName)": Registry error: Add TCPIP Parameter Key registry value list"
		Shell $(subroutineinf), SetupMessage $(!STF_LANGUAGE) WARNING +
			"Could not Add TCPIP Parameter Key registry values"
		GoTo FatalRegistry
	EndIf


CloseRegKey $(hTcpKey)


;***********************************************************************
;
; Create Services Keys and Sub Keys
;
;***********************************************************************
Debug-Output $(InfName)": Create Services Keys"

OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services" $(!REG_KEY_WRITE) hServicesKey
ifstr $(hServicesKey) != ""
	Debug-Output $(InfName)": Add Cnx service keys."

;
; Create Arbitrator Keys
;

;	SYSTEM\CurrentControlSet\Services\CnxTgR
	CreateRegKey $(hServicesKey) 		{$(Arbitrator0DriverName), 	  	0, GenericClass} "" $(!REG_KEY_CREATE_SUB_KEY) "" hCnxTgrDeviceKey
	Debug-Output $(InfName)": SYSTEM\CurrentControlSet\Services\CnxTgR"
	Debug-Output $(InfName)$(hCnxTgrDeviceKey)

;	SYSTEM\CurrentControlSet\Services\CnxTgR\Device

	CreateRegKey $(hCnxTgrDeviceKey) 	{$(DeviceKeyName), 	  			0, GenericClass} "" $(!REG_KEY_CREATE_SUB_KEY) "" hCnxTgrServicesKey
	Debug-Output $(InfName)": SYSTEM\CurrentControlSet\Services\CnxTgR\Device"
	Debug-Output $(InfName)$(hCnxTgrServicesKey)

;	SYSTEM\CurrentControlSet\Services\CnxTgR\Device\CnxTgR0
	CreateRegKey $(hCnxTgrServicesKey) 	{$(Arbitrator0SubKeyName),   	0, GenericClass} "" $(!REG_KEY_CREATE_SUB_KEY) "" hCnxTgr0ServicesSubKey
	Debug-Output $(InfName)": SYSTEM\CurrentControlSet\Services\CnxTgR\Device\CnxTgR0"
	Debug-Output $(InfName)$(hCnxTgr0ServicesSubKey)

;	SYSTEM\CurrentControlSet\Services\CnxTgR\Device\CnxTgR1
	CreateRegKey $(hCnxTgrServicesKey) 	{$(Arbitrator1SubKeyName),   	0, GenericClass} "" $(!REG_KEY_CREATE_SUB_KEY) "" hCnxTgr1ServicesSubKey

;
; Create Library Keys
;


;	SYSTEM\CurrentControlSet\Services\CnxTgS
	CreateRegKey $(hServicesKey) 		{$(LibraryDriverName),    	  	0, GenericClass} "" $(!REG_KEY_CREATE_SUB_KEY) "" hCnxTgsServicesKey


;
; Create Pump Controller Keys
;


;	SYSTEM\CurrentControlSet\Services\CnxTgP
	CreateRegKey $(hServicesKey) 		{$(PumpControllerDriverName), 	0, GenericClass} "" $(!REG_KEY_CREATE_SUB_KEY) "" hCnxTgpDeviceKey

;	SYSTEM\CurrentControlSet\Services\CnxTgS\Device
	CreateRegKey $(hCnxTgpDeviceKey) 	{$(DeviceKeyName), 	  			0, GenericClass} "" $(!REG_KEY_CREATE_SUB_KEY) "" hCnxTgpServicesKey

;	SYSTEM\CurrentControlSet\Services\CnxTgR\Device\CnxTgP0
	CreateRegKey $(hCnxTgpServicesKey) 	{$(PumpControllerSubKeyName),	0, GenericClass} "" $(!REG_KEY_CREATE_SUB_KEY) "" hCnxTgpServicesSubKey

endif

CloseRegKey $(hCnxTgsServicesKey)

CloseRegKey $(hCnxTgr0ServicesSubKey)
CloseRegKey $(hCnxTgr1ServicesSubKey)
CloseRegKey $(hCnxTgrDeviceKey)
CloseRegKey $(hCnxTgrServicesKey)

CloseRegKey $(hCnxTgpServicesSubKey)
CloseRegKey $(hCnxTgpServicesKey)
CloseRegKey $(hCnxTgpDeviceKey)
CloseRegKey $(hServicesKey)


;Library Driver
OpenRegKey $(!REG_H_LOCAL) 	  	"" $(LibraryServicesKey)   			$(!REG_KEY_SET_VALUE) hCnxTgsServicesKey

;Arbitrator 0 Driver
OpenRegKey $(!REG_H_LOCAL) 	  	"" $(Arbitrator0ServicesKey) 		$(!REG_KEY_SET_VALUE) hCnxTgrServicesKey
OpenRegKey $(!REG_H_LOCAL)   	"" $(Arbitrator0ServicesSubKey) 	$(!REG_KEY_SET_VALUE) hCnxTgr0ServicesSubKey

;Arbitrator 1 Driver
OpenRegKey $(!REG_H_LOCAL)   	"" $(Arbitrator1ServicesSubKey) 	$(!REG_KEY_SET_VALUE) hCnxTgr1ServicesSubKey

;Pump Controller Driver
OpenRegKey $(!REG_H_LOCAL) 	 	"" $(PumpControllerServicesKey)		$(!REG_KEY_SET_VALUE) hCnxTgpServicesKey
OpenRegKey $(!REG_H_LOCAL)		"" $(PumpControllerServicesSubKey) 	$(!REG_KEY_SET_VALUE) hCnxTgpServicesSubKey


;***********************************************************************
;
;ToDo  Add services registry entries here
;
;***********************************************************************



;ToDo  Add CnxTgR service registry entries here
;*********************************************************************************************************
;		REGISTRY VALUE NAME				DATA TYPE			DEFAULT VALUE
;*********************************************************************************************************
	Set NewCnxTgRValueList = {+
		{Group,				$(NoTitle),		$(!REG_VT_SZ),		$(ProductTgRGroup)			},+
		{Start,				$(NoTitle),		$(!REG_VT_DWORD),	$(ProductTgRStart)			},+
		{Tag,				$(NoTitle),		$(!REG_VT_DWORD),	$(ProductTgRTag)			},+
		{Type,				$(NoTitle),		$(!REG_VT_DWORD),	$(ProductTgRType)			},+
 		{ErrorControl,		$(NoTitle),		$(!REG_VT_DWORD),	$(ProductTgRErrorControl)	}+
 	}

	Debug-Output $(InfName)": Add CnxTgR service."
	Set ServicesKeyParameters = $(hCnxTgrServicesKey)

	Shell  $(UtilityInf), AddValueList, $(ServicesKeyParameters), $(NewCnxTgRValueList)

	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output $(InfName)": ShellCode error."
		GoTo ShellCodeError
	EndIf
	Set RegistryErrorIndex = $($R0)
	IfStr(i) $(RegistryErrorIndex) != NO_ERROR
		Debug-Outpuut $(InfName)": Registry error: Add CnxTgR service list"
		Debug-Output $(InfName)$(hCnxTgrServicesKey)
		Shell $(subroutineinf), SetupMessage $(!STF_LANGUAGE) WARNING +
			"Could not Add CnxTgR service registry entries"
		GoTo FatalRegistry
	EndIf




;ToDo  Add CnxTgP service registry entries here
;*********************************************************************************************************
;		REGISTRY VALUE NAME				DATA TYPE			DEFAULT VALUE
;*********************************************************************************************************
	Set NewCnxTgPValueList = {+
		{Group,				$(NoTitle),		$(!REG_VT_SZ),		$(ProductTgPGroup)			},+
		{Start,				$(NoTitle),		$(!REG_VT_DWORD),	$(ProductTgPStart)			},+
		{Tag,				$(NoTitle),		$(!REG_VT_DWORD),	$(ProductTgPTag)			},+
		{Type,				$(NoTitle),		$(!REG_VT_DWORD),	$(ProductTgPType)			},+
		{ErrorControl,		$(NoTitle),		$(!REG_VT_DWORD),	$(ProductTgPErrorControl)	}+
	}

	Debug-Output $(InfName)": Add CnxTgP service."
	Set ServicesKeyParameters = $(hCnxTgpServicesKey)

	Shell  $(UtilityInf), AddValueList, $(ServicesKeyParameters), $(NewCnxTgPValueList)

	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output $(InfName)": ShellCode error."
		GoTo ShellCodeError
	EndIf
	Set RegistryErrorIndex = $($R0)
	IfStr(i) $(RegistryErrorIndex) != NO_ERROR
		Debug-Output $(InfName)": Registry error: Add CnxTgP service list"
		Shell $(subroutineinf), SetupMessage $(!STF_LANGUAGE) WARNING +
			"Could not Add CnxTgP service registry entries"
		GoTo FatalRegistry
	EndIf


;ToDo  Add CnxTgS service registry entries here
;*********************************************************************************************************
;		REGISTRY VALUE NAME				DATA TYPE			DEFAULT VALUE
;*********************************************************************************************************
	Set NewCnxTgSValueList = {+
		{Group,				$(NoTitle),		$(!REG_VT_SZ),		$(ProductTgSGroup)		},+
		{Start,				$(NoTitle),		$(!REG_VT_DWORD),	$(ProductTgSStart)		},+
		{Tag,				$(NoTitle),		$(!REG_VT_DWORD),	$(ProductTgSTag)		},+
		{Type,				$(NoTitle),		$(!REG_VT_DWORD),	$(ProductTgSType)	 	},+
		{ErrorControl,		$(NoTitle),		$(!REG_VT_DWORD),	$(ProductTgSErrorControl)}+
	}

	Debug-Output $(InfName)": Add CnxTgS service."
	Set ServicesKeyParameters = $(hCnxTgsServicesKey)

	Shell  $(UtilityInf), AddValueList, $(ServicesKeyParameters), $(NewCnxTgSValueList)

	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output $(InfName)": ShellCode error."
		GoTo ShellCodeError
	EndIf
	Set RegistryErrorIndex = $($R0)
	IfStr(i) $(RegistryErrorIndex) != NO_ERROR
		Debug-Output $(InfName)$(ServicesKeyParameters)
		Debug-Output "RegLastError "$(RegLastError)
		Debug-Output $(InfName)": Registry error: Add CnxTgS service list"
		Shell $(subroutineinf), SetupMessage $(!STF_LANGUAGE) WARNING +
			"Could not Add CnxTgS service registry entries"
		GoTo FatalRegistry
	EndIf




;***********************************************************************
;
;ToDo  Add Services Subkey registry entries here
;
;***********************************************************************



;ToDo  Add CnxTgR0 Subkey registry entries here
;*********************************************************************************************************
;		REGISTRY VALUE NAME								DATA TYPE			DEFAULT VALUE
;*********************************************************************************************************
	Set NewArb0ValueList = {+
		{FirmWare,						$(NoTitle),		$(!REG_VT_SZ),		$(ProductFirmWare)				},+
		{FunctionIdentifier,			$(NoTitle),		$(!REG_VT_DWORD),	$(ProductFunctionIdentifier0)	},+
		{GpioDirectionMask,				$(NoTitle),		$(!REG_VT_DWORD),	$(ProductGpioDirectionMask)	  	},+
		{GpioEdgeMask,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductGpioEdgeMask)			},+
		{GpioADSLFunctionMask,	  		$(NoTitle),		$(!REG_VT_DWORD),	$(ProductGpioADSLFunctionMask) 	},+
		{GpioARMFunctionMask,	   		$(NoTitle),		$(!REG_VT_DWORD),	$(ProductGpioARMFunctionMask)  	},+
		{HwDebugFlag,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductHwDebugFlag)			},+
		{HwId,							$(NoTitle),		$(!REG_VT_DWORD),	$(ProductHwIdArb0)				},+
		{NumberOfChildren, 				$(NoTitle),		$(!REG_VT_DWORD),	$(ProductNumberOfChildren)		},+
		{PhysicalDriverType,			$(NoTitle),		$(!REG_VT_DWORD),	$(ProductPhysicalDriverType)	}+
 	}

	Set Arb0KeyParameters = $(hCnxTgr0ServicesSubKey)

	Shell  $(UtilityInf), AddValueList, $(Arb0KeyParameters), $(NewArb0ValueList)

	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output $(InfName)": ShellCode error."
		GoTo ShellCodeError
	EndIf

	Set RegistryErrorIndex = $($R0)
	IfStr(i) $(RegistryErrorIndex) != NO_ERROR
		Debug-Output $(InfName)": Registry error: Add value list"
		Shell $(subroutineinf), SetupMessage $(!STF_LANGUAGE) WARNING +
			"Could not Add Arbitrator 0 registry entries"
		GoTo FatalRegistry
	EndIf







;ToDo  Add CnxTgR1 Subkey registry entries here
;*********************************************************************************************************
;		REGISTRY VALUE NAME								DATA TYPE			DEFAULT VALUE
;*********************************************************************************************************
	Set NewArb1ValueList = {+
		{FunctionIdentifier,			$(NoTitle),		$(!REG_VT_DWORD),	$(ProductFunctionIdentifier1)	},+
		{HwDebugFlag,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductHwDebugFlag)			},+
		{HwId,							$(NoTitle),		$(!REG_VT_DWORD),	$(ProductHwIdArb1)				},+
		{NumberOfChildren, 				$(NoTitle),		$(!REG_VT_DWORD),	$(ProductNumberOfChildren)		},+
		{PhysicalDriverType,			$(NoTitle),		$(!REG_VT_DWORD),	$(ProductPhysicalDriverType)	}+
 	}

	Set Arb1KeyParameters = $(hCnxTgr1ServicesSubKey)

	Shell  $(UtilityInf), AddValueList, $(Arb1KeyParameters), $(NewArb1ValueList)

	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output $(InfName)": ShellCode error."
		GoTo ShellCodeError
	EndIf

	Set RegistryErrorIndex = $($R0)
	IfStr(i) $(RegistryErrorIndex) != NO_ERROR
		Debug-Output $(InfName)": Registry error: Add value list"
		Debug-Output $(InfName)$(hCnxTgr1ServicesSubKey)
		Shell $(subroutineinf), SetupMessage $(!STF_LANGUAGE) WARNING +
			"Could not Add Arbitrator 1 registry entries"
		GoTo FatalRegistry
	EndIf



;ToDo  Add CnxTgP0 Subkey registry entries here
;*********************************************************************************************************
;		REGISTRY VALUE NAME								DATA TYPE			DEFAULT VALUE
;*********************************************************************************************************
	Set NewPumpControllerValueList = {+
		{AdslHeadEnd,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslHeadEnd)			},+
		{AdslHeadEndEnvironment,		$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslHeadEndEnvironment)},+
		{AdslTelcoId,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslTelcoId)},+		
		{AdslOption1,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption1)},+		
		{AdslOption2,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption2)},+		
		{AdslOption3,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption3)},+		
		{AdslOption4,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption4)},+		
		{AdslOption5,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption5)},+		
		{AdslOption6,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption6)},+		
		{AdslOption7,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption7)},+		
		{AdslOption8,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption8)},+		
		{AdslOption9,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption9)},+		
		{AdslOption10,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption10)},+		
		{AdslOption11,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption11)},+		
		{AdslOption12,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption12)},+		
		{AdslOption13,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption13)},+		
		{AdslOption14,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption14)},+		
		{AdslOption15,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption15)},+		
		{AdslOption16,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption16)},+		
		{AdslOption17,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption17)},+		
		{AdslOption18,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption18)},+		
		{AdslOption19,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption19)},+		
		{AdslOption20,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption20)},+		
		{AutoSenseInitialTimeout,			$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAutoSenseInitialTimeout)},+		
		{AdslCRCIncrementFar,				$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslCRCIncrementFar)},+		
		{AdslCRCRetrainThresholdFar,			$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslCRCRetrainThresholdFar)},+		
		{AdslCRCThresholdFar,				$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslCRCThresholdFar)},+		
		{AdslCRCThresholdNear,				$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslCRCThresholdNear)},+		
		{AdslSESRetrainThresholdNear,			$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslSESRetrainThresholdNear)},+		
		{AdslSNRMarRetrainThresholdNear,		$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslSNRMarRetrainThresholdNear)},+		
		{AdslSNRMarThresholdNear,			$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslSNRMarThresholdNear)},+		
		{AutoSenseHandshakeMode,		$(NoTitle),		$(!REG_VT_DWORD),	$(ProductASHandshakeMode)		},+
		{AutoSenseWiringMode,			$(NoTitle),		$(!REG_VT_DWORD),	$(ProductASWiringMode)			},+
		{AutoSenseWiringSelection,		$(NoTitle),		$(!REG_VT_DWORD),	$(ProductASWiringSelection)		},+
		{AutoSenseWiringComboGPIO,		$(NoTitle),		$(!REG_VT_BIN),		$(ProductASWiringComboGPIO)		},+
		{AutoSenseWiringRelayDelay,		$(NoTitle),		$(!REG_VT_DWORD),	$(ProductASWiringRelayDelay)	},+
		{AutoSenseWiringRelayEnergized,	$(NoTitle),		$(!REG_VT_DWORD),	$(ProductASWiringRelayEnergized)},+
		{AutoSenseWiringOrder,			$(NoTitle),		$(!REG_VT_BIN),		$(ProductASWiringOrder)			},+
		{FunctionIdentifier,			$(NoTitle),		$(!REG_VT_DWORD),	$(ProductFunctionIdentifier3)	},+
		{HwDebugFlag,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductHwDebugFlag)			},+
		{PhysicalDriverType,			$(NoTitle),		$(!REG_VT_DWORD),	$(ProductPhysicalDriverType)	}+
 	}

	Set PumpControllerKeyParameters = $(hCnxTgpServicesSubKey)

	Shell  $(UtilityInf), AddValueList, $(PumpControllerKeyParameters), $(NewPumpControllerValueList)

	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output $(InfName)": ShellCode error."
		GoTo ShellCodeError
	EndIf
	Set RegistryErrorIndex = $($R0)
	IfStr(i) $(RegistryErrorIndex) != NO_ERROR
		Debug-Output $(InfName)": Registry error: Add value list"
		Shell $(subroutineinf), SetupMessage $(!STF_LANGUAGE) WARNING +
			"Could not Add Data Pump Controller registry entries"
		GoTo FatalRegistry
	EndIf
	

	IfInt $(LED_RELAY_ENABLE) == $(LED_HW)
		; LED Option Parameters
		Set LedRelayValueList = {+
			{AutoSenseWiringNumCombos,		$(NoTitle),		$(!REG_VT_DWORD),	$(ProductLedASWiringNumCombos)	},+
			{LinkStatusLedEnable,			$(NoTitle),		$(!REG_VT_DWORD),	$(ProductLedLinkStatusEnable)	},+
			{DataTrafficLedEnable,			$(NoTitle),		$(!REG_VT_DWORD),	$(ProductLedDataTrafficEnable)	}+
	 	}
	Else
		; Relay Option Parameters
		Set LedRelayValueList = {+
			{AutoSenseWiringNumCombos,		$(NoTitle),		$(!REG_VT_DWORD),	$(ProductRelayASWiringNumCombos)},+
			{LinkStatusLedEnable,			$(NoTitle),		$(!REG_VT_DWORD),	$(ProductRelayLinkStatusEnable)	},+
			{DataTrafficLedEnable,			$(NoTitle),		$(!REG_VT_DWORD),	$(ProductRelayDataTrafficEnable)}+
	 	}
	EndIf


	Set PumpControllerKeyParameters = $(hCnxTgpServicesSubKey)
	Shell  $(UtilityInf), AddValueList, $(PumpControllerKeyParameters), $(LedRelayValueList)

	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output $(InfName)": ShellCode error."
		GoTo ShellCodeError
	EndIf
	Set RegistryErrorIndex = $($R0)
	IfStr(i) $(RegistryErrorIndex) != NO_ERROR
		Debug-Output $(InfName)": Registry error: Add value list"
		Shell $(subroutineinf), SetupMessage $(!STF_LANGUAGE) WARNING +
			"Could not Add LED/Relay registry entries"
		GoTo FatalRegistry
	EndIf
	
	CloseRegKey $(hCnxTgsServicesKey)

	CloseRegKey $(hCnxTgr0ServicesSubKey)
	CloseRegKey $(hCnxTgr1ServicesSubKey)
	CloseRegKey $(hCnxTgrServicesKey)

	CloseRegKey $(hCnxTgpServicesSubKey)
	CloseRegKey $(hCnxTgpServicesKey)






; Add CnxTgN Software Component
	Debug-Output $(InfName)": AddSoftwareComponent CnxTgN."

	Shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), +
		$(ProductSoftwareName), +
		$(ProductSoftwareName), +
		$(ProductSoftwareTitle), $(STF_CONTEXTINFNAME), +
		$(ProductSoftwareImagePath), "kernelautostart", "NDIS", {}, "",+
		$(NetEventDLL)
	Set OEM_ABANDON_SOFTWARE = TRUE
	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output $(InfName)": ShellCode error"
		GoTo ShellCodeError
	EndIf
	Set RegistryErrorIndex = $($R0)
	Set KeyProduct      = $($R1)
	Set SoftNetRulesKey = $($R2)
	CloseRegKey $($R3)
	CloseRegKey $($R4)
	CloseRegKey $($R5)

	IfStr(i) $(RegistryErrorIndex) != NO_ERROR
		EndWait
		Debug-Output $(InfName)": Registry error: add software components"
		CloseRegKey $(KeyProduct)
		CloseRegKey $(SoftNetRulesKey)
		GoTo FatalRegistry
	EndIf

	Debug-Output $(InfName)": 483 Set NewValueList"
	Set NewValueList = {{SoftwareType,$(NoTitle),$(!REG_VT_SZ),$(SoftwareType)},+
			   {MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMajorVersion)},+
			   {MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMinorVersion)},+
			   {Title,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareTitle)},+
			   {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareDescription)},+
			   {ServiceName,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareName)},+
			   {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
	Shell  $(UtilityInf), AddValueList, $(KeyProduct), $(NewValueList)
	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output $(InfName)": ShellCode error."
		GoTo ShellCodeError
	EndIf
	Set RegistryErrorIndex = $($R0)
	IfStr(i) $(RegistryErrorIndex) != NO_ERROR
		EndWait
		Debug-Output $(InfName)": Registry error: add value list."
		CloseRegKey $(KeyProduct)
		CloseRegKey $(SoftNetRulesKey)
		GoTo FatalRegistry
	EndIf

	Debug-Output $(InfName)": 505 Set NewValueList"
	Set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareType)},+
			    {use,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareUse)}, +
			    {bindform,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareBindForm)}, +
			    {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareClass)}, +
			    {bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareBindable)}, +
			    {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}
	Shell  $(UtilityInf), AddValueList, $(SoftNetRulesKey), $(NewValueList)
	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output $(InfName)": ShellCode error."
		GoTo ShellCodeError
	EndIf
	Set RegistryErrorIndex = $($R0)
	CloseRegKey $(KeyProduct)
	CloseRegKey $(SoftNetRulesKey)
	IfStr(i) $(RegistryErrorIndex) != NO_ERROR
		EndWait
		Debug-Output $(InfName)": Registry error: add value list."
		GoTo FatalRegistry
	EndIf
	EndIf

	Debug-Output $(InfName)": 527 AddHardwareComponent"
	Debug-Output $(InfName)$(ProductKeyName)
	Shell $(UtilityInf), AddHardwareComponent, $(ProductHardwareName),$(STF_CONTEXTINFNAME),$(ProductKeyName)
	IfInt $($R4) != -1
		Debug-Output $(InfName)": 984 Set OEM_ABANDON_OPTIONS"
		Set OEM_ABANDON_OPTIONS = >($(OEM_ABANDON_OPTIONS), $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion\NetworkCards\"$($R4))
	EndIf
	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output $(InfName)": Cannot add hardware component"
		GoTo ShellCodeError
	EndIf
	Set RegistryErrorIndex = $($R0)
	IfStr(i) $(RegistryErrorIndex) != NO_ERROR
		EndWait
		Debug-Output $(InfName)": Registry error: add hardware component"
		CloseRegKey $($R1)
		CloseRegKey $($R2)
		CloseRegKey $($R3)
		GoTo FatalRegistry
	EndIf

	Debug-Output $(InfName)": 546 Set NewValueList"
	Set KeyParameters = $($R3)
	Set KeyAdapterRules = $($R2)
	Set AdapterNumber = $($R4)
	Set NewValueList = {{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(Manufacturer)},+
		       {Title,$(NoTitle),$(!REG_VT_SZ),"["$($R4)"] "$(ProductHardwareTitle)},+
		       {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareDescription)},+
		       {ProductName,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)},+
		       {ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+
		       {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
	Shell  $(UtilityInf), AddValueList, $($R1), $(NewValueList)
	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output $(InfName)": ShellCode error"
		GoTo ShellCodeError
	EndIf
	CloseRegKey $($R1)

	Debug-Output $(InfName)": 563 Add Value List"
	Set TempProdName = """"$(ProductHardwareName)$(AdapterNumber)""""
	Set TempBindForm = $(TempProdName)$(NetRuleHardwareBindForm)
	Set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleHardwareType)},+
			{bindform,$(NoTitle),$(!REG_VT_SZ),$(TempBindForm)}, +
			{class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleHardwareClass)}, +
			{InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}
	Shell  $(UtilityInf), AddValueList, $(KeyAdapterRules), $(NewValueList)
	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output $(InfName)": ShellCode error."
		GoTo ShellCodeError
	EndIf
	Set RegistryErrorIndex = $($R0)
	IfStr(i) $(RegistryErrorIndex) != NO_ERROR
		EndWait
		Debug-Output $(InfName)": Resgitry error: add value list."
		CloseRegKey $(KeyParameters)
		CloseRegKey $(KeyAdapterRules)
		GoTo FatalRegistry
	EndIf
	CloseRegKey $(KeyAdapterRules)


;*************************************************************************
;
;*************************************************************************
WriteParameters = +
;(THD)
	Debug-Output $(InfName)": 592 Write Parameters"
	IfStr $(AdapterNumber) != ""

  ;		Use the following for 1 TAPI line

		Set TapiAddressList = {$(AdapterNumber)" 0 0"} 

		Set TapiCnxtAddressList = $(AdapterNumber)" 0 0"

	EndIf

;ToDo  Add ADSL registry entries here
;*********************************************************************************************************
;		REGISTRY VALUE NAME								DATA TYPE			DEFAULT VALUE
;*********************************************************************************************************
	Set NewValueList = {+
		{AddressList,					$(NoTitle),		$(!REG_VT_SZ),		$(TapiCnxtAddressList) 			},+
		{AdslHeadEnd,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslHeadEnd)			},+
		{AdslHeadEndEnvironment,		$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslHeadEndEnvironment)},+
		{AdslTelcoId,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslTelcoId)			},+
		{AdslOption1,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption1)},+		
		{AdslOption2,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption2)},+		
		{AdslOption3,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption3)},+		
		{AdslOption4,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption4)},+		
		{AdslOption5,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption5)},+		
		{AdslOption6,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption6)},+		
		{AdslOption7,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption7)},+		
		{AdslOption8,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption8)},+		
		{AdslOption9,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption9)},+		
		{AdslOption10,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption10)},+		
		{AdslOption11,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption11)},+		
		{AdslOption12,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption12)},+		
		{AdslOption13,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption13)},+		
		{AdslOption14,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption14)},+		
		{AdslOption15,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption15)},+		
		{AdslOption16,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption16)},+		
		{AdslOption17,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption17)},+		
		{AdslOption18,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption18)},+		
		{AdslOption19,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption19)},+		
		{AdslOption20,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdslOption20)},+		
		{AdvancedKeys,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdvancedKeys)			},+
		{AdvancedMode,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdvancedMode)			},+
		{AdvancedTabs,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdvancedTabs)			},+
		{AdvancedTabsA,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdvancedTabsA)			},+
		{AdvancedTabsC,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdvancedTabsC)			},+
		{AdvancedTabsE,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdvancedTabsE)			},+
		{AdvancedTabsP,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductAdvancedTabsP)			},+
		{AutoSenseHandshakeMode,		$(NoTitle),		$(!REG_VT_DWORD),	$(ProductASHandshakeMode)		},+
		{AutoSenseWiringMode,			$(NoTitle),		$(!REG_VT_DWORD),	$(ProductASWiringMode)			},+
		{AutoSenseWiringSelection,		$(NoTitle),		$(!REG_VT_DWORD),	$(ProductASWiringSelection)		},+
		{AutoSenseWiringComboGPIO,		$(NoTitle),		$(!REG_VT_BIN),		$(ProductASWiringComboGPIO)		},+
		{AutoSenseWiringRelayDelay,		$(NoTitle),		$(!REG_VT_DWORD),	$(ProductASWiringRelayDelay)	},+
		{AutoSenseWiringRelayEnergized,	$(NoTitle),		$(!REG_VT_DWORD),	$(ProductASWiringRelayEnergized)},+
		{AutoSenseWiringOrder,			$(NoTitle),		$(!REG_VT_DWORD),	$(ProductASWiringOrder)			},+
		{BoardName,						$(NoTitle),		$(!REG_VT_SZ),		$(ProductHardwareTitle)			},+
		{DebugFlag,						$(NoTitle),		$(!REG_VT_DWORD),	$(ProductDebugFlag)				},+
		{DeviceName,					$(NoTitle),		$(!REG_VT_SZ),		$(ProductHardwareTitle)			},+
		{DisplayExtPhysLayerStats, 		$(NoTitle),		$(!REG_VT_DWORD),	$(ProductDisplayExtPhysLayerStats) 	},+
		{DriverDesc,					$(NoTitle),		$(!REG_VT_SZ),		$(ProductHardwareTitle)			},+
		{HwId,							$(NoTitle),		$(!REG_VT_DWORD),	$(ProductHwIdDSL)  				},+
		{MaxTransmit,					$(NoTitle),		$(!REG_VT_DWORD),	$(ProductMaxTransmit)			},+
		{OAMFaultManagementControl,			$(NoTitle),		$(!REG_VT_SZ),		$(ProductOAMFaultManagementControl)	},+
		{PciVendorId,					$(NoTitle),		$(!REG_VT_SZ),		$(ProductPciVendorId)			},+
		{PciDeviceId,					$(NoTitle),		$(!REG_VT_SZ),		$(ProductPciDeviceId)			},+
		{PersistentAutodialEnableOnInstall,	$(NoTitle),		$(!REG_VT_SZ),		$(ProductPersistentAutodialEnableOnInstall)	},+
		{RFCEncapsulationMode,			$(NoTitle),		$(!REG_VT_DWORD),	$(ProductEncapsulationMode)		},+
		{RxMaxFrameSize,				$(NoTitle),		$(!REG_VT_DWORD),	$(ProductRxMaxFrameSize)		},+
		{RxBufAllocLimit,				$(NoTitle),		$(!REG_VT_DWORD),	$(ProductRxBufAllocLimit)		},+
		{SoundKeyName,					$(NoTitle),		$(!REG_VT_SZ),		$(ProductSoundKeyName)			},+
		{TxMaxFrameSize,				$(NoTite),		$(!REG_VT_DWORD),	$(ProductTxMaxFrameSize)		},+
		{VcDisconnectDelay, 			$(NoTitle),		$(!REG_VT_DWORD),	$(ProductVcDisconnectDelay) 	},+
		{VcList,		 				$(NoTitle),		$(!REG_VT_SZ),		$(ProductVcList)		  		},+
		{VendorDescription,				$(NoTitle),		$(!REG_VT_SZ),		$(ProductVendorDescription)		},+
		{VendorId,						$(NoTitle),		$(!REG_VT_SZ),		$(ProductVendorId)				},+
		{VendorNearId,					$(NoTitle),		$(!REG_VT_SZ),		$(ProductNearVendorId) 			},+
		{WanAddress,					$(NoTitle),		$(!REG_VT_SZ),		$(ProductWanAddress)			}+
 	}



	Shell  $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList)
	Debug-Output $(InfName)" AddValueList"
	Debug-Output $(InfName)$(KeyParameters)
	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		CloseRegKey $(KeyParameters)
		Debug-Output $(InfName)": ShellCode error."
		GoTo ShellCodeError
	EndIf
	Set RegistryErrorIndex = $($R0)
	IfStr(i) $(RegistryErrorIndex) != NO_ERROR
		CloseRegKey $(KeyParameters)
		Debug-Output $(InfName)": Registry error: Add value list"
		GoTo FatalRegistry
	EndIf


	

	IfInt $(LED_RELAY_ENABLE) == $(LED_HW)
		; LED Option Parameters
		Set LedRelayValueList = {+
			{AutoSenseWiringNumCombos,		$(NoTitle),		$(!REG_VT_DWORD),	$(ProductLedASWiringNumCombos)	},+
			{LinkStatusLedEnable,			$(NoTitle),		$(!REG_VT_DWORD),	$(ProductLedLinkStatusEnable)	},+
			{DataTrafficLedEnable,			$(NoTitle),		$(!REG_VT_DWORD),	$(ProductLedDataTrafficEnable)	}+
	 	}
	Else
		; Relay Option Parameters
		Set LedRelayValueList = {+
			{AutoSenseWiringNumCombos,		$(NoTitle),		$(!REG_VT_DWORD),	$(ProductRelayASWiringNumCombos)},+
			{LinkStatusLedEnable,			$(NoTitle),		$(!REG_VT_DWORD),	$(ProductRelayLinkStatusEnable)	},+
			{DataTrafficLedEnable,			$(NoTitle),		$(!REG_VT_DWORD),	$(ProductRelayDataTrafficEnable)}+
	 	}
	EndIf


	Shell  $(UtilityInf), AddValueList, $(KeyParameters), $(LedRelayValueList)
	CloseRegKey $(KeyParameters)

	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output $(InfName)": ShellCode error."
		GoTo ShellCodeError
	EndIf
	Set RegistryErrorIndex = $($R0)
	IfStr(i) $(RegistryErrorIndex) != NO_ERROR
		Debug-Output $(InfName)": Registry error: Add value list"
		Shell $(subroutineinf), SetupMessage $(!STF_LANGUAGE) WARNING +
			"Could not Add LED/Relay registry entries"
		GoTo FatalRegistry
	EndIf






	;
	; Skip TAPI/RAS setup if already installed.
	;
	IfStr(i) $(!NTN_InstallMode) == configure
		Debug-Output $(InfName)": 669 NTN_InstallMode == configure"
		GoTo SuccessfulOption
	EndIf
	;
	; Create the HARDWARE\DEVICEMAP\TAPI DEVICES\Conexant PCI ADSL WAN Driver key
	;
	Debug-Output $(InfName)": 675 HARDWARE\DEVICEMAP\TAPI DEVICES\Conexant PCI ADSL WAN Driver key"
	OpenRegKey $(!REG_H_LOCAL) "" "HARDWARE\DEVICEMAP" $(MAXIMUM_ALLOWED) BaseKey
	shell "" HtCreateRegKey $(BaseKey) "TAPI DEVICES\"$(ProductHardwareName)

	IfStr(i) $($R0) != NO_ERROR
		Debug-Output $(InfName)": Error creating registry key!"
		GoTo FatalRegistry
	EndIf
	Set TapiDeviceKey = $($R1)
	Set NewValueList = {+
		       {Address,$(NoTitle),$(!REG_VT_MULTI_SZ),$(TapiAddressList)},+
		       {"Media Type",$(NoTitle),$(!REG_VT_SZ),$(TapiMediaType)}}
	Shell  $(UtilityInf), AddValueList, $(TapiDeviceKey), $(NewValueList)
	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output $(InfName)": ShellCode error."
		GoTo ShellCodeError
	EndIf
	Set RegistryErrorIndex = $($R0)
	IfStr(i) $(RegistryErrorIndex) != NO_ERROR
		Debug-Output $(InfName)": Registry error: Add value list"
		GoTo FatalRegistry
	EndIf
	CloseRegKey $(TapiDeviceKey)
	CloseRegKey $(BaseKey)
	;
	; if RAS is not installed, then shell ras setup INF file to install RAS
	; else invoke RAS to allow user to configure RAS for the Conexant PCI ADSL WAN Driver. 
	;
	Read-Syms InvokeRasDlg$(!STF_LANGUAGE)
	Shell "oemnsvra.inf" CheckRasInstalled
	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output $(InfName)": Error Shelling the RAS INF file oemnsvra.inf" 
		Shell "subroutn.inf" SetupMessage, $(!STF_LANGUAGE),  +
			"STATUS", $(InvokeRasError)
		IfInt $($ShellCode) != $(!SHELL_CODE_OK)
			GoTo ShellCodeError
		EndIf
		GoTo SuccessfulOption
	EndIf
	Set RasInstalled = $($R0)
	Debug-Output $(InfName)": Is RAS Installed? "$(RasInstalled)
	;
	; display a message to the user that RAS setup will now be invoked
	;
	IfStr(i) $(RasInstalled) == FALSE
		Shell "subroutn.inf" SetupMessage, $(!STF_LANGUAGE), "STATUS", +
			$(InvokeRasSetupMsg)
		IfInt $($ShellCode) != $(!SHELL_CODE_OK)
			GoTo SuccessfulOption
		EndIf
	Else
		Shell "subroutn.inf" SetupMessage, $(!STF_LANGUAGE), "STATUS", +
			$(InvokeRasConfigMsg)
		IfInt $($ShellCode) != $(!SHELL_CODE_OK)
			GoTo SuccessfulOption
		EndIf
	EndIf
	;
	; FIXME - RAS INF will not locate the files if it is spawned here.
	;
	EndWait
	GoTo SuccessfulOption
	
	;
	; Set the flags based on whether this is an IDW installation
	;
	IfStr(i) $(!STF_IDW) == TRUE
		Set AddCopy  = NO
		Set DoCopy   = NO
		Set DoConfig = NO
	Else
		Set AddCopy  = YES
		Set DoCopy   = YES
		Set DoConfig = YES
	EndIf
	;
	; change the global install mode flag to configure if RAS is already installed
	;
	IfStr(i) $(RasInstalled) == TRUE
		Set SaveNTN_InstallMode = $(!NTN_InstallMode)
		Set !NTN_InstallMode = configure
	EndIf
	;
	; now invoke RAS setup to do the right thing
	;
	Shell "oemnsvra.inf" InstallOption $(!STF_LANGUAGE) "RAS" $(RasDir) $(AddCopy) $(DoCopy) $(DoConfig)
	;
	; restore the global instal mode flag if it was changed
	;
	IfStr(i) $(RasInstalled) == TRUE
		Set !NTN_InstallMode = $(SaveNTN_InstallMode)
	EndIf
	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output $(InfName)": Error Shelling the RAS INF file oemnsvra.inf" 
		Shell "subroutn.inf" SetupMessage, $(!STF_LANGUAGE), "STATUS",  +
			$(InvokeRasError)
		IfInt $($ShellCode) != $(!SHELL_CODE_OK)
			GoTo ShellCodeError
		EndIf
		GoTo SuccessfulOption
	EndIf

	EndWait
	GoTo SuccessfulOption

;***********************************************************************
;
;***********************************************************************
BindingAdapter =+
	Set Error = "Binding: Sorry, not yet implemented."
	GoTo FatalError

;***********************************************************************
;
;***********************************************************************
RemoveAdapter = +
	IfStr(i) $(ProductKeyName) == $(!NTN_RegBase)
		Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
		$(ProductSoftwareName)
		IfInt $($ShellCode) != $(!SHELL_CODE_OK)
			Debug-Output $(InfName)": ShellCode error"
			GoTo ShellCodeError
		EndIf
		Set RegistryErrorIndex = $($R0)
		IfStr(i) $(RegistryErrorIndex) != NO_ERROR
			GoTo FatalRegistry
		EndIf
	Else
		Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
			$(ProductSoftwareName), $(!NTN_RegBase)
		IfInt $($ShellCode) != $(!SHELL_CODE_OK)
			Debug-Output $(InfName)": ShellCode error"
			GoTo ShellCodeError
		EndIf
		Set RegistryErrorIndex = $($R0)
		IfStr(i) $(RegistryErrorIndex) != NO_ERROR
			GoTo FatalRegistry
		EndIf
	EndIf


; RemoveService Parameters
;    SvcName = $($0)
;    UseDelSvc = $($1)


	Debug-Output $(InfName)": RemoveService LibraryDriverName"
	Shell $(UtilityInf), RemoveService, $(LibraryDriverName), "YES"

	Debug-Output $(InfName)": RemoveService Arbitrator0DriverName"
 	Shell $(UtilityInf), RemoveService, $(Arbitrator0DriverName), "YES"

	Debug-Output $(InfName)": RemoveService Arbitrator1DriverName"
	Shell $(UtilityInf), RemoveService, $(Arbitrator1DriverName), "YES"

	Debug-Output $(InfName)": RemoveService PumpControllerDriverName"
	Shell $(UtilityInf), RemoveService, $(PumpControllerDriverName), "YES"

;
; Delete the Company Product Software Key used by Applications
;

	OpenRegKey $(!REG_H_LOCAL) "" $(CompanySoftwareKey)	 $(!REG_KEY_SET_VALUE) hCompanyKey
	DeleteRegTree $(hCompanyKey) $(ProductSoftwareSubkey)
	CloseRegKey $(hCompanyKey)

;
; Delete the Run entry for the DSL Taskbar Application
;

	OpenRegKey $(!REG_H_LOCAL) "" $(MicrosoftRunKey)	 $(!REG_KEY_SET_VALUE) hRunKey
 	Ifstr(i) $(hRunKey) == $(KeyNull)
		Debug-Output $(InfName)": Cannot open Microsoft Run Key"
	Endif

	DeleteRegValue $(hRunKey) "CnxDslTaskBar"
	Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
		Debug-Output $(InfName)": Cannot delete Taskbar Application Run Value"
	Endif

	CloseRegKey $(hRunKey)

; AddFileToDeleteList
;
; WARNING!!!
; Do NOT use AddFileToDeleteList if you want to be able to reinstall without rebooting
; If you reinstall without rebooting, the files marked for deletion will still be deleted
; on the next reboot.

	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\drivers\CnxTgN.sys"
	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\drivers\CnxTgR.sys"
	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\drivers\CnxTgP.sys"
	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\drivers\CnxTgS.sys"
	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\drivers\CnxTgF.hex"

	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\CnxAdslC.cpl"
	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\CnxDslWz.dll"
	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\CnxHwIo.dll"
	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\CnxAdslL.exe"
	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\CnxDslTb.exe"
	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\CnxUnist.exe"
	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\"$(ConnectoidShortcutIconFile)
	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\logo.bmp"

	AddFiletoDeleteList $(!STF_WINDOWSPATH)"\Media\CnxDown.wav"
	AddFiletoDeleteList $(!STF_WINDOWSPATH)"\Media\CnxUp.wav"

	AddFiletoDeleteList $(!STF_WINDOWSPATH)"\Help\CnxAdslH.chm"

	GoTo end


;***********************************************************************
;
;***********************************************************************
UpgradeSoftware = +
	IfStr(i) $(ProductKeyName) == $(!NTN_RegBase)
		OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
		IfStr $(KeyProduct) != $(KeyNull)
			GetRegValue $(KeyProduct),"MajorVersion", VersionInfo
			Set Version = *($(VersionInfo), 4)
			Shell $(UtilityInf), GetInfFileNameFromRegistry, $(KeyProduct)
			IfInt $($ShellCode) != $(!SHELL_CODE_OK)
				Debug-Output $(InfName)": ShellCode error"
				GoTo ShellCodeError
			EndIf
			Set !UG_Filename = $($R0)
			IfStr(i) $(!UG_Filename) != ""
				install "Install-Update"
				IfStr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
					GoTo FatalError
				EndIf
			EndIf
			SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMajorVersion)}
			SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMinorVersion)}
			IfInt $(Version) != $(ProductVersion)
			EndIf
			CloseRegKey $(KeyProduct)
			Else
				GoTo FatalRegistry
		EndIf
	Else
		OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) +
			$(MAXIMUM_ALLOWED) NetworkCardKey
		IfStr(i) $(NetworkCardKey) != $(KeyNull)
			GetRegValue $(NetworkCardKey),"ServiceName", ServiceNameInfo
			Set ServiceName = *($(ServiceNameInfo), 4)
			OpenRegKey $(NetworkCardKey) "" "NetRules" +
				$(MAXIMUM_ALLOWED) NetRuleKey
			IfStr(i) $(NetRuleKey) != $(KeyNull)
			Else
				GoTo FatalRegistry
	 	EndIf
		CloseRegKey $(NetRules)
		CloseRegKey $(NetworkCardKey)
	Else
		GoTo FatalRegistry
	EndIf
	OpenRegKey $(!REG_H_LOCAL) "" +
		$(!NTN_ServiceBase)"\"$(ServiceName) +
		$(MAXIMUM_ALLOWED) ServiceKey
	IfStr(i) $(ServiceKey) != $(KeyNull)
		CloseRegKey $(ServiceKey)
	Else
		GoTo FatalRegistry
	EndIf
	EndIf
	GoTo end

;***********************************************************************
;
;***********************************************************************
SuccessfulOption = +
	GoTo end

;***********************************************************************
;
;***********************************************************************
Abandon = +
	ForListDo $(OEM_ABANDON_OPTIONS)
		Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
			$(ProductSoftwareName), $($)
		IfInt $($ShellCode) != $(!SHELL_CODE_OK)
			Debug-Output $(InfName)": ShellCode error"
			GoTo ShellCodeError
		EndIf
		Set RegistryErrorIndex = $($R0)
		IfStr(i) $(RegistryErrorIndex) != NO_ERROR
			GoTo FatalRegistry
		EndIf
	EndForListDo
	IfStr(i) $(OEM_ABANDON_SOFTWARE) == TRUE
		Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
			$(ProductSoftwareName), FALSE
		IfInt $($ShellCode) != $(!SHELL_CODE_OK)
			Debug-Output $(InfName)": ShellCode error"
			GoTo ShellCodeError
		EndIf
		Set RegistryErrorIndex = $($R0)
		IfStr(i) $(RegistryErrorIndex) != NO_ERROR
			GoTo FatalRegistry
		EndIf
	EndIf


; RemoveService Parameters
;    SvcName = $($0)
;    UseDelSvc = $($1)

	Debug-Output $(InfName)": RemoveService LibraryDriverName"
	Shell $(UtilityInf), RemoveService, $(LibraryDriverName), "YES"

	Debug-Output $(InfName)": RemoveService Arbitrator0DriverName"
 	Shell $(UtilityInf), RemoveService, $(Arbitrator0DriverName), "YES"

	Debug-Output $(InfName)": RemoveService Arbitrator1DriverName"
	Shell $(UtilityInf), RemoveService, $(Arbitrator1DriverName), "YES"

	Debug-Output $(InfName)": RemoveService PumpControllerDriverName"
	Shell $(UtilityInf), RemoveService, $(PumpControllerDriverName), "YES"

;
; Delete the Company Product Software Key used by Applications
;

	OpenRegKey $(!REG_H_LOCAL) "" $(CompanySoftwareKey)	 $(!REG_KEY_SET_VALUE) hCompanyKey
	DeleteRegTree $(hCompanyKey) $(ProductSoftwareSubkey)
	CloseRegKey $(hCompanyKey)

;
; Delete the Run entry for the DSL Taskbar Application
;

	OpenRegKey $(!REG_H_LOCAL) "" $(MicrosoftRunKey)	 $(!REG_KEY_SET_VALUE) hRunKey
 	Ifstr(i) $(hRunKey) == $(KeyNull)
		Debug-Output $(InfName)": Cannot open Microsoft Run Key"
	Endif

	DeleteRegValue $(hRunKey) "CnxDslTaskBar"
	Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
		Debug-Output $(InfName)": Cannot delete Taskbar Application Run Value"
	Endif

	CloseRegKey $(hRunKey)

; AddFileToDeleteList
;
; WARNING!!!
; Do NOT use AddFileToDeleteList if you want to be able to reinstall without rebooting
; If you reinstall without rebooting, the files marked for deletion will still be deleted
; on the next reboot.

	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\drivers\CnxTgN.sys"
	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\drivers\CnxTgR.sys"
	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\drivers\CnxTgP.sys"
	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\drivers\CnxTgS.sys"
	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\drivers\CnxTgF.hex"

	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\CnxAdslC.cpl"
	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\CnxDslWz.dll"
	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\CnxHwIo.dll"
	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\CnxAdslL.exe"
	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\CnxDslTb.exe"
	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\CnxUnist.exe"
	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\"$(ConnectoidShortcutIconFile)
	AddFiletoDeleteList $(!STF_WINDOWSSYSPATH)"\logo.bmp"

	AddFiletoDeleteList $(!STF_WINDOWSPATH)"\Media\CnxDown.wav"
	AddFiletoDeleteList $(!STF_WINDOWSPATH)"\Media\CnxUp.wav"

	AddFiletoDeleteList $(!STF_WINDOWSPATH)"\Help\CnxAdslH.chm"

	GoTo end

;***********************************************************************
;
;***********************************************************************
WarningMsg = +
	Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "WARNING", $(Error)
	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		GoTo ShellCodeError
	EndIf
	IfStr(i) $($R1) == "OK"
		GoTo $(to)
	Else-IfStr(i) $($R1) == "CANCEL"
		GoTo $(from)
	EndIf
	GoTo end

;***********************************************************************
;
;***********************************************************************
NonFatalInfo = +
	Set Severity = STATUS
	Set CommonStatus = STATUS_USERCANCEL
	IfStr(i) $(Error) == ""
		Set Severity = NONFATAL
		Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
		IfInt $($ShellCode) != $(!SHELL_CODE_OK)
			GoTo ShellCodeError
		EndIf
		Set Error = $($R0)
	EndIf
	Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), $(Severity), $(Error)
	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		GoTo ShellCodeError
	EndIf
	IfStr(i) $($R1) == "OK"
		GoTo $(from)
	EndIf
	GoTo end

;***********************************************************************
;
;***********************************************************************
FatalRegistry = +
	Shell $(UtilityInf) RegistryErrorString $(RegistryErrorIndex)
	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		GoTo ShellCodeError
	EndIf
	Set Error = $($R0)
	GoTo FatalError

;***********************************************************************
;
;***********************************************************************
FatalDetect = +
	Shell $(UtilityInf),RegistryErrorString,CANNOT_DETECT
	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output $(InfName)": ShellCode error: cannot get an error string."
		GoTo ShellCodeError
	EndIf
	Set Error = $($R0)
	GoTo FatalError

;***********************************************************************
;
;***********************************************************************
FatalError = +
	IfStr(i) $(Error) == ""
		Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
		IfInt $($ShellCode) != $(!SHELL_CODE_OK)
			GoTo ShellCodeError
		EndIf
		Set Error = $($R0)
	EndIf
	Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(Error)
	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		GoTo ShellCodeError
	EndIf
	GoTo SetFailed

;***********************************************************************
;
;***********************************************************************
ShellCodeError = +
	Set DlgType      = "MessageBox"
	Set STF_MB_TITLE = $(ShellCodeErrorTitle)
	Set STF_MB_TEXT  = $(ShellCodeErrorText)
	Set STF_MB_TYPE  = 1
	Set STF_MB_ICON  = 3
	Set STF_MB_DEF   = 1
	UI Start "Error Message"
	GoTo SetFailed

;***********************************************************************
;
;***********************************************************************
SetFailed = +
	Set CommonStatus = STATUS_FAILED
	IfStr(i) $(OEM_ABANDON_ON) == TRUE
		Set OEM_ABANDON_ON = FALSE
		GoTo Abandon
	EndIf
	GoTo end

;***********************************************************************
;
;***********************************************************************
end = +
	Set !DebugOutputControl = $(OldDebugControl)
	Return $(CommonStatus)

;***********************************************************************
;
;***********************************************************************
[HtCreateRegKey]
	Debug-Output $(InfName)": Entering [HtCreateRegKey]"
	Set ECR_Result          = NO_ERROR
	Set ECR_BaseKeyHandle   = $($0)
	Set ECR_NewPath         = $($1)
	Set KeyNull             = ""
	Set MAXIMUM_ALLOWED     = 33554432

	Debug-Output $(InfName)": HtCreateRegKey - ECR_BaseKeyHandle = "$(ECR_BaseKeyHandle)
	Debug-Output $(InfName)":                  ECR_NewPath       = "$(ECR_NewPath)
	Debug-Output $(InfName)":                  MAXIMUM_ALLOWED   = "$(MAXIMUM_ALLOWED)
	Debug-Output $(InfName)":                  KeyNull           = "$(KeyNull)

	OpenRegKey $(ECR_BaseKeyHandle) "" $(ECR_NewPath) $(MAXIMUM_ALLOWED) +
	       ECR_BaseKey
	Debug-Output $(InfName)": ECR_BaseKey = "$(ECR_BaseKey)
	Debug-Output $(InfName)":     OpenRegKey returned "$($R0)
	IfStr $(ECR_BaseKey) == $(KeyNull)
		Debug-Output $(InfName)": ECR_BaseKey == KeyNull"
	Else
		Debug-Output $(InfName)": ECR_BaseKey != KeyNull"
		Set ECR_KeyHandle = $(ECR_BaseKey)
		GoTo  ECR_Return
	EndIf

	Set ECR_TmpPath = ""
	Split-String $(ECR_NewPath) "\" ECR_PList
	Debug-Output $(InfName)": ECR_PList = "$(ECR_PList)
	ForListDo $(ECR_PList)
		IfStr(i) $($) != "\"
			IfInt $(#) == 1
				Set ECR_TmpPath = $($)
			Else
				Set ECR_TmpPath = $(ECR_TmpPath)"\"$($)
				EndIf
			Debug-Output $(InfName)": Determining if "$(ECR_TmpPath)" exists"
			OpenRegKey $(ECR_BaseKeyHandle) "" $(ECR_TmpPath) $(MAXIMUM_ALLOWED) ECR_BaseKey
			IfStr $(ECR_BaseKey) == $(KeyNull)
				Debug-Output $(InfName)": Creating "$(ECR_TmpPath)
				CreateRegKey $(ECR_BaseKeyHandle)  {$(ECR_TmpPath),0,GenericClass} "" $(MAXIMUM_ALLOWED) "" ECR_KeyHandle
				IfStr(i) $(ECR_KeyHandle) == $(KeyNull)
					Set ECR_Result = $($R0)
					GoTo ECR_Return
				EndIf
			EndIf
		EndIf
	EndForListDo
ECR_Return = +
	Return $(ECR_Result) $(ECR_KeyHandle)

;***********************************************************************
;
;***********************************************************************
[DebugConfiguration]
	Return

;***********************************************************************
;
;***********************************************************************
[Install-Option]
	Set STF_VITAL = ""
	IfStr(i) $(AddCopy) == "YES"
		AddSectionFilesToCopyList Files-$(Option) $(SourceDirectory) $(!STF_WINDOWSSYSPATH)\drivers
		AddSectionFilesToCopyList Files-Cpl $(SourceDirectory) $(!STF_WINDOWSSYSPATH)
		AddSectionFilesToCopyList Files-DLL $(SourceDirectory) $(!STF_WINDOWSSYSPATH)
		AddSectionFilesToCopyList Files-Exe $(SourceDirectory) $(!STF_WINDOWSSYSPATH)
		AddSectionFilesToCopyList Files-Ico $(SourceDirectory) $(!STF_WINDOWSSYSPATH)
		AddSectionFilesToCopyList Files-Bmp $(SourceDirectory) $(!STF_WINDOWSSYSPATH)
		AddSectionFilesToCopyList Files-Wav $(SourceDirectory) $(!STF_WINDOWSPATH)\Media
		AddSectionFilesToCopyList Files-Chm $(SourceDirectory) $(!STF_WINDOWSPATH)\Help
	EndIf
	IfStr(i) $(DoCopy) == "YES"
		Set !STF_NCPA_FLUSH_COPYLIST = TRUE
		CopyFilesInCopyList
	EndIf
	Exit

;***********************************************************************
;
;***********************************************************************
[Install-Update]
	Set STF_VITAL        = ""
	Set STF_OVERWRITE    = "VERIFYSOURCEOLDER"
	AddSectionFilesToCopyList Files-$(Option) $(SourceDirectory) $(!STF_WINDOWSSYSPATH)\drivers
	AddSectionFilesToCopyList Files-Inf $(SourceDirectory) $(!STF_WINDOWSSYSPATH)
	AddSectionFilesToCopyList Files-Cpl $(SourceDirectory) $(!STF_WINDOWSSYSPATH)
	AddSectionFilesToCopyList Files-DLL $(SourceDirectory) $(!STF_WINDOWSSYSPATH)
	AddSectionFilesToCopyList Files-Exe $(SourceDirectory) $(!STF_WINDOWSSYSPATH)
	AddSectionFilesToCopyList Files-Ico $(SourceDirectory) $(!STF_WINDOWSSYSPATH)
	AddSectionFilesToCopyList Files-Bmp $(SourceDirectory) $(!STF_WINDOWSSYSPATH)
	AddSectionFilesToCopyList Files-Wav $(SourceDirectory) $(!STF_WINDOWSPATH)\Media
	AddSectionFilesToCopyList Files-Chm $(SourceDirectory) $(!STF_WINDOWSPATH)\Help
	Set !STF_NCPA_FLUSH_COPYLIST = TRUE
	CopyFilesInCopyList
	Exit

;***********************************************************************
;
;***********************************************************************
[Source Media Descriptions]
	1  = $(DiskName) , TAGFILE = DISK1

;***********************************************************************
;
;***********************************************************************
[ProductType]
	STF_PRODUCT         = Winnt
	STF_PLATFORM        = I386



;ToDo	Add files to be copied here.  
;
;ARG1:  An integer ID that identifies the distribution disk on which the 
;		source file is located.
;ARG2:  Specifies the base file name and extension (must be 8.3 FAT format) 
;		of the source file 
;ARG3:	SIZE = size of file and is used to update progress indicator.

;***********************************************************************
;
;***********************************************************************
[Files-Inf]
	1, oemsetnt.inf, SIZE=72000, RENAME=$(!UG_Filename)

;***********************************************************************
;
;***********************************************************************
[Files-Conexant_PCI_ADSL_WAN_Driver]
	1, CnxTgN.sys, SIZE=128000
	1, CnxTgP.sys, SIZE=501000
	1, CnxTgR.sys, SIZE=59000
	1, CnxTgS.sys, SIZE=8000
	1, CnxTgf.hex, SIZE=42000

; WARNING!!! Be sure to update AddFiletoDeleteList entries when adding files

;***********************************************************************
;
;***********************************************************************

[Files-Cpl]
	1, CnxAdslC.CPL, SIZE=596000

; WARNING!!! Be sure to update AddFiletoDeleteList entries when adding files

;***********************************************************************
;
;***********************************************************************

[Files-Exe]
	1, CnxAdslL.exe, SIZE=180000
	1, CnxDslTb.exe, SIZE=332000
	1, CnxUnist.exe, SIZE=136000
	1, dslnet.exe, SIZE=130000 ;
	1, UnADSL.exe SIZE=108000 ;

; WARNING!!! Be sure to update AddFiletoDeleteList entries when adding files

;***********************************************************************
;
;***********************************************************************

[Files-DLL]
	1, CnxDslWz.dll, SIZE=292000
	1, CnxHwIo.dll, SIZE=112000
	1, mfc42d.dll,  SIZE=908000 ;
	1, mfco42d.dll,	SIZE=780000 ;
	1, msvcrtd.dll,	SIZE=380000 ;
	1, CnxSerom.ini, SIZE=1000 ;
	1, Cnx.ico, SIZE=1000 ;
	1, dslnet.dat, SIZE=1000 ;
	1, Wizard.ico, SIZE=1000 ;

; WARNING!!! Be sure to update AddFiletoDeleteList entries when adding files


;***********************************************************************
;
;***********************************************************************

[Files-Ico]
	1, CnxDunI.ico, SIZE=3000

; WARNING!!! Be sure to update AddFiletoDeleteList entries when adding files


;***********************************************************************
;
;***********************************************************************

[Files-Wav]
;	1, CnxDown.wav, SIZE=79000	; uncomment this line if using a custom down wave
;	1, CnxUp.wav, SIZE=79000	; uncomment this line if using a custom up wave

; WARNING!!! Be sure to update AddFiletoDeleteList entries when adding files

;***********************************************************************
;
;***********************************************************************

[Files-Chm]
;	1, CnxAdslH.chm, SIZE=201000	; uncomment this line if installing help

; WARNING!!! Be sure to update AddFiletoDeleteList entries when adding files

;***********************************************************************
;
;***********************************************************************

[Files-Bmp]
;	1, logo.bmp, SIZE=1000	        ; uncomment this line if using a custom logo

; WARNING!!! Be sure to update AddFiletoDeleteList entries when adding files

;***********************************************************************
;
;***********************************************************************

[LanguagesSupported]
	ENG

;***********************************************************************
;
;***********************************************************************
[OptionsTextENG]
;  The first argument is what will show up in the Select OEM Option dialog
;  box when installing new hardware.

	"World-Net PCI ADSL WAN"        = "I-PASS World-Net PCI ADSL WAN Adapter"

;***********************************************************************
;
;***********************************************************************
[FileConstantsENG]
	ProCaption          = "Windows NT Setup"
	ProCancel           = "Cancel"
	ProCancelMsg        = "Windows NT Networking is not correctly installed.  "+
			  "Are you sure you want to cancel copying files?"
	ProCancelCap        = "Network Setup Message"
	ProText1            = "Copying:"
	ProText2            = "To:"

	FunctionTitle                = "I-PASS World-Net PCI ADSL WAN Adapter Card Setup"
	ProductSoftwareDescription   = "I-PASS World-Net PCI ADSL WAN Adapter Driver"
	
	; This description is displayed in the "Item Notes" field in the Adapters properties dialog box
	ProductHardwareDescription   = "I-PASS World-Net PCI ADSL WAN Adapter Miniport Driver"
	ProductSoftwareTitle         = "I-PASS World-Net PCI ADSL WAN Adapter Driver"
	
	; This description is displayed in the "Network Adapters" field in the Adapters properties dialog box
	ProductHardwareTitle         = "I-PASS World-Net PCI ADSL WAN Adapter"

	ShellCodeErrorTitle                 = "Error: "$(FunctionTitle))
	ShellCodeErrorText                  = "Shell Code Error."

	NoHardwareFound         = "The PCI ADSL adapter is not present in the system"

	; Applications Display
	ShortProductName = "I-PASS World-Net ADSL"
	ProductName = "I-PASS World-Net PCI ADSL WAN Adapter"
	CompanyName = "World-Net Technology"
	TaskbarAppTitle = "Conexant AccessRunner ADSL"
	CustomerVersion = ""

	; Dial-Up Networking Connectoid
	ConnectoidName = "AccessRunner DSL"

	; Shortcuts
	ConnectoidShortcutDescription = "AccessRunner DSL"
	ShortcutFolderName = "AccessRunner DSL"
	ConnectoidShortcutIconFile = "CnxDunI.ico"
	AutologShortcutDescription= "AccessRunner DSL Autolog"
	ControlPanelAppletShortcutDescription = "AccessRunner Control Panel"
	HelpShortcutDescription = "AccessRunner Help"
	TaskBarAppShortcutDescription = "AccessRunner Task Bar"
	UninstallShortcutDescription = "Uninstall AccessRunner DSL"

;***********************************************************************
;
;***********************************************************************
[DialogConstantsENG]
	Help                = "&Help"
	Exit                = "Cancel"
	OK                  = "OK"
	HelpContext         = ""
	Continue            = "Continue"
	Cancel              = "Cancel"

;***********************************************************************
;
;***********************************************************************
[InvokeRasDlgENG]
	InvokeRasSetupMsg   = "The PCI ADSL WAN Adapter setup is complete. "+
			  "REMOTE ACCESS SERVICES (RAS) must now be installed. "+
			  "Please ADD the PCI ADSL WAN Adapter ports in RAS "+
			  "setup (in the SERVICES tab) to enable you to "+
			  "use RAS over the PCI ADSL WAN Adapter."

	InvokeRasConfigMsg  = "The PCI ADSL WAN Adapter setup is complete. "+
			  "REMOTE ACCESS SERVICES (RAS) setup must now be invoked. "+
			  "Please ADD the PCI ADSL WAN Adapter ports in RAS "+
			  "setup (in the SERVICES tab) to enable you to "+
			  "use RAS over the PCI ADSL WAN Adapter."

	InvokeRasError      = "The PCI ADSL WAN Adapter setup encountered an error "+
			  "while invoking the RAS setup INF file (OEMNSVRA.INF). "+
			  "Please make sure that the file is present in the "+
			  "System32 directory and is the proper file." 

Download Driver Pack

How To Update Drivers Manually

After your driver has been downloaded, follow these simple steps to install it.

  • Expand the archive file (if the download file is in zip or rar format).

  • If the expanded file has an .exe extension, double click it and follow the installation instructions.

  • Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.

  • Find the device and model you want to update in the device list.

  • Double-click on it to open the Properties dialog box.

  • From the Properties dialog box, select the Driver tab.

  • Click the Update Driver button, then follow the instructions.

Very important: You must reboot your system to ensure that any driver updates have taken effect.

For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.

server: web2, load: 1.86