Create concrete classes for O-RAN Nodes
[oam.git] / code / network-generator / model / jsonSchema / configuration.schema.json
index 1e03a8f..4fbe9b1 100644 (file)
@@ -16,7 +16,7 @@
       "$ref": "#/$defs/network"
     },
     "output-folder": {
-      "description":"The relative path (folder name only) of the directory, where the generated files are stored.",
+      "description": "The relative path (folder name only) of the directory, where the generated files are stored.",
       "type": "string"
     },
     "generation-tasks": {
@@ -30,6 +30,7 @@
       "type": "object",
       "required": [
         "name",
+        "center",
         "pattern"
       ],
       "additionalProperties": false,
           "type": "string",
           "pattern": "^[a-zA-Z]{1}[\\S]{0,254}$"
         },
+        "center": {
+          "description": "Defines the geographical center of the Radio Access Network.",
+          "$ref": "#/$defs/geoLocation"
+        },
         "pattern": {
-          "description": "A description of the relations between O-RAN functions.",
+          "description": "A description of the relations between O-RAN Objects.",
           "$ref": "#/$defs/pattern"
         }
       }
     },
+    "geoLocation": {
+      "description": "Describes a geographical location.",
+      "title": "geoLocation",
+      "type": "object",
+      "required": [
+        "latitude",
+        "longitude",
+        "aboveMeanSeaLevel"
+      ],
+      "additionalProperties": false,
+      "properties": {
+        "latitude": {
+          "description": "The latitude of the geographical location in decimal degrees. Please note 0.00001° is about 1.11m.",
+          "type": "number",
+          "minimum": -90,
+          "maximum": 90
+        },
+        "longitude": {
+          "description": "The longitude of the geographical location in decimal degrees. Please note 0.00001° is about 1.11m.",
+          "type": "number",
+          "minimum": -180,
+          "maximum": 180
+        },
+        "aboveMeanSeaLevel": {
+          "description": "The height of the geographical location in meters.",
+          "type": "number",
+          "minimum": -20,
+          "maximum": 1000
+        }
+      }
+    },
     "pattern": {
-      "description": "A description of the relations between O-RAN functions.",
+      "description": "A description of the relations between O-RAN Objects.",
       "title": "pattern",
       "type": "object",
       "required": [
           "title": "tower",
           "type": "object",
           "required": [
-            "representation",
-            "cellAngle"
+            "representation"
           ],
           "properties": {
             "representation": {
               "enum": [
                 "hexagon"
               ]
-            },
-            "cellAngle": {
-              "description": "The area covered by an NRCellDU around the tower in grad.",
-              "type": "integer",
-              "minimum": 0,
-              "maximum": 360,
-              "exclusiveMinimum": true
             }
           }
         },
           ],
           "properties": {
             "o-ran-cu-spiral-radius": {
-              "description": "The spiral radius of hexagons within an hexagon grid defines the number of O-RAN CUs and the geographical coverage of the SMO.",
+              "description": "The spiral radius of hexagons within a hexagon grid defines the number of O-RAN CUs and the geographical coverage of the SMO.",
               "type": "integer",
               "minimum": 0,
               "maximum": 3
           }
         },
         "o-ran-cu": {
-          "description": "Definition of the relation to O-RAN-RU children.",
+          "description": "Definition of the relation to O-RAN-CU children.",
           "title": "o-ran-cu",
           "type": "object",
           "required": [
-            "tower-spiral-radius"
+            "o-ran-du-spiral-radius"
           ],
           "properties": {
-            "tower-spiral-radius": {
-              "description": "The spiral radius of hexagons within an hexagon grid defines the number of towers and the geographical coverage of the SMO.",
+            "o-ran-du-spiral-radius": {
+              "description": "The spiral radius of hexagons within a hexagon grid defines the number of O-RAN DUs and the geographical coverage of the SMO.",
               "type": "integer",
               "minimum": 0,
               "maximum": 3
           "title": "o-ran-du",
           "type": "object",
           "required": [
+            "tower-spiral-radius",
             "fronthaul-gateway-count",
             "o-ran-ru-count"
           ],
           "properties": {
+            "tower-spiral-radius": {
+              "description": "The spiral radius of hexagons within an hexagon grid defines the number of towers and the geographical coverage of the O-RAN-DU. This means that center tower offers the O-Cloud resource pool for the surrounding towers and its O-RAN-RUs.",
+              "type": "integer",
+              "minimum": 0,
+              "maximum": 3
+            },
             "fronthaul-gateway-count": {
               "description": "Number of fronthaul gateway connected to an O-RAN-DU.",
               "type": "integer",
           "title": "o-ran-ru",
           "type": "object",
           "required": [
-            "nr-cell-du-count"
+            "nr-cell-du-count",
+            "cell-angle",
+            "max-reach"
           ],
           "properties": {
             "nr-cell-du-count": {
                 1,
                 3
               ]
+            },
+            "cell-angle": {
+              "description": "The area covered by an NRCellDU around the tower in grad.",
+              "type": "integer",
+              "minimum": 0,
+              "maximum": 360,
+              "exclusiveMinimum": true
+            },
+            "max-reach": {
+              "description": "The maximal distance a UE can reach the cell in meters. The value also defines the radius around a tower where UEs may select a NRCellDU of an O-RAN-RU mounted at this tower.",
+              "type": "integer",
+              "minimum": 15,
+              "maximum": 600
             }
           }
         },
         }
       }
     },
-    "generation-tasks":{
+    "generation-tasks": {
       "title": "generation-tasks",
       "type": "object",
       "required": [