module bbf-xpon-types {
  yang-version 1.1;
  namespace "urn:bbf:yang:bbf-xpon-types";
  prefix bbf-xpon-types;

  import ietf-inet-types {
    prefix inet;
  }

  organization
    "Broadband Forum <https://www.broadband-forum.org>
     Fiber Access Networks Work Area";
  contact
    "Comments or questions about this Broadband Forum YANG module
     should be directed to <mailto:help@broadband-forum.org>.

     Editor:      Joey Boyd, ADTRAN

     Editor:      Samuel Chen, Broadcom

     Editor:      Robert Peschi, Nokia

     WA Director: Marta Seda, Calix

     WA Director: Lin Wei, Huawei";
  description
    "This module contains a collection of YANG definitions which
     defines common types used in the xPON YANG models.

     Copyright (c) 2018, Broadband Forum

     Redistribution and use in source and binary forms, with or
     without modification, are permitted provided that the following
     conditions are met:

     1. Redistributions of source code must retain the above copyright
        notice, this list of conditions and the following disclaimer.

     2. Redistributions in binary form must reproduce the above
        copyright notice, this list of conditions and the following
        disclaimer in the documentation and/or other materials
        provided with the distribution.

     3. Neither the name of the copyright holder nor the names of its
        contributors may be used to endorse or promote products
        derived from this software without specific prior written
        permission.

     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
     CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,
     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
     CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
     ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

     The above license is used as a license under copyright only.
     Please reference the Forum IPR Policy for patent licensing terms
     <https://www.broadband-forum.org/ipr-policy>.

     Any moral rights which are necessary to exercise under the above
     license grant are also deemed granted under this license.

     This version of this YANG module is part of TR-385; see
     the TR itself for full legal notices.";

  revision 2019-02-25 {
    description
      "Initial revision.
       * Approval Date:    2019-02-25.
       * Publication Date: 2019-02-25.";
    reference
      "TR-385: ITU-T PON YANG Modules
               <https://www.broadband-forum.org/technical/download/
                        TR-385.pdf>";
  }

  identity type-b-state-base {
    description
      "This identity is used as the base for possible
       channel-terminations states for type B protection.";
  }

  identity active {
    base type-b-state-base;
    description
      "This identity is used to denote active state in type B
       protection.";
  }

  identity standby {
    base type-b-state-base;
    description
      "This identity is used to denote standby state in type B
       protection.";
  }

  identity not-part-of-type-b {
    base type-b-state-base;
    description
      "This identity is used to denote that the object is not part
       of a type B protection scheme. This is for instance the
       case when a channel-termination does not (yet) refer
       to a channel-pair.";
  }

  identity location-base {
    description
      "This identity is used as the possible locations of an
       object.";
  }

  identity inside-olt {
    base location-base;
    description
      "This identity is used to denote a location physically inside
       the OLT chassis.";
  }

  identity outside-olt {
    base location-base;
    description
      "This identity is used to denote a location physically outside
       the OLT chassis.";
  }

  identity channel-pair-type-base {
    description
      "This identity is used to qualify the possible types of a
       channel-pair.";
  }

  identity ngpon2-twdm {
    base channel-pair-type-base;
    description
      "This identity is used to denote a TWDM NG-PON2 channel-pair,
       per ITU-T G.989.3.";
  }

  identity ngpon2-ptp {
    base channel-pair-type-base;
    description
      "This identity is used to denote a PtP NG-PON2 channel-pair, per
       ITU-T G.989.3.";
  }

  identity xgs {
    base channel-pair-type-base;
    description
      "This identity is used to denote an XGS-PON channel-pair,
       per ITU-T G.9807.1.";
  }

  identity xgpon {
    base channel-pair-type-base;
    description
      "This identity is used to denote an XG-PON channel-pair,
       per ITU-T G.987.3.";
  }

  identity gpon {
    base channel-pair-type-base;
    description
      "This identity is used to denote an G-PON channel-pair,
       per ITU-T G.984.3.";
  }

  identity channel-pair-line-rate-profile-base {
    description
      "This identity is used to define the possible combinations
       of downstream and upstream line-rates for an NG-PON2
       channel-pair.";
  }

  identity unplanned-cp-line-rate {
    base channel-pair-line-rate-profile-base;
    description
      "This identity is used to denote an NG-PON2 channel-pair with
       yet undefined downstream and upstream line rates.";
  }

  identity down-10-up-10 {
    base channel-pair-line-rate-profile-base;
    description
      "This identity is used to denote an NG-PON2 channel-pair with
       downstream 10Gbps and upstream 10Gbps line rates.";
  }

  identity down-10-up-2.5 {
    base channel-pair-line-rate-profile-base;
    description
      "This identity is used to denote an NG-PON2 channel-pair with
       downstream 10Gbps and upstream 2.5Gbps line rates.";
  }

  identity down-2.5-up-2.5 {
    base channel-pair-line-rate-profile-base;
    description
      "This identity is used to denote an NG-PON2 channel-pair with
       downstream 2.5Gbps and upstream 2.5Gbps line rates.";
  }

  identity tcp-connection-state-base {
    description
      "This identity is used to denote the possible states of
       a TCP connection.";
  }

