Commit 423a5326 authored by lengyelb's avatar lengyelb
Browse files

aiot step 1

parent 57d850e4
Loading
Loading
Loading
Loading
Loading
+243 −0
Original line number Diff line number Diff line
module _3gpp-5gc-nrm-aiot-ep {
  yang-version 1.1;
  namespace "urn:3gpp:sa5:_3gpp-5gc-nrm-aiot-ep";
  prefix "aiotep3gpp";

  import _3gpp-common-managed-element { prefix me3gpp; }
  import _3gpp-common-top { prefix top3gpp; }
  import _3gpp-common-ep-rp { prefix eprp3gpp; }
  import _3gpp-5gc-nrm-amffunction { prefix amf3gpp; }
  import _3gpp-5gc-nrm-nrffunction { prefix nrf3gpp; }
  import _3gpp-5gc-nrm-neffunction { prefix nef3gpp; }
  import _3gpp-5gc-nrm-aiot { prefix aiot3gpp; }
  
  organization "3GPP SA5";
  contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464";
  description "Defines AIOT related endpoint Classes (IOCs).
    Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI,
    TTA, TTC). All rights reserved.";
  reference "3GPP TS 28.541";

  revision 2025-11-01 { reference CR-1640; }

  grouping EP_AIOT2Grp {
    description "Represents the EP_AIOT2 IOC.";
    uses eprp3gpp:EP_Common;
  }

  grouping EP_AIOT3Grp {
    description "Represents the EP_AIOT3 IOC.";
    uses eprp3gpp:EP_Common;
  }

  grouping EP_AIOT4Grp {
    description "Represents the EP_AIOT4 IOC.";
    uses eprp3gpp:EP_Common;
  }

  grouping EP_AIOT5Grp {
    description "Represents the EP_AIOT5 IOC.";
    uses eprp3gpp:EP_Common;
  }

  grouping EP_AIOT6Grp {
    description "Represents the EP_AIOT6 IOC.";
    uses eprp3gpp:EP_Common;
  }

  grouping EP_AIOT7Grp {
    description "Represents the EP_AIOT7 IOC.";
    uses eprp3gpp:EP_Common;
  }
  
  grouping EP_AIOT8Grp {
    description "Represents the EP_AIOT8 IOC.";
    uses eprp3gpp:EP_Common;
  }

  feature EP_AIOT2UnderAMFFunction {
    description "EP_AIOT2 shall be contained under AMFFunction.";
  }  
 
  augment /me3gpp:ManagedElement/amf3gpp:AMFFunction {
    if-feature EP_AIOT2UnderAMFFunction;
    list EP_AIOT2 {
      description "This IOC represents the AIOT2 interface between NG-RAN and 
        AIOTF, which is defined in 3GPP TS 23.369.";

      key id;
      uses top3gpp:Top_Grp;
      container attributes {
        uses EP_AIOT2Grp;
      }
    }
  }  

  feature EP_AIOT5UnderNRFFunction {
    description "EP_AIOT5 shall be contained under NRFFunction.";
  }  
 
  augment /me3gpp:ManagedElement/nrf3gpp:NRFFunction {
    if-feature EP_AIOT5UnderNRFFunction;
    list EP_AIOT5 {
      description "This IOC represents the AIOT5 interface between AIOTF and 
        NRF, which is defined in 3GPP TS 23.369.";

      key id;
      uses top3gpp:Top_Grp;
      container attributes {
        uses EP_AIOT5Grp;
      }
    }
  }  

  feature EP_AIOT4UnderNEFFunction {
    description "EP_AIOT4 shall be contained under NEFFunction.";
  }  
 
  feature EP_AIOT8UnderNEFFunction {
    description "EP_AIOT8 shall be contained under NEFFunction.";
  }  
 
  augment /me3gpp:ManagedElement/nef3gpp:NEFFunction {
    if-feature EP_AIOT4UnderNEFFunction;
    list EP_AIOT4 {
      description "This IOC represents the AIOT4 interface between AIOTF and 
        NEF, which is defined in 3GPP TS 23.369.";

      key id;
      uses top3gpp:Top_Grp;
      container attributes {
        uses EP_AIOT4Grp;
      }
    }

    if-feature EP_AIOT8UnderNEFFunction;
    list EP_AIOT8 {
      description "This IOC represents the AIOT8 interface between NEF and ADM, 
        which is defined in 3GPP TS 23.369.";

      key id;
      uses top3gpp:Top_Grp;
      container attributes {
        uses EP_AIOT8Grp;
      }
    }
}  

  feature EP_AIOT3UnderAIOTFFunction {
    description "EP_AIOT3 shall be contained under AIOTFFunction.";
  }  
 
  feature EP_AIOT4UnderAIOTFFunction {
    description "EP_AIOT4 shall be contained under AIOTFFunction.";
  }  
 
  feature EP_AIOT5UnderAIOTFFunction {
    description "EP_AIOT5 shall be contained under AIOTFFunction.";
  }  
 
  feature EP_AIOT6UnderAIOTFFunction {
    description "EP_AIOT6 shall be contained under AIOTFFunction.";
  }  
 
  augment /me3gpp:ManagedElement/aiot3gpp:AIOTFFunction {
    if-feature EP_AIOT3UnderAIOTFFunction;
    list EP_AIOT3 {
      description "This IOC represents the AIOT3 interface between AMF and 
        AIOTF, which is defined in 3GPP TS 23.369.";

      key id;
      uses top3gpp:Top_Grp;
      container attributes {
        uses EP_AIOT3Grp;
      }
    }
     
    if-feature EP_AIOT4UnderAIOTFFunction;
    list EP_AIOT4 {
      description "This IOC represents the AIOT4 interface between AIOTF and 
        NEF, which is defined in 3GPP TS 23.369.";

      key id;
      uses top3gpp:Top_Grp;
      container attributes {
        uses EP_AIOT4Grp;
      }
    }
     
    if-feature EP_AIOT5UnderAIOTFFunction;
    list EP_AIOT5 {
      description "This IOC represents the AIOT5 interface between AIOTF and 
        NRF, which is defined in 3GPP TS 23.369.";

      key id;
      uses top3gpp:Top_Grp;
      container attributes {
        uses EP_AIOT5Grp;
      }
    }
     
    if-feature EP_AIOT6UnderAIOTFFunction;
    list EP_AIOT6 {
      description "This IOC represents the AIOT6 interface between AIOTF and 
        ADM, which is defined in 3GPP TS 23.369.";

      key id;
      uses top3gpp:Top_Grp;
      container attributes {
        uses EP_AIOT6Grp;
      }
    }
  }  

  feature EP_AIOT6UnderADMFunction {
    description "EP_AIOT6 shall be contained under ADMFunction.";
  }  
 
  feature EP_AIOT7UnderADMFunction {
    description "EP_AIOT7 shall be contained under ADMFunction.";
  }  
 
  feature EP_AIOT8UnderADMFunction {
    description "EP_AIOT8 shall be contained under ADMFunction.";
  }  
 
  augment /me3gpp:ManagedElement/aiot3gpp:ADMFunction {
    if-feature EP_AIOT6UnderADMFunction;
    list EP_AIOT6 {
      description "This IOC represents the AIOT6 interface between AIOTF and 
        ADM, which is defined in 3GPP TS 23.369.";

      key id;
      uses top3gpp:Top_Grp;
      container attributes {
        uses EP_AIOT6Grp;
      }
    }
    
    if-feature EP_AIOT7UnderADMFunction;
    list EP_AIOT7 {
      description "This IOC represents the AIOT7 interface between UDR and ADM, 
        which is defined in 3GPP TS 23.369.";

      key id;
      uses top3gpp:Top_Grp;
      container attributes {
        uses EP_AIOT7Grp;
      }
    }
    
    if-feature EP_AIOT8UnderADMFunction;
    list EP_AIOT8 {
      description "This IOC represents the AIOT8 interface between NEF and ADM, 
        which is defined in 3GPP TS 23.369.";

      key id;
      uses top3gpp:Top_Grp;
      container attributes {
        uses EP_AIOT8Grp;
      }
    }
  }  
}
 No newline at end of file
