#SUB

# Taken from gta02-core. Left in the hacks, since we may use similar components
# in the future.

-> T=unknown

R[0-9P]* {	# also handle RP...
    -> T=R
    VAL=*[0-9] -> R=${VAL}R
    VAL=$R -> R=$VAL
#    -> TOL=5%
    FN=$% -> TOL=$FN
}

RP[0-9]* {
    -> T=RA
    RP220[123] -> ARRAY=4
    # the other parameters have already been taken care of by R*
}

C[0-9]* {
    -> T=C
    VAL=*F -> C=$VAL
    VAL=(*F)/RF -> C=$VAL:1 X=RF	# *F/RF "wins" against the *F above
    FN=*V -> V=>=$FN
}

L[0-9]* {
    -> T=L
    VAL=*H -> L=$VAL
    FN=*A -> I=>=$FN
}

B[0-9]* {
    -> T=FILTER M=BEAD
    VAL=$R -> R=$VAL
    FN=*A -> I=$FN
    FN=*R -> Rdc=$FN
    FN=0.45R -> Rdc=450mR	# hack
}

D[0-9]* {
    -> T=D
    VAL=*F {	# heuristic to detect TVS
	-> M=TVS
	VAL=*F -> C=<=$VAL
	FN=(*V)ac -> Vac=$FN:1
	FN=(*V)dc -> Vdc=$FN:1

	#
	# Hack: some companies specify the class of varistors with Vdc = 9 V
	# as Vac = 6.5 V while others use Vac = 7 V. Sometimes, Vac is even
	# omitted entirely.
	#
	# Here, we work around the issue that Karmax use Vac = 6.5 V,
	# Cooper/Bussmann use Vac = 7V if at all, and out schematics specify
	# Vac = 6.5 V.
	#
	Vac=6.5V {
	    -> Vac=
	    -> Vdc=9V
	}
    }
}

VR[0-9]* -> T=D M=TVS {
	VAL=$V -> Vdc=$VAL	# neither clean nor consistent with the above
	VAL=(*V)dc -> Vdc=$VAL:1
	FN=*F -> C=<=$FN
}

X[0-9]* {
    -> T=XTAL
    VAL=*Hz -> F=$VAL
    FN=*F -> C=$FN
    FN=*ppm -> TOL=<=$FN
}


T=C C=820fF -> C=800fF	# we can't get 0.82 pF, but there's plenty of 0.8 pF :)

FP=MMCX-F-EDGE* -> VAL=MMCX-F-EDGE-SMT

FP=meander -> VAL=meander
FP=8:10-card -> VAL=8:10-card
FP=PAD_60x60 -> VAL=PAD_60x60
FP=PAD_120x60 -> VAL=PAD_120x60
FP=PAD_2mm -> VAL=PAD_2mm