  identity established {
    base tcp-connection-state-base;
    description
      "This identity is used to reflect that the TCP connection is
       established.";
  }

  identity not-established {
    base tcp-connection-state-base;
    description
      "This identity is used to reflect that the TCP connection is
       not established.";
  }

  identity unknown {
    base tcp-connection-state-base;
    description
      "This identity is used to reflect that the TCP connection state
       is not known.";
  }

  identity action-request-status {
    description
      "This identity is used to denote the status following the
       reception of a YANG action.";
  }

  identity request-being-processed {
    base action-request-status;
    description
      "This identity is used to denote that the OLT has received
       the action request and is handling it.";
  }

  identity request-rejected {
    base action-request-status;
    description
      "This identity is used to denote that the OLT has rejected
       the action request and will not perform anything further
       about it.";
  }

  typedef string-hex14 {
    type string {
      pattern '[a-fA-F0-9]{14}';
    }
    description
      "A string representing 7 hexadecimal octets expressed in
       ASCII.";
  }

  typedef pon-id-display-type {
    type union {
      type uint32;
      type string-hex14;
    }
    description
      "A type meant for the different formats of the PON-ID for the
       various channel-pair types. The 'unint' is meant for NG-PON2,
       XGS-PON and XG-PON and the 'string7only' is meant for G-PON.";
  }

  typedef composite-channel-id-type {
    type union {
      type uint8 {
        range "0..7";
      }
      type enumeration {
        enum "xgs" {
          description
            "To be used in case of XGS-PON, rather than 0.";
        }
      }
    }
    description
      "A composite type strictly meant for leaves reflecting the
       already allocated downstream or upstream channel-id on a
       channel-group.
       Such leaves are used to prevent conflicts when allocating
       a channel-pair to a channel-group. For NG-PON2, the applicable
       values are in [0..7], for XGS-PON a dedicated value 'xgs'
       is used rather than '0' to prevent ambiguity between this and
       the valid value '0' for NG-PON2.";
  }

  typedef composite-downstream-wavelength-type {
    type union {
      type uint32 {
        range "0 | 156000..161000";
      }
      type enumeration {
        enum "xgs" {
          description
            "To be used in case of XGS-PON.";
        }
        enum "xgpon" {
          description
            "To be used in case of XG-PON.";
        }
        enum "gpon" {
          description
            "To be used in case of G-PON.";
        }
      }
    }
    description
      "A composite type strictly meant for leaves reflecting the
       already allocated downstream or upstream channel-id on a
       channel-group.
       Such leaves are used to prevent conflicts when allocating a
       channel-pair to a channel-group. For NG-PON2, the applicable
       values are in [0..8], for XGS-PON a dedicated value 'xgs'
       is applicable rather than value '0': this is not to a priori
       forbid in yang model the coexistence of XGS-PON with NG-PON2
       using channel-id=0.";
  }

  typedef auth-method-type {
    type enumeration {
      enum "serial-number" {
        description
          "Authentication based on ONU serial number.";
        reference
          "ITU-T G.984.3 clause VI.1";
      }
      enum "loid" {
        description
          "Authentication based on the Logical ONU ID (LOID).";
        reference
          "ITU-T G.988 clause 9.1.1";
      }
      enum "registration-id" {
        description
          "Authentication based on ONU registration ID.";
        reference
          "ITU-T G.984.3 clause VI.2";
      }
      enum "omci" {
        description
          "Authentication by use of the enhanced security control
           managed entity (ME) over OMCI.";
        reference
          "ITU-T G.987.3 Annex C";
      }
      enum "dot1x" {
        description
          "Authentication according to IEEE 802.1x.";
        reference
          "ITU-T G.987.3 Annex D";
      }
    }
    description
      "Method for authenticating an ONU.";
  }

  typedef raman-mitigation-type {
    type enumeration {
      enum "raman-none" {
        description
          "No Raman mitigation is performed.";
      }
      enum "raman-8b10b" {
        description
          "For Raman mitigation, the 8B10B sublayer is introduced
           between the downstream NG-PON2 physical interface (PHY)
           adaptation interface and the optical interface.";
        reference
          "ITU-T G.989.2 clause IX.1";
      }
      enum "raman-miller" {
        description
          "For Raman mitigation, Miller code is used.";
        reference
          "ITU-T G.989.2 clause IX.2";
      }
    }
    description
      "NG-PON2 Raman mitigation coding schemes when using RF video
       overlay.";
    reference
      "ITU-T G.989.2 Appendix IX";
  }

  typedef ip-address-or-unresolved {
    type union {
      type inet:ip-address;
      type enumeration {
        enum "unresolved" {
          description
            "To be used when the URL cannot be resolved into an
             IP address.";
        }
      }
    }
    description
      "A type meant for a leaf which is either an IP address or
       reflects that no IP address is available.";
  }

  typedef onu-id {
    type uint32 {
      range "0..1020";
    }
    description
      "A type meant for ONU-IDs.";
  }

  typedef onu-serial-number {
    type string {
      pattern '[a-zA-Z]{4}[0-9a-fA-F]{8}';
    }
    description
      "A type meant for the serial number of an ONU.";
  }

}