+222 −0
Original line number Diff line number Diff line
module _3gpp-5gc-nrm-aiot {
  yang-version 1.1;
  namespace "urn:3gpp:sa5:_3gpp-5gc-nrm-aiot";
  prefix "aiot3gpp";

  import _3gpp-common-managed-element { prefix me3gpp; }
  import _3gpp-common-top { prefix top3gpp; }
  import _3gpp-common-yang-types { prefix types3gpp; }
  import ietf-inet-types { prefix inet; }
  import _3gpp-common-managed-function { prefix mf3gpp; }
  import _3gpp-5gc-nrm-managed-nfprofile { prefix mnfp3gpp; }
  
  organization "3GPP SA5";
  contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464";
  description "Defines the YANG mapping AIOT (Ambient power-enabled Internet 
    of Things).
    Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI,
    TTA, TTC). All rights reserved.";
  reference "3GPP TS 28.541 
    3GPP TS 23.369";

  revision 2025-11-01 { reference CR-1640; }

  grouping ServedAIOTAreaIDGrp {
    description "ServedAIOTAreaID datatype";
  
    list pLMNId {
      description "It defines which PLMN that can be served by the AIOT reader.";

      min-elements 1;  // error not well defined on stage 2 clause 4.4.1
      max-elements 1;
      key "mcc mnc";
      uses types3gpp:PLMNId;
    }
    
    // error nID is only defined in 5.4.1 not 4.4.1> The text states it is not 
    // always needed, but the multiplicity is strictly 1.
    leaf nID {  
      type string {
        pattern '[A-Fa-f0-9]{11}';
      }
      description "Network Identity; Shall be present if PlmnIdNid identifies 
        an SNPN (see clauses 5.30.2.3, 5.30.2.9, 6.3.4, and 6.3.8 in 3GPP 
        TS 23.501";
    }
    
    leaf aIotAreaCode {
      type string;
      mandatory true;
      description "This specifies the identity of the A-IoT Area Code which is 
        one of the components of A-IoT Area ID. It's a 3-octet string defined 
        in TS 38.413.";
    }
  }
  
  grouping ServedReaderInfoGrp {
    description "ServedReaderInfo datatype";
    
    leaf readerId {
      type int32;
      mandatory true;
      description "It defines the reader identifier to uniquely identify a 
        reader within a gNB.";
    }
    
    list servedAIOTAreas {
      min-elements 1;
      key idx;
      leaf idx { type uint32; }
      uses ServedAIOTAreaIDGrp;
      description "This attribute is used to specify the A-IoT areas supported 
        by the A-IoT reader. It contains one or multiple A-IoT Area ID, which 
        is used to uniquely identify an A-IoT Area.

        A-IoT Area ID = PLMN ID +NID (optional) + A-IoT Area Code 
        (OCTET STRING (SIZE(3))), which is defined in TS 38.413.";
    }
    
    leaf readerLocation {
      type string;
      mandatory true;
      description "This specifies the geographical location of a A-IoT reader. 
        Reader Location may represent any of latitude/longitude, or any 
        geographical location/coordinate/area polygon.";
    }
  }
  
  grouping AIoTgNBInfoGrp {
    description "AIoTgNBInfo datatype";
    
    leaf gNBId {
      type int64 { range "0..4294967295"; }
      mandatory true;
      description "It identifies a gNB within a PLMN";
    }
    
    list servedReaderInfoList {
      description "Represents the information of served Readers of a gNB, 
        which includes the reader ID (indexes), served A-IoT areas of the RAN 
        and Reader and optionally the Reader location.";
      min-elements 1;
      key idx;
      leaf idx { type uint32; }
      uses ServedReaderInfoGrp;
    }
  }
  
  grouping AIOTFFunctionGrp {
    description "Attributes of the IOC AIOTFFunction";

    uses mf3gpp:ManagedFunctionGrp;
    
    list pLMNId {
      description "Represents a PLMN Identity.";

      min-elements 1;
      max-elements 1;
      key "mcc mnc";
      uses types3gpp:PLMNId;
    }

    leaf sBIFQDN {
      description "It is used to indicate the FQDN of the registered NF instance 
        in service-based interface, for example, NF instance FQDN structure is:
        nftype<nfnum>.slicetype<sliceid>.mnc<MNC>.mcc<MCC>.3gppnetwork.org";
      type inet:domain-name;
      mandatory true;
    }

    list managedNFProfile {
      key idx;
      leaf idx { type uint32; }
      min-elements 1;
      max-elements 1;
      uses mnfp3gpp:ManagedNFProfileGrp;
      description "This parameter defines profile for managed NF";
      reference "3gpp TS 23.501";
    }
    
    list aIOTgNBInfo {
      key idx;
      leaf idx { type uint32; }
      min-elements 1;
      description "It represents the information that a AIOTF needs for 
        selecting the NG-RAN i.e.of gNB supporting Ambient-IoT service, 
        which includes gNB ID, served NG-RAN A-IoT area and the information 
        of served Readers of the gNB.";
      uses AIoTgNBInfoGrp;
    }
  }

  feature AIOTFFunctionUnderManagedElement {
    description "AIOTFFunction shall be contained under ManagedElement.";
  }  
 
  augment /me3gpp:ManagedElement {
    if-feature AIOTFFunctionUnderManagedElement;
    list AIOTFFunction {
      description "This IOC represents the AIOTF function defined in TS 23.369";

      key id;
      uses top3gpp:Top_Grp;
      container attributes {
        uses AIOTFFunctionGrp;
      }
      uses mf3gpp:ManagedFunctionContainedClasses;
    }
  }
  
  //////////////////////////////////////////////////////////////////////
  
  grouping ADMFunctionGrp {
    description "Attributes of the IOC ADMFunction";
  
    uses mf3gpp:ManagedFunctionGrp;
    
    list pLMNId {
      description "Represents a PLMN Identity.";

      min-elements 1;
      max-elements 1;
      key "mcc mnc";
      uses types3gpp:PLMNId;
    }

    leaf sBIFQDN {
      description "It is used to indicate the FQDN of the registered NF instance 
        in service-based interface, for example, NF instance FQDN structure is:
        nftype<nfnum>.slicetype<sliceid>.mnc<MNC>.mcc<MCC>.3gppnetwork.org";
      type inet:domain-name;
      mandatory true;
    }

    list managedNFProfile {
      key idx;
      leaf idx { type uint32; }
      min-elements 1;
      max-elements 1;
      uses mnfp3gpp:ManagedNFProfileGrp;
      description "This parameter defines profile for managed NF";
      reference "3gpp TS 23.501";
    }
  }  
  
  feature ADMFunctionUnderManagedElement {
    description "ADMFunction shall be contained under ManagedElement.";
  }  
 
  augment /me3gpp:ManagedElement {
    if-feature ADMFunctionUnderManagedElement;
    list ADMFunction {
      description "This IOC represents the ADM function defined in TS 23.369";

      key id;
      uses top3gpp:Top_Grp;
      container attributes {
        uses ADMFunctionGrp;
      }
      uses mf3gpp:ManagedFunctionContainedClasses;
    }
  }  
}
 No newline at end of file
