VOL-4337: Code upgrade for 3/2020 G.988 support and remaining Extended Message Set support

Change-Id: I6c5e1a167216ad9b51e9da89460e9909465ae1bc
diff --git a/generated/vdsl2lineconfigurationextensions.go b/generated/vdsl2lineconfigurationextensions.go
new file mode 100644
index 0000000..ebac5a1
--- /dev/null
+++ b/generated/vdsl2lineconfigurationextensions.go
@@ -0,0 +1,375 @@
+/*
+ * Copyright (c) 2018 - present.  Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ *              https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import "github.com/deckarep/golang-set"
+
+// Vdsl2LineConfigurationExtensionsClassID is the 16-bit ID for the OMCI
+// Managed entity VDSL2 line configuration extensions
+const Vdsl2LineConfigurationExtensionsClassID = ClassID(165) // 0x00a5
+
+var vdsl2lineconfigurationextensionsBME *ManagedEntityDefinition
+
+// Vdsl2LineConfigurationExtensions (Class ID: #165 / 0x00a5)
+//	This ME extends the xDSL line configuration MEs with attributes that were originally unique to
+//	ITU-T G.993.2 VDSL2. Due to continuing standards development, some attributes - and therefore
+//	this ME - have also become applicable to other Recommendations, specifically [ITU-T G.992.3] and
+//	[ITU-T G.992.5]. The attributes of this ME are further defined in [ITUT G.997.1]. An instance of
+//	this ME is created and deleted by the OLT.
+//
+//	Relationships
+//		An instance of this ME may be associated with zero or more instances of an xDSL UNI.////		The overall xDSL line configuration profile is modelled in several parts, all of which are
+//		associated together through a common ME ID (the client PPTP xDSL UNI part 1 has a single
+//		pointer, which refers to the entire set of line configuration parts).
+//
+//	Attributes
+//		Managed Entity Id
+//			This attribute uniquely identifies each instance of this ME. All xDSL and VDSL2 line
+//			configuration profiles and extensions that pertain to a given PPTP xDSL UNI must share a common
+//			ME ID. (R, setbycreate) (mandatory) (2-bytes)
+//
+//		Vdsl2 Profiles Enabling
+//			The PROFILES attribute contains the ITU-T G.993.2 profiles to be allowed by the xTU-C. It is
+//			coded in a bit map representation (0 if not allowed, 1 if allowed) with the following
+//			definition.
+//
+//			Bit	Meaning
+//
+//			1 (LSB)	ITU-T G.993.2 profile 8a
+//
+//			2	ITU-T G.993.2 profile 8b
+//
+//			3	ITU-T G.993.2 profile 8c
+//
+//			4	ITU-T G.993.2 profile 8d
+//
+//			5	ITU-T G.993.2 profile 12a
+//
+//			6	ITU-T G.993.2 profile 12b
+//
+//			7	ITU-T G.993.2 profile 17a
+//
+//			8	ITU-T G.993.2 profile 30a
+//
+//			(R,-W, setbycreate) (mandatory for ITU-T G.993.2) (1-byte)
+//
+//		Vdsl2 Psd Mask Class Selection Classmask
+//			NOTE 1 - A single PSD mask class may be selected per annex of [ITU-T G.993.2].
+//
+//			NOTE 2 - It is expected that only a single annex will be enabled at any given time, such that
+//			the CLASSMASK attribute, as well as the LIMITMASK and US0DISABLE attributes below, need not be
+//			vectors of values.
+//
+//			NOTE 3 - Attribute value 4 was formerly defined in [ITU-T G.997.1], and is no longer used.
+//
+//			(R,-W, setbycreate) (mandatory) (1-byte)
+//
+//			VDSL2 PSD mask class selection (CLASSMASK): To reduce the number of configuration possibilities,
+//			the limit PSD masks are grouped in the following PSD mask classes.
+//
+//			-	Class 998 Annex A of [ITU-T G.993.2]: D-32, D-48, D-64, D-128
+//
+//			-	Class 997-M1c Annex B of [ITU-T G.993.2]: 997M1c-A-7
+//
+//			-	Class 997-M1x Annex B of [ITU-T G.993.2]: 997M1x-M
+//
+//			-	Class 997-M2x Annex B of [ITU-T G.993.2]: 997E17-M2x-NUS0, 997E30M2xNUS0
+//
+//			-	Class 998-M2x Annex B of [ITU-T G.993.2]: 998M2x-A, 998M2xM, 998M2x-B, 998-M2x-NUS0,
+//			998E17-M2xNUS0, 998E17M2xNUS0-M, 998E30M2xNUS0, 998E30M2xNUS0M, 998E17-M2x-A
+//
+//			-	Class 998ADE-M2x Annex B of [ITU-T G.993.2]: 998-M2x-A, 998M2x-M, 998-M2x-B, 998-M2x-NUS0,
+//			998ADE17-M2x-A, 998ADE17M2xB, 998ADE17-M2x-M, 998ADE17M2xNUS0-M, 998ADE30M2xNUS0-A,
+//			998ADE30M2x-NUS0-M, HPEADE1230, HPEADE1730
+//
+//			-	Class 998-B Annex C: POTS-138b, POTS-276b (clause C.2.1.1 of [ITUT-G.993.2]), TCMISDN (clause
+//			C.2.1.2 of [ITU-T G.993.2])
+//
+//			-	Class 998-CO Annex C of [ITU-T G.993.2]: POTS138co, POTS276co (clause C.2.1.1 of [ITU-T
+//			G.993.2])
+//
+//			-	Class HPE-M1 Annex B of [ITU-T G.993.2]: HPE17M1-NUS0, HPE30M1NUS0, HPE1230-M1-NUS0,
+//			HPE1730-M1-NUS0
+//
+//			Each class is designed such that the PSD levels of each limit PSD mask of a specific class are
+//			equal in their respective passbands above 552 kHz.
+//
+//			The CLASSMASK attribute is defined per annex of [ITU-T G.993.2] enabled in the xTSE table (see
+//			Table 9.7.12-1). It selects a single PSD mask class per annex of [ITU-T G.993.2] to be activated
+//			at the very high-speed digital subscriber line transceiver unit, operator end (VTU-O). The
+//			coding is as follows:
+//
+//		Vdsl2 Limit Psd Masks
+//			The LIMITMASK attribute contains the ITU-T G.993.2 limit PSD masks of the selected PSD mask
+//			class, enabled by the near-end xTU for each class of profiles. One LIMITMASK parameter is
+//			defined per annex enabled in the xTSE (see Table 9.7.12-1).
+//
+//			The profiles are grouped in the following profile classes:
+//
+//			-	Class 8: Profiles 8a, 8b, 8c, 8d
+//
+//			-	Class 12: Profiles 12a, 12b
+//
+//			-	Class 17: Profile 17a
+//
+//			-	Class 30: Profile 30a
+//
+//			For each profile class, several limit PSD masks of the selected PSD mask class (CLASSMASK) may
+//			be enabled. The enabling attribute is coded in a bit map representation (0 if the associated
+//			mask is not allowed, 1 if it is allowed). The bit mask is defined in Table 9.7.6-1. (R,-W,
+//			setbycreate) (mandatory) (8-bytes)
+//
+//		Vdsl2 Us0 Disabling
+//			The US0DISABLE attribute specifies whether channel US0 is disabled for each limit PSD mask
+//			enabled in the LIMITMASK attribute.
+//
+//			For each limit PSD mask enabled in the LIMITMASK attribute, one bit indicates if US0 is
+//			disabled. The disabling attribute is a bit map where the value 1 specifies that US0 is disabled
+//			for the associated limit mask. The bit map has the same structure as the LIMITMASK attribute.
+//			(R,-W, setbycreate) (mandatory) (8-bytes)
+//
+//		Vdsl2 Us0 Psd Masks
+//			The US0MASK attribute contains the US0 PSD masks to be allowed by the xTU-C. This attribute is
+//			only defined for Annex-A of [ITUT-G.993.2]. It is represented as a bit map (0 if not allowed, 1
+//			if allowed) with the definitions of Table-9.7.6-2. (R, W, setbycreate) (mandatory) (4-bytes)
+//
+//		Vdsl2_Carmask Table
+//			VDSL2-CARMASK table: This attribute specifies restrictions, additional to the band plan, that
+//			determine the set of subcarriers allowed for transmission in both upstream and downstream
+//			directions.
+//
+//			The VDSL2-CARMASK attribute describes the not-masked subcarriers in terms of one or more
+//			frequency bands. Each band is represented by start and stop subcarrier indices with a subcarrier
+//			spacing of 4.3125-kHz. The valid range of subcarrier indices is from 0 to at least the index of
+//			the highest allowed subcarrier in both transmission directions among all profiles enabled by the
+//			VDSL2 profiles enabling (PROFILES) attribute. Up to 32 bands may be specified. Other subcarriers
+//			are masked.
+//
+//			For profiles using 8.625 kHz tone spacing, the odd subcarrier indices i4.3125 in VDSL2-CARMASK
+//			can be transformed into actual subcarrier indices i8.625 using the following rule:
+//
+//			- for the start frequency of each band: i8.625-=-(i4.3125 + 1)/2
+//
+//			- for the stop frequency of each band: i8.625-=-(i4.3125 - 1)/2.
+//
+//			The VDSL2-CARMASK attribute is a table where each entry comprises:
+//
+//			- an entry number field (1-byte, first entry numbered 1);
+//
+//			- band start subcarrier index (2-bytes);
+//
+//			- band stop subcarrier index (2-bytes).
+//
+//			By default, the table is empty. Entries are added or modified using the set action. Setting a
+//			table entry with non-zero subcarrier references implies insertion into the table. Setting an
+//			entry's subcarrier references to zero implies deletion from the table, if present.
+//
+//			The maximum number of bands is 32, so the maximum size of the table is 160-bytes. (R,-W)
+//			(mandatory) (5 * N bytes, where N is the number of bands)
+//
+//		Carmask Valid
+//			This attribute controls and reports the status of the VDSL2-CARMASK table. If CARMASK valid-= 1,
+//			then the VDSL2-CARMASK has been effectuated on the xDSL equipment. If CARMASK valid-= 0
+//			(default), then the VDSL2-CARMASK table is under construction and has not been effectuated on
+//			the xDSL equipment.
+//
+//			This attribute behaves as follows.
+//
+//			If the OLT changes any of the VDSL2-CARMASK table entries or sets CARMASK valid-= 0, then
+//			CARMASK valid-= 0.
+//
+//			If CARMASK valid-= 0 and the OLT sets CARMASK valid-= 1, then the ONU updates the xDSL equipment
+//			with the contents of the table.
+//
+//			(R,-W) (mandatory) (1-byte)
+//
+//		Upboshaped
+//			This attribute includes two parameters for each band. The parameters are a and b, in that order.
+//			Parameter a lies in the range 4000 (40.00-dBm/Hz) to 8095 (80.95-dBm/Hz). Parameter b lies in
+//			the range 0 (0.00-dBm/Hz) to 4095 (40.95-dBm/Hz). The special values a-= b-= 0 disable UPBO in
+//			the respective upstream band.
+//
+//			The upstream electrical length parameter UPBOKL defines the electrical length expressed in
+//			decibels at 1-MHz, kl0, which may also be configured by the OLT. Its value ranges from 0
+//			(0.0-dB) to 1280 (128.0-dB).
+//
+//			If the force electrical length parameter UPBOKLF is 1, the very high-speed digital subscriber
+//			line transceiver unit, remote end (VTU-R) is forced to use the electrical length from this
+//			attribute (UPBOKL) to compute UPBO. Otherwise, the VDSL2 transceiver units (VTUs) determine the
+//			electrical length themselves.
+//
+//			(R,-W) (mandatory) (23-bytes)
+//
+//			Upstream power back-off (UPBO) is specified in [ITUT G.993.2] to provide spectral compatibility
+//			between loops of different lengths deployed in the same cable binder. The upstream transmit PSD
+//			mask, UPBOMASKus is defined in clause 7.2.1.3.2 of [ITUT G.993.2].
+//
+//			The ITU-T G.993.2 UPBO configuration attributes a and b are set by the OLT via this attribute.
+//			The reference length kl0_REF is set by the companion attribute UPBO klREF-pb, defined in the
+//			following. Further details appear in [ITUT-G.997.1].
+//
+//		Cyclic Extension
+//			The CEFLAG attribute enables (1) the optional cyclic extension values. If set to 0, the cyclic
+//			extension is forced to the mandatory length 5N/32. (R,-W) (mandatory) (1-byte)
+//
+//		Downstream Signal_To_Noise Ratio Snr Mode
+//			Downstream signal-to-noise ratio (SNR) mode: The SNRMODEds attribute controls transmitter
+//			referred virtual noise in the downstream direction. If set to 1, virtual noise is disabled. If
+//			set to 2, virtual noise is enabled. (R,-W) (mandatory) (1-byte)
+//
+//		Upstream Snr Mode
+//			The SNRMODEus attribute controls transmitter referred virtual noise in the upstream direction.
+//			If set to 1, virtual noise is disabled. If set to 2, virtual noise is enabled. (R,-W)
+//			(mandatory) (1-byte)
+//
+//		Transmitter Referred Virtual Noise Downstream Table
+//			Table entries for this attribute have the default value 254 for the noise PSD level. Entries are
+//			added or modified using the set action. Setting an entry to a noise PSD level less than or equal
+//			to 254 implies insertion into the table. Setting an entry's noise PSD level to 255 implies
+//			deletion from the table, if present.
+//
+//			(R,-W) (optional) (3N bytes, where N is the number of breakpoints)
+//
+//			The TXREFVNds table defines the downstream transmitter referred virtual noise. TXREFVNds is
+//			specified through a set of breakpoints. Each breakpoint comprises a subcarrier index t, with a
+//			subcarrier spacing of 4.3125-kHz, and a noise PSD level at that subcarrier. The set of
+//			breakpoints can then be represented as [(t1, PSD1), (t2, PSD2), ..., (tN, PSDN)]. The subcarrier
+//			index t is an unsigned 2 byte integer. The noise level is 1-byte whose value ranges from 0
+//			(-40-dBm/Hz) to 200 (-140-dBm/Hz), in steps of 0.5 dB. Values between 201 and 254 indicate a
+//			noise PSD level of 0 W/Hz. The maximum number of breakpoints is 32; no more than 15 breakpoints
+//			may be configured below the upper edge of the passband of every mode enabled for [ITU-T G.992.3]
+//			and [ITUT-G.992.5].
+//
+//		Transmitter Referred Virtual Noise Upstream Table
+//			The TXREFVNus attribute defines the upstream transmitter referred virtual noise. TXREFVNus is
+//			specified through a set of breakpoints. Each breakpoint comprises a subcarrier index t, with a
+//			subcarrier spacing of 4.3125-kHz, and a noise PSD level at that subcarrier. The set of
+//			breakpoints can then be represented as [(t1, PSD1), (t2, PSD2), ..., (tN, PSDN)]. The subcarrier
+//			index t is an unsigned 2-byte integer. The noise level is 1-byte whose value ranges from 0
+//			(-40-dBm/Hz) to 200 (-140-dBm/Hz), in steps of 0.5 dB. Values between 201 and 254 indicate a
+//			noise PSD level of 0-W/Hz. The maximum number of breakpoints is 16; no more than three
+//			breakpoints may be configured below the upper edge of the passband of every mode enabled for
+//			[ITU-T G.992.3] and [ITUT-G.992.5].
+//
+//			Table entries for this attribute have the default value 254 for the noise PSD level. Entries are
+//			added or modified using the set action. Setting an entry to a noise PSD level less than or equal
+//			to 254 implies insertion into the table. Setting an entry's noise PSD level to 255 implies
+//			deletion from the table, if present.
+//
+//			(R,-W) (optional) (3N bytes, where N is the number of breakpoints)
+//
+//		Dpboshaped
+//			Downstream power back-off - shaped is described in [ITUT G.997.1] as a vector of parameters that
+//			modifies the downstream PSD mask.
+//
+//			DPBOEPSD - Assumed exchange PSD mask. This component points to a downstream xDSL PSD mask
+//			profile ME. The PSD mask profile should contain no more than 16 break points. (2-bytes)
+//
+//			DPBOESEL - E-side electrical length. This component is the assumed loss at some reference
+//			frequency of the electrical cable from the xDSL equipment to a possible flexibility point. It
+//			ranges from 0 (0.0-dB) to 511 (255.5-dB) in steps of 0.5-dB. The value 0 has the special meaning
+//			that it disables the DPBOSHAPED feature. (2-bytes)
+//
+//			The following three parameters describe the cable model. Further details appear in [ITUT
+//			G.997.1]. Each is a scalar that represents the range -1 (coded as 0) to +1.5 (coded as 640) in
+//			steps of 1/256.
+//
+//			DPBOESCMA - (2-bytes)
+//
+//			DPBOESCMB - (2-bytes)
+//
+//			DPBOESCMC - (2-bytes)
+//
+//			DPBOMUS - Assumed minimum usable receive PSD mask. This component ranges from 0 (0.0-dBm/Hz) to
+//			255 (-127.5-dBm/Hz) in steps of 0.5 dB. (1-byte)
+//
+//			DPBOFMIN - The lower frequency bound above which DPBO is applied. This component ranges from 0
+//			(0.00 kHz) to 2048 (8832.00 kHz) in steps of 4.3125 kHz. (2-bytes)
+//
+//			DPBOFMAX - The upper frequency bound below which DPBO is applied. This component ranges from 32
+//			(138.00-kHz) to 6956 (29997.75-kHz) in steps of 4.3125-kHz. (2-bytes)
+//
+//			(R,-W) (optional) (15-bytes)
+//
+//		Upboklref_Pb
+//			UPBOKLREF-pb: This attribute represents the reference loop length, the electrical length used to
+//			compute upstream power back-off (UPBO) for each upstream band except US0, for the optional
+//			equalized FEXT UPBO method. The value for each upstream band ranges from 1.8 to 63.5 dB in steps
+//			of 0.1 dB, i.e., with values 18..635. The special value 0 is also allowed, with semantics as
+//			defined in clause 7.2.1.3.2 of [ITUT G.993.2]. (R,-W) (optional) (2-bytes * 5 upstream bands)
+//
+//		Upboshaped Aele_Mode, Upboelmt
+//			UPBOSHAPED (AELE-MODE, UPBOELMT): This attribute defines the UPBO electrical length estimation
+//			mode (AELE-MODE) and UPBO electrical length minimum threshold percentile (UPBOELMT) to be used
+//			in the alternative electrical length estimation method (ELE-M1). The format of this attribute is
+//			given in octet 1 of Table 12-27 of [ITU-T G.993.2]. (R,-W) (optional) (1-byte)
+//
+type Vdsl2LineConfigurationExtensions struct {
+	ManagedEntityDefinition
+	Attributes AttributeValueMap
+}
+
+func init() {
+	vdsl2lineconfigurationextensionsBME = &ManagedEntityDefinition{
+		Name:    "Vdsl2LineConfigurationExtensions",
+		ClassID: 165,
+		MessageTypes: mapset.NewSetWith(
+			Create,
+			Delete,
+			Get,
+			GetNext,
+			Set,
+			SetTable,
+		),
+		AllowedAttributeMask: 0xffff,
+		AttributeDefinitions: AttributeDefinitionMap{
+			0:  Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0),
+			1:  ByteField("Vdsl2ProfilesEnabling", UnsignedIntegerAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1),
+			2:  ByteField("Vdsl2PsdMaskClassSelectionClassmask", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 2),
+			3:  Uint64Field("Vdsl2LimitPsdMasks", UnsignedIntegerAttributeType, 0x2000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 3),
+			4:  Uint64Field("Vdsl2Us0Disabling", UnsignedIntegerAttributeType, 0x1000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 4),
+			5:  Uint32Field("Vdsl2Us0PsdMasks", UnsignedIntegerAttributeType, 0x0800, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 5),
+			6:  TableField("Vdsl2CarmaskTable", TableAttributeType, 0x0400, TableInfo{nil, 5}, mapset.NewSetWith(Read, Write), false, false, false, 6),
+			7:  ByteField("CarmaskValid", UnsignedIntegerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, Write), false, false, false, 7),
+			8:  MultiByteField("Upboshaped", OctetsAttributeType, 0x0100, 23, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="), mapset.NewSetWith(Read, Write), false, false, false, 8),
+			9:  ByteField("CyclicExtension", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, Write), false, false, false, 9),
+			10: ByteField("DownstreamSignalToNoiseRatioSnrMode", UnsignedIntegerAttributeType, 0x0040, 0, mapset.NewSetWith(Read, Write), false, false, false, 10),
+			11: ByteField("UpstreamSnrMode", UnsignedIntegerAttributeType, 0x0020, 0, mapset.NewSetWith(Read, Write), false, false, false, 11),
+			12: TableField("TransmitterReferredVirtualNoiseDownstreamTable", TableAttributeType, 0x0010, TableInfo{nil, 3}, mapset.NewSetWith(Read, Write), false, true, false, 12),
+			13: TableField("TransmitterReferredVirtualNoiseUpstreamTable", TableAttributeType, 0x0008, TableInfo{nil, 3}, mapset.NewSetWith(Read, Write), false, true, false, 13),
+			14: MultiByteField("Dpboshaped", OctetsAttributeType, 0x0004, 15, toOctets("AAAAAAAAAAAAAAAAAAAA"), mapset.NewSetWith(Read, Write), false, true, false, 14),
+			15: Uint16Field("UpboklrefPb", UnsignedIntegerAttributeType, 0x0002, 0, mapset.NewSetWith(Read, Write), false, true, false, 15),
+			16: ByteField("UpboshapedAeleMode,Upboelmt", UnsignedIntegerAttributeType, 0x0001, 0, mapset.NewSetWith(Read, Write), false, true, false, 16),
+		},
+		Access:  CreatedByOlt,
+		Support: UnknownSupport,
+	}
+}
+
+// NewVdsl2LineConfigurationExtensions (class ID 165) creates the basic
+// Managed Entity definition that is used to validate an ME of this type that
+// is received from or transmitted to the OMCC.
+func NewVdsl2LineConfigurationExtensions(params ...ParamData) (*ManagedEntity, OmciErrors) {
+	return NewManagedEntity(*vdsl2lineconfigurationextensionsBME, params...)
+}