Commit 844e74e9 authored by lengyelb's avatar lengyelb
Browse files

Base aiot functionality

parent 9ba33eba
Loading
Loading
Loading
Loading
Loading
+168 −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;
      }
    }
  }
}
 No newline at end of file