+98 −0
Original line number Diff line number Diff line
module _3gpp-nr-nrm-aiotreader {
  yang-version 1.1;
  namespace "urn:3gpp:sa5:_3gpp-nr-nrm-aiotreader";
  prefix "aiotread3gpp";

  import _3gpp-common-managed-element { prefix me3gpp; }
  import _3gpp-common-top { prefix top3gpp; }
  import _3gpp-common-yang-types { prefix types3gpp; }
  import _3gpp-5gc-nrm-aiot { prefix aiot3gpp; }
  import _3gpp-nr-nrm-gnbdufunction { prefix gnbdu3gpp; }
  
  organization "3GPP SA5";
  contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464";
  description "Defines the YANG mapping the AIoT Reader.
    Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI,
    TTA, TTC). All rights reserved.";
  reference "3GPP TS 28.541";

  revision 2025-11-07 { reference CR-1640; }

  grouping AIOTReaderGrp {
    description "Attributes of the IOC AIOTReader";

    leaf readerId {
      type int32;
      mandatory true;
      description "It defines the reader identifier to uniquely identify a 
        reader within a gNB.";
    }
    
    leaf administrativeState {
      type types3gpp:BasicAdministrativeState;
      default LOCKED;
      description "It indicates the administrative state of the AIOTReader. 
        It describes the permission to use or prohibition against using the 
        AIOT reader, imposed through the OAM services.";
    }

    leaf-list supportedAIOTServices {
      type enumeration {
        enum INVENTORY;
        enum COMMAND;
      }
      min-elements 1;
      description "It indicates the supported AIOT service type for an 
        AIOT reader.";
    }

    list pLMNId {
      description "Defines which PLMN that can be served by the AIOT reader.";

      min-elements 1;
      max-elements 1;
      key "mcc mnc";
      uses types3gpp:PLMNId;
    }

    list servedAIOTAreas {
      description "This attribute is used to specify the A-IoT areas supported 
        by the A-IoT reader. It contains one or multiple A-IoT Area ID, which 
        is used to uniquely identify an A-IoT Area.

        A-IoT Area ID = PLMN ID +NID (optional) + A-IoT Area Code 
        (OCTET STRING (SIZE(3))), which is defined in TS 38.413.";
      min-elements 1;
      key idx;
      leaf idx { type uint32; }
      uses aiot3gpp:ServedAIOTAreaIDGrp;
    }
    
    leaf readerLocation {
      type string;
      mandatory true;
      description "This specifies the geographical location of a A-IoT reader. 
        Reader Location may represent any of latitude/longitude, or any 
        geographical location/coordinate/area polygon.";
    }
    
    leaf-list nRSectorCarrierRef {
      type types3gpp:DistinguishedName;
      description "This attribute contains the DN of the referenced 
        NRSectorCarrier.";
    }
  }

  augment /me3gpp:ManagedElement/gnbdu3gpp:GNBDUFunction  {
    list AIOTReader {
      description "This IOC represents AIoT Reader which supports AIOT 
        services.";

      key id;
      uses top3gpp:Top_Grp;
      container attributes {
        uses AIOTReaderGrp;
      }
    }
  }
}
 No newline at end of file